web端反爬白皮书


最近想将爬虫的一些心得和流程完全的总结下来,内容非常多,先列个大纲。

爬虫流程

任务宏观管理

任务调度

任务去重

任务生成

单个爬虫分析与开发

反爬原理

分析步骤

基础请求库

『工欲善其事,必先利其器』

好的基础请求库大都性能不错,有优雅的使用方式,有清晰的异常提醒,有方便的参数配置,支持新的协议(如http2.0),甚至天生自带一些反爬功能,能帮你省不少麻烦事。

python

requests

pycurl

httpx

aiohttp

java

httpclient

okhttp

golang

requests

typescript

got

Man-in-the-MiddleAttack(MITM)

中间人攻击是一种很经典的攻击方式,在爬虫领域主要用来抓包篡改请求和响应。

  1. 抓包:因为要爬虫需要模拟用户进行数据的获取,所以必须要通过抓包来明晰请求的协议,这也是爬虫必不可少的环节。
  2. 篡改请求和响应:在调试爬虫端过程中有时需要修改请求和响应达到自己想要的目的。

抓包

证书信任

请求代理

tcpdump

篡改请求和响应

伪造请求

替换文件

JS逆向

客户端拿到数据一般依赖一个经过复杂加密混淆后的token,要想伪造该token,首先需要突破其代码保护,也就是突破js混淆,然后分析并找到可能存在的加密点进行验证,最后仿写其加密的过程生成token。该环节是硬刚流爬虫难度最大的环节。

混淆原理

ast代码操作

混淆框架

控制流平坦化

代码还原

解混淆插件

加密点定位

hook

token自吐

JS执行

web调试

加密算法介绍

模拟浏览器

在当前爬虫对抗日趋激烈的现在,各种反爬手段层出不同,硬刚其算法还原和加密逻辑难度和成本会过大,需要一种兜底的策略保证能拿到数据,尽管该策略性能较差。

自动化工具介绍

selenium

playwright

puppeteer

通用特征指纹

特征修改

  1. headers attributes修改
  2. JavaScript attributes修改
  3. plugin检测
  4. 硬件指纹修改(p1)
  5. chromium定制(p2)

指纹检测网站参考:

https://amiunique.org/

https://www.yalala.com/

https://bot.sannysoft.com/

https://gongjux.com/fingerprint/

web-api参考:

https://developer.mozilla.org/zh-CN/docs/Web/api

chromium源码参考:

https://source.chromium.org/chromium

指纹参考:

canvas,webgl,webaudio,navigator,SSL/TLS指纹

性能建设

browser生命周期管理

browser池建立:

  1. 池子初始化
  2. 最大实例数
  3. 实例定期重启
  4. 实例的创建->初始化->运行中->运行结束->销毁
  5. 插件脚本加载(抹除通用特征)
  6. 其他

browser性能状态监控

  1. 当前可用实例
  2. 占用资源

RPC

  1. 提供对browser的直接调用服务

token server

  1. 管理特定网站的cookie池,加密token池,并检测和维持其有效性
  2. 对爬虫提供token服务

验证码处理

由于存在各种各样的识别人与机器的验证码,如果实在无法饶过,就需要进行突破。最核心的宗旨就是尽量模拟人类在过验证码时的操作,也是一个将人类操作自动化的过程

验证码分类

图文验证码

点选验证码

滑动验证码

简单图片识别

深度学习框架

pytorch

tensorflow

轨迹算法

打码平台

数据解析

一般而言,请求回来的原始数据会有加密或者不是自己想要的格式,需要解密或者从中提取出自己想要的数据然后自行组装。

数据解密

字符编码

数据提取

json

html

xml

图片识别

网络代理

使用网络代理的原因主要是以下两点:

  1. 隐匿身份,防止被追踪。
  2. 突破对ip限制的反爬措施。

隧道代理介绍

建立代理池

爬虫框架

强大的框架可以使一个小型爬虫项目迅速部署起来并且可以掌控性能,还具备常用的例如任务流转,任务管理,任务去重,数据入库等功能。不过老实说,在爬虫对抗日益激烈的现在,框架所做的这些事都不是最重要的,最重要的是突破反爬并拿到数据。

python

scrapy

pyspider

java

webmagic

golang

[colly](


Author: Lic
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Lic !
  TOC