| # hCaptcha 使用指南 |
|
|
| hCaptcha 通过 iframe 组件展示验证码挑战。求解器使用 Playwright 控制的 Chromium 访问目标页面,点击 hCaptcha 复选框,等待挑战完成,提取响应令牌。 |
|
|
| ## 支持的任务类型 |
|
|
| | 任务类型 | 说明 | |
| |---------|------| |
| | `HCaptchaTaskProxyless` | 基于浏览器的 hCaptcha 求解 | |
|
|
| ## 必填字段 |
|
|
| | 字段 | 类型 | 说明 | |
| |------|------|------| |
| | `websiteURL` | string | 包含验证码的页面完整 URL | |
| | `websiteKey` | string | 页面 HTML 中的 `data-sitekey` 值 | |
|
|
| ## 测试目标 |
|
|
| hCaptcha 提供官方测试密钥: |
|
|
| | URL | Site key | 行为 | |
| |-----|----------|------| |
| | `https://accounts.hcaptcha.com/demo` | `10000000-ffff-ffff-ffff-000000000001` | 始终通过(测试密钥) | |
| | `https://demo.hcaptcha.com/` | `10000000-ffff-ffff-ffff-000000000001` | 始终通过(测试密钥) | |
|
|
| ## 创建任务 |
|
|
| ```bash |
| curl -X POST http://localhost:8000/createTask \ |
| -H "Content-Type: application/json" \ |
| -d '{ |
| "clientKey": "your-client-key", |
| "task": { |
| "type": "HCaptchaTaskProxyless", |
| "websiteURL": "https://accounts.hcaptcha.com/demo", |
| "websiteKey": "10000000-ffff-ffff-ffff-000000000001" |
| } |
| }' |
| ``` |
|
|
| ## 轮询结果 |
|
|
| 就绪时返回: |
|
|
| ```json |
| { |
| "errorId": 0, |
| "status": "ready", |
| "solution": { |
| "gRecaptchaResponse": "P1_eyJ0eXAiOiJKV1QiLC..." |
| } |
| } |
| ``` |
|
|
| !!! note "字段命名" |
| 令牌以 `solution.gRecaptchaResponse` 返回,保持与 YesCaptcha API 的兼容性。 |
| |
| ## 验收状态 |
|
|
| | 目标 | Site key | 状态 | 说明 | |
| |------|----------|------|------| |
| | `https://accounts.hcaptcha.com/demo` | `10000000-ffff-ffff-ffff-000000000001` | ⚠️ 依赖挑战类型 | 无头浏览器可能仍会收到图像挑战 | |
|
|
| ### 无头浏览器说明 |
|
|
| 即使使用测试密钥(`10000000-ffff-ffff-ffff-000000000001`),hCaptcha 在检测到无头浏览器时仍可能弹出图像挑战。求解器在点击复选框后最多等待 30 秒以获取令牌。 |
|
|
| 对于无头环境,推荐使用 `HCaptchaClassification` 任务类型求解图像网格挑战,然后注入令牌。 |
|
|
| ## 注意事项 |
|
|
| - hCaptcha 挑战通常比 reCAPTCHA v2 需要更多时间,求解器点击后最多等待 30 秒。 |
| - 测试密钥(`10000000-ffff-ffff-ffff-000000000001`)在低风险环境下会立即通过。 |
|
|