问题描述和解决:
在模拟登录教务处的时候,需要通过获取cookie来进行后面一系列操作。
但是刚开始,python模拟登录一直失败,提示的没权限。通过网页抓包分析,最后看到每次输入地址进行登录时候,会发生302重定向,重定向后的地址和原来一样,但是会在地址后面传入一段随机值。
通过Burpsuite抓包查看每次登录请求头部信息,提交的Cookie有两个字段。在以前的时候一直是 :Cookie: JSESSIONID=gde7KUAgMlZ-zdMkvOjGw一个字段,但是通过抓包分析,每次在重定向的时候也会添加一个字段,而这个cookie字段是通过浏览器随机生成的。
所以想到的解决思路是,是否可以通过抓取两个cookie字段,来进行模拟登录。但是正常通过request请求,只能得到一个Cookie。
最后,通过在request库请求的时候,加入一个参数:allow_redirects=False
,来禁止网页进行302重定向,从而成功的获取了第一个cookie字段,再利用获取到的这个cookie字段,以及获取到的url,重新封装请求头部。重新进行了网页请求,从而获取了第二个cookie字段。通过抓分分析,将获取的两个cookie字段,进行了拼接成为一个字符串。将新的cookie进行了封装到请求头信息,从而提交账号密码等信息,从而成功实现了登录。以及后面获得了各种想要的信息。
但是现在,教务处系统经过修改,302重定向又没有了,只需要正常请求一次就可以获取一个字段的cookie。
实例代码:
1 | zjh = self.get_body_argument('zjh') |