抓取知乎上关于自动驾驶的提问与回答
1、通过抓包发现三个参数比较可以:x-zse-93、x-zse-96、x-zst-81,刷新页面再次查看数据接口参数发现96参数会随着页面刷新发生变化,其他两个值为定值
2、 通过全局搜索x-zse-96参数确定对应JS文件,搜索发现两处均打上断点,调试发现只运行一个,继续分析发现(F(r).encrypt)(f()(s)))可疑,打上断点,刷新调试,通过跟栈进入F(r).encrypt)方法,判断此处参数x-zse-96加密位置(return __g._encrypt(encodeURIComponent(e))),f()为编码函数,s的值为i:101_3_3.0、c:/api/v4/topics/19635352/best_answerers?limit=3、o:"AFAeIjRtgBSPTpSQudQaa4i-eiRP22VxXGM=|1644995945"、x-zst-81字段拼接而成。且S参数经过了MD5加密为16进制。
3、 参数分析完毕抠取,拷贝此生成方法所有JS代码到notepad++,格式化折叠所有代码搜索return __g._encrypt(encodeURIComponent(e)),点击对应花括号,显示开始与结束,按照括号颜色抠取Js
4、 python实现:构建响应请求头,拼接对应s参数,经过处理的s参数要通过MD5加密,调用JS文件传入S参数,再将生成的参数传入请求头发现可以正常请求到数据
5、 接下来就是网页数据提取操作。
点击空白处退出提示
评论