Lazy loaded image
🔑爬虫数据采集加密算法全景指南
Words 3679Read Time 10 min
2024-12-29
2026-2-12
type
Post
status
Published
date
Dec 29, 2024
slug
summary
在爬虫数据采集过程中,加密是开发者面临的主要技术挑战之一。本文系统梳理了11类常见加密算法与技术,为每种技术提供了识别特征、场景分析、解决策略和标准操作流程。
tags
加解密
爬虫
推荐
必看精选
category
加解密
icon
password
上次编辑时间
Feb 12, 2026 03:36 AM
comment
AI 总结
在爬虫数据采集过程中,加密是开发者面临的主要技术挑战之一。本文系统梳理了11类常见加密算法与技术,为每种技术提供了识别特征、场景分析、解决策略和标准操作流程。

一、基础编码类算法

1. Base64编码

算法本质:非加密算法,而是二进制到文本的编码方案,将3字节数据编码为4个ASCII字符。
爬虫场景识别
  • 数据特征:长度通常为4的倍数,包含A-Za-z0-9+/=字符,常有===结尾
  • 位置特征:HTTP Basic认证头、图片Data URL、JSON中的长字符串字段
  • 网络特征Content-Transfer-Encoding: base64响应头
典型场景
  1. 简单数据混淆:API参数轻微混淆,如data=SGVsbG8gV29ybGQ=
  1. 图片内联<img src="data:image/png;base64,iVBORw0KGgo...">
  1. 认证信息Authorization: Basic dXNlcjpwYXNz
标准分析解决流程
工具链
  • 在线工具:CyberChef、Base64解码器
  • Python库:base64binascii
  • 浏览器:atob()/btoa()函数

2. 十六进制编码

算法本质:二进制数据到十六进制字符的简单转换。
识别特征
  • 仅包含0-9a-fA-F字符,长度为偶数
  • 可能有0x前缀或:、分隔符
  • 常见于颜色值、MAC地址、内存数据表示
典型场景
  1. 颜色代码:CSS中的#FF5733
  1. 硬件标识00:1A:2B:3C:4D:5E
  1. 简单ID混淆:数据库ID用十六进制表示
解决策略

二、哈希算法类

3. MD5/SHA系列哈希

算法本质:单向哈希函数,不可逆,用于完整性校验和签名。
识别特征
  • 固定长度:MD5(32字符)、SHA1(40字符)、SHA256(64字符)
  • 字符集:十六进制小写(有时大写)
  • API签名:参数排序后哈希,常用于防篡改
典型场景
  1. API签名验证sign = md5(api_key+timestamp+secret)
  1. 密码存储password_hash = sha256(password + salt)
  1. 文件校验:下载文件的MD5/SHA256校验和
  1. 请求防重放:nonce+timestamp的哈希
分析解决流程
notion image
实际破解策略
对抗策略
  1. 彩虹表攻击:针对无盐哈希,使用预计算的哈希-明文对
  1. 字典攻击:针对简单密码
  1. 重放攻击:直接复制有效签名(需注意时间戳/nonce)
  1. 算法重现:分析JS代码,重现签名逻辑

三、对称加密类

4. AES加密

算法本质:分组对称加密,支持多种工作模式和填充方案。
识别特征
  • 数据特征:密文长度为16字节倍数,Base64编码
  • 密钥特征:128/192/256位密钥,可能硬编码或动态生成
  • IV特征:CBC模式需要16字节IV,常与密文一起传输
  • 代码特征CryptoJS.AEScipher.update等关键词
工作模式与识别
模式
是否需要IV
填充要求
常见场景
ECB
不推荐使用,但旧系统可能有
CBC
最常见,HTTP API加密
CTR
流加密,高性能需求
GCM
现代TLS,带认证加密
典型场景
  1. API参数加密:请求体整体AES加密后发送
  1. 本地存储加密:LocalStorage敏感数据加密
  1. 实时通信加密:WebSocket消息加密
  1. 文件加密传输:下载文件解密
标准分析流程
JavaScript逆向关键点
解决策略
  1. 静态分析:搜索AESencryptdecryptCryptoJS等关键词
  1. 动态调试:在加密函数设置断点,捕获密钥和IV
  1. Hook技术:使用Frida等工具拦截加密函数调用
  1. 网络分析:捕获密钥交换请求(如果有)

5. DES/3DES加密

算法本质:较老的对称加密算法,已不推荐使用。
识别特征
  • 密钥长度:DES(56位/8字节)、3DES(168位/24字节)
  • 分组大小:8字节
  • 常见于金融系统、旧企业系统
解决策略:类似AES,但注意密钥长度和分组大小差异。

四、非对称加密类

6. RSA加密

