移植自 mac-agent-os 的 mediacrawler_adapter:不起子进程、不开页面,用浏览器里那份
登录态直接调抖音 Web 接口。产物键名照抄 store/douyin,所以 ingest 那条链路一个字不用改。
**目前能用的(真环境实测,非推断)**:
profile/other : 200, 7075 字节 —— 博主主页指标(粉丝/获赞/作品数/昵称)
aweme/detail : 200, 45425 字节 —— 单条作品详情(含点赞/评论/收藏/分享)
**目前不能用的:作品列表 `aweme/post`。** 两个互相独立的原因:
1. 这个接口被抖音单独升级成了真校验:不带 x-tt-argus 回 403「Uifid Not Found」,
带上 dummy 值回 200 + **空 body**。也就是说「头在不在」骗得过,「真校验」过不了。
同一套头打 profile/other 和 aweme/detail 都是通的 —— 抖音是挑着接口加保护的,
挑中的恰好是「批量拉作品列表」这个最敏感的动作。
2. 改走页面截获也不行:CDP 浏览器打开博主主页会落到「验证码中间页」(当天大量探测的
代价,过几小时要重测)。
所以现在的边界是:**已知作品的指标刷新能做,自动发现新作品做不了**。
**排查中控住变量后得到的两条事实**(都写进注释了):
· `Accept` / `Accept-Language` / `Referer` 才是主页接口能返回真数据的原因 —— 只有
UA+client hints+Cookie 时是 200 但仅 121 字节的空壳,补上这三个头变 7074 字节。
(我先前猜的 sec-ch-ua 不是关键。)
· 因此 UA 与 client hints 必须**成套地取自同一个浏览器**,所以 BrowserIdentity 一次
从 CDP 取齐 cookie + UA + hints,而不是各自写死。
「200 + 空 body 必须当场报错」也是刻意写死的:放过去它会在下游变成「这个博主没作品」,
把一次失败伪装成一条正常结果 —— 爬虫那条路正是这么栽的,还被翻译成「账号被封」。
测试 +11:cookie 解析、请求头成套性(含 uifid 缺失/回退)、产物键名与 store 对齐、
以及 _get 的三条失败路径(空 body / 403 带网关原话 / 正常返回)。
5.7 KiB
5.7 KiB
Matrix IP 切换方案 — 完整指南
更新:2026-04-27 | 针对抖音养号场景的 IP 策略
一、为什么需要切换 IP?
| 场景 | 不切 IP 的风险 |
|---|---|
| 多账号同设备 | 同 IP 登录 3+ 账号 → 关联封号 |
| 高频操作 | 同 IP 点赞/评论 > 阈值 → 触发验证码 |
| 跨地域 | IP 归属地与注册地不一致 → 风控 |
二、IP 类型对比
| 类型 | 原理 | 检测难度 | 价格 | 适用场景 |
|---|---|---|---|---|
| 数据中心 IP | 服务器出口 IP | ❌ 极易被识别 | ¥0.5-2/个 | 不推荐 |
| 轮转住宅 IP | 真实家庭宽带,每次请求换 IP | ✅ 难识别 | ¥10-30/GB | 数据采集 |
| 静态住宅 IP | 真实家庭宽带,IP 固定不变 | ✅✅ 最难识别 | ¥5-15/个/月 | 养号(推荐) |
| 免费代理 | 公开代理列表 | ❌ 不可靠 | 免费 | ❌ 不推荐 |
养号场景的最佳选择:静态住宅 IP
原因:
- IP 固定 → 同一账号始终同一 IP,不会被抖音识别为"频繁换设备"
- 真实住宅 → 不会被代理检测库标记
- 按月付费 → 成本可控,不像流量计费那么贵
三、服务商对比(2026 年价格)
🏆 性价比 TOP 3
| 服务商 | 静态住宅 IP | 最低月费 | 流量限制 | 中国 IP | 推荐指数 |
|---|---|---|---|---|---|
| IPFoxy | ¥5-8/个/月 | ¥30/月起 | 无限流量 | ✅ | ⭐⭐⭐⭐⭐ |
| 巨量HTTP | ¥3-6/个/月 | ¥20/月起 | 无限流量 | ✅ | ⭐⭐⭐⭐ |
| Bright Data | $1.3/个起 | ~¥60/月起 | 按流量 | ✅ | ⭐⭐⭐ |
国内服务商(推荐——延迟低、中国 IP 充足)
| 服务商 | 静态住宅 IP | 特点 |
|---|---|---|
| 巨量HTTP (jlhttp.com) | ¥3-6/个/月 | 国内老牌,IP池大,中文客服 |
| 青果代理 (qg.net) | ¥5-8/个/月 | 专注社交账号,有养号套餐 |
| 站大爷 (zdaye.com) | ¥4-7/个/月 | 支持城市级定位 |
| IPFoxy (ipfoxy.io) | ¥5-8/个/月 | 全球覆盖,支持 SOCKS5 |
国际服务商(适合海外平台)
| 服务商 | 静态住宅 IP | 特点 |
|---|---|---|
| Bright Data | $1.3/个起 | 全球最大 IP 池,4亿+ |
| Smartproxy | $2/个起 | 性价比不错 |
| Oxylabs | $1.8/个起 | 企业级,稳定性最好 |
🆓 免费/低成本方案
| 方案 | 限制 | 可行性 |
|---|---|---|
| 自建 VPS + 代理 | 需技术,IP 可能被标记 | ⚠️ 中等 |
| Cloudflare WARP | 共享 IP,非住宅 | ⚠️ 中等 |
| 公开代理列表 | 极不稳定,秒断 | ❌ 不可行 |
| 手机 4G/5G 热点 | 真实住宅级,但只有 1 个 IP | ✅ 单账号可用 |
四、推荐方案
方案一:最低成本(¥0-30/月)
适用:2-3 个账号
方案:手机热点 + 家里宽带
1. 账号1 → 家里 WiFi(固定 IP)
2. 账号2 → 手机 4G 热点(固定 IP)
3. 账号3 → 手机 5G 热点(换 SIM/飞行模式换 IP)
成本:¥0(已有手机卡)
方案二:性价比(¥30-100/月)⭐ 推荐
适用:5-10 个账号
方案:2-3 个静态住宅 IP + Profile 切换
1. 买 2-3 个中国静态住宅 IP(巨量HTTP/IPFoxy)
- 每个 IP 绑定 2-3 个账号
- 通过 Chrome Profile 切换账号
2. 代理配置写在 launch_chrome.sh 里
成本:¥30-50/月(5个IP × ¥6-10)
方案三:专业级(¥200+/月)
适用:10-30 个账号
方案:每个账号独立 IP + 自动化调度
1. 每个账号 1 个静态住宅 IP
2. task_scheduler 自动轮换
3. 不同账号不同时段执行
成本:¥150-300/月
五、技术集成方案
1. Chrome 启动时注入代理
launch_chrome.sh 已支持,只需添加代理参数:
# HTTP 代理
"$CHROME" \
--proxy-server="http://user:[email protected]:8080" \
--remote-debugging-port="$DEBUG_PORT" \
--user-data-dir="$PROFILE_DIR"
# SOCKS5 代理
"$CHROME" \
--proxy-server="socks5://user:[email protected]:1080" \
--remote-debugging-port="$DEBUG_PORT" \
--user-data-dir="$PROFILE_DIR"
2. switch_account.py 集成
账号配置增加 proxy 字段:
accounts:
- id: douyin_01
proxy: "http://user:[email protected]:8080"
- id: douyin_02
proxy: "socks5://user:[email protected]:1080"
3. CDP 代理验证
# 通过 CDP 检查当前出口 IP
import json, urllib.request
opener = urllib.request.build_opener(urllib.request.ProxyHandler({}))
# 通过浏览器请求 IP 检测
result = await page.evaluate('fetch("https://httpbin.org/ip").then(r=>r.json())')
print(f"当前出口 IP: {result['origin']}")
六、反检测策略矩阵
| 检测维度 | 方案A(Profile 切换) | 方案B(Cookie 注入) |
|---|---|---|
| IP | 每个 Profile 用不同代理 | 切换时换代理 |
| 浏览器指纹 | 真实 Chrome(原生) | 真实 Chrome(原生) |
| Cookie | Profile 自带 | 手动注入 |
| Canvas 指纹 | 每个 Profile 不同(GPU 渲染差异) | 同一 Canvas |
| WebGL 指纹 | init_script 注入 | init_script 注入 |
| Audio 指纹 | 每个 Profile 不同 | 同一 |
| navigator | webdriver=undefined | webdriver=undefined |
| 时区/语言 | CDP 覆盖 | CDP 覆盖 |
七、下一步行动
- ✅
switch_account.py已实现(方案A+B) - 📋 买 2-3 个中国静态住宅 IP(推荐 巨量HTTP 或 IPFoxy)
- 📋 在
accounts.yaml配置代理 - 📋
launch_chrome.sh增加代理参数 - 📋 自动化调度:不同账号+不同IP+不同时段