Python 高级爬虫实战 - 知识结构目录
课程概览
课程定位
针对有 Python 基础的开发工程师,系统掌握 Web 反爬破解技术,挑战高级爬虫工程师高薪岗位
核心特色
- 反爬全面覆盖:加密登录破解、逆向重构、Cookie 池管理、浏览器调度、字体加密破解
- 实战驱动:每个章节配套真实网站实战练习,直接对标生产环境
- 架构进阶:从单机爬虫到分布式爬虫架构,掌握海量数据抓取方案
- 工程化思维:代理池搭建、Cookie 池管理、分布式部署、海量存储一体化方案
课程结构
| 维度 | 内容 |
|---|---|
| 章节 | 11章 |
| 时长 | 22小时30分钟 |
| 难度 | 高级 |
| 讲师 | 小布老师(全栈 Python 工程师,中国人民银行金融数据中心爬虫技术专家) |
| 适用 | 有 Python 基础,想进阶高级爬虫工程师 |
第一章:爬虫进阶 - 突破 Web 反爬(课程导学)
教学目标
- 了解课程整体脉络与学习路线
- 搭建开发环境
- 明确爬虫工程师的学习方向与重点
学习痛点
- 不知道爬虫进阶该学什么,学习路线不清晰
- 环境搭建不完整,后续学习频频卡壳
- 对爬虫工程师的职业发展方向模糊
章节内容
1.1 课程导学
- 爬虫进阶之破解 Web 端反爬技术 - 课程导学(07:00)
- 课程整体架构与学习路径图
1.2 爬虫工程师学习建议
- 给所有爬虫工程师的学习建议(19:37)
- 爬虫重点学习方向梳理
- 爬虫工程师该何去何从?(讨论题)
1.3 开发环境搭建
- 课程开发环境搭建文档
- Python 环境、IDE 配置、抓包工具安装
本章知识点
- 爬虫工程师能力模型与成长路径
- 反爬技术全景图
- 学习环境准备清单
第二章:必须掌握的 HTTP 网络基础知识
教学目标
- 深入理解 HTTPS 的安全机制与加密原理
- 掌握 HTTP 状态码在爬虫调试中的应用
- 识别 HTTP 请求头中暴露爬虫身份的信息
- 掌握 HTTP 协议版本演进与爬虫适配
- 解决 HTTPS 证书认证问题
学习痛点
- 不理解 HTTPS 加密原理,遇到 SSL 错误不知道怎么处理
- 请求头配置不当,被网站轻易识别为爬虫
- 不清楚 HTTP/1.1 vs HTTP/2 的差异,无法适配目标网站
- 证书认证失败时不知道如何绕过
章节内容
2.1 HTTPS 安全机制
- 为什么 HTTPS 是安全的?(上)(10:50)
- 为什么 HTTPS 是安全的?(下)(11:27)
- 对称加密 vs 非对称加密 vs 混合加密
- TLS/SSL 握手过程详解
- 证书链验证机制
2.2 HTTP 状态码
- HTTP 状态码告诉我们哪个环节出了问题?
- 2xx / 3xx / 4xx / 5xx 在爬虫中的含义
- 301/302 重定向处理
- 403 Forbidden / 429 Too Many Requests 的反爬含义
2.3 HTTP 请求头与反爬
- 这些 HTTP 请求头信息出卖了爬虫?(上)(13:00)
- 这些 HTTP 请求头信息出卖了爬虫?(下)(11:50)
- User-Agent 指纹识别与伪装
- Referer 来源验证
- Accept-Language / Accept-Encoding 特征分析
- X-Requested-With 与 AJAX 请求识别
2.4 HTTP 协议演进
- 每次 HTTP 协议升级分别解决什么问题?
- HTTP/1.0 → HTTP/1.1 → HTTP/2 → HTTP/3 演进
- HTTP/2 多路复用对爬虫的影响
2.5 HTTPS 证书认证
- 爬虫如何解决 HTTPS 证书认证?(13:16)
- 证书信息的补充(03:29)
verify=False的风险与替代方案- 自签名证书处理
本章知识点
- HTTPS 加密原理(TLS 握手、证书链)
- HTTP 状态码体系与爬虫调试
- 请求头反爬识别与伪装
- HTTP 协议版本差异
- SSL 证书处理方案
第三章:手把手教你搭建代理服务
教学目标
- 了解主流代理 IP 服务商的优劣与选型
- 掌握 Squid 自建代理服务的完整流程
- 实现代理服务的加密认证
- 构建可维护的代理池技术方案
学习痛点
- 代理 IP 服务商太多,不知道怎么选
- 只会用第三方代理 API,不会自建代理服务
- 代理服务没有加密,容易被探测和封禁
- 代理池管理混乱,不知道怎么系统化搭建
章节内容
3.1 代理 IP 服务商对比
- 纵向对比各大代理 IP 服务商的优劣(1)(08:54)
- 纵向对比各大代理 IP 服务商的优劣(2)(14:49)
- 纵向对比各大代理 IP 服务商的优劣(3)(10:44)
- 短效代理 vs 长效代理的适用场景
- 代理 IP 类型:透明代理 / 匿名代理 / 高匿代理
3.2 Squid 自建代理服务
- 用 Squid 自建代理服务(1)(12:56)
- 用 Squid 自建代理服务(2)(13:58)
- 创建加密的 Squid 代理服务(3)(22:19)
- Squid 配置文件详解
- 认证方案:basic_auth / digest_auth
3.3 代理池技术方案
- Squid + VPS 搭建代理池的技术方案
- 代理池架构设计:获取 → 验证 → 存储 → 调度
- 代理可用性检测与自动剔除
- 代理轮换策略
3.4 第三方代理产品应用
- 一起分析第三方代理产品的应用场景(17:07)
- 第三方代理 API 的接入与封装
- 自建代理 vs 第三方代理的成本分析
本章实战项目
项目名称:Squid + VPS 搭建加密代理池
项目内容:
- 在 VPS 上部署 Squid 代理服务
- 配置代理认证(用户名/密码)
- 搭建多节点代理池
- 实现代理可用性检测与自动轮换
- 封装 Python 代理调用接口
本章知识点
- 主流代理 IP 服务商对比与选型
- Squid 代理服务搭建与加密认证
- 代理池架构设计与管理
- 代理轮换策略与可用性检测
第四章:破解加密登录的过程
教学目标
- 理解明文传输与密文传输的区别
- 掌握账号信息加密的通用算法
- 掌握通过抓包逆向分析 JS 代码的完整流程
- 突破无限 Debugger 反调试机制
- 使用 BreakPoint 调试 JS 堆栈
- 掌握 JS 篡改与伪装技术(ReRes)
- 用 Python 逆向重构加密函数
- 用 Python 调度 JS 文件实现密码加密
学习痛点
- 遇到加密登录直接放弃,不知道怎么逆向
- 无限 Debugger 卡死浏览器,无法调试
- JS 逆向分析毫无头绪,不知道从哪里入手
- 逆向出来了但不会用 Python 重构加密逻辑
章节内容
4.1 加密基础
- 明文传输和密文传输
- 了解账号信息加密的通用算法
- 常见加密算法:MD5 / SHA / AES / DES / RSA
- Base64 编码 vs 加密
4.2 抓包逆向分析 JS 代码
- 通过抓包逆向分析 JS 代码(1)(11:26)
- 通过抓包逆向分析 JS 代码(2)(12:47)
- 通过抓包逆向分析 JS 代码(3)(20:35)
- Chrome 开发者工具一览
- 开发者工具栏的网络栏使用说明(01:33)
- 抓包工具对比:Chrome DevTools vs Fiddler vs Charles vs mitmproxy
4.3 突破无限 Debugger
- 无限 Debugger 产生的原因和突破方法(23:16)
debugger语句的反调试原理- 条件断点禁用 Debugger
- 函数重写覆盖 Debugger
- 远程加载 JS 文件的篡改
4.4 JS 断点调试与堆栈分析
- 添加 BreakPoint 调试 JS 堆栈内容(上)(20:22)
- 添加 BreakPoint 调试 JS 堆栈内容(下)(22:38)
- 断点类型:行断点 / 条件断点 / DOM 断点 / XHR 断点
- Call Stack 调用栈分析
- Scope 作用域与变量查看
- Watch 表达式与逐步执行
4.5 JS 篡改与伪装
- 适用 ReRes 篡改和伪装 JS 内容(30:30)
- ReRes 插件工作原理:URL 重定向到本地文件
- 本地 JS 修改后替换线上 JS
- Tampermonkey 油猴脚本替代方案
- Charles / Fiddler Map Local 方案
4.6 Python 逆向重构加密函数
- Python 逆向重构加密函数(上)(19:43)
- Python 逆向重构加密函数(下)(23:15)
- JS → Python 代码翻译技巧
- 常见 JS 加密库的 Python 对应实现
- 边界 case 处理与结果验证
4.7 Python 调度 JS 文件
- Python 调度 JS 文件实现密码加密(上)(12:07)
- Python 调度 JS 文件实现密码加密(下)(15:48)
execjs库:直接执行 JS 代码PyExecJSvsexecjsvsNode.js subprocess对比- JS 环境补全:window / document / navigator 对象模拟
- 性能与稳定性优化
本章实战项目
项目名称:逆向破解真实网站加密登录
项目内容:
- 抓包分析目标网站登录请求
- 定位 JS 加密函数
- 突破无限 Debugger 反调试
- 断点调试分析加密逻辑
- 用 ReRes 篡改 JS 验证分析结果
- Python 逆向重构加密函数
- Python 调度 JS 文件实现加密登录
- 两种方案对比与选型
本章知识点
- 加密算法基础(MD5/SHA/AES/DES/RSA)
- Chrome DevTools 逆向分析
- 无限 Debugger 反调试突破
- JS 断点调试与堆栈分析
- ReRes / Tampermonkey JS 篡改
- Python 逆向重构加密逻辑
execjs/PyExecJS调度 JS 执行
第五章:Cookie 池的搭建和维护
教学目标
- 理解 Cookie 的来源、重要性与使用场景
- 掌握 Cookie 的属性与时效管理
- 区分 Session 与 Cookie 的关系
- 用 Python 实现 Cookie 持久化与复用
- 实现 Cookie 的协助式提取
- 搭建 Cookie 池管理系统
- 高并发维护上万 Cookie 的有效性
学习痛点
- 单账号抓取数据量太少,多账号管理混乱
- Cookie 过期后不知道怎么自动刷新
- 上万 Cookie 的有效性维护没有头绪
- Cookie 调试环境搭建耗时,每次都要手动操作
章节内容
5.1 Cookie 基础
- Cookie 的来源和重要性
- Cookie 池的使用场景(14:02)
- Cookie 的属性和时效说明(20:02)
- Name / Value / Domain / Path / Expires / Max-Age
- Secure / HttpOnly / SameSite
- Session 和 Cookie 的共同点和区别(16:36)
5.2 Cookie 持久化与复用
- 用 Python 对 Cookie 进行持久化和装载复用(1)(21:04)
- 用 Python 对 Cookie 进行持久化和装载复用(2)(14:57)
http.cookiejar标准库requests.Session的 Cookie 管理- Cookie 序列化存储:JSON / Pickle / SQLite
5.3 Cookie 协助式提取
- 用 Python 实现 Cookie 的协助式提取和复用(1)(16:49)
- 用 Python 实现 Cookie 的协助式提取和复用(2)(16:35)
- 用 Python 实现 Cookie 的协助式提取和复用(3)(22:33)
- Selenium / Playwright 提取 Cookie
- 浏览器 Cookie 导出插件
- 协助式提取:半自动 + 全自动方案
5.4 Cookie 池管理系统
- Cookie 的维护方案和管理系统
- Cookie 池架构设计:
- 存储层:Redis / MySQL
- 管理层:增删改查 / 分组 / 优先级
- 调度层:轮询 / 随机 / 加权
- 验证层:有效性检测 / 自动剔除 / 自动补充
5.5 Cookie 调试环境
- 一键部署大批量的 Cookie 调试环境(上)(20:25)
- 一键部署大批量的 Cookie 调试环境(下)(26:54)
- 复杂登录过程的 Cookie 调试环境 - 上(25:00)
- 复杂登录过程的 Cookie 调试环境 - 下(09:50)
- Chrome 多 Profile 隔离登录
- Cookie 批量导入导出工具
5.6 Cookie 池实战
- 【社交平台实战】提取 Cookie 保存到 Cookie 池中(16:37)
- 【Cookie 实战】高并发维护上万 Cookie 的有效性(上)(14:48)
- 【Cookie 实战】高并发维护上万 Cookie 的有效性(下)(29:59)
- 高并发验证方案:
asyncio+aiohttp批量检测 - 失效 Cookie 自动标记与替换
- Cookie 生命周期管理:创建 → 使用 → 验证 → 失效 → 替换
本章实战项目
项目名称:高并发 Cookie 池管理系统
项目内容:
- 设计 Cookie 池存储架构(Redis)
- 实现 Cookie 持久化与自动装载
- 实现 Cookie 协助式提取工具
- 搭建 Cookie 调试环境(多 Chrome Profile)
- 实现高并发 Cookie 有效性检测(
asyncio+aiohttp) - 实现 Cookie 自动补充与淘汰机制
- 支持社交平台 Cookie 批量提取入池
- 管理 10000+ Cookie 的并发调度
本章知识点
- Cookie 属性与时效管理
- Session vs Cookie
- Cookie 持久化方案(
cookiejar/requests.Session) - Cookie 协助式提取(Selenium / 浏览器插件)
- Cookie 池架构设计(存储 / 管理 / 调度 / 验证)
- 高并发 Cookie 有效性维护
- Chrome 多 Profile 隔离
第六章:调度浏览器降低分析难度
教学目标
- 对比 Selenium / PhantomJS / Puppeteer 的优劣与选型
- 掌握 Selenium 的核心操作与 Chrome 远程调试
- 掌握 Puppeteer 的工作原理与应用场景
- 实现浏览器登录官网自动化
- 实现滑动验证码全自动识别
- 掌握图像对比算法(RGB / Rembrandt / SSIM)
- 用贝塞尔曲线模拟真人滑动行为
学习痛点
- 纯请求方式被反爬封死,不知道怎么用浏览器降维打击
- Selenium 速度慢、容易被检测,不知道怎么优化
- 滑动验证码过不去,不知道怎么识别和模拟
- 滑动轨迹太机械,被识别为机器人
章节内容
6.1 浏览器自动化工具对比
- 对比 Selenium / PhantomJS / Puppeteer
- 各工具优劣势:
- Selenium:生态成熟、多语言支持、速度慢
- PhantomJS:已废弃、不推荐
- Puppeteer:Node.js 生态、API 现代、性能好
- Playwright:新一代标准(补充)
- 选型建议与适用场景
6.2 Selenium 实战
- Selenium 的优势和点击操作(上)(13:28)
- Selenium 的优势和点击操作(下)(17:09)
- 元素定位策略:ID / Class / XPath / CSS Selector
- 显式等待 vs 隐式等待
WebDriverWait+expected_conditions- Selenium 反检测:
undetected-chromedriver
6.3 Chrome 远程调试
- Chrome 的远程调试能力(18:09)
- Chrome 开启远程调试端口
--remote-debugging-port参数配置- 远程调试协议(CDP)基础
- 通过 Chrome 隔离实现一台电脑登录多个账号(上)(13:08)
- 通过 Chrome 隔离实现一台电脑登录多个账号(下)(23:14)
- Chrome
--user-data-dir多实例隔离
6.4 Puppeteer 实战
- Puppeteer 的工作原理及应用场景
- Node.js + Puppeteer 实现登录官网(上)(14:50)
- Node.js + Puppeteer 实现登录官网(下)(21:51)
- Puppeteer API 核心:
page.goto()/page.click()/page.evaluate() puppeteer.connect()连接已有 Chrome 实例- Headless vs Headful 模式
6.5 滑动验证码识别
- Node.js + Puppeteer 实现滑动验证码全自动识别(上)(20:19)
- Node.js + Puppeteer 实现滑动验证码全自动识别(下)(25:10)
- 滑动验证码原理:缺口位置识别 + 轨迹模拟
- 截图与图像处理:获取验证码图片
- 缺口位置定位算法
6.6 图像对比算法
- 网站登录项目架构说明(上)(16:34)
- 网站登录项目架构说明(中)(17:08)
- 网站登录项目架构说明(下)(15:20)
- 像素 RGB 对比算法(上)(15:52)
- 像素 RGB 对比算法(下)(18:44)
- 逐像素比对、差异阈值、二值化
- Rembrandt 算法(18:48)
- 图像相似度比较库
- SSIM 结构相似性算法(14:55)
- 结构相似性指数原理
- 亮度 / 对比度 / 结构三维度比较
- 三种算法对比与适用场景
6.7 真人滑动模拟
- 利用贝塞尔曲线模拟真人滑动鼠标(27:17)
- 贝塞尔曲线(Bézier Curve)数学原理
- 轨迹生成:起点 → 控制点 → 终点
- 速度曲线:先快后慢 / 先慢后快 / 匀速 + 随机抖动
- 鼠标事件序列:mousedown → mousemove × N → mouseup
- 反检测:人类行为特征模拟
本章实战项目
项目名称:Puppeteer 自动登录 + 滑动验证码识别系统
项目内容:
- 搭建 Node.js + Puppeteer 项目架构
- 实现网站自动登录流程
- 实现滑动验证码截图与缺口定位
- 实现三种图像对比算法(RGB / Rembrandt / SSIM)
- 用贝塞尔曲线生成真人滑动轨迹
- 验证码通过率测试与优化
- 支持多网站适配
本章知识点
- 浏览器自动化工具选型(Selenium / Puppeteer / Playwright)
- Selenium 核心操作与反检测
- Chrome 远程调试(CDP 协议)
- Chrome 多实例隔离
- Puppeteer API 与项目架构
- 滑动验证码识别全流程
- 图像对比算法(RGB / Rembrandt / SSIM)
- 贝塞尔曲线轨迹模拟与真人行为仿真
第七章:逆向破解被加密的数据
教学目标
- 理解字体渲染的完整流程
- 掌握字体文件检查与数据查看方法
- 实现字体文件转换与网页内容还原
- 掌握 Base64 编码在网页中的应用与解码
- 实现上百页加密数据的完美还原
学习痛点
- 网页上的数据看起来正常但复制出来是乱码
- 不理解字体加密原理,遇到就绕道
- Base64 编码的数据不知道怎么识别和解码
- 数据加密贯穿上百页,不知道怎么批量还原
章节内容
7.1 字体渲染原理
- 字体渲染的顺序和原理
- 全方位了解字体渲染的全过程(13:11)
- 浏览器渲染流水线:HTML → DOM → CSSOM → Render Tree → Layout → Paint
@font-face自定义字体加载- 字符编码 → 字形(Glyph)映射机制
- 字体加密反爬原理:自定义字形替换 Unicode 映射
7.2 字体文件检查与查看
- 字体文件的检查和数据查看(19:06)
- 字体文件格式:WOFF / WOFF2 / TTF / OTF
- 字体编辑工具:FontForge / FontCreator
- XML 格式查看字体内部映射关系
- cmap 表分析:Unicode → Glyph ID 映射
- 在线字体查看工具
7.3 字体文件转换与内容还原
- 字体文件转换并实现网页内容还原(24:50)
- 字体文件格式转换(WOFF → TTF)
- 解析字体 cmap 表获取真实映射关系
- 构建映射字典:加密字符 → 真实字符
- 批量替换网页中的加密字符
- 处理动态字体文件(每次请求字体映射不同)
7.4 Base64 数据解码
- 解析出给出 Base64 字符串的原数据(作业题)
- Base64 在网页中的常见应用场景(讨论题)
- Base64 编码原理:3 字节 → 4 字符
- 图片 Base64 内联(data URI scheme)
- API 响应中 Base64 编码的 JSON 数据
- Python
base64标准库使用
7.5 批量数据还原实战
- 完美还原上百页的数据内容(上)(12:33)
- 完美还原上百页的数据内容(下)(17:58)
- 分页抓取 + 字体解密流水线
- 动态字体映射的自动化处理
- 数据完整性验证
本章实战项目
项目名称:字体加密破解与批量数据还原
项目内容:
- 分析目标网站字体加密机制
- 下载并解析字体文件(WOFF/TTF)
- 构建字符映射字典
- 处理动态字体文件(每次请求映射不同)
- 实现批量分页抓取 + 实时解密
- 上百页数据完美还原
- 数据完整性校验
本章知识点
- 浏览器字体渲染全流程
@font-face与字体加密反爬原理- 字体文件格式(WOFF/WOFF2/TTF)
- 字体 cmap 表解析与映射关系构建
- 动态字体文件处理
- Base64 编码原理与解码
- 批量数据解密流水线设计
第八章:反爬的实战练习
教学目标
- 综合运用前述章节知识进行反爬实战
- 掌握爬虫文件的解析与数据抓取
- 分析并突破网站反爬措施
- Scrapy 框架接入 Cookie 池管理系统
- 掌握分布式爬虫的架设
学习痛点
- 学了很多零散知识,但缺乏综合实战经验
- Scrapy 框架接入 Cookie 池不知道怎么整合
- 分布式爬虫只在概念层面,没有实际搭建过
章节内容
8.1 实战目标说明
- 目标网站和数据抓取要求说明
- 爬虫文件的解析和数据的抓取(上)(17:36)
- 爬虫文件的解析和数据的抓取(下)(15:59)
- 目标网站结构分析
- 数据字段定义与抓取策略
8.2 反爬分析与突破
- 反爬措施的分析和突破(18:08)
- 综合反爬手段识别:请求头检测 / IP 限制 / 登录态验证 / 数据加密
- 针对性突破方案设计
- 突破效果验证
8.3 Scrapy 接入 Cookie 池
- Scrapy 接入 Cookie 池管理系统(上)(18:34)
- Scrapy 接入 Cookie 池管理系统(中)(18:56)
- Scrapy 接入 Cookie 池管理系统(下)(17:21)
- Scrapy 架构回顾:Engine / Spider / Downloader / Pipeline
- Downloader Middleware 中间件接入 Cookie 池
- Cookie 轮换策略:每个请求分配不同 Cookie
- Cookie 失效自动标记与替换
- 集成代理池 + Cookie 池双重反反爬
8.4 分布式爬虫架设
- 分布式爬虫的架设(上)(15:26)
- 分布式爬虫的架设(中)(16:34)
- 分布式爬虫的架设(下)(15:10)
- Scrapy-Redis 分布式方案
- Redis 作为请求队列与去重集合
- 分布式 Spider 调度
- 多节点 Worker 部署
- Scrapyd 部署与管理
- Scrapyd 服务部署
scrapyd-client打包上传- Scrapyd API 远程管理
- 分布式爬虫管理系统:Gerapy / Crawlab
本章实战项目
项目名称:Scrapy + Cookie 池 + 分布式爬虫综合实战
项目内容:
- 分析目标网站反爬措施
- 编写 Spider 解析规则与数据抓取
- 开发 Downloader Middleware 接入 Cookie 池
- 实现代理池 + Cookie 池双重反反爬
- 基于 Scrapy-Redis 搭建分布式爬虫
- Scrapyd 部署与远程管理
- 多节点 Worker 分布式抓取
本章知识点
- 爬虫项目实战全流程
- 反爬措施综合分析与突破
- Scrapy 框架架构与 Middleware 开发
- Scrapy-Redis 分布式方案
- Scrapyd 部署与管理
- 分布式爬虫管理系统(Gerapy / Crawlab)
第九章:分布式爬虫架构方案
教学目标
- 理解分布式爬虫的优势与必要性
- 掌握下游业务如何使用爬取到的数据
- 掌握数据和文件的存储方案
- 掌握大数据存储架构选型
学习痛点
- 爬了海量数据但不知道怎么存储和下游消费
- 文件存储(图片/视频/PDF)没有系统方案
- 大数据场景下 MySQL 扛不住,不知道该用什么
章节内容
9.1 分布式爬虫架构
- 分布式爬虫的优势和必要性
- 分布式爬虫架构方案讨论
- 主从架构 vs 对等架构
- 任务调度与负载均衡
- 容错与故障恢复
9.2 下游数据消费
- 下游业务如何使用爬取到的数据(17:13)
- 数据清洗与结构化
- 数据推送:API / 消息队列 / 数据库直写
- 数据格式标准化
9.3 存储方案
- 数据和文件的存储方案(14:22)
- 结构化数据存储:
- MySQL / PostgreSQL:关系型存储
- MongoDB:文档型存储,适合非结构化数据
- Elasticsearch:全文检索与数据分析
- 文件存储:
- 本地文件系统 + NFS
- 对象存储:MinIO / OSS / S3
- 分布式文件系统:HDFS
- 大数据存储:
- HBase:列式存储,亿级数据毫秒查询
- Hive:数据仓库,离线分析
- ClickHouse:OLAP 实时分析
- Spark:大数据计算框架
本章实战项目
项目名称:分布式爬虫数据存储与消费方案
项目内容:
- 设计分布式爬虫整体架构
- 实现结构化数据入 MySQL / MongoDB
- 实现文件上传到对象存储(MinIO / OSS)
- 实现数据推送至下游业务(API + 消息队列)
- 大数据场景下 HBase / Hive 存储方案
- Spark 数据清洗与分析
本章知识点
- 分布式爬虫架构设计(主从 / 对等)
- 下游数据消费方案(API / MQ / DB)
- 结构化数据存储选型(MySQL / MongoDB / ES)
- 文件存储方案(本地 / 对象存储 / HDFS)
- 大数据存储(HBase / Hive / ClickHouse / Spark)
第十章:课程终极测验
教学目标
- 巩固前述所有章节的核心知识点
- 通过 30 道测验题查漏补缺
- 检验学习效果
章节内容
10.1 HTTP 基础
- HTTP 协议主流版本
- 200/302/404/500 状态码含义
- UA、Referer 请求头含义
- HTTPS 安全原理
10.2 代理服务
- 代理 IP 类型
- 请求转发软件(Squid 等)
- 短效 vs 长效代理选择
10.3 JS 逆向
- 无限 Debugger 产生原因
- JS 断点添加位置
- 调度 JS 代码的 Python 库
- Python 重构 vs 调度 JS 适用场景
- 加解密算法列举
- ReRes 插件工作原理
10.4 Cookie 管理
- Cookie 与 Session 异同
- Cookie 池使用场景
- Cookie 属性列举
- Cookie 池管理与维护方案
10.5 浏览器调度
- Selenium vs PhantomJS 选型
- 滑块验证码算法对比
- Selenium 支持的浏览器
10.6 数据加密
- 字体渲染全过程
- Base64 在网页中的应用
10.7 分布式爬虫
- Scrapy 框架组件
- 下载器中间件职责
- 分布式爬虫适用场景
- Scrapyd 是什么
- 分布式爬虫管理系统列举
10.8 大数据
- Spark 优势
- 分布式文件系统 vs 大数据文件系统
- HBase vs Hive 差异与适用场景
本章知识点
- 全课程知识点体系化复盘
- 30 道测验题覆盖所有核心模块
第十一章:爬虫工程师简历指导
教学目标
- 掌握爬虫工程师简历制作要点
- 明确后续学习路线与资料推荐
- 制定个人成长计划
章节内容
11.1 简历制作
- 一个合格的爬虫平台负责人的简历应该是怎样的?
- 爬虫工程师简历核心要素:
- 技术栈描述规范
- 项目经验量化(抓取量、QPS、反爬突破)
- 架构设计能力体现
- 团队管理经验
11.2 课程总结
- 课程总结及实用学习建议
- 核心知识点回顾
- 爬虫技术发展趋势
11.3 后续学习
- 后续学习方法/资料/课程推荐
- 进阶方向:
- 反爬深度研究(AST 混淆、WebAssembly)
- 大数据架构(Spark / Flink)
- 机器学习辅助反爬(行为特征识别)
- 爬虫架构师(分布式系统设计)
本章知识点
- 爬虫工程师简历规范
- 职业发展路径
- 持续学习资源推荐
四大实战案例汇总
案例一:Squid + VPS 加密代理池搭建
- 关联章节:第三章
- 核心技能:Squid 部署、代理认证、代理池架构、可用性检测
案例二:逆向破解真实网站加密登录
- 关联章节:第四章
- 核心技能:JS 逆向分析、无限 Debugger 突破、断点调试、Python 重构/调度 JS
案例三:高并发 Cookie 池管理系统
- 关联章节:第五章
- 核心技能:Cookie 持久化、协助式提取、Cookie 池架构、高并发有效性维护
案例四:Scrapy + 分布式爬虫综合实战
- 关联章节:第八章
- 核心技能:Scrapy 框架、Middleware 开发、Scrapy-Redis、Scrapyd 部署
学习路径建议
阶段一:基础准备(第 1-2 章)
- 第一章:课程导学 + 环境搭建
- 第二章:HTTP 网络基础(HTTPS、状态码、请求头、证书)
阶段二:反爬基础设施(第 3-5 章)
- 第三章:代理服务搭建(Squid + 代理池)
- 第四章:加密登录破解(JS 逆向 + Python 重构)
- 第五章:Cookie 池管理(持久化 + 高并发维护)
阶段三:浏览器与数据解密(第 6-7 章)
- 第六章:浏览器调度(Selenium + Puppeteer + 验证码识别)
- 第七章:数据加密破解(字体加密 + Base64)
阶段四:综合实战与架构(第 8-9 章)
- 第八章:反爬综合实战(Scrapy + Cookie 池 + 分布式)
- 第九章:分布式架构方案(存储 + 下游消费)
阶段五:复盘与求职(第 10-11 章)
- 第十章:终极测验(30 题查漏补缺)
- 第十一章:简历指导 + 后续学习路线
技术栈全景
核心语言与标准库
- Python 3.x
http.cookiejar/http.client/sslbase64/hashlib/hmacasyncio/aiohttpsubprocess
爬虫框架
- Scrapy:企业级爬虫框架
- Scrapy-Redis:分布式爬虫方案
- Scrapyd:爬虫部署与管理
- Gerapy / Crawlab:分布式爬虫管理系统
浏览器自动化
- Selenium:浏览器自动化测试框架
- Puppeteer(Node.js):Headless Chrome 操作
- Playwright:新一代浏览器自动化
- undetected-chromedriver:Selenium 反检测
JS 逆向工具
- Chrome DevTools:浏览器开发者工具
- execjs / PyExecJS:Python 执行 JS
- ReRes:JS 文件篡改插件
- Tampermonkey:油猴脚本
- Fiddler / Charles:抓包与 Map Local
代理与网络
- Squid:代理服务软件
- VPS:代理节点服务器
- 代理 IP 服务商:快代理 / 芝麻代理 / 讯代理等
数据存储
- 关系型:MySQL / PostgreSQL
- 文档型:MongoDB
- 搜索引擎:Elasticsearch
- 缓存:Redis
- 对象存储:MinIO / OSS / S3
- 大数据:HBase / Hive / ClickHouse / Spark
图像处理
- Pillow (PIL):Python 图像处理库
- OpenCV:计算机视觉
- Rembrandt:图像相似度比较
- SSIM:结构相似性算法
面试要点汇总
高频面试题
- HTTP 基础:HTTPS 加密原理、状态码含义、请求头反爬识别、HTTP/2 多路复用
- 代理服务:Squid 搭建流程、代理池架构设计、短效 vs 长效代理选择、高匿代理原理
- JS 逆向:无限 Debugger 突破方法、JS 断点调试流程、ReRes 工作原理、execjs vs PyExecJS 选型
- Cookie 管理:Cookie vs Session、Cookie 池架构、高并发 Cookie 有效性维护、Cookie 属性
- 浏览器调度:Selenium vs Puppeteer 选型、Chrome 远程调试原理、CDP 协议
- 验证码识别:滑动验证码原理、RGB/Rembrandt/SSIM 算法对比、贝塞尔曲线轨迹模拟
- 数据加密:字体渲染流程、字体加密反爬原理、cmap 表解析、动态字体处理
- Scrapy 框架:架构组件、Middleware 开发、Pipeline 数据处理
- 分布式爬虫:Scrapy-Redis 原理、Scrapyd 部署、分布式任务调度
- 数据存储:MySQL vs MongoDB vs ES 选型、HBase vs Hive 差异、Spark 优势
实战能力清单
- [ ] 能独立搭建 Squid 代理池并封装 Python 接口
- [ ] 能逆向分析 JS 加密逻辑并用 Python 重构
- [ ] 能搭建管理上万 Cookie 的高并发 Cookie 池
- [ ] 能用 Puppeteer 实现滑动验证码自动识别
- [ ] 能破解字体加密并批量还原数据
- [ ] 能用 Scrapy + Redis 搭建分布式爬虫
- [ ] 能用 Scrapyd 部署和管理爬虫服务
- [ ] 能设计完整的数据存储与下游消费方案
附录
推荐学习资源
- 《Python3 网络爬虫开发实战》— 崔庆才
- 《爬虫逆向进阶实战》— 李玺
- 《Web Scraping with Python》— Ryan Mitchell
- Scrapy 官方文档(docs.scrapy.org)
- Puppeteer 官方文档(pptr.dev)
- Chrome DevTools 文档(developers.google.com/web/tools/chrome-devtools)
实践项目建议
- 电商商品价格监控(代理池 + Cookie 池 + 分布式)
- 社交媒体舆情采集(加密登录 + 浏览器调度 + 数据解密)
- 招聘网站岗位聚合(Scrapy + Redis + Elasticsearch)
- 新闻资讯聚合平台(全链路:采集 → 清洗 → 存储 → 检索)
- 金融数据实时抓取(高并发 + 分布式 + 大数据存储)
课程对比:Python 高级爬虫 vs Python 实战训练营
| 维度 | Python 高级爬虫实战 | Python 实战训练营 |
|---|---|---|
| 定位 | 爬虫工程师进阶 | Python 全栈工程师进阶 |
| 核心技能 | 反爬破解、JS 逆向、分布式爬虫 | Web 框架、ORM、异步、微服务 |
| 难度 | 高级 | 中高级 |
| 时长 | 22.5 小时 | 96 小时(16周) |
| 侧重 | 数据采集层 | 应用开发层 |
| 分布式 | Scrapy-Redis 分布式爬虫 | gRPC 微服务 + 分布式锁 |
| 数据处理 | 数据存储与下游消费 | ETL 数据管道 + Airflow |
| 工程化 | Scrapyd 部署管理 | Docker + K8s + CI/CD |
互补关系:爬虫课程侧重数据采集与反爬,训练营课程侧重应用开发与架构。两者结合可覆盖从数据采集到应用的完整链路。