职业杀手
26.53M · 2026-03-25
在现代 web 应用中,Recaptcha2 验证码是保护网站免受恶意攻击的重要工具。本文将介绍如何集成 Recaptcha2 图像识别 API,该 API 能够识别用户输入的内容和 Recaptcha2 验证图像,最终返回需要点击的小图像的坐标。
Ace Data Cloud 提供了一系列强大的数据处理服务,其中包括 Recaptcha2 图像识别 API。该 API 使开发者能够自动化处理验证码,提升用户体验,尤其在需要频繁进行验证的场景中,如注册、登录等。要使用此服务,首先需要在 Recaptcha2 图像识别 API 页面申请相应的服务。
在开始使用 API 之前,您需要申请相应的服务。进入上述链接后,点击“获取”按钮,如下图所示:

如果您尚未注册或登录,系统会自动引导您进行注册或登录。完成后,您将返回到当前页面,并会获得一个免费的配额,允许您免费使用该 API。
首先,我们需要从网站上捕获 Recaptcha2 验证图像。示例网站的 URL 为:,如下图所示:

为了显示验证图像,我们需要点击验证码框。图中黄色箭头指向的文本是后续提到的 question 值。接下来,我们需要传递一个名为 image 的字段,该字段对应具体的 Recaptcha2 验证图像,红箭头所指即为该图像。请将图像缩放至标准尺寸(100x100、300x300、450x450),以便服务能辨识图像类型。推荐使用 Photopea 进行图像的尺寸调整和压缩。压缩后的结果如下图所示:

除了图像,您还需要输入与验证图像相关的识别内容参数,即 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",
"/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,具体内容如下图所示:

在请求头部,我们需要设置如下字段:
accept: 希望接收的响应结果格式,这里填为 application/json,表示 JSON 格式。authorization: 调用 API 的密钥,可在申请后直接选择。请求体中需要包含:
image: Base64 编码的验证图像。question: 问题 ID,请参考前面的表格,ID 以 /m/ 开头。选择后,您可以在右侧查看生成的对应代码,如下图所示:

点击“尝试”按钮进行测试,您将获得如下结果:
{
"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: 识别区域的置信度,区域从 0 开始。objects: 识别后符合内容的区域,区域从 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": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX..."
}'
Python 的集成代码如下:
import requests
url = "https://api.acedata.cloud/captcha/recognition/recaptcha2"
headers = {
"accept": "application/json",
"authorization": "Bearer {token}",
"content-type": "application/json"
}
payload = {
"question": "/m/01pns0",
"image": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX..."
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
在调用 API 时,如果发生错误,API 会返回相应的错误代码和消息。例如:
400 token_mismatched: 错误请求,可能是缺少或无效的参数。400 api_not_implemented: 错误请求,可能是缺少或无效的参数。401 invalid_token: 未授权,授权令牌无效或缺失。429 too_many_requests: 请求过多,您已超过速率限制。500 api_error: 服务器内部错误,服务器出现问题。{
"success": false,
"error": {
"code": "api_error",
"message": "fetch failed"
},
"trace_id": "2cf