# 代理与反检测增强功能 ## 概述 本次更新为 multi-platform-media-manage 项目添加了以下增强功能,以解决跨区域发布时遇到的风控问题。 ## ⚠️ 重要说明:代理使用策略 ### 神龙代理 IP 限制 - **有效期**:3 分钟 - **适用场景**:页面访问、信息填充、小额数据传输 - **不适用场景**:大文件上传(视频文件) ### 平台特殊策略 **微信视频号(weixin)**: - ❌ **不使用代理**:大视频上传会超过 3 分钟,导致代理超时 - ✅ **使用直连**:配合反检测脚本,可以有效绕过风控 - ✅ **推荐配置**: ```json { "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` 用于在发布前测试代理配置: ```json // 请求 { "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. 基本发布(带代理) ```json 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 辅助发布(推荐) ```json 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. 测试代理配置 ```bash 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 - 更新代理解析函数支持平台参数