目前已经完成文达学院青果教务登录(其它学校请去下方链接GitHub获取项目,自行修改),一键获取成绩单,成绩查询是图片的同学,这里使用的是成绩分布的接口,这个接口一般是表格数据,查询结果顺便加个挂科检测。
项目地址:青果一键查成绩,记得点个星星哦,谢谢。
demo截图:


分割线:代码已经修改很多,下方仅作为参考,具体看GitHub。
注意:有同学会发现登录后返回出现系统错误等,可能是:
1.viewState有问题。
2.不要echo 输出返回的数据
3.将返回的数据存储到文件里,检查一下,是否登录完成,因为,登陆完成js会重定向页面,如果出现这段代码,就是登录完成,然后,我们就可以继续用之前的cookie去获取成绩。
如果之前你直接输出返回的数据,由于路径的原因,js重定向肯定错误页。检查登录可以用正则匹配一下,获取打开文件看看。
项目中有一个 HSDM 这是一个PHP DOM库,很好用,之前一直用正则写,这个库很方便,直接读取保存的文件。
思路就是用户访问我的index,然后在验证码更新的时候,请求的另一个getValidate.php,这个请求先载入青果首页一次,获取viewstate的值还有session与cookie。
接下来利用cookie去请求青果验证码。返回给index.php
看看index.php(目前登录没成功,验证实现了,还有js的加密)
没有做美化,这大部分是青果的源代码。
1 | //这里有一个md5的js,直接把青果首页的拿下来,还有下面的js加密函数都是青果页面获取的 |
然后看看,点击验证码的时候,我们后面干了啥。
1 |
|
现在验证码就可以随时刷新了。目前这个viewstate还没解决好。解决了,再看看登录。。。
现在去post登录出现viewstate无效。。正在琢磨。


后来解决登录的原因就是在于时间差!青果会检查时间差判断是爬虫。
后来用得是:
在index.php头部访问青果首页,拿到viewstate与cookie,并且把cookie存储到session
在点击验证码的时候,带上cookie与viewstate直接访问登录页面。
然后,出现重定向就ok了。看见sorry页面的基本是验证码和viewstate的问题。