跳轉到主要內容
本文将介绍一种 hCaptcha 协议识别 API 对接说明,它可让用户无需识别和点选 hCaptcha 验证码图片,仅需通过提交 Website Key 即可实现后台自动解码,完成验证。

申请流程

要使用 hCaptcha 协议识别 API,首先到 Ace Data Cloud 控制台 获取您的 API Token,留作备用。 如果你尚未登录或注册,会自动跳转到登录页面邀请你注册和登录,完成后会自动返回当前页面。 一个 API Token 即可调用平台所有服务,无需为每个服务单独申请。 首次申请会赠送免费额度,可免费体验;额度不足时可在 控制台 充值通用余额。
📘 完整文档:hCaptcha 协议识别 API →

基本使用

首先先了解下基本的使用方式,就是输入需要处理 hCaptcha验证码的网站URL,便可获得处理后的结果,首先需要简单地传递一个 website_url 字段,我们的示例网站是:https://accounts.hcaptcha.com/demo,我们需要在 website_url 页面中获取 website_key,首先需要打开这个网页,按F12进入控制台,最后在Element页面进行全局搜索 hcaptcha-demo,我们可以得到下面的结果:

其中 data-sitekey 对应的一串字符串便是 website_key的值,下面是具体的参数结果:

可以看到这里我们设置了 Request Headers,包括:
  • accept:想要接收怎样格式的响应结果,这里填写为 application/json,即 JSON 格式。
  • authorization:调用 API 的密钥,申请之后可以直接下拉选择。
另外设置了 Request Body,包括:
  • website_url:需要处理验证码的网站URL。
  • website_key:在hCaptcha中的网站密钥标识符。
  • rqdata:可选。hCaptcha Enterprise 挑战可能在页面中提供 data-rqdata,遇到此类挑战时填写其原始值;普通 hCaptcha 无需填写。
  • proxy:可选,自带代理(Bring Your Own Proxy)。设置后系统会通过你提供的代理 IP 去解验证码,用于控制出口 IP 质量(例如避免因公共代理 IP 被目标站点拦截而返回 410 Gone)。格式为 scheme://[user:pass@]host:port,scheme 支持 http/https/socks4/socks5,例如 http://user:pass@1.2.3.4:8080。不填则使用平台默认代理。
选择之后,可以发现右侧也生成了对应代码,如图所示:

点击「Try」按钮即可进行测试,如上图所示,这里我们就得到了如下结果:
可以看到我們得到了處理 hCaptcha驗證碼 的驗證結果,然後我們可以用於POST或模擬提交給目標網站,一次性使用,有效期120s,建議在60s內使用,接下來將提供一段CURL版本將處理後token提交到目標網站來通過Recaptcha2驗證碼。 首先我們需要獲取網站是如何發送POST請求,這樣我們才能將生成的token傳入進去,我們需要先打開F12控制台,然後人工先通過一下,最後我們可以看到網站發送了一個POST請求,我們只需要查看這次的POST請求構造,具體的過程如下:
  • 先人工通過驗證,具體的如下圖:

  • 再點擊submit,觀看控制台的network變化,具體的如下圖:

  • 分析此次提交的POST請求構造,最後可以右鍵該請求複製CURL的代碼,具體的如下圖:

由上圖分析可知,此次POST請求的URL為:https://accounts.hcaptcha.com/demo,我們僅需要提交參數 g-recaptcha-response、h-captcha-response 和 email,然後我們只需要將處理後的token傳入下面的data中即可,調用token驗證所對應CURL代碼如下:
調用token驗證所對應的Python代碼如下:
然後我們觀察控制台變得了這樣的結果:

最後我們就通過了hCaptcha驗證碼的驗證。 另外如果想生成對應的對接代碼,可以直接複製生成,例如 CURL 的代碼如下:
Python 的對接代碼如下:

非同步模式(async)

默認情況下 API 是同步阻塞的:一次請求會一直等待,直到 token 處理完成才返回。如果你在做多打碼器輪換(multi-solver rotation),希望「提交任務後立即拿到 task_id,先去調度其他打碼器,稍後再回來讀取結果」,可以在請求體中傳入 async: true。 傳入 async: true 後,接口會立即返回一個 task_id,而不會阻塞等待:
如需主動查看進度,可使用該 task_id 查詢 POST /captcha/tasks(建議每 3~5 秒一次)。本接口不會觸發或推進任務處理;即使不查詢、斷網或退出客戶端,伺服器仍會繼續處理:
處理中會返回 status: processing:
處理完成會返回 status: ready 和 token:
計費說明:非同步模式下,創建任務和讀取「處理中」狀態都不計費;客戶端首次讀取成功結果時計費一次(與現有行為及同步模式價格一致)。伺服器會自主推進任務,但不會因為後台先完成就提前扣費。任務在 120 秒內未成功會終止為 HTTP 504 timeout,不計費。/captcha/tasks 不負責推進任務。

錯誤處理

在調用 API 時,如果遇到錯誤,API 會返回相應的錯誤代碼和信息。例如:
  • 400 token_mismatched:Bad request, possibly due to missing or invalid parameters.
  • 400 api_not_implemented:Bad request, possibly due to missing or invalid parameters.
  • 401 invalid_token:Unauthorized, invalid or missing authorization token.
  • 429 too_many_requests:Too many requests, you have exceeded the rate limit.
  • 500 api_error:Internal server error, something went wrong on the server.

錯誤響應示例

結論

通過本文檔,您已經了解了如何使用 hCaptcha 協議識別 API 讓用戶無需識別和點選 hCaptcha 驗證碼圖片,僅需通過提交 Website Key 即可實現後台自動解碼,完成驗證。希望本文檔能幫助您更好地對接和使用該 API。如有任何問題,請隨時聯繫我們的技術支持團隊。