我希望能总结一个涵盖大部分爬虫逆向问题的固定思路,在这个思路框架下可以很高效的进行逆向爬虫开发。目前我仍在总结中,下面的通解思路尚不完善,还望各位读者见谅。
一、第一步:明确反爬手段
反爬手段可以分为几个大类
(1)检查请求头信息
服务器会检查User-Agent、Referer、cookie、检查加密的URL/API参数等等。
1、请求参数加密反爬
其中最重要的是请求参数加密(包括URL/API本身加密,获取加密部分请求参数),关于这种反爬手段我单独写了一遍如何逆向的思路文章,大家感兴趣可以来瞧瞧。
【学习心得】请求参数加密的原理与逆向思路http://t.csdnimg.cn/C5ShF
2、User-Agent反爬
3、cookie反爬
(2)响应数据加密
响应数据加密是常见的反爬手段的一种,它是指服务器返回的不是明文数据,而是加密后的数据。这种密文数据可以被JS解密进而渲染在浏览器中让人们看到。关于这种反爬手段也是非常常见,所以我也单独写了一篇逆向思路的文章并附有源码案例哦!
【学习心得】响应数据加密的原理与逆向思路http://t.csdnimg.cn/3Qw9L
(3)对JS压缩、混淆和加密
JS代码运行在客户端是公开透明的所以有必要为了反爬进行一些处理。
(4)IP限制
(5)验证码
(6)字体反爬
二、第二步:针对不同的反爬手段采集相应的策略
(1)若为“URL/API参数加密”
a、寻找并快速定位加密入口【寻找入口、快速定位】
b、找到入口后进行调试分析【调试分析、破解加密】
c、分析过后通过代码模拟执行生成加密参数【模拟执行、生成参数】
(2)若为JS压缩、混淆和加密
a、若是JS压缩:可用浏览器代码格式化、复制到pycharm里进行代码格式化
b、若是JS混淆:则需要再判断混淆手段
变量混淆、常量混淆、控制流平坦化、调试保护等等
c、若是JS加密:测需要再判断加密方式
AES、MD5、SM、SHA-1、Base64等等
【学习心得】AES对称加密入门http://t.csdnimg.cn/CSAba
三、总结
JS逆向技术内容非常庞大繁杂,我画了一张思维导图帮助大家理解。图中还有部分内容由于本人尚在学习中所以还不全面。