omocaptchaGon
Личное
- Призвание
- 386719
- Настоящее имя
- omocaptchaGon
Профессиональное
- Пару слов о себе
- Reshenie Cloudflare Turnstile cherez API, Reshenie Cloudflare Turnstile svoditsya k odnoy zadache: poluchit validnyy turnstile token i podstavit ego v pole cf-turnstile-response vashey formy. V etoy state my razberem, chto takoe Turnstile, chem on otlichaetsya ot polnogo interstitial-chellendzha Cloudflare, i pokazhem polnyy rabochiy kod na Python i Node.js dlya resheniya Turnstile cherez API OMOCaptcha s vremenem otveta okolo 0.42 sekundy i tochnostyu do 99%., Chto takoe Cloudflare Turnstile, Turnstile eto privacy-first zamena klassicheskoy CAPTCHA ot Cloudflare. On chasche vsego rabotaet nevidimo: vmesto togo chtoby zastavlyat polzovatelya vybirat svetofory, vidzhet analiziruet povedencheskie signaly brauzera i vydaet token. Esli signaly vyzyvayut somnenie, pokazyvaetsya legkiy interaktivnyy shag (galochka), no v bolshinstve sluchaev proverka prohodit fonom., Turnstile vstraivaetsya na stranitsu cherez <div class="cf-turnstile" data-sitekey="0x...">. Klyuchevye parametry:, - sitekey publichnyy klyuch vidzheta, vsegda nachinaetsya s 0x (naprimer, 0x4AAAAAAA...)., - page URL adres stranitsy, gde razmeschen vidzhet., Posle uspeshnoy proverki vidzhet kladet token v skrytoe pole cf-turnstile-response, kotoroe otpravlyaetsya na bekend i validiruetsya cherez siteverify. Imenno etot token i nuzhno poluchit programmno. Ofitsialnuyu dokumentatsiyu po vidzhetu mozhno posmotret v Cloudflare Turnstile docs (https://developers.cloudflare.com/turnstile/)., Turnstile token protiv Cloudflare challenge cookies, Vazhno ne putat dve raznye veschi:, Mehanizm - Chto eto - Chto vy poluchaete, Turnstile - Vidzhet-kapcha na konkretnoy forme (login, registratsiya, kontakt) - turnstile token v pole cf-turnstile-response, Cloudflare Challenge (interstitial) - Polnostranichnaya zaschita Checking your browser na urovne sayta - cf_clearance cookie dlya dostupa ko vsemu saytu, Eta statya pro pervoe pro raspoznavanie Turnstile i poluchenie tokena dlya otpravki formy. Polnyy interstitial-chellendzh reshaetsya inache (cherez upravlenie cookie sessii) i zdes ne rassmatrivaetsya., Kak reshit Turnstile cherez API: obschiy potok, Logika odinakova dlya lyuboy token-kapchi:, 1. Schitat sitekey (nachinaetsya s 0x) i websiteURL so stranitsy., 2. Vyzvat POST /createTask s zadachey tipa Turnstile poluchit taskId., 3. Oprashivat POST /getTaskResult, poka status ne stanet ready., 4. Prochitat token iz solution i podstavit ego v cf-turnstile-response., Bazovyy URL API https://api.omocaptcha.com/v2. HTTP-status vsegda 200; uspeh opredelyaetsya polem errorId (0 = uspeh). Zadacha privyazana k API-klyuchu, kotoryy ee sozdal., Primechanie: tochnuyu stroku type dlya Turnstile (TurnstileTokenTask) sverte v aktualnoy dokumentatsii OMOCaptcha API (https://omocaptcha.com/ru?utm_source=blog&utm_medium=organic) nazvaniya task-tipov mogut utochnyatsya., Primer na Python, import requests, import time, API_KEY = "YOUR_API_KEY", BASE = "https://api.omocaptcha.com/v2", def create_task(website_url, website_key):, payload = (, "clientKey": API_KEY, "task": (, "type": "TurnstileTokenTask", # utochnite tochnyy tip v docs, "websiteURL": website_url, "websiteKey": website_key, ), ), r = requests.post(f"(BASE)/createTask", json=payload, timeout=30), data = r.json(), if data.get("errorId") != 0:, raise RuntimeError(f"createTask error: (data.get('errorCode')) (data.get('errorDescription'))"), return data<>taskId"], def get_result(task_id, timeout_s=120):, payload = ("clientKey": API_KEY, "taskId": task_id), delay = 3, waited = 0, while waited < timeout_s:, r = requests.post(f"(BASE)/getTaskResult", json=payload, timeout=30), data = r.json(), if data.get("errorId") != 0:, raise RuntimeError(f"getTaskResult error: (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) # vezhlivyy backoff, raise TimeoutError("Turnstile solve timed out"), if __name__ == "__main__":, task_id = create_task(, "https://example.com/login", "0x4AAAAAAAxxxxxxxxxxxxxx", ), solution = get_result(task_id), token = solution.get("token") or solution.get("gRecaptchaResponse"), print("cf-turnstile-response =", token), Poluchennyy token podstavlyaetsya v formu, naprimer cherez Selenium/Playwright:, driver.execute_script(, "document.querySelector('<name>cf-turnstile-response]').value = arguments<>];", token, ), Primer na Node.js, const API_KEY = "YOUR_API_KEY";, const BASE = "https://api.omocaptcha.com/v2";, async function post(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(websiteURL, websiteKey) (, const data = await post("/createTask", (, clientKey: API_KEY, task: (, type: "TurnstileTokenTask", // utochnite tochnyy tip v docs, websiteURL, websiteKey, ), ));, if (data.errorId !== 0) (, throw new Error(`createTask: $(data.errorCode) $(data.errorDescription)`);, ), return data.taskId;, ), async function getResult(taskId, timeoutMs = 120000) (, let delay = 3000;, const start = Date.now();, while (Date.now() - start < timeoutMs) (, const data = await post("/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));, delay = Math.min(delay + 2000, 10000); // vezhlivyy backoff, ), throw new Error("Turnstile solve timed out");, ), (async () => (, const taskId = await createTask(, "https://example.com/login", "0x4AAAAAAAxxxxxxxxxxxxxx", );, const solution = await getResult(taskId);, const token = solution.token - - solution.gRecaptchaResponse;, console.log("cf-turnstile-response =", token);, ))();, Gde vzyat sitekey, Sitekey publichen i lezhit pryamo v HTML. Naydite atribut data-sitekey vnutri elementa cf-turnstile ili parametr sitekey v vyzove turnstile.render(). On vsegda nachinaetsya s 0x. Imenno ego vy peredaete v pole websiteKey, a adres stranitsy v websiteURL., Pochemu OMOCaptcha dlya resheniya Turnstile, - AI-only, bez ocheredi iz lyudey srednee vremya resheniya 0.42 s, tochnost do 99%., - Odin endpoint na 14 tipov kapch Turnstile, reCAPTCHA, hCaptcha, GeeTest, FunCaptcha i drugie cherez tot zhe createTask., - 6 SDK: Python, JavaScript/Node.js, PHP, Java, .NET, Go., - Bezopasnost: zadacha privyazana k API-klyuchu (key-binding), end-to-end shifrovanie, kontent kapchi ne hranitsya., - Tsena ot $0.27/1000 i na ~20-40% deshevle mezhdunarodnyh konkurentov. Polnyy vozvrat, esli success rate padaet nizhe 95%., Sravnit s drugimi resheniyami pomozhet nash obzor luchshih servisov raspoznavaniya kapchi (https://blog.omocaptcha.com/luchshiy-servis-raspoznavaniya-kapchi) i alternativa 2Captcha (https://blog.omocaptcha.com/2captcha-alternativa). Detali tarifikatsii v state pro stoimost resheniya kapchi cherez API (https://blog.omocaptcha.com/stoimost-resheniya-kapchi-api). Esli vy rabotaete i s drugimi vidzhetami, posmotrite gaydy po resheniyu hCaptcha (https://blog.omocaptcha.com/kak-reshit-hcaptcha) i resheniyu GeeTest (https://blog.omocaptcha.com/reshenie-geetest). Aktualnye tseny na stranitse tarifov (https://omocaptcha.com/ru#pricing)., Otvetstvennoe ispolzovanie, Reshenie Turnstile cherez API umestno dlya legitimnoy avtomatizatsii: QA i regressionnoe testirovanie sobstvennyh form, monitoring dostupnosti, nagruzochnoe testirovanie vashih servisov, a takzhe avtorizovannyy sbor dannyh po dogovoru. Uvazhayte robots.txt, ToS i limity chastoty zaprosov tselevyh saytov. Ne ispolzuyte avtomatizatsiyu dlya massovogo sozdaniya feykovyh akkauntov, obhoda banov ili moshennichestva., FAQ, Chem Turnstile otlichaetsya ot polnogo Cloudflare-chellendzha?, Turnstile eto vidzhet-kapcha na konkretnoy forme, dayuschiy turnstile token v pole cf-turnstile-response. Polnyy interstitial-chellendzh Checking your browser zaschischaet sayt tselikom i vydaet cookie cf_clearance. Eto raznye mehanizmy., Gde nayti sitekey Turnstile?, V HTML stranitsy: atribut data-sitekey u elementa cf-turnstile ili parametr sitekey v turnstile.render(). On vsegda nachinaetsya s 0x., Skolko zhivet poluchennyy token?, Turnstile token odnorazovyy i deystvuet ogranichennoe vremya (obychno neskolko minut). Poluchayte ego neposredstvenno pered otpravkoy formy i ne pereispolzuyte., Kakoy task type ukazyvat dlya Turnstile?, Ispolzuyte token-zadachu dlya Turnstile (naprimer, TurnstileTokenTask) v tom zhe potoke createTask / getTaskResult. Tochnuyu stroku type sverte v dokumentatsii OMOCaptcha API., Mozhno li reshat Turnstile vmeste s reCAPTCHA?, Da. OMOCaptcha obrabatyvaet 14 sistem kapch cherez odin endpoint, poetomu Turnstile, reCAPTCHA i hCaptcha reshayutsya odnim i tem zhe kodom menyaetsya tolko type zadachi. Sm. takzhe gayd po resheniyu reCAPTCHA (https://blog.omocaptcha.com/kak-reshit-recaptcha)., Nachnite besplatno, Pri registratsii vy poluchaete 1000 besplatnyh resheniy ih hvatit, chtoby protestirovat reshenie Cloudflare Turnstile na svoih formah. Podklyuchenie zanimaet minuty: odin endpoint, gotovyy kod vyshe i SDK dlya vashego yazyka., Nachnite na omocaptcha.com (https://omocaptcha.com/ru?utm_source=blog&utm_medium=organic) ili napishite nam na support@omocaptcha.com podderzhka rabotaet 24/7.
История
- Блог
- Просмотреть последние записи в блоге
- Время участия
- 1 неделя 18 часов