请求 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 就可以查询课表,查询成绩等
····················
这里本来应该显示表单数据,变成了请求负载,
1
Feiox 2016-05-11 15:53:45 +08:00
正方教务系统 :P
|
3
jimzhong 2016-05-11 16:01:07 +08:00
以前做过正方的模拟登录,没有遇到楼主的问题。
模拟登录失败可能是由于服务端会检查 UA ? 楼主可以试试用 requests 的 session 。不用操心 cookie 。 |
4
lxy 2016-05-11 16:03:53 +08:00
网址……写对了吗?
|
7
ZombieMisaka 2016-05-11 16:28:31 +08:00
教务系统想要纯用 post 拿到数据很难,到后面会有各种坑,比如不同系统之间跳转(认证系统和教务系统不是一个公司做的),还有课程信息几乎全部是 js 请求得到的,而简单的 post 并不能获取到 js 运行后的 html,建议使用 selenium 这种自动化来实现功能,简单方便
|
8
hxndg 2016-05-11 16:32:25 +08:00
额。。。我在些登录我们学校的教务的时候,直接用的 request 的 session ,木有遇到问题,建议还是直接用 request 把。 http://docs.python-requests.org/en/master/
|
9
hxndg 2016-05-11 16:33:32 +08:00
但是,如果要真是想抓取到各种信息的话,就好像北邮人论坛的那种必须得看 js 的解析了,这个就很尴尬了。
|
13
liangmishi 2016-05-11 17:31:12 +08:00 via Android
http://www.tor1024.com/spider/4218ZDsqRItW57236333
前几天写过一个正方教务系统 |
14
extreme 2016-05-11 17:54:08 +08:00
正方内页会检查 Refer 头,带上 Refer 头,具体内容你 F12 看 POST 时的。
|
15
wuhuaji 2016-05-11 18:46:11 +08:00
我也写过 Python 版的模拟登陆,楼主可以参考下:
https://github.com/WuHuaJi0/jwc/blob/master/auth.py |
16
Syc 2016-05-11 18:49:23 +08:00 via Android
检查 UA 来路 特定 http 头 等
(还有比如 115 有特定的浏览器 js 钩子) |
17
cdmaok 2016-05-11 19:30:35 +08:00
selenium 走起。
|
18
imNull 2016-05-11 19:53:52 +08:00 via Android
我们学校也是强智教务系统,但版本可能不一样,我们学校的没你说的那么复杂。
不知道有木有参考价值 https://github.com/xu42/DLPU-Student-API |
19
loveyu 2016-05-11 23:43:12 +08:00
之前用 C#做过正方的模拟,每次请求都把信息带全就好了,那个什么表单中的__VIEWSTATE 也得带,不然就报错。
|
20
ysdj 2016-05-12 00:54:12 +08:00
你没请求验证码吧?
|
22
sholmesian 2016-05-12 07:15:34 +08:00 via iPhone
教务系统的话还有一个坑是如果某个参数(包括但不限于用户名)含有中文时,编码统一的问题。
|
23
yjd 2016-05-12 10:29:35 +08:00
做 post 很多时候要注意引用页有没有带上。
|
24
yangyanggnu 2016-05-12 13:37:21 +08:00
你 POST 到 http://newjwglxt.jiea.cn/jiaowu_system/login.aspx 试试。
另外,我用你给的 cookie 进去看了下,有如下链接: 学院主站 OA 系统 新教务系统 老教务系统 科研成果申报 一卡通查询 资产管理系统 但都是内网地址,暂时看不什么东西。 |
25
ayaseangle 2016-05-13 12:04:04 +08:00
.net webform 做的系统。。。
|
26
lightory 2016-05-21 17:36:43 +08:00
@sholmesian 咦,在这里看到你了 :)
|
27
sholmesian 2016-05-21 20:03:49 +08:00 via iPhone
@lightory 哈哈 好久不见😄
|