Kak reshit reCAPTCHA cherez API: v2 i v3
Korotko: chtoby reshit reCAPTCHA programmno, vy ne nazhimaete galochku v brauzere, a poluchaete ot servisa gotovyy token. Kak reshit reCAPTCHA na praktike eto tri shaga: schitat data-sitekey i URL stranitsy, otpravit ih v API cherez createTask, dozhdatsya rezultata v getTaskResult i podstavit poluchennyy token v pole g-recaptcha-response. Nizhe rabochiy kod na Python i Node.js pod API OMOCaptcha, razbor razlichiy v2 i v3, a takzhe tseny i otvety na chastye voprosy.
reCAPTCHA v2 i v3: v chem raznitsa
reCAPTCHA ot Google suschestvuet v dvuh osnovnyh versiyah, i podhod k avtomatizatsii u nih raznyy.
Parametr - reCAPTCHA v2 - reCAPTCHA v3
Vzaimodeystvie - Chekboks Ya ne robot + kartinochnyy challenge - Nevidimaya, bez deystviy polzovatelya
Rezultat - Token g-recaptcha-response - Token + otsenka riska (score 0.0 1.0)
Klyuchevye polya - websiteURL, websiteKey - + pageAction, minScore
Proverka na servere - Validen / nevaliden - Porog minScore (obychno 0.5 0.7)
Reshenie reCAPTCHA v2 vozvraschaet token posle prohozhdeniya vizualnogo testa. Reshenie reCAPTCHA v3 otdaet token, privyazannyy k deystviyu (action) i otsenke doveriya: server sayta sam reshaet, propuskat li zapros po znacheniyu minScore. Tehnicheski potok odinakovyy menyayutsya lish polya zadachi.
Ofitsialnuyu dokumentatsiyu po parametram mozhno posmotret v Google reCAPTCHA docs (
developers.google.com/recaptcha/docs/display). Potok tokena: kak eto rabotaet
Logika edinaya dlya vseh token-kapch i sovpadaet s kontseptsiey bystrogo starta Captcha API (
blog.omocaptcha.com/captcha-api-bystryy-start): 1. Naydite na tselevoy stranitse data-sitekey eto websiteKey. Polnyy adres stranitsy eto websiteURL.
2. Otpravte POST /createTask s tipom zadachi RecaptchaV2TokenTask. V otvet pridet taskId.
3. Oprashivayte POST /getTaskResult, poka status ne stanet ready.
4. Prochitayte token iz solution.gRecaptchaResponse i podstavte ego v pole formy g-recaptcha-response, zatem otpravte formu.
Vse otvety prihodyat s HTTP-statusom 200; uspeh opredelyaetsya polem errorId (0 = uspeh). Eto AntiCaptcha-sovmestimyy format konverta oshibok.
Reshenie reCAPTCHA na Python (requests)
Primer nizhe pokazyvaet, kak oboyti reCAPTCHA na Python legalno naprimer, dlya regressionnogo testirovaniya sobstvennoy formy. Obratite vnimanie na vezhlivyy opros s backoff i obyazatelnyy timeout.
import time
import requests
API_KEY = "YOUR_API_KEY"
BASE = "
api.omocaptcha.com/v2"
def create_task(website_url, website_key):
payload = (
"clientKey": API_KEY,
"task": (
"type": "RecaptchaV2TokenTask",
"websiteURL": website_url,
"websiteKey": website_key,
),
)
r = requests.post(f"(BASE)/createTask", json=payload, timeout=30)
data = r.json()
if data<>errorId"] != 0:
raise RuntimeError(f"createTask: (data<>errorCode']) (data<>errorDescription'])")
return data<>taskId"]
def get_result(task_id, tries=24):
delay = 3
for _ in range(tries):
r = requests.post(
f"(BASE)/getTaskResult",
json=("clientKey": API_KEY, "taskId": task_id),
timeout=30,
)
data = r.json()
if data<>errorId"] != 0:
raise RuntimeError(f"getTaskResult: (data<>errorCode'])")
if data<>status"] == "ready":
return data<>solution"]<>gRecaptchaResponse"]
if data<>status"] == "fail":
raise RuntimeError("Zadacha zavershilas s oshibkoy (fail)")
time.sleep(delay)
delay = min(delay + 2, 10) # backoff
raise TimeoutError("Token ne gotov za otvedennoe vremya")
if __name__ == "__main__":
task_id = create_task("
example.com/login", "6Lc_SITE_KEY_HERE")
token = get_result(task_id)
print("g-recaptcha-response:", token<>40], "...")
Dalshe token podstavlyaetsya v skrytoe pole #g-recaptcha-response cherez vash brauzernyy drayver (Selenium/Playwright) ili otpravlyaetsya napryamuyu v zaprose, esli vy vosproizvodite POST formy.
Reshenie reCAPTCHA na Node.js (fetch)
Tot zhe potok na nativnom fetch (Node.js 18+), s taymautom cherez AbortController:
const API_KEY = "YOUR_API_KEY";
const BASE = "
api.omocaptcha.com/v2";
async function post(path, body, ms = 30000) (
const ctrl = new AbortController();
const t = setTimeout(() => ctrl.abort(), ms);
try (
const res = await fetch(`$(BASE)$(path)`, (
method: "POST",
headers: ( "Content-Type": "application/json" ),
body: JSON.stringify(body),
signal: ctrl.signal,
));
return await res.json();
) finally (
clearTimeout(t);
)
)
async function createTask(websiteURL, websiteKey) (
const data = await post("/createTask", (
clientKey: API_KEY,
task: ( type: "RecaptchaV2TokenTask", websiteURL, websiteKey ),
));
if (data.errorId !== 0) throw new Error(`$(data.errorCode): $(data.errorDescription)`);
return data.taskId;
)
async function getResult(taskId, tries = 24) (
let delay = 3000;
for (let i = 0; i < tries; i++) (
const data = await post("/getTaskResult", ( clientKey: API_KEY, taskId ));
if (data.errorId !== 0) throw new Error(data.errorCode);
if (data.status === "ready") return data.solution.gRecaptchaResponse;
if (data.status === "fail") throw new Error("Zadacha zavershilas s oshibkoy (fail)");
await new Promise((r) => setTimeout(r, delay));
delay = Math.min(delay + 2000, 10000); // backoff
)
throw new Error("Token ne gotov za otvedennoe vremya");
)
(async () => (
const taskId = await createTask("
example.com/login", "6Lc_SITE_KEY_HERE");
const token = await getResult(taskId);
console.log("g-recaptcha-response:", token.slice(0, 40), "...");
))();
Osobennosti reCAPTCHA v3
Dlya resheniya reCAPTCHA v3 ispolzuyte tot zhe createTask/getTaskResult, no dobavte v zadachu deystvie i minimalnyy porog. Tochnuyu stroku type dlya v3 utochnite v dokumentatsii OMOCaptcha API kontseptualno zadacha vyglyadit tak:
(
"type": "RecaptchaV3TokenTask",
"websiteURL": "
example.com/checkout",
"websiteKey": "6Lc_SITE_KEY_HERE",
"pageAction": "checkout",
"minScore": 0.7
)
Zdes pageAction dolzhen sovpadat so znacheniem action, kotoroe sayt peredaet v grecaptcha.execute(), a minScore zadaet zhelaemuyu otsenku doveriya. Token chitaetsya iz togo zhe solution.
Tsena i pochemu OMOCaptcha
Stoimost recaptcha api u OMOCaptcha nachinaetsya ot $0.27 za 1000 resheniy dlya reCAPTCHA v2; v3 takzhe podderzhivaetsya. Srednyaya skorost resheniya 0.42 sekundy, tochnost do 99%, a dvizhok obuchen na 14 sistemah kapchi. Podrobnuyu razbivku smotrite na stranitse tarifov (
omocaptcha.com/ru#pricing) i v obzore stoimosti resheniya kapchi cherez API (
blog.omocaptcha.com/stoimost-resheniya-kapchi-api)… Chto vazhno - OMOCaptcha
Skorost - 0.42 s v srednem, tolko AI (bez ocheredi vorkerov)
Tsena - ot $0.27/1000, na 20 40% deshevle zarubezhnyh analogov
Nadezhnost - tochnost do 99%, polnyy vozvrat pri uspehe nizhe 95%
Bezopasnost - key-binding zadach, e2e-shifrovanie, bez hraneniya kontenta kapchi
Po sravneniyu s klassicheskimi servisami AI-podhod ubiraet zaderzhku chelovecheskih ferm detali v materialah o luchshem servise raspoznavaniya kapchi (
blog.omocaptcha.com/luchshiy-servis-raspoznavaniya… i alternative 2Captcha (
blog.omocaptcha.com/2captcha-alternativa). Otvetstvennoe ispolzovanie
Avtomatizatsiya kapchi dopustima dlya legitimnyh zadach: QA i regressionnoe testirovanie vashih sobstvennyh form, proverki dostupnosti, avtorizovannyy sbor dannyh po dogovoru, monitoring i nagruzochnoe testirovanie. Soblyudayte robots.txt, usloviya ispolzovaniya servisov i limity zaprosov. Ne ispolzuyte reshenie kapchi dlya moshennichestva, massovoy registratsii feykovyh akkauntov ili obhoda banov. Pohozhie podhody k drugim sistemam opisany v gaydah po hCaptcha (
blog.omocaptcha.com/kak-reshit-hcaptcha) i Cloudflare Turnstile (
blog.omocaptcha.com/reshenie-cloudflare-turnstile)… FAQ
V chem raznitsa mezhdu resheniem reCAPTCHA v2 i v3?
v2 trebuet prohozhdeniya vidimogo testa (chekboks ili kartinki) i vozvraschaet token. v3 rabotaet nevidimo i vydaet otsenku riska: pomimo tokena vazhny pageAction i minScore. Potok API odinakovyy otlichayutsya lish polya zadachi.
Mozhno li oboyti reCAPTCHA na Python bez brauzera?
Da. Esli vy vosproizvodite POST-zapros formy, dostatochno poluchit token cherez API i peredat ego v parametre g-recaptcha-response. Brauzer (Selenium/Playwright) nuzhen, tolko kogda vy avtomatiziruete realnuyu stranitsu i podstavlyaete token v DOM.
Pochemu getTaskResult vozvraschaet status processing ?
Eto normalno: reshenie zanimaet doli sekundy, no inogda trebuet neskolkih oprosov. Oprashivayte s intervalom v paru sekund i uvelichivayuschimsya backoff, vsegda s timeout, poka ne poluchite ready ili fail.
Chto oznachaet oshibka ERROR_TASK_KEY_MISMATCH?
Zadacha privyazana k tomu API-klyuchu, kotoryy ee sozdal (key-binding). Esli oprashivat getTaskResult drugim klyuchom, vernetsya eta oshibka. Ispolzuyte odin i tot zhe clientKey dlya createTask i getTaskResult.
Skolko stoit reshenie reCAPTCHA?
reCAPTCHA v2 ot $0.27 za 1000 resheniy, v3 podderzhivaetsya. Aktualnye tseny po vsem 14 sistemam kapchi na stranitse tarifov (
omocaptcha.com/ru#pricing). Nachnite besplatno
Zaregistriruytes i poluchite 1000 besplatnyh resheniy etogo hvatit, chtoby protestirovat potok tokena na svoih formah uzhe segodnya. Poprobuyte OMOCaptcha (
omocaptcha.com/ru?utm_source=blog&utm_medium=organ… i napishite nam na support@omocaptcha.com, esli nuzhna pomosch s integratsiey. Podderzhka rabotaet 24/7.