最近搞到了一个学校教务系统可以查询全校成绩的账号,恰逢申请奖学金之际,就想用python写个脚本把年级里的绩点排名给爬下来,可是就在写登录的时候发现还是要处理验证码登录的问题,为了避免麻烦,就没使用类似pytester的识别库,使用了一个比较讨巧的方法:
Cookies:
cookies是用户在登录之后登录网站发送给浏览器的一小段文本,其中记录着你的登录信息,不过不用担心安全问题,浏览器一般会帮你把cookies保护起来而且这段文本是经过加密,平常人看来就是一堆乱码。比如这样:
当然,学过前端的朋友应该都是知道的,不过cookies一般是被浏览器给保护起来不让看的(比如说Safari...) 这时候我们就要利用抓包的方法把cookies给抓下来了:
对于用Win朋友来说可以直接用Chrome然后按F12打开Internet,在登录后刷新页面,寻找cookies,但是Chrome对于一些网站的兼容性比较差,所以建议用Firefox浏览器安装Firebug插件来查询,安装完插件之后登录完网站,然后单击右上角的插件就发现可以找到cookies信息了:
Like this
接下来就是代码的具体实现了,只有使用cookies登录的部分,不涉及其他脚本代码:
基于Python2.X的代码
最后:
使用cookies登录简直是要比传统的写用户名密码登录的方法爽了不知多少,基于这个方法自己写的选课脚本也是代码量骤减,最后要注意cookies是有一定时间限制的,这算是一个比较讨巧的方法,用过一次之后就知道有多方便啦~