Skip to content

fix(captcha): API 打码注入 solution userAgent 修复 reCAPTCHA UA 不一致#158

Merged
TheSmallHanCat merged 1 commit into
TheSmallHanCat:mainfrom
hujinlong989:fix/api-captcha-ua-injection
Jun 26, 2026
Merged

fix(captcha): API 打码注入 solution userAgent 修复 reCAPTCHA UA 不一致#158
TheSmallHanCat merged 1 commit into
TheSmallHanCat:mainfrom
hujinlong989:fix/api-captcha-ua-injection

Conversation

@hujinlong989

Copy link
Copy Markdown
  • 描述建议:
    • 问题:PUBLIC_ERROR_UNUSUAL_ACTIVITY: reCAPTCHA evaluation failed
    • 根因:_get_api_captcha_token 只返回 token 不返回 UA,导致请求用 macOS UA vs 打码 Windows UA 不一致
    • 改动:让该函数返回 (token, userAgent) 元组,调用方把 UA 注入 fingerprint context
    • 测试:新增 test_api_captcha_fingerprint.py
      YesCaptcha/CapMonster/EzCaptcha/CapSolver 等 API 打码返回的 solution 包含 gRecaptchaResponse 与 userAgent 两个字段。
      _get_api_captcha_token 之前只返回 gRecaptchaResponse, 后续 Flow API 请求继续用 _generate_user_agent 生成的 macOS UA, 与打码时的
      Windows UA 不一致, 触发 PUBLIC_ERROR_UNUSUAL_ACTIVITY:
      reCAPTCHA evaluation failed。

将 userAgent 合并到 fingerprint context, 让 _make_request 自动 沿用打码 UA, sec-ch-ua-platform 由 fallback 逻辑按 UA 自动推断 (Windows → "Windows", mac → "macOS" 等)。

新增 tests/test_api_captcha_fingerprint.py 覆盖该路径。

YesCaptcha/CapMonster/EzCaptcha/CapSolver 等 API 打码返回的
solution 包含 gRecaptchaResponse 与 userAgent 两个字段。
_get_api_captcha_token 之前只返回 gRecaptchaResponse, 后续 Flow API
请求继续用 _generate_user_agent 生成的 macOS UA, 与打码时的
Windows UA 不一致, 触发 PUBLIC_ERROR_UNUSUAL_ACTIVITY:
reCAPTCHA evaluation failed。

将 userAgent 合并到 fingerprint context, 让 _make_request 自动
沿用打码 UA, sec-ch-ua-platform 由 fallback 逻辑按 UA 自动推断
(Windows → "Windows", mac → "macOS" 等)。

新增 tests/test_api_captcha_fingerprint.py 覆盖该路径。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@TheSmallHanCat TheSmallHanCat merged commit 1490788 into TheSmallHanCat:main Jun 26, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants