激情的开头,大意的结局,Python 反爬加更,好友求助米哈游的 API,给他安排上
⛳️ 实战场景
本篇博客属于加更系列,源自 78 技术人社群(点击博客下卡片你也可以加入)
本次的需求是一个站点,地址如下所示,群友提供的地址。
打开页面一看,果然~
在按照群友提供的 API 寻找对应的请求逻辑,下述是群友提供的地址。
它的代码截图如下所示。
在请求头中基本参数具备的情况下,依旧得到了 403 状态码,可以猜测请求头中大概率有加密逻辑,这不巧了么,撞上门的案例。
⛳️ 反爬分析
打开开发者工具之后,直接被无限 debugger 阻挡了。
先禁止这行代码的运行,在行号位置选择下图所示按钮。
找到群友提供的接口,查看其请求头,判断校验参数。
请求网址: bbs-api.脱敏处理.com/post/wapi/getPostFull?gids=5&post_id=21147956&read=1
请求方法: GET
除了 cookie 外,下图框选的几个参数有很大的嫌疑。
这里看数据的格式,可以盲猜是时间戳和 md5 加密。
使用 PostMan 模拟一下请求,结果直接访问到数据了,尴尬了,难道跟加密参数无关?
编写代码如下所示:
结果返回的依旧是 403 ,禁止访问。
这种情况有可能是我们缺少某些请求头参数,继续补齐即可。
多次尝试之后,发现 Cookie 中有个参数竟然是 acw_tc
,每次刷新的时候会发生变化,是不是这个原因导致的我们无法访问数据呢?
使用下述代码一下:
还是无法请求到数据,从开发者工具中发现 acw_tc
是一个 httponly
形式的 Cookie。
但是该格式的参数,只是为了防止 XSS 跨域攻击的,也就是防止 JS 获取 cookie,原则上从 Python 代码中发起是不会有限制的。
难道还有其它参数加密了,但是 PostMan 是可以正常请求的,此时我陷入了迷茫~
但是当我复盘代码的时候,我发现犯了一个错误 🤡🤡🤡🤡,我竟然没有写 referer。
修改代码之后,数据成功的获取到了。
📣📣📣📣📣📣右下角有个大拇指,点赞的漂亮加倍
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/c11217fab54048ea27335e0ef】。文章转载请联系作者。
评论