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响应头
典型场景:
- 简单数据混淆:API参数轻微混淆,如
data=SGVsbG8gV29ybGQ=
- 图片内联:
<img src="data:image/png;base64,iVBORw0KGgo...">
- 认证信息:
Authorization: Basic dXNlcjpwYXNz
标准分析解决流程:
工具链:
- 在线工具:CyberChef、Base64解码器
- Python库:
base64、binascii
- 浏览器:
atob()/btoa()函数
2. 十六进制编码
算法本质:二进制数据到十六进制字符的简单转换。
识别特征:
- 仅包含
0-9a-fA-F字符,长度为偶数
- 可能有
0x前缀或:、分隔符
- 常见于颜色值、MAC地址、内存数据表示
典型场景:
- 颜色代码:CSS中的
#FF5733
- 硬件标识:
00:1A:2B:3C:4D:5E
- 简单ID混淆:数据库ID用十六进制表示
解决策略:
二、哈希算法类
3. MD5/SHA系列哈希
算法本质:单向哈希函数,不可逆,用于完整性校验和签名。
识别特征:
- 固定长度:MD5(32字符)、SHA1(40字符)、SHA256(64字符)
- 字符集:十六进制小写(有时大写)
- API签名:参数排序后哈希,常用于防篡改
典型场景:
- API签名验证:
sign = md5(api_key+timestamp+secret)
- 密码存储:
password_hash = sha256(password + salt)
- 文件校验:下载文件的MD5/SHA256校验和
- 请求防重放:nonce+timestamp的哈希
分析解决流程:

实际破解策略:
对抗策略:
- 彩虹表攻击:针对无盐哈希,使用预计算的哈希-明文对
- 字典攻击:针对简单密码
- 重放攻击:直接复制有效签名(需注意时间戳/nonce)
- 算法重现:分析JS代码,重现签名逻辑
三、对称加密类
4. AES加密
算法本质:分组对称加密,支持多种工作模式和填充方案。
识别特征:
- 数据特征:密文长度为16字节倍数,Base64编码
- 密钥特征:128/192/256位密钥,可能硬编码或动态生成
- IV特征:CBC模式需要16字节IV,常与密文一起传输
- 代码特征:
CryptoJS.AES、cipher.update等关键词
工作模式与识别:
模式 | 是否需要IV | 填充要求 | 常见场景 |
ECB | 否 | 是 | 不推荐使用,但旧系统可能有 |
CBC | 是 | 是 | 最常见,HTTP API加密 |
CTR | 是 | 否 | 流加密,高性能需求 |
GCM | 是 | 否 | 现代TLS,带认证加密 |
典型场景:
- API参数加密:请求体整体AES加密后发送
- 本地存储加密:LocalStorage敏感数据加密
- 实时通信加密:WebSocket消息加密
- 文件加密传输:下载文件解密
标准分析流程:
JavaScript逆向关键点:
解决策略:
- 静态分析:搜索
AES、encrypt、decrypt、CryptoJS等关键词
- 动态调试:在加密函数设置断点,捕获密钥和IV
- Hook技术:使用Frida等工具拦截加密函数调用
- 网络分析:捕获密钥交换请求(如果有)
5. DES/3DES加密
算法本质:较老的对称加密算法,已不推荐使用。
识别特征:
- 密钥长度:DES(56位/8字节)、3DES(168位/24字节)
- 分组大小:8字节
- 常见于金融系统、旧企业系统
解决策略:类似AES,但注意密钥长度和分组大小差异。
四、非对称加密类
6. RSA加密
算法本质:基于大数分解难度的非对称加密。
识别特征:
- 密钥特征:公钥包含模数n和指数e(常为65537)
- 格式特征:PEM格式(
BEGIN PUBLIC KEY)、JWK格式
- 代码特征:
JSEncrypt、publicKey、encrypt等关键词
- 数据特征:加密结果长度固定(与密钥长度相关)
典型场景:
- 登录密码加密:前端用RSA公钥加密密码后传输
- 会话密钥交换:TLS握手过程中的密钥协商
- 数字签名:API请求签名验证
- 许可证验证:软件激活码验证
标准分析流程:
爬虫处理策略:
- 固定公钥:直接提取硬编码公钥,Python模拟加密
- 动态公钥:分析公钥获取API,先获取公钥再加密
- 密钥交换:分析完整的TLS-like握手过程
- 绕过思路:尝试不加密的旧接口、参数污染等
五、前端特有加密技术
7. JavaScript混淆与加密
技术本质:代码变换,增加分析难度。
识别特征:
- 变量名混淆:
var _0x1a2b = ['\x68\x65\x6c\x6c\x6f'];
- 控制流平坦化:大量switch-case结构
- 字符串加密:运行时解密字符串
- 代码压缩:单行、无空格、短变量名
- 自执行函数:
(function(){ ... })();
典型混淆技术:
技术 | 特征 | 目的 |
标识符重命名 | a、b、c等短变量名 | 减少可读性 |
字符串加密 | '\x68\x65\x6c\x6c\x6f' | 隐藏关键字符串 |
控制流平坦化 | 大量switch/dispatch | 打断执行逻辑 |
死代码注入 | 无用代码片段 | 干扰分析 |
代码变形 | 等价代码替换 | 绕过特征检测 |
分析解决流程:

