当前位置:   article > 正文

我去图书馆自动抢座_csdn 湖南师大图书馆抢座爬虫

csdn 湖南师大图书馆抢座爬虫

2023.12.15第一次更新

先开个坑 以我们学校为例

工具就是fiddler和pycharm

2023.12.16第二次更新

本次介绍如何使用fiddler抓包

我们要先使用fiddler对图书馆的数据进行抓包分析。

​这里使用fiddler时要注意 使用fiddler时电脑会自动代理(具体原因我没深究),所以pycharm的请求是发不出去的,这里建议大家一次性把代码构建完全再发送请求。

​首先使用fiddler抓取排队的包,请求头长这个样子(隐私信息使用XXX代替)

  1. ​POST https:XXX HTTP/1.1
  2. Host: XXX
  3. Connection: keep-alive
  4. Content-Length: XXX
  5. App-Version: 2.1.1
  6. 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
  7. Content-Type: application/json
  8. Accept: */*
  9. Origin: https://web.traceint.com
  10. Sec-Fetch-Site: same-site
  11. Sec-Fetch-Mode: cors
  12. Sec-Fetch-Dest: empty
  13. Referer: XXXXX
  14. Accept-Encoding: gzip, deflate, br
  15. Accept-Language: zh-CN,zh;q=0.9
  16. Cookie:XXXX
  17. {"operationName":"prereserveCheckMsg","query":"query prereserveCheckMsg {\n userAuth {\n prereserve {\n prereserveCheckMsg\n }​\n }​\n}​"}​

这里注意排队的请求头的第一个参数是preserveCheckMsg

只有发送排队请求以后再发送选座请求才可以正常成功的选座,否则会返回True但是座位选不上的问题。

再使用fiddler抓取选座的包

  1. POST https:XXX HTTP/1.1
  2. Host: XXX
  3. Connection: keep-alive
  4. Content-Length: XXXX
  5. App-Version: 2.1.1
  6. 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
  7. Content-Type: application/json
  8. Accept: */*
  9. Origin: https:XXXX
  10. Sec-Fetch-Site: same-site
  11. Sec-Fetch-Mode: cors
  12. Sec-Fetch-Dest: empty
  13. Referer: https:XXXX
  14. Accept-Encoding: gzip, deflate, br
  15. Accept-Language: zh-CN,zh;q=0.9
  16. Cookie: XXXX
  17. {"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后,我们就可以模拟请求,发送至学校服务器。​​​

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/307155
推荐阅读
相关标签
  

闽ICP备14008679号