diff --git a/app.py b/app.py index acde71c..c11599c 100644 --- a/app.py +++ b/app.py @@ -59,6 +59,8 @@ 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"CAPSOLVER_API_KEY: {'set' if CAPSOLVER_API_KEY else 'not set'}") +logger.info(f"PROXY_URL: {PROXY_URL if PROXY_URL else 'not set'}") logger.info(f"===========================") # Настраиваем CapSolver расширение с API ключом @@ -844,10 +846,13 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str): "--use-gl=angle", "--use-angle=swiftshader", "--test-type", - # WebGPU флаги для Cloudflare Turnstile - "--enable-webgpu", - "--enable-webgpu-developer-features", - "--use-angle=swiftshader", + # WebGL флаги вместо WebGPU (который не работает в контейнере) + "--enable-webgl", + "--ignore-gpu-blocklist", + "--enable-accelerated-2d-canvas", + "--enable-gpu-rasterization", + "--enable-zero-copy", + "--ignore-webgl-blacklist", ]) # Добавляем расширение CapSolver для автоматического решения капчи @@ -976,17 +981,42 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str): browser = Browser(cdp_url=cdp_url) else: # Обычный запуск - # Всегда добавляем флаги для обхода Cloudflare Turnstile + # Добавляем флаги для работы в контейнере extra_chromium_args = [ "--no-sandbox", - "--disable-blink-features=AutomationControlled", + "--disable-dev-shm-usage", + "--disable-gpu", + "--enable-webgl", + "--ignore-gpu-blocklist", + "--enable-accelerated-2d-canvas", ] + + # Используем Google Chrome если доступен + chrome_path = os.getenv("CHROME_PATH", "/usr/bin/google-chrome") + if os.path.exists(chrome_path): + logger.info(f"Using Google Chrome at {chrome_path}") + else: + logger.info("Google Chrome not found, using default Chromium") + chrome_path = None + + # Загружаем расширение CapSolver если настроено + extensions = [] + if AUTO_SOLVE_CAPTCHA and CAPSOLVER_API_KEY: + capsolver_ext_path = "/app/capsolver-extension" + if os.path.exists(capsolver_ext_path): + extensions = [capsolver_ext_path] + logger.info("CapSolver extension will be loaded") + else: + logger.warning(f"CapSolver extension not found at {capsolver_ext_path}") + browser_profile = BrowserProfile( user_data_dir="/app/browser-data/main_profile", profile_directory="Default", headless=False, # Всегда false для поддержки reCAPTCHA keep_alive=True, extra_chromium_args=extra_chromium_args, + executable_path=chrome_path, + extensions=extensions, ) browser = Browser(browser_profile=browser_profile)