2020浙大信息化年度数据账单中的code参数分析

从去年年末开始,各大APP就开始给用户推送他们的「年度报告」。很快啊,朋友圈就被网易云、QQ音乐、B站的年度报告刷屏了。说起来还挺矛盾的,人们一边为自己的信息泄露而焦虑着,一边又享受着别人分析自己数据。今天吃完板烧鸡腿堡出来在群里看到好多人在讨论浙大出的这个信息化年度数据账单,然而并没有什么有价值的数据。

下午摸鱼的时候稍微分析了一下接口,不复杂,但是因为想当然浪费了很多时间。

网址:

https://it2020.zju.edu.cn/

一个小坑:访问https://it2020.zju.edu.cn/会跳转到实际的页面https://it2020.zju.edu.cn/share,但是直接访问https://it2020.zju.edu.cn/share则会跳转到微信推文的页面。用浏览器随便抓一下包,容易看出所有的数据都包含在这条POST请求的响应中:图片这个请求有两个参数,其中redirect_uri为固定参数,我们只需要找到code这个参数就好了。之前写浙大通行证模拟登录的时候就发现登录时会发送多个状态码为302的重定向请求:图片数据获取失败这里重定向的过程是通过如下方法获得的:

# 登录
resp = s.post(......)
for r in resp.history:
  print(r.status_code, r.url)



因为这里最后一次重定向请求的URL中包含一个ST开头的ticket参数,我就想当然的觉得我们需要的code参数就是这个。然而把这个ticket参数的值扣下来赋值给code,然后发送POST请求,得到的响应为「500 Internal Server Error」。我只好按部就班地沿着请求列表向上找,希望能找到code参数的来源。一番攀谈交心了解到,code参数和上面一个302重定向的请求中的ticket参数相同:图片而这个请求是由登录的POST请求重定向而来的:图片到这里,解决办法就很显然了——把登录时的URL稍作调整即可。把每一次重定向的过程都print出来,可以看出,在登录过程中,有两个重定向URL都包含ticket这个参数,但是它们的值是不一样的,第一个ticket的值才是我们想要的code参数的值。图片



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章