算法本质:基于大数分解难度的非对称加密。
识别特征
  • 密钥特征:公钥包含模数n和指数e(常为65537)
  • 格式特征:PEM格式(BEGIN PUBLIC KEY)、JWK格式
  • 代码特征JSEncryptpublicKeyencrypt等关键词
  • 数据特征:加密结果长度固定(与密钥长度相关)
典型场景
  1. 登录密码加密:前端用RSA公钥加密密码后传输
  1. 会话密钥交换:TLS握手过程中的密钥协商
  1. 数字签名:API请求签名验证
  1. 许可证验证:软件激活码验证
标准分析流程
爬虫处理策略
  1. 固定公钥:直接提取硬编码公钥,Python模拟加密
  1. 动态公钥:分析公钥获取API,先获取公钥再加密
  1. 密钥交换:分析完整的TLS-like握手过程
  1. 绕过思路:尝试不加密的旧接口、参数污染等

五、前端特有加密技术

7. JavaScript混淆与加密

技术本质:代码变换,增加分析难度。
识别特征
  1. 变量名混淆var _0x1a2b = ['\x68\x65\x6c\x6c\x6f'];
  1. 控制流平坦化:大量switch-case结构
  1. 字符串加密:运行时解密字符串
  1. 代码压缩:单行、无空格、短变量名
  1. 自执行函数(function(){ ... })();
典型混淆技术
技术
特征
目的
标识符重命名
abc等短变量名
减少可读性
字符串加密
'\x68\x65\x6c\x6c\x6f'
隐藏关键字符串
控制流平坦化
大量switch/dispatch
打断执行逻辑
死代码注入
无用代码片段
干扰分析
代码变形
等价代码替换
绕过特征检测
分析解决流程
notion image
实际操作工具链
  1. 格式化工具:Prettier、JSBeautify、Chrome开发者工具
  1. 反混淆工具:de4js、jsnice、AST解析器
  1. 动态调试:Chrome DevTools、Fiddler、Frida
  1. AST分析:Babel Parser、Esprima

8. WebAssembly加密

技术本质:将核心加密逻辑编译为WASM字节码,提高性能和保护强度。
识别特征
  • 加载.wasm文件或从二进制数据实例化
  • 使用WebAssembly对象:WebAssembly.compileWebAssembly.instantiate
  • 性能敏感场景:大量数据加密、游戏保护
分析策略
  1. 定位WASM模块:查找.wasm文件请求或Blob数据
  1. 导出函数分析:使用wasm2wat等工具反汇编
  1. 动态Hook:Hook WebAssembly导入/导出函数
  1. 模拟执行:使用WASM运行时执行关键函数

9. 浏览器环境检测

技术本质:检测代码是否在真实浏览器中运行。
检测点
  1. WebDriver属性navigator.webdriver
  1. 插件特征navigator.plugins.length
  1. 字体列表:通过Canvas检测字体
  1. 硬件信息:屏幕分辨率、CPU核心数
  1. 行为特征:鼠标移动轨迹、点击频率
绕过策略
  1. Puppeteer/Playwright:模拟真实浏览器环境
  1. 中间人修改:修改响应,移除检测代码
  1. Hook覆盖:覆盖检测函数返回值
  1. 浏览器自动化:Selenium with undetected-chromedriver

六、证书与SSL相关

10. SSL Pinning(证书绑定)

技术本质:客户端内置服务器证书指纹,拒绝其他证书。
识别特征
  • 普通代理无法抓包(HTTPS请求失败)
  • 错误信息包含证书验证失败
  • 常见于移动端App、金融应用
绕过策略
  1. 反编译修改:修改App的证书验证逻辑
  1. Frida Hook:Hook SSL验证函数
  1. 系统级证书安装:Root后安装用户证书到系统区
  1. 虚拟机调试:在已破解的环境运行

11. 双向TLS认证

技术本质:客户端也需要提供证书进行身份验证。
识别特征
  • 连接建立需要客户端证书
  • 常见于银行、企业内部系统
解决方案
  1. 提取客户端证书:从App或浏览器导出
  1. 模拟客户端:在爬虫中使用客户端证书

七、自定义加密算法

12. 自研加密算法

算法本质:开发者自定义的混合加密方案。
识别特征
  • 无法识别为标准算法
  • 混合多种简单变换:XOR、移位、替换等
  • 代码可读性差,有意混淆
分析流程
  1. 识别输入输出:找到加密函数入口和出口
  1. 跟踪数据流:从明文跟踪到密文每一步变换
  1. 提取变换逻辑:分离出XOR、置换、查表等操作
  1. 重现算法:Python实现相同的变换序列

八、综合应对策略框架

标准分析决策树

notion image
上一篇
深入理解RSA加密
下一篇
爬虫HTTP请求不用愁?揭秘爬虫框架的异步请求装饰器模块

Comments
Loading...