diff --git a/Dockerfile b/Dockerfile index 3c1e6ac..af546bb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,8 +38,7 @@ RUN pip install --no-cache-dir --root-user-action=ignore \ langchain \ python-dotenv \ setuptools \ - httpx \ - capsolver-extension-python + httpx WORKDIR /app @@ -52,11 +51,6 @@ COPY app.py . # Создаем директорию для данных браузера RUN mkdir -p /app/browser-data && chmod 777 /app/browser-data -# Скачиваем и распаковываем CapSolver расширение для автоматического решения капчи -RUN wget -q https://github.com/capsolver/capsolver-browser-extension/releases/download/v.1.17.0/CapSolver.Browser.Extension-chrome-v1.17.0.zip -O /tmp/capsolver.zip && \ - unzip -q /tmp/capsolver.zip -d /app/capsolver-extension && \ - rm /tmp/capsolver.zip - EXPOSE 8383 EXPOSE 9222 diff --git a/app.py b/app.py index 1c7e7c2..de501cd 100644 --- a/app.py +++ b/app.py @@ -12,14 +12,6 @@ from browser_use.agent.views import AgentHistoryList import uvicorn from fastapi.responses import HTMLResponse -# Пробуем импортировать capsolver_extension_python -try: - from capsolver_extension_python import Capsolver - CAPSOLVER_EXTENSION_AVAILABLE = True -except ImportError: - CAPSOLVER_EXTENSION_AVAILABLE = False - logger.warning("capsolver_extension_python not installed, CapSolver extension will not work") - # Настройки Remote Debugging REMOTE_DEBUGGING_PORT = int(os.getenv("REMOTE_DEBUGGING_PORT", "9222")) REMOTE_DEBUGGING_ENABLED = os.getenv("REMOTE_DEBUGGING_ENABLED", "false").lower() == "true" @@ -863,29 +855,11 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str): "--enable-webgl2-compute-context", ]) - # Добавляем расширение CapSolver для автоматического решения капчи + # Убираем загрузку расширения CapSolver - используем API вместо него + # Расширение конфликтует с Cloudflare Turnstile + # Решение капчи происходит через функцию solve_captcha_with_capsolver if AUTO_SOLVE_CAPTCHA and CAPSOLVER_API_KEY: - # Используем capsolver_extension_python для получения пути к расширению - capsolver_ext_path = None - if CAPSOLVER_EXTENSION_AVAILABLE: - try: - capsolver_ext_path = Capsolver(api_key=CAPSOLVER_API_KEY).load() - logger.info(f"[{task_id}] CapSolver extension loaded via Python wrapper: {capsolver_ext_path}") - except Exception as e: - logger.warning(f"[{task_id}] Failed to load CapSolver via wrapper: {e}") - - # Если не удалось через wrapper, пробуем старый способ - if not capsolver_ext_path or not os.path.exists(capsolver_ext_path): - capsolver_ext_path = "/app/capsolver-extension" - - if os.path.exists(capsolver_ext_path): - chrome_cmd.extend([ - f"--disable-extensions-except={capsolver_ext_path}", - f"--load-extension={capsolver_ext_path}", - ]) - logger.info(f"[{task_id}] CapSolver extension enabled: {capsolver_ext_path}") - else: - logger.warning(f"[{task_id}] CapSolver extension not found at {capsolver_ext_path}") + logger.info(f"[{task_id}] CapSolver will solve CAPTCHA via API (not extension)") # Добавляем специальные флаги для обхода reCAPTCHA если включено if RECAPTCHA_BYPASS: @@ -1024,26 +998,11 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str): logger.info("Google Chrome not found, using default Chromium") chrome_path = None - # Загружаем расширение CapSolver если настроено + # Убираем загрузку расширения CapSolver - используем API + # Расширение конфликтует с Cloudflare Turnstile extensions = [] if AUTO_SOLVE_CAPTCHA and CAPSOLVER_API_KEY: - capsolver_ext_path = None - if CAPSOLVER_EXTENSION_AVAILABLE: - try: - capsolver_ext_path = Capsolver(api_key=CAPSOLVER_API_KEY).load() - logger.info(f"CapSolver extension loaded via Python wrapper: {capsolver_ext_path}") - except Exception as e: - logger.warning(f"Failed to load CapSolver via wrapper: {e}") - - # Если не удалось через wrapper, пробуем старый способ - if not capsolver_ext_path or not os.path.exists(capsolver_ext_path): - capsolver_ext_path = "/app/capsolver-extension" - - if os.path.exists(capsolver_ext_path): - extensions = [capsolver_ext_path] - logger.info(f"CapSolver extension will be loaded: {capsolver_ext_path}") - else: - logger.warning(f"CapSolver extension not found at {capsolver_ext_path}") + logger.info("CapSolver will solve CAPTCHA via API (not extension)") browser_profile = BrowserProfile( user_data_dir="/app/browser-data/main_profile",