# douyin-downloader 拆解报告 — 签名算法与反爬绕过技术 > 工具:`jiji262/douyin-downloader`(7.9k⭐) > 拆解时间:2026-06-10(更新:2026-06-11) > 核心理念:签名算法是核心资产,浏览器模拟是备胎 --- ## 一、一句话核心 **纯HTTP API驱动下载,零浏览器依赖。** 核心秘密是X-Bogus和A-Bogus签名算法——抖音所有API请求都需要正确签名,有了签名就可以直接调用HTTP接口拿到视频数据,不需要浏览器。 --- ## 二、技术亮点清单(最值钱的部分) ### 🔑 模式1:X-Bogus签名算法(200行Python,零外部依赖⭐⭐⭐) **它怎么做的:** 这是一个自研签名算法,对请求参数进行MD5+RC4+自定义Base64编码,生成一个 `X-Bogus` 参数拼在URL里。 ``` 请求参数 + 时间戳 + 随机数 → MD5哈希 → RC4加密 → 自定义Base64编码 → X-Bogus=<32位字符串> ``` **依赖:** 纯Python标准库(hashlib + struct + base64) **对我们:** 这个签名已经被抖音封了(目前抖音要求A-Bogus),但**代码结构值得学习**——200行实现一个完整的签名算法,可以仿照这个结构对接任何需要自研签名的平台。 ### 🔑 模式2:A-Bogus签名算法(国密SM3 + 浏览器指纹) **当前抖音要求的签名方式。** 比X-Bogus复杂得多: - 使用国密SM3哈希(不是标准SHA/MD5) - 混入浏览器指纹(canvas指纹、webgl指纹、时区、语言等几十个维度) - 需要 `gmssl` Python包(国密算法实现) **对我们:** 严格来说我们**不需要实现这个签名**——CDP浏览器模拟天然绕过签名检查(浏览器自己会签)。但如果以后想走纯API路线,A-Bogus是绕不过的坎。 ### 🔑 模式3:msToken伪造技巧(最实用⭐⭐⭐) 抖音API需要 `msToken` 参数,AiToEarn/douyin-downloader的实现: - 第一优先:用已有Cookie中的msToken - 第二优先:调用官方SDK生成 - **第三优先(关键技巧):生成182位随机字符 + "=="** 抖音居然接受这个假的msToken!这意味着不需要任何登录态就能调用大部分公开API(热搜、搜索、用户信息)。 **可复用度:⭐⭐⭐⭐⭐ — 我们可以直接用在B站/抖音的纯文本抓取上** ### 🔑 模式4:CDN直链提取(绕过API重定向) 抖音的视频下载URL分两种: - `douyinvod.com` 等CDN直链 — **直接下载,稳定** - `/aweme/v1/play/` API重定向 — 会302到真实地址 douyin-downloader优先使用CDN直链,从 `video.bit_rate[]` 中选不含 `watermark=1` 或 `playwm` 的URL。 ### 🔑 模式5:多画质选择策略 ``` highest → 选 bit_rate 最大的(优先无水印) 1080p → 按 width≈1920 选 lowest → 选 bit_rate 最小的 ``` **对我们:** 我们下载视频时只需要音频(转写用),选最低画质就行,省流量省时间。 --- ## 三、必然被封杀/过时的部分 | 环节 | 当前状态 | 说明 | |------|---------|------| | X-Bogus签名 | ❌ 已封 | 抖音已升级到A-Bogus | | A-Bogus纯代码 | ⚠️ 还能用 | 但浏览器指纹会变,需要定期更新指纹参数 | | 纯API下载 | ⚠️ 部分可用 | 热搜榜/搜索API还能用,下载API需要session | | yt-dlp | ❌ 已封 | 被B站/抖音双重封锁(HTTP 412/403) | | douyin-downloader项目本身 | ⚠️ 半失效 | 部分功能需配合CDP浏览器 | **教训:** 纯代码签名方案有保质期,CDP浏览器模拟虽然"重"但抗封能力更强。 --- ## 四、我们的替代方案对比 | 需求 | douyin-downloader做法 | 我们目前做法 | 谁更好 | |------|---------------------|------------|-------| | 获取视频列表 | API+签名 → 解析JSON | CDP浏览器抓文字 | CDP更稳定(不怕签名失效) | | 下载视频 | API+签名 → CDN直链 | CDP提取video.src→curl | 各有优劣,API更快但CDP更稳 | | 扫描大V | 遍历粉丝列表 | CDP作者主页滚动 | CDP更精准(能看到完整页面) | | 获取热搜 | API+假msToken | 无(没做) | API方案好!我们也可以搞 | **结论:** 对抖音我们走CDP路线(抗封),但可以学它对B站/其他平台用API直连。 --- ## 五、源码结构(参考用) ``` douyin-downloader/ ├── src/ │ ├── xbogus.py # X-Bogus签名(200行Python零依赖) │ ├── abogus.py # A-Bogus签名(需gmssl) │ ├── api_client.py # API调用封装 │ ├── downloader_base.py # 核心下载逻辑 │ ├── downloader.py # 高级下载器 │ ├── url_parser.py # URL解析 │ ├── auth/ # Cookie/Token管理 │ └── transcript/ # Whisper转录集成 ├── config.yml # 下载配置(Cookie/画质/目录) └── run.py # 入口 ```