立即註冊

王者天堂

Kak reshit hCaptcha cherez API: gayd

[複製鏈接]
發表於 2026-8-23 07:55:18 | 顯示全部樓層 |閱讀模式
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 (https://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 (https://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 = "https://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("https://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 = "https://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("https://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": "https://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 (https://omocaptcha.com/ru#pricing) i v obzore stoimosti resheniya kapchi cherez API (https://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 (https://blog.omocaptcha.com/luchshiy-servis-raspoznavaniya-kapchi) i alternative 2Captcha (https://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 (https://blog.omocaptcha.com/kak-reshit-hcaptcha) i Cloudflare Turnstile (https://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 (https://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 (https://omocaptcha.com/ru?utm_source=blog&utm_medium=organic) i napishite nam na support@omocaptcha.com, esli nuzhna pomosch s integratsiey. Podderzhka rabotaet 24/7.
回復

使用道具 舉報

游客
回复
您需要登錄後才可以回帖 登錄 | 立即註冊

Archiver|手機版|小黑屋| 王者天堂

贊助圖片
搜尋圖片

GMT+8, 2026-9-4 14:11 , Processed in 0.026566 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表