# 反检测工具使用指南 ## 概述 `utils/anti_detection.py` 提供了统一的反自动化检测工具,供所有社交媒体上传器使用。 ## 🎯 主要功能 ### 1. 统一的反检测措施 - 标准化的浏览器启动参数 - 真实的用户代理字符串 - 合适的视口和环境设置 - 自动stealth脚本注入 ### 2. 简化的API接口 - 一行代码创建反检测浏览器 - 统一的上下文配置 - 自动页面设置 ### 3. 灵活的配置选项 - 支持有头/无头模式 - 可自定义浏览器参数 - 可自定义上下文选项 ## 📚 API 参考 ### 核心函数 #### `create_stealth_browser()` ```python async def create_stealth_browser( playwright: Playwright, headless: bool = True, executable_path: Optional[str] = None, custom_args: Optional[List[str]] = None ) -> Browser ``` 创建具有反检测功能的浏览器实例。 **参数:** - `playwright`: Playwright实例 - `headless`: 是否使用无头模式(默认True) - `executable_path`: 自定义浏览器路径(可选) - `custom_args`: 额外的浏览器参数(可选) #### `create_stealth_context()` ```python async def create_stealth_context( browser: Browser, account_file: str, headless: bool = True, custom_options: Optional[Dict[str, Any]] = None ) -> BrowserContext ``` 创建具有反检测功能的浏览器上下文。 **参数:** - `browser`: Browser实例 - `account_file`: Cookie文件路径 - `headless`: 是否为无头模式 - `custom_options`: 自定义上下文选项(可选) #### `setup_stealth_page()` ```python async def setup_stealth_page( context: BrowserContext, url: str ) -> Page ``` 创建并设置具有反检测功能的页面。 **参数:** - `context`: BrowserContext实例 - `url`: 要访问的URL ### 便捷函数 #### `quick_setup_stealth_browser()` ```python async def quick_setup_stealth_browser( playwright: Playwright, account_file: str, target_url: str, headless: bool = True, executable_path: Optional[str] = None ) -> Tuple[Browser, BrowserContext, Page] ``` 一键创建完整的反检测浏览器环境。 ### 工具类 #### `SocialMediaUploader` ```python class SocialMediaUploader: def __init__(self, headless: bool = True, executable_path: Optional[str] = None) async def create_browser_session( self, playwright: Playwright, account_file: str, target_url: str, custom_browser_args: Optional[List[str]] = None, custom_context_options: Optional[Dict[str, Any]] = None ) -> Tuple[Browser, BrowserContext, Page] async def close_session(self) ``` 基础上传器类,提供完整的会话管理。 ## 🔧 使用示例 ### 1. 基础使用(推荐) ```python from utils.anti_detection import create_stealth_browser, create_stealth_context, setup_stealth_page async def upload(self, playwright: Playwright) -> None: # 创建反检测浏览器 browser = await create_stealth_browser( playwright=playwright, headless=self.headless, executable_path=self.local_executable_path ) # 创建反检测上下文 context = await create_stealth_context( browser=browser, account_file=self.account_file, headless=self.headless ) # 创建反检测页面 page = await setup_stealth_page(context, "https://example.com") # 执行上传逻辑... # 清理 await context.close() await browser.close() ``` ### 2. 快速设置 ```python from utils.anti_detection import quick_setup_stealth_browser async def upload(self, playwright: Playwright) -> None: browser, context, page = await quick_setup_stealth_browser( playwright=playwright, account_file=self.account_file, target_url="https://example.com", headless=self.headless, executable_path=self.local_executable_path ) # 执行上传逻辑... # 清理 await context.close() await browser.close() ``` ### 3. 使用基础类 ```python from utils.anti_detection import SocialMediaUploader class MyUploader(SocialMediaUploader): async def upload(self, playwright: Playwright) -> None: browser, context, page = await self.create_browser_session( playwright=playwright, account_file=self.account_file, target_url="https://example.com" ) # 执行上传逻辑... await self.close_session() ``` ## 🛡️ 反检测技术 ### 浏览器参数 ```python STANDARD_BROWSER_ARGS = [ '--no-sandbox', '--disable-blink-features=AutomationControlled', # 核心 '--disable-web-security', '--disable-features=VizDisplayCompositor', '--disable-dev-shm-usage', '--disable-infobars', '--disable-extensions', '--disable-gpu', '--no-first-run', '--no-default-browser-check', '--lang=zh-CN' ] ``` ### 环境伪装 ```python DEFAULT_CONTEXT_OPTIONS = { 'viewport': {'width': 1920, 'height': 1080}, 'locale': 'zh-CN', 'timezone_id': 'Asia/Shanghai', 'device_scale_factor': 1, 'has_touch': False, 'is_mobile': False } ``` ### 用户代理轮换 - 自动从真实浏览器用户代理池中选择 - 支持Chrome、Firefox等主流浏览器 - 定期更新保持时效性 ## 🧪 测试 运行测试脚本验证功能: ```bash python examples/test_anti_detection.py ``` 测试内容包括: - 基础功能测试 - 快速设置测试 - 配置信息验证 - 不同模式测试 ## 🔄 迁移指南 ### 从旧版本迁移 **旧代码:** ```python browser_args = [ '--no-sandbox', '--disable-blink-features=AutomationControlled', # ... 更多参数 ] browser = await playwright.chromium.launch( headless=self.headless, executable_path=self.local_executable_path, args=browser_args ) context_options = { 'storage_state': f"{self.account_file}", 'viewport': {'width': 1920, 'height': 1080}, # ... 更多选项 } context = await browser.new_context(**context_options) context = await set_init_script(context) page = await context.new_page() await page.goto("https://example.com") ``` **新代码:** ```python from utils.anti_detection import create_stealth_browser, create_stealth_context, setup_stealth_page browser = await create_stealth_browser( playwright=playwright, headless=self.headless, executable_path=self.local_executable_path ) context = await create_stealth_context( browser=browser, account_file=self.account_file, headless=self.headless ) page = await setup_stealth_page(context, "https://example.com") ``` ## 💡 最佳实践 1. **优先使用有头模式**: ```python headless=False # 推荐,避免检测 ``` 2. **合理处理异常**: ```python try: browser, context, page = await quick_setup_stealth_browser(...) # 上传逻辑 finally: await context.close() await browser.close() ``` 3. **记录调试信息**: ```python from utils.anti_detection import get_anti_detection_info logger.info(f"反检测配置: {get_anti_detection_info()}") ``` 4. **定期测试验证**: - 使用测试脚本验证功能 - 监控上传成功率 - 及时调整策略 ## 🔮 未来计划 - [ ] 支持更多浏览器类型 - [ ] 动态指纹管理 - [ ] 智能检测规避 - [ ] 性能优化 - [ ] 更多测试用例 --- **注意**:反检测技术需要根据目标平台的变化进行调整,建议定期更新和测试。