实际操作工具链:
- 格式化工具:Prettier、JSBeautify、Chrome开发者工具
- 反混淆工具:de4js、jsnice、AST解析器
- 动态调试:Chrome DevTools、Fiddler、Frida
- AST分析:Babel Parser、Esprima
8. WebAssembly加密
技术本质:将核心加密逻辑编译为WASM字节码,提高性能和保护强度。
识别特征:
- 加载
.wasm文件或从二进制数据实例化
- 使用
WebAssembly对象:WebAssembly.compile、WebAssembly.instantiate
- 性能敏感场景:大量数据加密、游戏保护
分析策略:
- 定位WASM模块:查找
.wasm文件请求或Blob数据
- 导出函数分析:使用
wasm2wat等工具反汇编
- 动态Hook:Hook WebAssembly导入/导出函数
- 模拟执行:使用WASM运行时执行关键函数
9. 浏览器环境检测
技术本质:检测代码是否在真实浏览器中运行。
检测点:
- WebDriver属性:
navigator.webdriver
- 插件特征:
navigator.plugins.length
- 字体列表:通过Canvas检测字体
- 硬件信息:屏幕分辨率、CPU核心数
- 行为特征:鼠标移动轨迹、点击频率
绕过策略:
- Puppeteer/Playwright:模拟真实浏览器环境
- 中间人修改:修改响应,移除检测代码
- Hook覆盖:覆盖检测函数返回值
- 浏览器自动化:Selenium with undetected-chromedriver
六、证书与SSL相关
10. SSL Pinning(证书绑定)
技术本质:客户端内置服务器证书指纹,拒绝其他证书。
识别特征:
- 普通代理无法抓包(HTTPS请求失败)
- 错误信息包含证书验证失败
- 常见于移动端App、金融应用
绕过策略:
- 反编译修改:修改App的证书验证逻辑
- Frida Hook:Hook SSL验证函数
- 系统级证书安装:Root后安装用户证书到系统区
- 虚拟机调试:在已破解的环境运行
11. 双向TLS认证
技术本质:客户端也需要提供证书进行身份验证。
识别特征:
- 连接建立需要客户端证书
- 常见于银行、企业内部系统
解决方案:
- 提取客户端证书:从App或浏览器导出
- 模拟客户端:在爬虫中使用客户端证书
七、自定义加密算法
12. 自研加密算法
算法本质:开发者自定义的混合加密方案。
识别特征:
- 无法识别为标准算法
- 混合多种简单变换:XOR、移位、替换等
- 代码可读性差,有意混淆
分析流程:
- 识别输入输出:找到加密函数入口和出口
- 跟踪数据流:从明文跟踪到密文每一步变换
- 提取变换逻辑:分离出XOR、置换、查表等操作
- 重现算法:Python实现相同的变换序列
八、综合应对策略框架
标准分析决策树

- Author:24th
- URL:https://24th.top/article/2d5e5b08-46db-80f4-9ea7-e5b1ec09f762
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!













