PROXY_STEALTH_ENHANCEMENT.md 6.0 KB

代理与反检测增强功能

概述

本次更新为 multi-platform-media-manage 项目添加了以下增强功能,以解决跨区域发布时遇到的风控问题。

⚠️ 重要说明:代理使用策略

神龙代理 IP 限制

  • 有效期:3 分钟
  • 适用场景:页面访问、信息填充、小额数据传输
  • 不适用场景:大文件上传(视频文件)

平台特殊策略

微信视频号(weixin)

  • 不使用代理:大视频上传会超过 3 分钟,导致代理超时
  • 使用直连:配合反检测脚本,可以有效绕过风控
  • 推荐配置

    {
    "platform": "weixin",
    "proxy": {
      "enabled": false  // 微信视频号建议不使用代理
    }
    }
    

    其他平台

    • 抖音、小红书、快手:可以使用代理(小文件上传)
    • 大视频文件(> 50MB):建议使用直连

    新增功能

    1. 反检测脚本 (Stealth Scripts)

    文件: server/python/utils/stealth.py

    提供以下反检测能力:

    • 隐藏 WebDriver 特征: 移除 navigator.webdriver 属性
    • 伪装浏览器插件: 模拟真实的 Chrome 插件列表
    • WebGL 指纹伪装: 随机化 WebGL vendor 和 renderer
    • Canvas 指纹噪声: 添加微小噪声避免指纹追踪
    • Audio 指纹噪声: 干扰音频指纹识别
    • Navigator 属性伪装: 伪装设备内存、CPU 核心数等

    2. 增强的浏览器初始化

    文件: server/python/platforms/base.py

    改进的 init_browser 方法:

    • 自动注入反检测脚本
    • 添加真实的浏览器启动参数
    • 设置完整的 HTTP 请求头
    • 支持代理配置

    3. 代理质量检测

    文件: server/python/app.py

    新增 _test_proxy_for_platform 函数:

    • 测试代理 IP 对特定平台的可用性
    • 检测是否被目标平台屏蔽
    • 返回延迟和状态码信息

    4. 代理测试 API

    端点: POST /proxy/test

    用于在发布前测试代理配置:

    // 请求
    {
    "provider": "shenlong",
    "productKey": "your-product-key",
    "signature": "your-signature",
    "platform": "douyin"  // 可选,测试对特定平台的可用性
    }
    
    // 响应
    {
    "success": true,
    "proxy": "http://x.x.x.x:port",
    "platform_test": {
        "ok": true,
        "blocked": false,
        "cost_ms": 1234
    }
    }
    

5. 人类行为模拟

文件: server/python/platforms/base.py

新增方法:

  • human_like_delay(): 模拟随机延迟
  • human_like_scroll(): 模拟滚动行为
  • human_like_type(): 模拟输入行为
  • random_mouse_move(): 随机移动鼠标

使用方式

1. 基本发布(带代理)

POST /publish
{
    "platform": "douyin",
    "cookie": "your-cookies",
    "title": "视频标题",
    "video_path": "/path/to/video.mp4",
    "proxy": {
        "enabled": true,
        "provider": "shenlong",
        "productKey": "your-key",
        "signature": "your-sign",
        "regionCode": "500000"  // 重庆
    }
}

2. AI 辅助发布(推荐)

POST /publish/ai-assisted
{
    "platform": "douyin",
    "cookie": "your-cookies",
    "title": "视频标题",
    "video_path": "/path/to/video.mp4",
    "headless": false,  // 显示浏览器窗口,便于处理验证码
    "return_screenshot": true,
    "proxy": {
        "enabled": true,
        "provider": "shenlong",
        "productKey": "your-key",
        "signature": "your-sign"
    }
}

3. 测试代理配置

curl -X POST http://localhost:5005/proxy/test \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "shenlong",
    "productKey": "your-key",
    "signature": "your-sign",
    "platform": "douyin"
  }'

最佳实践

1. 代理配置建议

  • 使用高质量代理: 选择住宅 IP 代理,避免数据中心 IP
  • 地区匹配: 尽量使用与账号注册地相近的代理 IP
  • 运营商匹配: 选择与目标平台主要用户群相同的运营商

2. 发布策略

  1. 首次发布:

    • 使用 headless: false 显示浏览器窗口
    • 观察 Cookie 状态和验证码情况
    • 记录成功的配置
  2. 批量发布:

    • 每个账号使用独立的代理 IP
    • 控制发布频率(建议间隔 30 分钟以上)
    • 使用定时发布分散时间
  3. 遇到验证码:

    • 响应 need_captcha: true 时手动处理
    • 处理完成后重试发布
    • 考虑更换代理 IP

3. 调试建议

  1. 查看日志:

    [Proxy] shenlong resolved: city=- area=500100 candidates=5/10
    [Proxy] test ok: 192.168.***.***:8080 cost=234ms
    [Proxy] platform douyin ok: 192.168.***.***:8080 cost=1234ms
    [douyin] 已注入反检测脚本
    
  2. 检查截图:

    • 发布失败时返回 screenshot_base64
    • 可解码查看页面状态

常见问题

Q1: 代理连接成功但发布失败?

原因: 代理 IP 可能被目标平台标记

解决方案:

  1. 使用 /proxy/test 接口测试代理
  2. 更换代理地区或运营商
  3. 使用新的代理 IP

Q2: 频繁触发验证码?

原因: 浏览器指纹或行为模式被识别

解决方案:

  1. 确保反检测脚本正常加载(查看日志)
  2. 降低操作频率
  3. 使用 headless: false 观察页面行为

Q3: Cookie 快速失效?

原因: 代理 IP 与账号登录地不一致

解决方案:

  1. 使用与账号注册地相近的代理
  2. 避免频繁切换 IP
  3. 使用同一代理维护账号

技术细节

反检测脚本加载顺序

  1. 浏览器启动时添加 --disable-blink-features=AutomationControlled 参数
  2. 创建上下文时注入 add_init_script()
  3. 页面加载前脚本已生效

代理测试流程

  1. 基础连通性测试 (_test_proxy_connectivity)
  2. 平台特定测试 (_test_proxy_for_platform)
  3. 检测是否被重定向到验证页面
  4. 返回详细测试结果

更新日志

2026-02-27

  • 新增 utils/stealth.py 反检测脚本
  • 增强 base.py 浏览器初始化
  • 添加平台特定代理测试
  • 新增 /proxy/test/proxy/platforms API
  • 更新代理解析函数支持平台参数