hCaptcha 协议识别 API 对接说明
本文将介绍一种 hCaptcha 协议识别 API 对接说明,它可让用户无需识别和点选 hCaptcha 验证码图片,仅需通过提交 Website Key 即可实现后台自动解码,完成验证。
接下来介绍下 hCaptcha 协议识别 API 的对接说明。
申请流程
要使用 API,需要先到 hCaptcha 协议识别 API 对应页面申请对应的服务,进入页面之后,点击「Acquire」按钮,如图所示:
如果你尚未登录或注册,会自动跳转到登录页面邀请您来注册和登录,登录注册之后会自动返回当前页面。
在首次申请时会有免费额度赠送,可以免费使用该 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中的网站密钥标识符。
选择之后,可以发现右侧也生成了对应代码,如图所示:
点击「Try」按钮即可进行测试,如上图所示,这里我们就得到了如下结果:
{
"token": "xxxxx"
}
返回结果一共有多个字段,介绍如下:
token
,此次 hCaptcha验证码 任务处理后验证结果。
可以看到我们得到了处理 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代码如下:
curl 'https://accounts.hcaptcha.com/demo' \
--data-raw 'email=&g-recaptcha-response={token}&h-captcha-response={token}'
调用token验证所对应的Python代码如下:
import requests
token = '{token}'
data = {
'email': '',
'g-recaptcha-response': token,
'h-captcha-response': token
}
response = requests.post('https://accounts.hcaptcha.com/demo',
data=data)
if response.status_code == 200:
print(response.text)
然后我们观察控制台变得了这样的结果:
最后我们就通过了hCaptcha验证码的验证。
另外如果想生成对应的对接代码,可以直接复制生成,例如 CURL 的代码如下:
curl -X POST 'https://api.acedata.cloud/captcha/token/hcaptcha' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
"website_key": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2",
"website_url": "https://accounts.hcaptcha.com/demo"
}'
Python 的对接代码如下:
import requests
url = "https://api.acedata.cloud/captcha/token/hcaptcha"
headers = {
"accept": "application/json",
"authorization": "Bearer {token}",
"content-type": "application/json"
}
payload = {
"website_key": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2",
"website_url": "https://accounts.hcaptcha.com/demo"
}
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"
}
结论
通过本文档,您已经了解了如何使用 hCaptcha 协议识别 API 让用户无需识别和点选 hCaptcha 验证码图片,仅需通过提交 Website Key 即可实现后台自动解码,完成验证。希望本文档能帮助您更好地对接和使用该 API。如有任何问题,请随时联系我们的技术支持团队。