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

Function test_captcha_score

src/api/admin.py:1933–2266  ·  view source on GitHub ↗

使用当前打码方式获取 token,并提交到 antcpt 校验分数。

(
    _request: Optional[CaptchaScoreTestRequest] = None,
    _token: str = Depends(verify_admin_token)
)

Source from the content-addressed store, hash-verified

1931
1932@router.post("/api/captcha/score-test")
1933async def test_captcha_score(
1934 _request: Optional[CaptchaScoreTestRequest] = None,
1935 _token: str = Depends(verify_admin_token)
1936):
1937 """使用当前打码方式获取 token,并提交到 antcpt 校验分数。"""
1938 req = request or CaptchaScoreTestRequest()
1939 website_url = (req.website_url or "https://antcpt.com/score_detector/").strip()
1940 website_key = (req.website_key or "6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf").strip()
1941 action = (req.action or "homepage").strip()
1942 verify_url = (req.verify_url or "https://antcpt.com/score_detector/verify.php").strip()
1943 enterprise = bool(req.enterprise)
1944
1945 started_at = time.time()
1946 captcha_config = await db.get_captcha_config()
1947 captcha_method = (captcha_config.captcha_method or config.captcha_method or "").strip().lower()
1948 browser_proxy_enabled = bool(captcha_config.browser_proxy_enabled)
1949 browser_proxy_url = captcha_config.browser_proxy_url or ""
1950
1951 token_value: Optional[str] = None
1952 fingerprint: Optional[Dict[str, Any]] = None
1953 token_elapsed_ms = 0
1954 verify_elapsed_ms = 0
1955 verify_http_status = None
1956 verify_result: Dict[str, Any] = {}
1957 verify_headers: Dict[str, str] = {}
1958 verify_proxy_used = False
1959 verify_proxy_source = "none"
1960 verify_proxy_url = ""
1961 verify_impersonate = "chrome120"
1962 page_verify_only = captcha_method in {"browser", "personal", "remote_browser"}
1963 verify_mode = "browser_page" if page_verify_only else "server_post"
1964
1965 try:
1966 token_start = time.time()
1967 if captcha_method == "browser":
1968 from ..services.browser_captcha import BrowserCaptchaService
1969 service = await BrowserCaptchaService.get_instance(db)
1970 score_payload, browser_id = await service.get_custom_score(
1971 website_url=website_url,
1972 website_key=website_key,
1973 verify_url=verify_url,
1974 action=action,
1975 enterprise=enterprise
1976 )
1977 if isinstance(score_payload, dict):
1978 token_value = score_payload.get("token")
1979 verify_elapsed_ms = int(score_payload.get("verify_elapsed_ms") or 0)
1980 verify_http_status = score_payload.get("verify_http_status")
1981 verify_result = score_payload.get("verify_result") if isinstance(score_payload.get("verify_result"), dict) else {}
1982 verify_mode = score_payload.get("verify_mode") or "browser_page"
1983 score_token_elapsed = score_payload.get("token_elapsed_ms")
1984 if isinstance(score_token_elapsed, (int, float)):
1985 token_elapsed_ms = int(score_token_elapsed)
1986 if token_value:
1987 fingerprint = await service.get_fingerprint(browser_id)
1988 verify_proxy_used = bool(browser_proxy_enabled and browser_proxy_url)
1989 verify_proxy_source = "captcha_browser_proxy" if verify_proxy_used else "browser_direct"
1990 verify_proxy_url = browser_proxy_url if verify_proxy_used else ""

Callers

nothing calls this directly

Calls 13

_mask_tokenFunction · 0.85
get_captcha_configMethod · 0.80
get_fingerprintMethod · 0.80
postMethod · 0.80
get_instanceMethod · 0.45
get_custom_scoreMethod · 0.45

Tested by

no test coverage detected