我希望能总结一个涵盖大部分爬虫逆向问题的固定思路,在这个思路框架下可以很高效的进行逆向爬虫开发。目前我仍在总结中,下面的通解思路尚不完善,还望各位读者见谅。
一、第一步:明确反爬手段
反爬手段可以分为几个大类
(1)检查请求头信息
服务器会检查User-Agent、Referer、检查加密的URL/API参数等等。
(2)对JS压缩、混淆和加密
JS代码运行在客户端是公开透明的所以有必要为了反爬进行一些处理。
(3)IP限制
(4)验证码
(5)字体反爬
二、第二步:针对不同的反爬手段采集相应的策略
(1)若为“URL/API参数加密”
a、寻找并快速定位加密入口【寻找入口、快速定位】
b、找到入口后进行调试分析【调试分析、破解加密】
c、分析过后通过代码模拟执行生成加密参数【模拟执行、生成参数】
(2)若为JS压缩、混淆和加密
a、若是JS压缩:可用浏览器代码格式化、复制到pycharm里进行代码格式化
b、若是JS混淆:则需要再判断混淆手段
变量混淆、常量混淆、控制流平坦化、调试保护等等
c、若是JS加密:测需要再判断加密方式
AES、MD5、SM、SHA-1、Base64等等
三、总结
JS逆向技术内容非常庞大繁杂,我画了一张思维导图帮助大家理解。图中还有部分内容由于本人尚在学习中所以还不全面。