stealth-recapcha-repair

This commit is contained in:
nafer committed 2026-03-10 14:37:49 +03:00
1 parent 692f4c0dd1
commit 3bc16f775f
3 files changed
+37 -29

No files matched your search

-26
View File
@@ -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
+6 -1
View File
@@ -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
# ===========================================
# Настройки сервера
# ===========================================
+31 -2
View File
@@ -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)