反爬研究
在和A师傅的交流过程中,明确了反爬技术是很重要的,对于头条产品来说主要考虑是视频版权。对于电商的黑产,主要是羊毛党比较多。因此在这里快速学习一下反爬技术。
爬虫技术
常规编写思路
- 
分析页面请求格式 
- 
创建合适的http请求,验证请求的准确性 
- 
编写脚本,批量发送http请求,获取数据 
代理池
概念
为了保证代理的有效性,我们往往可能需要维护一个代理池。这个代理池里面存着非常多的代理,同时代理池还会定时爬取代理来补充到代理池中,同时还会不断检测其中代理的有效性。当然还有一个很重要的功能就是提供一个接口,这个接口可以随机返回代理池中的一个有效代理 公众号文章:Link
隧道代理
隧道代理无须切换 IP,将 IP 切换的事情交给隧道来做,程序只需要对接一个隧道代理的固定地址即可, e.g. xxproxy:7777 平台在云端维护一个全局 IP 池 供短效代理 IP 产品使用,池中的 IP 会不间断更新,以保证 IP 池中有足够多的 IP 供用户使用 隧道代理 基于 HTTP 协议,支持 HTTP/HTTPS 协议的数据接入。
如何实现
使用Squid代理服务器实现一个隧道代理的代理池。
 图:Squid工作机制
客户机请求web服务,通过Squid代理服务器,代理服务器检查web页面是否在缓存中。如有,直接返回;如果没有,则让Squid代理服务器去发起请求,获得缓存页面,再返回给客户机。
使用Squid的cache_peer功能,可以实现二次代理转发。因此,配置在Squid代理服务器的二级代理可以是批量的,不断变化的,而Squid服务器本身只留出固定的端口与客户机进行交互,从而实现一个简易的代理池的功能。
参考文章:Link
图:Squid工作机制
客户机请求web服务,通过Squid代理服务器,代理服务器检查web页面是否在缓存中。如有,直接返回;如果没有,则让Squid代理服务器去发起请求,获得缓存页面,再返回给客户机。
使用Squid的cache_peer功能,可以实现二次代理转发。因此,配置在Squid代理服务器的二级代理可以是批量的,不断变化的,而Squid服务器本身只留出固定的端口与客户机进行交互,从而实现一个简易的代理池的功能。
参考文章:Link
传统反爬技术
限制User-Agent
建立User-Agent白名单,对其进行检查。
对抗
设置user-agent,可以从一系列的User-Agent列表里里随机挑出一个符合标准的使用
通过IP限制
监控单个IP的访问情况,结合第三方情报平台,建立IP黑名单。
对抗
使用IP代理池,参见“爬虫技术”模块。
验证浏览器客户端
使用JS脚本可以要求浏览器(客户端)进行计算等进行验证,用以识别真实浏览器和爬虫脚本。
对抗
使用模拟浏览器的Python包,例如PhantomJS,本身适用于自动化测试,但可以在对效率要求不是非常高的情况下使用于反反爬虫。
_PhantomJS_是一个无界面的,可脚本编程的WebKit浏览器引擎
完善robots.txt来限制
在robots.txt中更新活跃程度高的恶意爬虫,也就是黑名单。
对抗
使用这些恶性爬虫的时候,更改请求头参数,伪装自身。
访问统计及分析(传统)
- 后台对访问进行统计,如果单个IP访问超过阈值,予以封锁
- 
效果还行 
- 
容易误伤 
- 
有较多的对抗手段(IP代理池) 
- 
后台对访问进行统计,如果单个session访问超过阈值,予以封锁 
- 
效果差 
- 
后台对访问进行统计,如果单个userAgent访问超过阈值,予以封锁 
- 
效果好 
- 
误伤严重 
- 
对抗:爬虫脚本可以随机浏览器类型 
- 
以上三种的组合 
- 
能力变大,误伤率下降,但只能防部分低级爬虫 
- 
参考:Link 
反爬新思路
来自GEETEST
工作量证明
反爬虫实际上是一场成本拉锯战。 如果我们能要求某个客户端的证明其工作量,要求完成某个特定计算,比如生成设备指纹,要达到某个工作量才能下发指纹。 可行的方法,比如是增加前端JS加密混淆,增加破解成本,也增加了中间人破解成本
轨迹模型
使用通过智能技术进行人机识别。 TODO

前端加密
增加前端JS加密混淆,增加破解成本,也增加了中间人破解成本。这个和工作量证明其实是泛化的关系。
网络层特征
SSL + TCP, 通过更底层的协议分析,提高数据采集的隐蔽性,从信息差上获取赢面。
一个反爬业务模型
- 反爬需要分析出异常的流量,并对异常流量进行分类处理

- 恶意爬虫的行为
- 
数据爬取 
- 
接口盗用 
- 
薅羊毛 
- 
未经授权扫描器 
- 
商业竞争 
- 
识别的方法 
- 
脚本识别 
- 
模拟器识别 
- 
数据策略 
- 
AI模型 
- 
接口防护 
- 
恶意设备 
- 
恶意访问者 
- 
防护的手段 
- 
验证码 
- 
Block(封禁) 
- 
Feed Fake Data(假数据) 
- 
Filter Traffic(监控模式) 
- 
Custom Action(自定义的其它手段) 
流量过滤分析

四层防护逻辑
- 设备环境监测
- 
数据串改 
- 
设备指纹 
- 
混淆加密 
- 
特性测试 
- 
特性采集 
- 
工作量证明 
- 
建立海量风险库 
- 
IP打分体系 
- 
黑产IP 
- 
爬虫IP 
- 
团伙IP 
- 
云服务器IP 
- 
设备指纹风险 
- 
网络风险探测 
- 
TCP特征 
- 
HTTP特征 
- 
大数据统计 
- 
人工智能模型 
- 
鼠标轨迹CNN模型 
- 
流量分析(行为分析) 
头条反爬研究
头条反爬策略
- 
封IP —— 使用代理池 
- 
网页文章链接(关键内容),通过另外的url请求获取,同时进行加密处理 
- 
对网页JS函数进行加密处理 
- 
视频通过videoid获取网页播放链接,经过三次加密处理才能获取最终url 
- 
翻页请求失败率高,降低爬虫获取信息的速度 
- 使用自定制的JS加密算法 —— 添加断点进行调试(分析其算法机制)
对抗
- 
首先找信息列表和下拉方式的URL规律,分析获取单页面信息的规律 
- 
能读懂前端代码 
- 
多从网络上找新的思路 
- 
添加断点进行调试,分析其算法机制(静态分析、动态调试、步步跟进) 
头条反爬总结
参考
- 《今日头条反反爬思路总结》,分析得很详细,很值得一看:Link
案例
巧达科技被查
公司客户信息被抓取,并且某个接口访问量巨大,后调查为一个数据公司的某个程序员将爬虫的线程数调大,影响了正常服务
hui产公司
idataapi
https://www.idataapi.cn/product/detail/94
爬山虎采集器
可进行头条数据采集的一个爬虫软件 http://www.51pashanhu.com/