教务处模拟登陆的问题
前不久想直接用cookie登入教务处获得数据结果cookie死活设置不了,于是这次想先模拟登陆再获得数据。
事前准备
登录
- 目标API:http://jwxt.jnu.edu.cn/Login.aspx
- 需要的字段:
- __VIEWSTATE:/wEPDwUKMjA1ODgwODUwMg9kFgJmD2QWAgIBDw8WAh4EVGV4dAUk5pqo5Y2X5aSn5a2m57u85ZCI5pWZ5Yqh566h55CG57O757ufZGRkQHzthBmMTOkUl+ppvHZCGZFIgkY=
- __VIEWSTATEGENERATOR:C2EE9ABB
- __EVENTVALIDATION:/wEWBwKa9aHcDAKDnbD2DALVp9zJDAKi+6bHDgKC3IeGDAKt86PwBQLv3aq9BwKtfLsN0olpYtRu4kxVBpo9Oquj
- txtYHBS:2015053961 // 学号
- txtYHMM:passwd // 密码
- txtFJM:k23y // 验证码
- btnLogin:%B5%C7++++%C2%BC
获得信息
登陆之后进入信息所在的页面就可以,页面URI可以从JS中直接看到
问题
无论用户名密码验证码对不对最后返回的结果都是500
另一篇
受同学的启发,准备用爬虫爬取教务处的页面,至于干什么还没想那么远…
结果用requests伪造请求头进去之后发现这是动态页面,而只用requests加载不出来
于是想用selenium来加载js,这时候就需要改变页面的cookie。然而在设置cookie的时候会报错:Can only set Cookies for the current domain
Google了好多都没找到解决方案
于是想requests和selenium结合,结果真的有这个库selenium-requests,没想到原理居然还是调用selenium里面的内容…所以还是报同样的错…
折腾前面的几种方法折腾了好久,似乎还是不行
cookie是从header里面提取的,也有从Chrome插件里面提取读取为JSON再解析的,两者似乎都不起作用
本来想直接登录再直接从对象中获取cookie然而需要验证码这就很麻烦了。然而我觉得登陆之后获取cookie似乎和直接得到没区别。
直接在requests里面使用cookie进入后使用Session.cookies结果发现是空的???
又是一个玄学的问题。