教务处模拟登陆的问题

前不久想直接用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结果发现是空的???

又是一个玄学的问题。