关于模拟登录教务系统的一些疑问

2016-05-11 15:40:52 +08:00
 ifane

模拟教务系统所需要的几个参数

请求 cookie 会在进教务系统响应给浏览器

__VIEWSTATE \ __VIEWSTATEGENERATOR \ __EVENTVALIDATION这三个是隐藏在 html 表单里面的

当 POST 数据时

请求头里有请求 Cookie

请求主体里有__VIEWSTATE, 但是这个是由下面组合而成的

__VIEWSTATE=__VIEWSTATE+&+__VIEWSTATEGENERATOR+&+__EVENTVALIDATION+&+Account+&+PWD+&CheckCode+&+cmdok

每一个标签内包含的/标记 统统转为%2F,=统统转为%3D,+统统转为%2B

__VIEWSTATE=%2FwEPDwUKMTA0NDkyOTUxNA9kFgICAw9kFgQCDw8PFgIeBFRleHRlZGQCEQ8PFgIfAAUCMjBkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUHQ2hrVXNlclVLjABopnY3NiJFSz0oR293GTZC
&__VIEWSTATEGENERATOR=DD4FBC66
&__EVENTVALIDATION=%2FwEWBwKx8tHqBQKvo8HwCwKG85bvBgLO44u1DQLAiqigBwLM6LcMApnA7cMNf4XQgPVkJVQsZf3FTrkhLdziQ4k%3D
&Account=*****
&PWD=******
&CheckCode=je9p
&cmdok=

post 数据以后会得到一个响应的 Cookie

那么就有了一个完整的 Cookie

Cookie: ASP.NET_SessionId=k0rk4pyovyhc1l454tejrrrv; .ASPXAUTH=9FD433C6CC5CFE062C636A99A7DAD8CBDD8E0BCC5AF8F632F48F7879D46B40DE3E81C216943FDDEA7C57454B80C8BE24E7AFBB41253A81C6FFA1A799C5F441204216B1D884426C3CF9A5B2774E422F2633EABC5A5BB212C7DD4E887CBD301DEE4A60917E17121E54DAB4023421D4FEE762BA661C

通过这个完整的 Cookie 就可以查询课表,查询成绩等

····················

以上是我的分析,但是在我实践过程当中 post 数据会自动跳转到登录页面

得不到登录成功后的完整 Cookie,

这里本来应该显示表单数据,变成了请求负载,

是我的 POST 方法不正确么?

6349 次点击
所在节点    程序员
27 条回复
Feiox
2016-05-11 15:53:45 +08:00
正方教务系统 :P
ifane
2016-05-11 15:54:21 +08:00
@Feiox 强智教务系统
jimzhong
2016-05-11 16:01:07 +08:00
以前做过正方的模拟登录,没有遇到楼主的问题。
模拟登录失败可能是由于服务端会检查 UA ?
楼主可以试试用 requests 的 session 。不用操心 cookie 。
lxy
2016-05-11 16:03:53 +08:00
网址……写对了吗?
ifane
2016-05-11 16:20:43 +08:00
@lxy 对了
ifane
2016-05-11 16:21:17 +08:00
@jimzhong 这个没接触过,不知道是怎么个弄?
d2D5Cc
2016-05-11 16:28:31 +08:00
教务系统想要纯用 post 拿到数据很难,到后面会有各种坑,比如不同系统之间跳转(认证系统和教务系统不是一个公司做的),还有课程信息几乎全部是 js 请求得到的,而简单的 post 并不能获取到 js 运行后的 html,建议使用 selenium 这种自动化来实现功能,简单方便
hxndg
2016-05-11 16:32:25 +08:00
额。。。我在些登录我们学校的教务的时候,直接用的 request 的 session ,木有遇到问题,建议还是直接用 request 把。 http://docs.python-requests.org/en/master/
hxndg
2016-05-11 16:33:32 +08:00
但是,如果要真是想抓取到各种信息的话,就好像北邮人论坛的那种必须得看 js 的解析了,这个就很尴尬了。
Soar360
2016-05-11 17:03:35 +08:00
一看就是 ASP.NET WebForm ,呵呵哒。仔细检查下你的 Post 数据到底正确不吧。一般是没问题的。
ifane
2016-05-11 17:05:37 +08:00
@Soar360 我可以确定没错.
lxy
2016-05-11 17:20:53 +08:00
@ifane 这么自信……我也不好意思再说什么了╮(╯▽╰)╭
liangmishi
2016-05-11 17:31:12 +08:00
http://www.tor1024.com/spider/4218ZDsqRItW57236333
前几天写过一个正方教务系统
extreme
2016-05-11 17:54:08 +08:00
正方内页会检查 Refer 头,带上 Refer 头,具体内容你 F12 看 POST 时的。
wuhuaji
2016-05-11 18:46:11 +08:00
我也写过 Python 版的模拟登陆,楼主可以参考下:
https://github.com/WuHuaJi0/jwc/blob/master/auth.py
Syc
2016-05-11 18:49:23 +08:00
检查 UA 来路 特定 http 头 等
(还有比如 115 有特定的浏览器 js 钩子)
cdmaok
2016-05-11 19:30:35 +08:00
selenium 走起。
imNull
2016-05-11 19:53:52 +08:00
我们学校也是强智教务系统,但版本可能不一样,我们学校的没你说的那么复杂。
不知道有木有参考价值 https://github.com/xu42/DLPU-Student-API
loveyu
2016-05-11 23:43:12 +08:00
之前用 C#做过正方的模拟,每次请求都把信息带全就好了,那个什么表单中的__VIEWSTATE 也得带,不然就报错。
ysdj
2016-05-12 00:54:12 +08:00
你没请求验证码吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/277913

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX