进入某网站,点击科目,打开Chrome 调试工具,刷新页面,找到 https://www.daxuedaan.com/api/v1/categories?type=1&app_name=daanjun&ts=1553752665976
目标:获取其返回值
分析其请求头:
走过的弯路在这里就不叙述了,要想正确获得响应结果,请求时必须要带的一个参数就是tk
获取tk:
最后发现 tk 存在于 https://www.daxuedaan.com/js/app.js 中
仔细查看该 js 可以看到,m.a.request 的 method 共有三种,分别是:GET、POST、PUT,由于我们的目标是 GET 请求,所以我们重点看上图的 js 函数。
由代码可以看到 tk 的值,是将 s 转变为 json 字符串,在经过 O() 函数处理得到,所以我们的工作重点就是要知道 s 的值是什么,以及 O() 函数内容。
1. 找到 s 值:
通过打断点可以看到 s 的值为 {type: "1", app_name: "daanjun", ts: "1553754347135"},至于ts 就是当时请求的时间戳。
2. 找 O() 函数
断点打到 1345行,刷新页面,单步运行
当运行到如图所示时,点击 Step into next function call 进入函数
由此可以看出,tk 就是把 json 字符串 加上"(*^__^*)",然后经过md5加密后的结果
所以在 Python 中可以这样做:
import time
import hashlib
now_time = time.time()
tk = hashlib.md5('{"type":"1","app_name":"daanjun","ts":"%s"}(*^__^*)'%str(int(now_time*1000))).hexdigest()