Skip to main content
本文將介紹一種 Recaptcha2 協議識別 API 對接說明,它可讓用戶無需識別和點選 Recaptcha2 驗證碼圖片,僅需通過提交 Website Key 即可實現後台自動解碼,完成驗證。

申請流程

要使用 Recaptcha2 協議識別 API,首先到 Ace Data Cloud 控制台 獲取您的 API Token,留作備用。 如果你尚未登錄或註冊,會自動跳轉到登錄頁面邀請你註冊和登錄,完成後會自動返回當前頁面。 一個 API Token 即可調用平台所有服務,無需為每個服務單獨申請。 首次申請會贈送免費額度,可免費體驗;額度不足時可在 控制台 充值通用餘額。
📘 完整文檔:Recaptcha2 協議識別 API →

基本使用

首先先了解下基本的使用方式,就是輸入需要處理驗證碼的網站URL,便可獲得處理後的結果,首先需要簡單地傳遞一個 website_url 字段,我們的示例網站是:https://www.google.com/recaptcha/api2/demo,我們需要在 website_url 頁面中獲取 website_key,首先需要打開這個網頁,按F12進入控制台,最後在Element頁面進行全局搜索 recaptcha-demo,我們可以得到下面的結果:

其中 data-sitekey 對應的一串字符串便是 website_key的值,下面是具體的參數結果:

可以看到這裡我們設置了 Request Headers,包括:
  • accept:想要接收怎樣格式的響應結果,這裡填寫為 application/json,即 JSON 格式。
  • authorization:調用 API 的密鑰,申請之後可以直接下拉選擇。
另外設置了 Request Body,包括:
  • website_url:需要處理驗證碼的網站URL。
  • website_key:在Recaptcha2中的網站密鑰標識符。
  • proxy:可選,自帶代理(Bring Your Own Proxy)。設置後上游會通過你提供的代理 IP 去解驗證碼,用於控制出口 IP 質量(例如避免因公共代理 IP 被目標站點攔截而返回 410 Gone)。格式為 scheme://[user:pass@]host:portscheme 支持 http/https/socks4/socks5,例如 http://user:pass@1.2.3.4:8080。不填則使用平台默認代理。
選擇之後,可以發現右側也生成了對應代碼,如圖所示:

點擊「Try」按鈕即可進行測試,如上圖所示,這裡我們就得到了如下結果:
返回結果一共有多個字段,介紹如下:
  • token,此次 Recaptcha2驗證碼任務處理後驗證結果。
  • started_atfinished_at:本次請求開始處理與產出結果的時間,Unix 時間戳(秒,浮點)。
  • elapsed:本次處理的總耗時(秒)。
可以看到我們得到了處理 Recaptcha2驗證碼的驗證結果,然後我們可以用於POST或模擬提交給目標網站,一次性使用,有效期120s,建議在60s內使用,接下來將提供一段Python版本將處理後token提交到目標網站來通過Recaptcha2驗證碼。 首先我們需要獲取網站是如何發送POST請求,這樣我們才能將生成的token傳入進去,我們需要先打開F12控制台,然後人工先通過一下,最後我們可以看到網站發送了一個POST請求,我們只需要查看這次的POST請求構造,具體的過程如下:
  • 先人工通過驗證,具體的如下圖:

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

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

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

最後我們就通過了Recaptcha2驗證碼的協議驗證。 另外如果想生成對應的對接代碼,可以直接複製生成,例如 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:
計費說明:異步模式下,創建任務與輪詢「處理中」都不計費;僅在成功取到結果時計費一次(與同步模式的價格一致)。因此在輪換中取消尚未完成的任務不會產生費用。/captcha/tasks 對所有驗證碼接口(token 與 recognition 系列)通用,用同一個 task_id 輪詢即可。

錯誤處理

在調用 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.

錯誤響應示例

結論

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