Recaptcha2 图像识别 API 对接说明

news/2024/11/17 1:40:31/

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

中文内容表

{"/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": ""
}'

Python 的对接代码如下:

import requestsurl = "https://api.acedata.cloud/captcha/recognition/recaptcha2"headers = {"accept": "application/json","authorization": "Bearer {token}","content-type": "application/json"
}payload = {"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。如有任何问题,请随时联系我们的技术支持团队。


http://www.ppmy.cn/news/1530858.html

相关文章

基于 Redis 实现滑动窗口的限流

⏳ 限流场景:突发流量,恶意流量,业务本身需要 基于 Redis 实现滑动窗口的限流是一种常见且高效的做法。Redis 是一种内存数据库,具有高性能和支持原子操作的特点,非常适合用来实现限流功能。下面是一个使用 Redis 实现…

SSC338D/SSC338Q CA7*2+IPU5M/Multi-sensorISP: HDR/3DNR

SSC338D/SSC338Q系列产品是高度集成的多媒体片上系统(SoC)产品,适用于IP摄像机、车载摄像机和USB摄像机等高分辨率智能视频录制应用。该芯片包括32位双核RISC处理器、高级图像信号处理器(ISP)、高性能MJPEG/H.264/H.26…

金砖软件测试赛项之Jmeter如何录制脚本!

一、简介 Apache JMeter 是一款开源的性能测试工具,用于测试各种服务的负载能力,包括Web应用、数据库、FTP服务器等。它可以模拟多种用户行为,生成负载以评估系统的性能和稳定性。 JMeter 的主要特点: 图形用户界面:…

c++ day06

类的栈 实现 #include <iostream>using namespace std;class Stack { private:static const size_t MAX 100; // 定义固定容量int data[MAX]; // 存储栈元素的数组size_t len; // 当前栈的大小public:// 构造函数Stack() : len…

Java基础知识扫盲

目录 Arrays.sort的底层实现 BigDecimal(double)和BigDecimal(String)有什么区别 Char可以存储一个汉字吗 Java中的Timer定时调度任务是咋实现的 Java中的序列化机制是咋实现的 Java中的注解是干嘛的 Arrays.sort的底层实现 Arrays.sort是Java中提供的对数组进行排序的…

后端开发刷题 | 最长无重复子数组

描述 给定一个长度为n的数组arr&#xff0c;返回arr的最长无重复元素子数组的长度&#xff0c;无重复指的是所有数字都不相同。 子数组是连续的&#xff0c;比如[1,3,5,7,9]的子数组有[1,3]&#xff0c;[3,5,7]等等&#xff0c;但是[1,3,7]不是子数组 数据范围&#xff1a;0…

自动驾驶中的决策规划技术分享--轻舟智航

文章目录 0.概述&#xff1a;1 导航模块2 决策模块2.1 车道决策2.2 障碍物决策 3 轨迹规划3.1 时空分离规划3.2 时空联合规划 4 对比 0.概述&#xff1a; 李仁杰&#xff0c;轻舟智航规划算法负责人&#xff0c;自动驾驶决策与规划技术专家。 在自动驾驶系统中&#xff0c;决策…

SQLPlus执行成功但数据没有更新的原因及解决办法

在使用 sqlplus 执行 SQL 文件时&#xff0c;如果执行成功但数据没有更新&#xff0c;可能有以下几个原因导致&#xff1a; 1. 没有提交事务 在 Oracle 数据库中&#xff0c;执行 UPDATE, INSERT, DELETE 等操作后&#xff0c;默认不会自动提交事务。如果没有显式地提交事务&…