hCaptcha 图像识别
HCaptchaClassification 识别 hCaptcha 弹出的图片题:把题目和图片发过来,返回该选哪几张图、该点哪个位置或者从哪拖到哪,由你的程序在浏览器里操作。它不返回 token。同步返回,每次 8 点(0.008 元),没有识别出目标(结果为空)时不扣点。
POST
https://api.yescaptcha.com/createTask国际节点POST
https://cn.yescaptcha.com/createTask国内节点| 任务类型 | 价格 | 返回方式 | 说明 |
|---|---|---|---|
HCaptchaClassification | 8 点(0.008 元) | 同步 | 没有识别出目标(结果为空)时不扣点 |
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
type | string | 是 | 任务类型,取值见本页"类型与价格" |
queries | array | 是 | 题目图片的 Base64 编码列表,按网页上的顺序(九宫格就是 9 张小图) |
question | string | 否 | 题目原文整句,直接取网页上显示的(建议简体中文或英文),例如 Please click each image containing a bicycle。question、anchors 至少传一个,建议都传 |
anchors | array | 否 | 提示图(题目旁边的示例小图)的 Base64 编码列表,有提示图的题目要传 |
question直接取网页上显示的整句题目,不需要翻译,建议把 hCaptcha 切换成简体中文或英文。新的题目一般会很快支持,全新的类别 3 个工作日内支持。- 题目右上角有提示小图的,要把小图放进
anchors;必须看小图才能判断的题目,不传anchors识别不了。
题目是“请点击每个包含 … 的图像”,下面有 9 张小图。queries 按顺序放 9 张小图的 Base64:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "HCaptchaClassification", "question": "Please click each image containing a bicycle", "queries": [ "BASE64_IMAGE_1", "BASE64_IMAGE_2" ] }}返回:
{ "errorId": 0, "status": "ready", "solution": { "objects": [true, false, false, true, true, false, true, true, false], "top_k": [0, 3, 4, 6, 7], "confidences": [1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0] }}objects 和 top_k 意思相同:前者是每张图是不是目标,后者是目标图片的序号(从 0 开始)。点击这些图片即可。
点击指定位置
Section titled “点击指定位置”题目是“请点击 …”,下面是一张大图,要点击图上的某个(或几个)位置。
question取网页上的题目;有示例小图的,放进anchors。queries放一张图:最好用 canvas 直接导出的原图(建议转成 JPG),只能截图的话截下面红框里的大图区域,不要多也不要少。- 返回的
box是要点击的坐标,依次是 x1、y1、x2、y2……,以上传图片的左上角为原点。 - 上传的图片尺寸和网页上显示的尺寸不同时要换算:网页上的 x = 返回的 x × 显示宽度 ÷ 上传图片宽度(y 同理)。例如返回 x = 769,canvas 显示宽 350、上传图片宽 1000,网页上要点 769 × 350 ÷ 1000 ≈ 269。

{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "HCaptchaClassification", "question": "Please click on the entity present in the sample image.", "anchors": [ "BASE64_ANCHOR_1", "BASE64_ANCHOR_2", "BASE64_ANCHOR_3" ], "queries": [ "BASE64_OF_THE_BIG_IMAGE" ] }}返回:
{ "errorId": 0, "status": "ready", "solution": { "box": ["221", "213"] } }要点多个目标时,box 里依次是多组坐标:["221", "213", "340", "118", ...]。
拖动到指定位置
Section titled “拖动到指定位置”题目是“拖动 … 到 …”,要把右边的小块拖到图中对应的位置。
question取网页上的题目。- 截一张图放进
queries,图里要同时有要拖动的小块和目标位置,图片任意一边不小于 260 像素。 - 返回的
box里每一项是一次拖动:start是小块的位置,end是要拖到的位置。有多个小块时逐个拖动。
{ "errorId": 0, "status": "ready", "solution": { "type": "drag", "box": [{ "start": [644, 218], "end": [239, 315] }] }}
如果你拿到的是协议数据(小块的图片、小块的坐标和背景大图)而不是截图,要先按坐标把小块拼到大图上,拼成和网页截图一样的样式再发送。
题目图片是动画时,把动画(GIF 等格式)的 Base64 放进 queries。建议动画时长至少 3 秒、最好 5 到 6 秒,帧率约 12 FPS。