使用当前打码方式获取 token,并提交到 antcpt 校验分数。
(
_request: Optional[CaptchaScoreTestRequest] = None,
_token: str = Depends(verify_admin_token)
)
| 1931 | |
| 1932 | @router.post("/api/captcha/score-test") |
| 1933 | async 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 "" |
nothing calls this directly
no test coverage detected