本文將介紹一種 Recaptcha2 影象識別2 API 對接說明,它可以透過使用者輸入識別的內容和 Recaptcha2驗證碼影象,最後返回需要點選的小影象的座標,完成驗證。
接下來介紹下 Recaptcha2 影象識別 API 的對接說明。
申請流程
要使用 API,需要先到 Recaptcha2 影象識別 API 對應頁面申請對應的服務,進入頁面之後,點選「Acquire」按鈕,如圖所示:
如果你尚未登入或註冊,會自動跳轉到登入頁面邀請您來註冊和登入,登入註冊之後會自動返回當前頁面。
在首次申請時會有免費額度贈送,可以免費使用該 API。
基本使用
首先先了解下基本的使用方式,我們需要從網站中擷取到Recaptcha2驗證碼影象,此處示例網站的URL:https://www.google.com/recaptcha/api2/demo
,具體的頁面如下圖所示:
我們需要點選驗證碼的覈取方塊纔會出現驗證碼影象,在上圖中黃色箭頭指向的有一段文字內容,這個內容便是下文的 question
的值。首先需要簡單地傳遞一個 image
欄位,這個就是具體Recaptcha2驗證碼影象,這個影象是上圖中紅色箭頭指向的影象,同時必須將圖片縮放至 標準 大小 (100x100, 300x300, 450x450), 這樣服務才能判斷圖片型別,圖片的壓縮需要您自行壓縮。
同時還需要輸入跟驗證碼影象相關的識別內容引數 question
,我們只提供了下面這個內容表,可以作為參考下面:
中文內容表
{ "/m/0pg52": "計程車", "/m/01bjv": "巴士", "/m/02yvhj": "校車", "/m/04_sv": "摩托車", "/m/013xlm": "拖拉機", "/m/01jk_4": "煙囪", "/m/014xcs": "人行橫道", "/m/015qff": "紅綠燈", "/m/0199g": "腳踏車", "/m/015qbp": "停車計價表", "/m/0k4j": "汽車", "/m/015kr": "橋", "/m/019jd": "船", "/m/0cdl1": "棕櫚樹", "/m/09d_r": "山", "/m/01pns0": "消防栓", "/m/01lynh": "樓梯" }
英文內容表
{ "/m/0pg52": "taxis", "/m/01bjv": "bus", "/m/02yvhj": "school bus", "/m/04_sv": "motorcycles", "/m/013xlm": "tractors", "/m/01jk_4": "chimneys", "/m/014xcs": "crosswalks", // pedestrian crossings 也是一樣的 "/m/015qff": "traffic lights", "/m/0199g": "bicycles", "/m/015qbp": "parking meters", "/m/0k4j": "cars", "/m/015kr": "bridges", "/m/019jd": "boats", "/m/0cdl1": "palm trees", "/m/09d_r": "mountains or hills", "/m/01pns0": "fire hydrant", "/m/01lynh": "stairs" }
由上文可知將引數 question
設定為消防栓對應的 /m/01pns0
,具體的內容如下:
可以看到這裏我們設定了 Request Headers,包括:
accept
:想要接收怎樣格式的響應結果,這裏填寫為application/json
,即 JSON 格式。authorization
:呼叫 API 的金鑰,申請之後可以直接下拉選擇。
另外設定了 Request Body,包括:
image
:Base64編碼的驗證碼影象。question
:問題 ID, 請查表, 以 /m/ 開頭。
選擇之後,可以發現右側也生成了對應程式碼,如圖所示:
點選「Try」按鈕即可進行測試,如上圖所示,這裏我們就得到了如下結果:
{ "solution": { "size": 300, "label": "/m/01pns0", "confidences": [ 0, 0.0007, 1, 0.0003, 0.0046, 1, 0, 1, 0 ], "objects": [ 2, 5, 7 ], "type": "multi" } }
返回結果一共有多個欄位,介紹如下:
solution
,此次 Recaptcha2驗證碼影象 任務處理後驗證結果。size
,Recaptcha2驗證碼影象的尺寸大小。label
,Recaptcha2驗證碼影象所識別的內容。confidences
,Recaptcha2驗證碼影象識別區域的置信度,區域是從0開始的。objects
,Recaptcha2驗證碼影象識別後滿足識別內容的區域,區域從0開始。type
,此次 Recaptcha2驗證碼影象 任務的型別,多個區域時為multi
。
可以看到我們得到了處理 Recaptcha2驗證碼影象 的驗證結果,我們首先對驗證碼影象進行劃分區域,如下圖所示:
可以看到區域都是從0開始的,從結果中 objects
中我們得到了2,5,7,我們只需要對該驗證碼模擬點選該三個區域便可透過驗證。
另外如果想生成對應的對接程式碼,可以直接複製生成,例如 CURL 的程式碼如下:
curl -X POST 'https://api.acedata.cloud/captcha/recognition/recaptcha2' \ -H 'accept: application/json' \ -H 'authorization: Bearer {token}' \ -H 'content-type: application/json' \ -d '{ "question": "/m/01pns0", "image": "文章字數受限,請閱讀原文連結,文章底部" } response = requests.post(url, json=payload, headers=headers) print(response.text)
錯誤處理
在呼叫 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.
錯誤響應示例
{ "success": false, "error": { "code": "api_error", "message": "fetch failed" }, "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89" }
結論
透過本文件,您已經瞭解瞭如何使用 Recaptcha2 影象識別 API 讓使用者輸入識別的內容和 Recaptcha2驗證碼影象,最後返回需要點選的小影象的座標,完成驗證。希望本文件能幫助您更好地對接和使用該 API。如有任何問題,請隨時聯絡我們的技術支援團隊。