/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}
一、写在前面:为什么选择移动端Web
在抖音的数据采集领域,常见的方案包括:
-
App端Hook/抓包:需要安卓逆向、Xposed或Frida,门槛高且容易被风控。
-
官方开放API:限制极多,几乎不开放用户级视频列表。
-
PC端Web:页面加载方式繁杂,且大量依赖懒加载与内部状态。
-
移动端Web(m.douyin.com):接口相对稳定,加密逻辑集中,且适合使用Requests/HTTPSession模拟,无需渲染引擎。
本文聚焦于移动端Web下的用户主页视频列表爬取,采用Python 3.11 + httpx + PyExecJS + 正则/JSON解析的组合,破解X-Bogus签名和_signature参数,实现稳定抓取。
⚠️ 郑重声明 本博客仅供技术研究与学习用途,严禁用于批量爬取、商业利用或侵犯用户隐私。请遵守抖音Robots协议及相关法律法规,合理控制请求频率。
目录
一、写在前面:为什么选择移动端Web
二、目标与成果预览
2.1 爬取目标
2.2 技术成果
三、环境与依赖
3.1 Python版本
3.2 核心依赖库
四、技术难点与攻破思路
4.1 难点拆解
4.2 攻破策略
五、详细逆向过程(核心)
5.1 获取sec_user_id
5.2 提取_signature与初始数据
5.3 X-Bogus逆向(JS代码节选)
5.4 接口分析与参数构造
5.5 Cookie获取策略
六、完整代码实现
6.1 项目结构
6.2 配置模块 config.py
6.3 日志模块 logger.py
6.4 核心爬虫 spider.py
6.5 主程序 main.py
二、目标与成果预览
2.1 爬取目标
-
URL模式:https://m.douyin.com/share/user/{sec_user_id}
-
数据接口:https://m.douyin.com/api/comment/list/?device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=…&count=20&max_cursor=…
-
提取字段:视频ID、标题、播放量、点赞数、发布时间、视频链接、封面图
2.2 技术成果
-
完全模拟移动端请求头与Cookie
-
自动从HTML中提取




