From 3bc16f775ffdc82f07b0fbcd0ea3cd4c83c3beac Mon Sep 17 00:00:00 2001 From: nafer Date: Tue, 10 Mar 2026 14:37:49 +0300 Subject: [PATCH] stealth-recapcha-repair --- .env | 26 -------------------------- .env.example | 7 ++++++- app.py | 33 +++++++++++++++++++++++++++++++-- 3 files changed, 37 insertions(+), 29 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index d0b4c97..0000000 --- a/.env +++ /dev/null @@ -1,26 +0,0 @@ -# =========================================== -# Browser Use MCP Server Configuration -# =========================================== - -# OpenRouter API Key (обязательно) -OPENROUTER_API_KEY=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 - -# LLM Provider - используем OpenRouter -LLM_PROVIDER=openrouter - -# Модель для browser agent -LLM_MODEL_NAME=arcee-ai/trinity-large-preview:free - -# =========================================== -# Опциональные настройки -# =========================================== -BROWSER_HEADLESS=true -AGENT_MAX_STEPS=20 -AGENT_USE_VISION=true -SERVER_PORT=8383 -SERVER_HOST=0.0.0.0 - -# Remote Debugging -REMOTE_DEBUGGING_ENABLED=true -REMOTE_DEBUGGING_PORT=9222 - diff --git a/.env.example b/.env.example index 13d6d7c..b14cc10 100644 --- a/.env.example +++ b/.env.example @@ -18,7 +18,8 @@ LLM_MODEL_NAME=google/gemini-2.0-flash-001 # =========================================== # Запуск браузера в headless режиме (true/false) -# Рекомендуется: false для максимального stealth +# ВНИМАНИЕ: headless=false всегда для поддержки reCAPTCHA! +# Это значение игнорируется, браузер всегда запускается в не-headless режиме BROWSER_HEADLESS=false # Максимальное количество шагов для выполнения задачи @@ -65,6 +66,10 @@ CAPSOLVER_API_KEY= # Автоматически решать капчу (true/false) AUTO_SOLVE_CAPTCHA=false +# Включить специальные флаги Chrome для обхода reCAPTCHA (true/false) +# Помогает если reCAPTCHA не отображается +RECAPTCHA_BYPASS=false + # =========================================== # Настройки сервера # =========================================== diff --git a/app.py b/app.py index 69db30e..2c9bbc9 100644 --- a/app.py +++ b/app.py @@ -28,7 +28,8 @@ CLOUD_PROXY_COUNTRY = os.getenv("CLOUD_PROXY_COUNTRY", "") # =========================================== # Настройки stealth # =========================================== -BROWSER_HEADLESS = os.getenv("BROWSER_HEADLESS", "false").lower() == "true" +# ВНИМАНИЕ: headless=false всегда для поддержки reCAPTCHA +BROWSER_HEADLESS = False # Всегда false для поддержки reCAPTCHA USE_XVFB = os.getenv("USE_XVFB", "true").lower() == "true" VIEWPORT_SIZE = os.getenv("VIEWPORT_SIZE", "") # Формат: WIDTHxHEIGHT, напр. 1920x1080 @@ -38,6 +39,11 @@ VIEWPORT_SIZE = os.getenv("VIEWPORT_SIZE", "") # Формат: WIDTHxHEIGHT, н CAPSOLVER_API_KEY = os.getenv("CAPSOLVER_API_KEY", "") AUTO_SOLVE_CAPTCHA = os.getenv("AUTO_SOLVE_CAPTCHA", "false").lower() == "true" +# =========================================== +# Настройки обхода reCAPTCHA +# =========================================== +RECAPTCHA_BYPASS = os.getenv("RECAPTCHA_BYPASS", "false").lower() == "true" + from contextlib import asynccontextmanager import logging @@ -46,6 +52,15 @@ import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) +# Логирование настроек браузера +logger.info(f"=== Browser Configuration ===") +logger.info(f"BROWSER_HEADLESS: {BROWSER_HEADLESS}") +logger.info(f"USE_XVFB: {USE_XVFB}") +logger.info(f"REMOTE_DEBUGGING_ENABLED: {REMOTE_DEBUGGING_ENABLED}") +logger.info(f"RECAPTCHA_BYPASS: {RECAPTCHA_BYPASS}") +logger.info(f"AUTO_SOLVE_CAPTCHA: {AUTO_SOLVE_CAPTCHA}") +logger.info(f"===========================") + # Создаём Tools с кастомными действиями try: from browser_use import Tools, BrowserSession @@ -815,6 +830,20 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str): "--disable-extensions-except=/app/stealth-extension", ]) + # Добавляем специальные флаги для обхода reCAPTCHA если включено + if RECAPTCHA_BYPASS: + chrome_cmd.extend([ + # Флаги для обхода reCAPTCHA + "--disable-blink-features=AutomationControlled", + "--disable-dev-shm-usage", + "--no-sandbox", + "--disable-setuid-sandbox", + # Отключаем некоторые функции, которые могут мешать reCAPTCHA + "--disable-features=TranslateUI", + "--disable-ipc-flooding-protection", + ]) + logger.info(f"[{task_id}] Added reCAPTCHA bypass flags") + # Добавляем прокси если есть chrome_cmd.extend(proxy_args) @@ -909,7 +938,7 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str): browser_profile = BrowserProfile( user_data_dir="/app/browser-data/main_profile", profile_directory="Default", - headless=True, + headless=False, # Всегда false для поддержки reCAPTCHA keep_alive=True, ) browser = Browser(browser_profile=browser_profile)