西南交大教务处登录及填写评价抓包分析和成品软件分享
浏览 3147 | 评论 3 | 字数 6516
卖女孩的小火柴
2019年05月31日

众所周知,想要看成绩就必须得先经过评价系统,而填写完所有的评价耗时实在是太长太长了,于是我花了更长的时间抓了包(哭)

2019.11.16更新:更新了评价软件

1.登录

很明显,第一步需要解决的问题就是登录,顺便一提,学校怎么取消https了。

登录前的准备工作

清空cookies打开http://jwc.swjtu.edu.cn/service/login.html 界面
抓包看一下
没啥特别的,置了一个cookies JSESSIONID=xxxxxxxxE10FD75F66DB89B440625; Path=/; HttpOnly
很明显,这个是关键cookies,保存保存。
继续向下看,有个http://jwc.swjtu.edu.cn/vatuu/GetRandomNumberToJPEG?test=1557456422864 请求,155xxx很明显是时间戳,手动访问就会弹出验证码,这个就是获取验证码的url了,记得带cookies访问。

抓包登录
故意填错验证码,点击登录抓到一个POST包

POST http://jwc.swjtu.edu.cn/vatuu/UserLoginAction HTTP/1.1
Host: jwc.swjtu.edu.cn
Connection: keep-alive
Content-Length: 121
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://jwc.swjtu.edu.cn
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
DNT: 1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://jwc.swjtu.edu.cn/service/login.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=xxxxxxx75F66DB89B440625; username=201811xxxx

username=201811xxxx&password=mimal&url=http%3A%2F%2Fjwc.swjtu.edu.cn%2Findex.html&returnUrl=&area=&ranstring=SSSS

这个登录包就算抓完了,结构清晰一目了然,注意请求的head需要包含

Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
DNT: 1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://jwc.swjtu.edu.cn/service/login.html

否则会出错

验证登录
写这个系统的人脑洞有点大,我没弄明白,如果你只执行了上一步,获取了 登录成功的msg,但没有这一步,那么你的cookies访问其他界面仍然会是未登录状态。
这一步就是紧接着登录包的那个页面

POST http://jwc.swjtu.edu.cn/vatuu/UserLoadingAction HTTP/1.1
Host: jwc.swjtu.edu.cn
Connection: keep-alive
Content-Length: 401
Cache-Control: max-age=0
Origin: http://jwc.swjtu.edu.cn
Upgrade-Insecure-Requests: 1
DNT: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://jwc.swjtu.edu.cn/service/login.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=xxxxxxxxxxx75F66DB89B440625; username=201811xxxx

url=http%3A%2F%2Fjwc.swjtu.edu.cn%2Findex.html&returnUrl=&loginMsg=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

请求解码后为:

url: http://jwc.swjtu.edu.cn/index.html
returnUrl: 
loginMsg: 登录成功!【201811xxxx,xxx】欢迎您回来,您上次登录时间为:2019-xxxxx,登录IP:182.xxxxxxx【】

想不到吧?我还把上一步获取到的msg再传回去显示在页面上!天才程序员骚操作啊。
同样,head需要对应。

以下是python3的登陆代码:

#!/usr/bin/python
#coding:utf-8
import requests
import time
from PIL import Image
from io import BytesIO
import os
import json

#获取验证码
print("正在获取验证码......")
session = requests.session()
session.get("http://jwc.swjtu.edu.cn/service/login.html")
r = session.get("http://jwc.swjtu.edu.cn/vatuu/GetRandomNumberToJPEG?test="+str(int(time.time())))
img = Image.open(BytesIO(r.content))
img.save("code.jpg")
os.startfile("code.jpg")

#获取用户信息
yzm = input("请输入验证码:")
username = input("请输入用户名:")
password = input("请输入密码:")

#模拟登陆
#第一步,POST发送
sendmsg = {
    'username' : username,
    'password' : password,
    'url' : 'http://jwc.swjtu.edu.cn/vatuu/UserExitAction&returnUrl',
    'area' : '',
    'ranstring' : yzm,
    }
login_header = {
    'Referer' : 'http://jwc.swjtu.edu.cn/service/login.html',
    'Origin' : 'http://jwc.swjtu.edu.cn',
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
    'DNT' : '1',
    'Accept' : 'application/json, text/javascript, */*; q=0.01',
    'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8',
    'X-Requested-With' : 'XMLHttpRequest',
}
r = session.post("http://jwc.swjtu.edu.cn/vatuu/UserLoginAction", data=sendmsg ,headers=login_header)
json = json.loads(r.text)
print(json['loginMsg'])

#第二步,确认登陆
sendmsg = {
    'url' : 'http://jwc.swjtu.edu.cn/vatuu/UserExitAction&returnUrl',
    'returnUrl' : '',
    'loginMsg' : json['loginMsg']
}
login_header = {
    'Referer' : 'http://jwc.swjtu.edu.cn/vatuu/StudentScoreInfoAction?setAction=studentMarkUseProgram',
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
    'DNT' : '1',
    'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
    'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8',
    'Upgrade-Insecure-Requests' : '1',
    'Accept-Encoding' : 'deflate',
    'Accept-Language' : 'zh-CN,zh;q=0.9'
}
r = session.post("http://jwc.swjtu.edu.cn/vatuu/UserLoadingAction", data=sendmsg ,headers=login_header)

#已经成功登陆

2.填写评价

理论上来讲,上一步过了后就应该可以做到这一步了。

获取评价的url
首先抓到评价界面的包

GET http://jwc.swjtu.edu.cn/vatuu/AssessAction?setAction=list HTTP/1.1
Host: jwc.swjtu.edu.cn
Connection: keep-alive
Upgrade-Insecure-Requests: 1
DNT: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://jwc.swjtu.edu.cn/vatuu/AssessAction?setAction=index
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=xxxxxxxxxxxxx0FD75F66DB89B440625; username=201811xxxx

一个简单的GET,然后所有的URL都在里面,写个正则批量获取出来就行。

组装评价好的发送包
打开任意URL对应的页面,自己填写一次抓包保存,可以看到POST的数据是由几个参数构成的。
并不是很难,JS是直接写在页面末尾的,很简单而且没混淆,甚至还有注释,自己看一看应该就能把包组好

发送组装好的包
注意!页面上有一行 少于1分钟会强制重写,我一开始以为这是在吓唬我,后来没想到是真的。
打开URL后,需要等待1分钟以上才能提交包,否则直接返回参数错误!
坑了我好久好久。。。

这个程序不是很难,写的挺随意,看完分析的可以自己尝试,如果只是想水过去的可以下载附件,自己操作即可。
西南交大自动评价.7z
如果被杀软拦截,请添加白名单。受不了的请勿使用。
如果你觉得文章写得还不错,或者看在我辛苦码了半天的份上,可以请我喝杯可乐。

本文作者:卖女孩的小火柴
本文链接:https://www.shinenet.cn/archives/3.html
最后修改时间:2019-11-16 00:30:08
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
如果文章对您有帮助,不妨打赏杯可乐?微信-赞赏码
评论
如果可能,请填写真实邮箱,有回复会送至邮箱。请不要水评论,谢谢。
textsms
支持 Markdown 语法
email
link
评论列表
已有 3 条评论
小小人儿
2021-07-24 16:12
其实可以保存已填写评价的cookie,换别的账号登陆也不用写评价
2021-07-24 19:12
@小小人儿 啊这
2020-09-09 15:18
图书馆的系统升级了,等考完试再看看吧