爬取目标:
首页 8d93120efc7aac31648363dabd3ff4e9
接口:805E4C9121CC89786CEE70F095EACBDF
使用工具及涉及知识点
语言:Python===3.6
模块:requests random time hashlib-->md5
浏览器:chrome96
事件起因
看到某群组里面讨论目标很难爬取,各种参数加密。于是抱着好奇心搞起…
网站本身有开发者平台提供api,但是有使用次数限制。
开启反爬之路
-
使用Chrome抓包工具找到接口入口网址,发现需要携带一堆参数提交POST请求
-
直接使用现有的参数向目标接口发送请求(未携带header参数),得到{errorcod:50},请求失败,说明网站在请求头参数进行了反爬限制。
-
挨个尝试请求头参数:发现需要携带3个请求头参数User-Agent Cookies Referer,携带post表单发起请求,得到了正确的响应结果,BUT,更换查询词后,又收到了{errorcod:50}的错误。说明参数具有时效性或者绑定了查询词。开始debug js代码
-
根据堆栈根据找到js源码,查找加密参数位置,进行断点调试
发现目标参数有15个,找到能看懂的一个位置进行解析(包含了sign和bv两个加密参数)。
var r = function(e) {
var t = n.md5