Reshenie FunCaptcha (Arkose Labs) cherez API
Reshenie FunCaptcha avtomatiziruetsya cherez API za tri shaga: vy schityvaete publichnyy klyuch i servisnyy URL so stranitsy, otpravlyaete zadachu na raspoznavanie, a zatem zabiraete gotovyy token i podstavlyaete ego v formu. Nizhe chto takoe FunCaptcha ot Arkose Labs, pochemu eto slozhnee tekstovyh kapch, i polnye primery koda na Python i Node.js dlya raboty s API OMOCaptcha po tsene ot $0.27 za 1000 resheniy.
Chto takoe FunCaptcha i Arkose Labs
FunCaptcha eto interaktivnaya kapcha-golovolomka ot kompanii Arkose Labs. Vmesto vvoda iskazhennogo teksta polzovatelyu pokazyvayut izobrazhenie i prosyat vypolnit vizualnoe deystvie: povernut obekt v pravilnuyu orientatsiyu, vybrat nuzhnye kartinki, nayti sovpadayuschie ikonki. Takaya Arkose Labs kapcha ispolzuetsya krupnymi platformami Roblox, Microsoft, X (Twitter), LinkedIn, Sony i drugimi.
Klyuchevye chasti integratsii FunCaptcha na stranitse:
- public key publichnyy klyuch sayta (obychno viden v HTML ili v zaprosah k Arkose), format vida 1A2B3C4D-....
- surl (service URL) adres servisa Arkose, k kotoromu obraschaetsya vidzhet. Naprimer
https://client-api.arkoselabs.com.
- data blob inogda vstrechaetsya dopolnitelnaya stroka data[blob], privyazannaya k sessii.
Itog resheniya eto token (verification token), kotoryy frontend obychno kladet v skrytoe pole fc-token ili peredaet v kolbek. Imenno etot token zatem otpravlyaetsya na server sayta.
Pochemu FunCaptcha slozhnee tekstovyh kapch
Prostoe raspoznavanie arkose slozhnee OCR po neskolkim prichinam:
- Vizualnaya logika vmesto chteniya. Modeli nuzhno ponyat prostranstvennuyu zadachu (kakoy ugol povorota pravilnyy), a ne prosto prochitat simvoly.
- Raznoobrazie stsenariev. Rotate, select-object, matching postoyanno menyayuschiesya tipy zadaniy.
- Privyazka k sessii. Token deystvitelen ogranichennoe vremya i chasto privyazan k parametram konkretnoy sessii.
- Povedencheskiy analiz. Arkose otslezhivaet ne tolko otvet, no i to, kak on byl poluchen.
Poetomu nadezhnee ne pytatsya oboyti funcaptcha samopisnoy evristikoy, a ispolzovat spetsializirovannyy servis raspoznavaniya, obuchennyy na realnyh zadaniyah Arkose. Esli vy vybiraete provaydera, posmotrite nash obzor luchshih servisov raspoznavaniya kapchi (
https://blog.omocaptcha.com/luchshiy-servis-raspoznavaniya-kapchi).
Obschiy potok raboty cherez API
API OMOCaptcha postroeno po AntiCaptcha-sovmestimoy sheme iz dvuh vyzovov:
1. POST /createTask sozdaete zadachu, peredaete clientKey i obekt task s publichnym klyuchom i servisnym URL.
2. POST /getTaskResult oprashivaete status po taskId, poka on ne stanet ready.
HTTP-status vsegda 200; uspeh opredelyaetsya polem errorId (0 = uspeh). Zadacha privyazyvaetsya k klyuchu, kotoryy ee sozdal: chuzhoy klyuch vernet ERROR_TASK_KEY_MISMATCH.
Bazovyy URL:
https://api.omocaptcha.com/v2. Primechanie. Tochnuyu stroku type dlya FunCaptcha (v primerah FunCaptchaTokenTask) i polnyy spisok obyazatelnyh poley sverte v aktualnoy dokumentatsii API OMOCaptcha (
https://omocaptcha.com/ru?utm_source=blog&utm_medium=organic). Nazvaniya poley u raznyh kapch razlichayutsya.
Primer na Python
Polnyy, gotovyy k zapusku primer s vezhlivym oprosom i taymautami:
import requests
import time
API_KEY = "YOUR_API_KEY"
BASE = "
https://api.omocaptcha.com/v2"
def create_task():
payload = (
"clientKey": API_KEY,
"task": (
# Sverte tochnuyu stroku type v dokumentatsii OMOCaptcha
"type": "FunCaptchaTokenTask",
"websiteURL": "
https://target-site.example/login",
"websitePublicKey": "1A2B3C4D-0000-0000-0000-ABCDEF123456",
"funcaptchaApiJSSubdomain": "
https://client-api.arkoselabs.com"
# pri neobhodimosti: "data": "(\"blob\":\"...\")"
)
)
r = requests.post(f"(BASE)/createTask", json=payload, timeout=30)
r.raise_for_status()
data = r.json()
if data["errorId"] != 0:
raise RuntimeError(f"createTask failed: (data['errorCode']) (data['errorDescription'])")
return data["taskId"]
def get_result(task_id, max_wait=120):
payload = ("clientKey": API_KEY, "taskId": task_id)
delay = 3
waited = 0
while waited < max_wait:
r = requests.post(f"(BASE)/getTaskResult", json=payload, timeout=30)
r.raise_for_status()
data = r.json()
if data["errorId"] != 0:
raise RuntimeError(f"getTaskResult failed: (data.get('errorCode'))")
status = data.get("status")
if status == "ready":
return data["solution"]
if status == "fail":
raise RuntimeError("Task failed")
time.sleep(delay)
waited += delay
delay = min(delay + 2, 10) # myagkiy backoff
raise TimeoutError("Result not ready in time")
if __name__ == "__main__":
task_id = create_task()
solution = get_result(task_id)
# dlya token-kapch chitayte token iz solution (naprimer token / gRecaptchaResponse)
token = solution.get("token") or solution.get("gRecaptchaResponse")
print("FunCaptcha token:", token)
Primer na Node.js
Tot zhe potok na JavaScript s ispolzovaniem vstroennogo fetch (Node 18+):
const API_KEY = "YOUR_API_KEY";
const BASE = "
https://api.omocaptcha.com/v2";
async function postJSON(path, body) (
const controller = new AbortController();
const t = setTimeout(() => controller.abort(), 30000);
try (
const res = await fetch(`$(BASE)$(path)`, (
method: "POST",
headers: ( "Content-Type": "application/json" ),
body: JSON.stringify(body),
signal: controller.signal,
));
return await res.json();
) finally (
clearTimeout(t);
)
)
async function createTask() (
const data = await postJSON("/createTask", (
clientKey: API_KEY,
task: (
// Sverte tochnuyu stroku type v dokumentatsii OMOCaptcha
type: "FunCaptchaTokenTask",
websiteURL: "
https://target-site.example/login",
websitePublicKey: "1A2B3C4D-0000-0000-0000-ABCDEF123456",
funcaptchaApiJSSubdomain: "
https://client-api.arkoselabs.com",
),
));
if (data.errorId !== 0) (
throw new Error(`createTask: $(data.errorCode) $(data.errorDescription)`);
)
return data.taskId;
)
async function getResult(taskId, maxWait = 120000) (
let delay = 3000;
let waited = 0;
while (waited < maxWait) (
const data = await postJSON("/getTaskResult", ( clientKey: API_KEY, taskId ));
if (data.errorId !== 0) throw new Error(`getTaskResult: $(data.errorCode)`);
if (data.status === "ready") return data.solution;
if (data.status === "fail") throw new Error("Task failed");
await new Promise((r) => setTimeout(r, delay));
waited += delay;
delay = Math.min(delay + 2000, 10000); // myagkiy backoff
)
throw new Error("Result not ready in time");
)
(async () => (
const taskId = await createTask();
const solution = await getResult(taskId);
const token = solution.token - - solution.gRecaptchaResponse;
console.log("FunCaptcha token:", token);
))();
Poluchiv token, podstavte ego v formu (pole vrode fc-token ili kolbek vidzheta) i otpravte zapros na server sayta tem zhe sposobom, chto delaet brauzer.
Tsena i sravnenie
funcaptcha api ot OMOCaptcha stoit $0.27 za 1000 resheniy odin iz samyh dostupnyh tarifov na rynke.
Kapcha - Tsena za 1000
FunCaptcha (Arkose Labs) - $0.27
reCAPTCHA v2 - $0.27
hCaptcha - $0.60
GeeTest - $0.60
ImageToText / OCR - $0.40
OMOCaptcha rabotaet tolko na AI bez ocheredi iz lyudey-reshateley, so srednim vremenem resheniya 0.42 s i tochnostyu do 99%. Odin endpoint pokryvaet 14 sistem kapch, dostupno 6 SDK. Podrobnoe sravnenie tarifov v state o stoimosti resheniya kapchi cherez API (
https://blog.omocaptcha.com/stoimost-resheniya-kapchi-api), a esli ischete zamenu privychnomu servisu chitayte pro alternativu 2Captcha (
https://blog.omocaptcha.com/2captcha-alternativa).
Podrobnee o printsipah sm. v ofitsialnoy dokumentatsii Arkose Labs (
https://www.arkoselabs.com/arkose-matchkey/).
Otvetstvennoe ispolzovanie
Avtomatizatsiyu kapch primenyayte tolko dlya zakonnyh zadach: QA i regressionnoe testirovanie sobstvennyh form, obespechenie dostupnosti, avtorizovannyy ili kontraktnyy sbor dannyh, nagruzochnoe testirovanie i monitoring vashih servisov. Soblyudayte robots.txt, usloviya ispolzovaniya ploschadok i razumnye limity zaprosov. Ne ispolzuyte reshenie kapch dlya moshennichestva, massovogo sozdaniya feykovyh akkauntov ili obhoda banov.
FAQ
Chto vozvraschaet servis pri reshenii FunCaptcha?
Token verifikatsii (verification token). Ego nuzhno podstavit v skrytoe pole formy ili peredat v kolbek vidzheta, posle chego otpravit na server sayta.
Gde vzyat public key i surl?
Publichnyy klyuch obychno viden v HTML-razmetke ili v setevyh zaprosah vidzheta Arkose, a surl (servisnyy URL) v parametrah initsializatsii FunCaptcha. Inogda dopolnitelno trebuetsya data[blob].
Chem FunCaptcha otlichaetsya ot reCAPTCHA?
FunCaptcha eto vizualnye golovolomki (povorot, vybor obektov), a reCAPTCHA chasche opiraetsya na vybor kartinok i povedencheskiy skoring. Oba reshayutsya po odinakovoy sheme createTask/getTaskResult sm. takzhe kak reshit reCAPTCHA (
https://blog.omocaptcha.com/kak-reshit-recaptcha).
Chto delat, esli status vernulsya fail?
Proverte aktualnost public key i surl, korrektnost websiteURL, a takzhe tochnuyu stroku type i obyazatelnye polya v dokumentatsii. Pri padenii uspeshnosti nizhe 95% OMOCaptcha predusmatrivaet polnyy vozvrat sredstv.
Skolko vremeni zanimaet reshenie?
Srednee vremya resheniya okolo 0.42 sekundy, no oprashivayte rezultat s backoff i vsegda zadavayte HTTP-taymaut, kak v primerah vyshe.
Nachnite besplatno
Zaregistriruytes i poluchite 1000 besplatnyh resheniy etogo dostatochno, chtoby protestirovat reshenie FunCaptcha v vashem proekte bez vlozheniy. Oplata tolko za uspeshnye resheniya, end-to-end shifrovanie i vozvrat sredstv pri padenii uspeshnosti nizhe 95%.
Pereydite na omocaptcha.com (
https://omocaptcha.com/ru?utm_source=blog&utm_medium=organic), izuchite tarify (
https://omocaptcha.com/ru#pricing) ili napishite nam na
[email protected] podderzhka rabotaet 24/7.