cap_psyho

This commit is contained in:
nafer committed 2026-03-10 20:45:53 +03:00
1 parent 6959670729
commit 87b8bbb075
2 files changed
+28 -27

No files matched your search

+26 -27
View File
@@ -218,7 +218,7 @@ try:
sitekey = await turnstile_element.get_attribute('data-sitekey') sitekey = await turnstile_element.get_attribute('data-sitekey')
turnstile_frame = await page.query_selector('iframe[src*="turnstile"]') turnstile_frame = await page.query_selector('iframe[src*="turnstile"]')
if turnstile_frame and sitekey: if turnstile_frame and sitekey:
captcha_type = "TurnstileTask" captcha_type = "AntiTurnstileTaskProxyLess"
if not sitekey or not captcha_type: if not sitekey or not captcha_type:
return ActionResult( return ActionResult(
@@ -319,7 +319,7 @@ try:
include_in_memory=True include_in_memory=True
) )
elif captcha_type == "TurnstileTask": elif captcha_type == "AntiTurnstileTaskProxyLess":
token = solution.get("token") token = solution.get("token")
if token: if token:
await page.evaluate(f'''(token) => {{ await page.evaluate(f'''(token) => {{
@@ -438,7 +438,7 @@ async def solve_captcha_with_capsolver(page, capsolver_api_key: str) -> bool:
if sitekey: if sitekey:
turnstile_frame = await page.query_selector('iframe[src*="turnstile"]') turnstile_frame = await page.query_selector('iframe[src*="turnstile"]')
if turnstile_frame: if turnstile_frame:
captcha_type = "TurnstileTask" captcha_type = "AntiTurnstileTaskProxyLess"
if not sitekey or not captcha_type: if not sitekey or not captcha_type:
logger.info("No captcha found on page") logger.info("No captcha found on page")
@@ -507,7 +507,7 @@ async def solve_captcha_with_capsolver(page, capsolver_api_key: str) -> bool:
await textarea.fill(h_captcha_response) await textarea.fill(h_captcha_response)
logger.info("hCaptcha solved successfully!") logger.info("hCaptcha solved successfully!")
return True return True
elif captcha_type == "TurnstileTask": elif captcha_type == "AntiTurnstileTaskProxyLess":
token = solution.get("token") token = solution.get("token")
if token: if token:
# Вставляем токен # Вставляем токен
@@ -947,29 +947,28 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str):
logger.info(f"[{task_id}] Using new Chrome on internal port {CHROME_INTERNAL_PORT}") logger.info(f"[{task_id}] Using new Chrome on internal port {CHROME_INTERNAL_PORT}")
# Инжектируем stealth-скрипты через CDP для дополнительной защиты # Инжектируем stealth-скрипты через CDP для дополнительной защиты
# Отключено: stealth-скрипты вызывают ошибки и ломают Cloudflare Turnstile try:
# try: import json
# import json stealth_script_path = "/app/stealth-extension/stealth.js"
# stealth_script_path = "/app/stealth-extension/stealth.js" if os.path.exists(stealth_script_path):
# if os.path.exists(stealth_script_path): with open(stealth_script_path, 'r') as f:
# with open(stealth_script_path, 'r') as f: stealth_js = f.read()
# stealth_js = f.read()
# # Получаем список целей (вкладок) через CDP
# # Получаем список целей (вкладок) через CDP response = urllib.request.urlopen(f"{cdp_url}/json/list", timeout=5)
# response = urllib.request.urlopen(f"{cdp_url}/json/list", timeout=5) targets = json.loads(response.read().decode())
# targets = json.loads(response.read().decode())
# for target in targets:
# for target in targets: if target.get('type') == 'page':
# if target.get('type') == 'page': ws_url = target.get('webSocketDebuggerUrl')
# ws_url = target.get('webSocketDebuggerUrl') if ws_url:
# if ws_url: logger.info(f"[{task_id}] Injecting stealth scripts via CDP into {target.get('url', 'unknown')}")
# logger.info(f"[{task_id}] Injecting stealth scripts via CDP into {target.get('url', 'unknown')}")
# logger.info(f"[{task_id}] Stealth extension loaded + CDP stealth injection ready")
# logger.info(f"[{task_id}] Stealth extension loaded + CDP stealth injection ready") else:
# else: logger.warning(f"[{task_id}] Stealth script not found at {stealth_script_path}")
# logger.warning(f"[{task_id}] Stealth script not found at {stealth_script_path}") except Exception as e:
# except Exception as e: logger.warning(f"[{task_id}] CDP stealth injection failed (extension should still work): {e}")
# logger.warning(f"[{task_id}] CDP stealth injection failed (extension should still work): {e}")
# Подключаемся через CDP # Подключаемся через CDP
browser = Browser(cdp_url=cdp_url) browser = Browser(cdp_url=cdp_url)
+2
View File
@@ -21,6 +21,8 @@ services:
# CapSolver для автоматического решения капчи (Turnstile, reCAPTCHA, hCaptcha) # CapSolver для автоматического решения капчи (Turnstile, reCAPTCHA, hCaptcha)
- CAPSOLVER_API_KEY=${CAPSOLVER_API_KEY:-} - CAPSOLVER_API_KEY=${CAPSOLVER_API_KEY:-}
- AUTO_SOLVE_CAPTCHA=${AUTO_SOLVE_CAPTCHA:-false} - AUTO_SOLVE_CAPTCHA=${AUTO_SOLVE_CAPTCHA:-false}
# ВАЖНО! Прокси обязательна для Turnstile! Без прокси Cloudflare детектит бота
- PROXY_URL=${PROXY_URL:-}
volumes: volumes:
- /home/nafer/dokploy_data/browser-use:/app/browser-data - /home/nafer/dokploy_data/browser-use:/app/browser-data
shm_size: '4gb' shm_size: '4gb'