赞
踩
2023.12.15第一次更新
先开个坑 以我们学校为例
工具就是fiddler和pycharm
2023.12.16第二次更新
本次介绍如何使用fiddler抓包
我们要先使用fiddler对图书馆的数据进行抓包分析。
这里使用fiddler时要注意 使用fiddler时电脑会自动代理(具体原因我没深究),所以pycharm的请求是发不出去的,这里建议大家一次性把代码构建完全再发送请求。
首先使用fiddler抓取排队的包,请求头长这个样子(隐私信息使用XXX代替)
- POST https:XXX HTTP/1.1
- Host: XXX
- Connection: keep-alive
- Content-Length: XXX
- App-Version: 2.1.1
- User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x6309080b) XWEB/8461 Flue
- Content-Type: application/json
- Accept: */*
- Origin: https://web.traceint.com
- Sec-Fetch-Site: same-site
- Sec-Fetch-Mode: cors
- Sec-Fetch-Dest: empty
- Referer: XXXXX
- Accept-Encoding: gzip, deflate, br
- Accept-Language: zh-CN,zh;q=0.9
- Cookie:XXXX
- {"operationName":"prereserveCheckMsg","query":"query prereserveCheckMsg {\n userAuth {\n prereserve {\n prereserveCheckMsg\n }\n }\n}"}
这里注意排队的请求头的第一个参数是preserveCheckMsg
只有发送排队请求以后再发送选座请求才可以正常成功的选座,否则会返回True但是座位选不上的问题。
再使用fiddler抓取选座的包
- POST https:XXX HTTP/1.1
- Host: XXX
- Connection: keep-alive
- Content-Length: XXXX
- App-Version: 2.1.1
- User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x6309080b) XWEB/8461 Flue
- Content-Type: application/json
- Accept: */*
- Origin: https:XXXX
- Sec-Fetch-Site: same-site
- Sec-Fetch-Mode: cors
- Sec-Fetch-Dest: empty
- Referer: https:XXXX
- Accept-Encoding: gzip, deflate, br
- Accept-Language: zh-CN,zh;q=0.9
- Cookie: XXXX
- {"operationName":"save","query":"mutation save($key: String!, $libid: Int!, $captchaCode: String, $captcha: String) {\n userAuth {\n prereserve {\n save(key: $key, libId: $libid, captcha: $captcha, captchaCode: $captchaCode)\n }\n }\n}","variables":{"key":"14,21.","libid":10084,"captchaCode":"","captcha":""}}
我们可以看到选座的data参数为save在data的variables中的key对应了座位的坐标和图书馆场所的id
我们只需修改Key和libid就可以选择自己心仪的座位
这里我们需要注意的是Cookie由于cookie的获取需要fiddler去爬,在实际应用中不可能每次都抓一次cookie,感谢git上的大佬的思路,提供了一种获取cookie的方法,链接如下
GitHub - MikeWang000000/GoLibCookie: 我去图书馆 免抓包 获取Cookie
我会在后期的文件中将这个功能耦合入程序中
在获取Cookie后,我们就可以模拟请求,发送至学校服务器。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。