Web 逆向工程 Cookbook
Web 逆向工程 Cookbook
欢迎来到 Web RE Cookbook —— 一本实战导向的 Web 逆向工程实用手册。
本 Cookbook 采用场景驱动的组织方式,帮助你快速找到解决特定问题的方法,而非传统的知识点罗列。
新手?从这里开始
完全新手? 先完成 10 分钟快速入门,体验第一次 Hook!
10 分钟快速入门 - 安装工具并完成第一次 Hook
想看更多实战案例? 解密 API 参数 - 学习分析和还原加密参数
如何使用本 Cookbook
按需查找
- 遇到问题? 直接查看 实战配方 章节,找到对应场景的解决方案
- 参考案例? 浏览 案例研究,学习实战分析流程
- 学习工具? 查看 工具指南 章节,了解各类工具的使用方法
- 查阅资料? 访问 基础知识,深入理解底层原理
学习路径
- 快速上手: 快速入门 → 基础配方 → 案例研究
- 进阶提升: 进阶配方 → 工程实践 → 基础知识
- 按需查阅: 工具指南、速查手册作为参考
知识体系结构
本知识库采用实战优先的组织方式:
Part I: Getting Started: 快速上手。帮助新手快速开始第一个逆向项目。Part II: Recipes: 实战配方。解决具体问题的策略和方法,从基础到进阶。Part III: Case Studies: 案例研究。通过真实场景的案例,综合运用所学知识。Part IV: Foundations: 基础知识。深入理解 Web 应用和浏览器的核心原理。Part V: Tooling: 工具指南。详尽介绍逆向工程师日常使用的关键工具。Part VI: Engineering: 工程实践。分布式爬虫、代理池、监控告警等生产级方案。Part VII: Reference: 参考资料。脚本集合、速查手册、项目模板。
快速入门
概述 - 学习路径和准备工作
你的第一个 Hook - 15 分钟完成第一次 Hook
解密 API 参数 - 学习追踪和还原加密参数
绕过简单验证码 - OCR 识别和验证码绕过
实战配方
基础配方
逆向工程流程 - 标准化的 Web 逆向分析流程
调试技术 - 高级调试技巧,包括条件断点、反反调试等
Hook 技术 - JavaScript Hook、Proxy 劫持等技术
API 逆向工程 - 逆向 Web API 的签名、加密、认证机制
加密算法识别 - 识别和分析网站中使用的加密算法
动态参数分析 - 追踪和分析动态生成的请求参数
WebSocket 逆向 - 分析 WebSocket 通信协议和消息格式
进阶配方
JavaScript 反混淆 - 常见混淆技术及其反混淆方法
验证码绕过 - 图形、滑块、点选、行为验证码的绕过技术
浏览器指纹 - 浏览器指纹的生成原理及模拟技术
JavaScript VM 保护 - JSVMP 等虚拟机保护技术的对抗策略
WebAssembly 逆向 - Wasm 二进制格式的逆向分析
反爬虫深度分析 - 设备指纹、行为分析、风控系统
前端加固技术 - 代码加固、混淆、完整性校验
CSP 绕过 - 内容安全策略的原理及绕过方法
WebRTC 指纹 - WebRTC 泄露真实 IP 的原理及防护
Canvas 指纹 - Canvas 指纹的生成、检测及伪装
TLS 指纹 - JA3/JA4 等 TLS 指纹技术及模拟
HTTP/2 与 HTTP/3 - 现代 HTTP 协议的特性及逆向挑战
PWA 与 Service Worker - 渐进式 Web 应用的逆向分析
案例研究
电商网站 - 反爬虫机制、API 签名、价格加密
社交媒体 - 登录验证、动态加载、反爬虫策略
金融网站 - 高强度加密、设备指纹、风控系统
视频流媒体 - DRM 保护、流媒体协议、防下载技术
新闻聚合 - 内容提取、实时更新监控
搜索引擎 - 反爬虫策略及数据采集技术
基础知识
HTTP/HTTPS 协议 - 协议原理、请求/响应结构、Headers
浏览器架构 - 多进程架构、渲染引擎、JavaScript 引擎
JavaScript 基础 - 核心语法、作用域、闭包、原型链
JavaScript 执行机制 - 事件循环、调用栈、异步编程
DOM 与 BOM - 文档对象模型和浏览器对象模型
WebAssembly 基础 - 设计理念、二进制格式、与 JS 交互
Cookie 与 Storage - 客户端存储机制
CORS 与同源策略 - 浏览器安全策略及跨域机制
TLS/SSL 握手 - 握手过程、证书验证、加密协商
Web API 与 Ajax - XMLHttpRequest、Fetch API、WebSocket
工具指南
浏览器开发者工具 - Chrome/Firefox DevTools 全面介绍
Burp Suite 指南 - 代理、拦截、重放、扫描
Fiddler 指南 - 流量捕获、修改、重放
Charles 指南 - SSL 代理、断点、重写
Wireshark 指南 - 深度网络包分析、协议解析
Puppeteer 与 Playwright - 无头浏览器自动化
Selenium 指南 - 浏览器自动化、元素定位
AST 工具 - Babel、ESPrima 等 AST 解析工具
Node.js 调试 - 调试器、Chrome DevTools 集成
V8 工具 - 命令行工具、内存分析、性能分析
工程实践
分布式爬虫 - 大规模分布式爬虫系统架构
代理池管理 - 代理池构建、维护、调度策略
数据存储方案 - MySQL、MongoDB、Redis、Elasticsearch
消息队列应用 - RabbitMQ、Kafka 在爬虫中的使用
Docker 部署 - 容器化部署、环境隔离、快速扩展
监控与告警 - 爬虫系统的监控、日志、告警体系
反反爬框架 - 通用的反爬虫对抗框架
脚本集合
JavaScript Hook 脚本 - Cookie、Fetch、WebSocket 拦截脚本
反混淆脚本 - 基于 AST 的反混淆脚本示例
自动化脚本 - Puppeteer、Playwright 常用脚本
加密检测脚本 - 自动识别常见加密算法
速查手册
项目模板
问题排查
- 网络问题 - 网络连接问题排查
- 反爬问题 - 反爬虫问题排查
- JavaScript 调试 - JS 调试问题排查
- 工具问题 - 工具使用问题排查
- 数据问题 - 数据采集问题排查
- Docker 问题 - Docker 相关问题排查
附录
- GitHub 开源项目 - 推荐的开源项目和工具
- 学习资源 - 优质学习资源、博客、视频
- 常见问题 FAQ - 常见问题和解决方案