RecaptchaV3TaskProxyless
Parameters, request and response for reCAPTCHA v3 without a proxy: the RecaptchaV3TaskProxyless task type.
ส่วนนี้แสดงเป็นภาษาอังกฤษ
reCAPTCHA v3: no widget, the page calls grecaptcha.execute(sitekey, {action}) and the site gets a score. The task is solved from our IP addresses — no proxy needed.
| Price | US$0.90 per 1000 tasks (US$0.0009 per task), only for solved tasks — pricing |
| Proxy | not needed |
| Queue in getQueueStats | 18, 19, 20 |
| Also accepted as | — |
Parameters#
Fields of the task object in createTask:
พารามิเตอร์คำอธิบาย
typestringจำเป็นRecaptchaV3TaskProxylesswebsiteURLstringจำเป็น- Full address of the page where the reCAPTCHA is shown: http(s), up to 2048 characters. The page, not the address of the reCAPTCHA iframe.
websiteKeystringจำเป็น- Site key: the
data-sitekeyattribute of the widget or thekparameter of theanchorrequest in DevTools → Network. Up to 256 characters, no spaces. pageActionstring- The action the page passes to
grecaptcha.execute(sitekey, {action: …}), e.g.login. Up to 128 characters. minScorenumber- Minimum score of the token from 0 to 1, usually
0.3,0.7or0.9. apiDomainstring- Domain the widget is loaded from:
www.google.com(default) orwww.recaptcha.net. userAgentstring- User-Agent of the browser that will submit the token, up to 512 characters. It is returned in
solution.userAgent. cookiesstring- Cookies of the target site for the solving browser:
name=value; name2=value2, up to 8192 characters. Stored encrypted.
Request#
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "YOUR_SITE_KEY",
"pageAction": "login",
"minScore": 0.7
}
}Complete example#
Create the task, poll every 2 seconds, print the token:
import os
import time
import requests
API = "https://api.neurocaptcha.com"
KEY = os.environ["API_KEY"]
def call(method, payload):
data = requests.post(f"{API}/{method}", json={"clientKey": KEY, **payload}, timeout=30).json()
if data.get("errorId"):
raise RuntimeError(f'{data["errorCode"]}: {data.get("errorDescription", "")}')
return data
task = {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "YOUR_SITE_KEY",
"pageAction": "login",
"minScore": 0.7,
}
# 1. create the task: its price is held, not charged
task_id = call("createTask", {"task": task})["taskId"]
# 2. poll every 2 s; a failed task raises with its error code and costs nothing
deadline = time.time() + 300
while time.time() < deadline:
time.sleep(2)
result = call("getTaskResult", {"taskId": task_id})
if result["status"] == "ready":
print(result["solution"]["gRecaptchaResponse"])
break
else:
raise TimeoutError("the task was not solved in time")Response#
getTaskResult once the task is solved:
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AFcWeA6Z3vq0VhGm1oS8r0bAxKk4…",
"userAgent": ""
},
"cost": "0.000900",
"ip": "198.51.100.7",
"createTime": 1793370000,
"endTime": 1793370007,
"solveCount": 1
}Tips#
- Find the action in the page code:
grecaptcha.execute('<sitekey>', {action: 'login'}). A wrong action gives a token the site rejects. - Ask for the score the site really needs: a higher
minScorecan take longer. - The token comes in
solution.gRecaptchaResponse; the score itself is not returned — the site gets it from Google when it verifies the token. - If the site binds tokens to the IP address, switch to a type with your proxy.