Recaptcha2 图像识别 API 对接说明

本文将介绍一种 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,我们只提供了下面这个内容表,可以作为参考下面:

中文内容表

json 复制代码
{
  "/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": "楼梯"
}

英文内容表

json 复制代码
{
  "/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」按钮即可进行测试,如上图所示,这里我们就得到了如下结果:

json 复制代码
{
  "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 的代码如下:

shell 复制代码
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.

错误响应示例

json 复制代码
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

结论

通过本文档,您已经了解了如何使用 Recaptcha2 图像识别 API 让用户输入识别的内容和 Recaptcha2验证码图像,最后返回需要点击的小图像的坐标,完成验证。希望本文档能帮助您更好地对接和使用该 API。如有任何问题,请随时联系我们的技术支持团队。

原文链接:platform.acedata.cloud/documents/3...

相关推荐
黄俊懿4 分钟前
【图解秒杀系列】秒杀技术点——隔离、熔断、限流、降级
分布式·后端·中间件·架构·秒杀
P.H. Infinity24 分钟前
【SpringCloud】01-远程调用
后端·spring·spring cloud
xjjeffery1 小时前
文件和目录
linux·c语言·后端
林九生1 小时前
【Golang】(推荐项目)Go后端工程项目
开发语言·后端·golang
掘金-我是哪吒2 小时前
springboot第74集:设计模式
java·spring boot·后端·spring·设计模式
计算机学姐3 小时前
基于SpringBoot+Vue的旅游攻略平台管理系统
java·vue.js·spring boot·后端·intellij-idea·mybatis·旅游
向上的车轮5 小时前
ASP.NET Zero是什么?适合哪些业务场景?
后端·asp.net·多租户支持
knoci7 小时前
【Go】-基于Gin框架的IM通信项目
开发语言·后端·学习·golang·gin
高高要努力10 小时前
SpringBoot日志集成-LogBack
spring boot·后端·logback
Pandaconda11 小时前
【计算机网络 - 基础问题】每日 3 题(二十七)
开发语言·经验分享·笔记·后端·计算机网络·面试·职场和发展