MCPcopy Create free account
hub / github.com/TheSmallHanCat/flow2api / get_custom_score

Method get_custom_score

src/services/browser_captcha.py:2469–2537  ·  view source on GitHub ↗

Get a custom token and verify its score using a temporary browser.

(
        self,
        website_url: str,
        website_key: str,
        verify_url: str,
        action: str = "homepage",
        enterprise: bool = False,
    )

Source from the content-addressed store, hash-verified

2467 self.note_idle()
2468
2469 async def get_custom_score(
2470 self,
2471 website_url: str,
2472 website_key: str,
2473 verify_url: str,
2474 action: str = "homepage",
2475 enterprise: bool = False,
2476 ) -> Dict[str, Any]:
2477 """Get a custom token and verify its score using a temporary browser."""
2478 async with self._semaphore:
2479 self._solve_inflight += 1
2480 max_retries = 3
2481
2482 try:
2483 for attempt in range(max_retries):
2484 playwright = None
2485 browser = None
2486 context = None
2487 try:
2488 started_at = time.time()
2489 playwright, browser, context = await self._create_browser(manage_slot_pid=False)
2490 payload = await self._execute_custom_captcha(
2491 context=context,
2492 website_url=website_url,
2493 website_key=website_key,
2494 action=action,
2495 verify_url=verify_url,
2496 enterprise=enterprise,
2497 )
2498
2499 if isinstance(payload, dict) and payload.get("token"):
2500 self._solve_count += 1
2501 payload.setdefault("token_elapsed_ms", int((time.time() - started_at) * 1000))
2502 debug_logger.log_info(
2503 f"[BrowserCaptcha] Token-{self.token_id} in-page score verification succeeded ({(time.time()-started_at)*1000:.0f}ms)"
2504 )
2505 return payload
2506
2507 self._error_count += 1
2508 debug_logger.log_warning(
2509 f"[BrowserCaptcha] Token-{self.token_id} in-page score attempt {attempt+1}/{max_retries} failed"
2510 )
2511 except Exception as e:
2512 self._error_count += 1
2513 debug_logger.log_error(
2514 f"[BrowserCaptcha] Token-{self.token_id} in-page score browser error: {type(e).__name__}: {str(e)[:200]}"
2515 )
2516 finally:
2517 await self._close_browser(
2518 playwright,
2519 browser,
2520 context,
2521 browser_pid=self._extract_browser_pid(browser),
2522 clear_slot_pid=False,
2523 )
2524
2525 if attempt < max_retries - 1:
2526 await asyncio.sleep(1)

Callers 2

get_custom_scoreMethod · 0.45
test_captcha_scoreFunction · 0.45

Calls 9

_create_browserMethod · 0.95
_close_browserMethod · 0.95
_extract_browser_pidMethod · 0.95
note_idleMethod · 0.95
log_infoMethod · 0.80
log_warningMethod · 0.80
log_errorMethod · 0.80
sleepMethod · 0.80

Tested by 1

test_captcha_scoreFunction · 0.36