POST https://ocr.captchaai.com/in.php
key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com&json=1
参数翻译
下一个验证码字段
CaptchaAI 字段
笔记
clientKey
key
API密钥
task.type
method
请参阅下面的类型映射
task.websiteURL
pageurl
目标页面网址
task.websiteKey
googlekey 或 sitekey
令牌验证码的站点密钥
task.recaptchaDataSValue
data-s
reCAPTCHA data-s 参数
task.isInvisible
invisible=1
不可见的 reCAPTCHA 标志
task.pageAction
action
reCAPTCHA v3 行动
taskId
id
用于轮询的任务/captcha ID
任务类型映射
下一个验证码类型
CaptchaAI 方法 + 参数
RecaptchaV2TaskProxyless
method=userrecaptcha
RecaptchaV2Task
method=userrecaptcha + proxy, proxytype
HCaptchaTaskProxyless
method=hcaptcha
HCaptchaTask
method=hcaptcha + proxy, proxytype
ImageToTextTask
method=base64 + body
TurnstileTaskProxyless
method=turnstile
代码迁移
Python — 之前 (NextCaptcha)
import requests
import time
CLIENT_KEY = "your_nextcaptcha_key"
BASE_URL = "https://api.nextcaptcha.com"
def solve_recaptcha_v2(sitekey, pageurl):
# Submit
resp = requests.post(f"{BASE_URL}/createTask", json={
"clientKey": CLIENT_KEY,
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": pageurl,
"websiteKey": sitekey
}
})
data = resp.json()
if data.get("errorId") != 0:
return {"error": data.get("errorDescription")}
task_id = data["taskId"]
# Poll
for _ in range(60):
time.sleep(5)
result = requests.post(f"{BASE_URL}/getTaskResult", json={
"clientKey": CLIENT_KEY,
"taskId": task_id
}).json()
if result.get("status") == "ready":
return {"solution": result["solution"]["gRecaptchaResponse"]}
if result.get("errorId") != 0:
return {"error": result.get("errorDescription")}
return {"error": "TIMEOUT"}
Python — 之后 (CaptchaAI)
import os
import time
import requests
API_KEY = os.environ["CAPTCHAAI_API_KEY"]
def solve_recaptcha_v2(sitekey, pageurl):
# Submit — different endpoint and format
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"json": 1
})
data = resp.json()
if data.get("status") != 1:
return {"error": data.get("request")}
captcha_id = data["request"]
# Poll — GET instead of POST, different response format
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": captcha_id,
"json": 1
}).json()
if result.get("status") == 1:
return {"solution": result["request"]}
if result.get("request") != "CAPCHA_NOT_READY":
return {"error": result.get("request")}
return {"error": "TIMEOUT"}