准备写个模拟登录教务系统的小玩具,先观察了请求发送的情况
主页是这样的
使用 chrome 的开发工具看了 network 网络请求,因为登录后立马跳转,勾选了 preserve log,抓到了如下图请求
具体参数如下
General
Request URL: http://校园网 ip/student/Login.aspx?ReturnUrl=%2fstudent%2fscore.aspx
Request Method: POST
Status Code: 302 Found
Remote Address: 校园网 ip
Referrer Policy: no-referrer-when-downgrade
请求头
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Content-Length: 466
Content-Type: application/x-www-form-urlencoded
Cookie: safedog-flow-item=928444C58E0B5342094C372124632918; CheckCode=m7j9
DNT: 1
Host: 210.45.135.228
Origin: http://校园网 ip
Proxy-Connection: keep-alive
Referer: http://校园网 ip/student/Login.aspx?ReturnUrl=%2fstudent%2fscore.aspx
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Form Data
__EVENTTARGET:
__EVENTARGUMENT:
__VIEWSTATE: /wEPDwULLTE5MDg0NjI4MTNkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBRpjdGwwMCRMb2dpblN0YXR1c3N0dSRjdGwwMQUaY3RsMDAkTG9naW5TdGF0dXNzdHUkY3RsMDMFWZuB4l0tH4dvBUeAP+jStdEyA/drRT4hCrSAZjcX1A==
__VIEWSTATEGENERATOR: 630CEE1E
ctl00$Content$Login1$UserName: 201818602037
ctl00$Content$Login1$Password: 090035
ctl00$Content$Login1$GetCode: m7j9
ctl00$Content$Login1$LoginButton: 登录
真实用浏览器登录后在响应头能看到返回的 cookie,现在想做的也是通过模拟请求来拿到这个 cookie,但是先使用模拟发送请求工具后返回结果是主页的 HTML,也就是第一张图,请教问题出在哪
ps:模拟请求的时候请求头和 form data 都是直接复制的,不可能漏掉或错误
1
orzfly 2019-12-06 02:26:05 +08:00
看来是 ASP.net Web Form ?你可能要模拟一下 __VIEWSTATE。
这个网页可能不止发了一个请求:也许你输入完一个输入框后,就发了一个请求更新了 VIEWSTATE。 除了看请求之外,也许你可以在源代码里搜索 __doPostBack 看看什么事件下会触发。 |
2
AngryPanda 2019-12-06 02:27:21 +08:00 via Android
210.45.135.228 这是啥 IP
|
3
MooRider 2019-12-06 02:27:40 +08:00 1
你想直接获取 cookies? 哪用这么麻烦. 如果用的是 python 直接用.session 保持登陆状态就可以, requests 会自动帮你维持 cookies 状态.
比如 a=requests.session b=a.post(url,data) 这样 post 之后你的所有用 a 进行的操作都将保持这个 b 获取来的 cookies 建议在提问之前看看官方文档 |
4
Elissa OP @AngryPanda 应该是学校服务器的 ip,不知道外网能不能访问,你可以试下
|
5
AngryPanda 2019-12-06 02:31:03 +08:00 via Android
淮北师范大学信息学院教务系统😄
|
6
vmebeh 2019-12-06 02:32:45 +08:00 via iPhone
拿到登录页的 html 源码,把要提交的 form 里面的 hidden 属性的 input 的 value 读出来也一起提交,不要用抓到的数据,一次性的
那四条下划线开头的是 asp.net 的 form 自带的 |
7
AngryPanda 2019-12-06 02:33:59 +08:00 via Android
楼主学号密码就这样公开了吗
|
8
AngryPanda 2019-12-06 02:34:51 +08:00 via Android
UserName: 201818602037
Password: 090035 |
9
Elissa OP @AngryPanda 现在也查不到成绩
|
11
ruxuan1306 2019-12-06 04:24:20 +08:00 via iPhone
|
12
Elissa OP @ruxuan1306
python 已经尝试,这两个写死,甚至验证码写死,更换学号和密码可以成功登录 现在使用 php 的 curl 发请求,在 wireshark 抓包时发现 ctl00$Content$Login1$LoginButton: 登录 这个参数时含有中文 value 值与真实浏览器登录不一致 |
13
dangyuluo 2019-12-06 05:23:54 +08:00
那个漏洞百出的是正方
|
14
Elissa OP @ruxuan1306 传 form data 时参数打错了,php 也可以获取到了
|