Cloudflare Turnstile एक checkbox जैसा दिखता है, पर यह पुराने अर्थ में CAPTCHA नहीं है — आमतौर पर हल करने को कुछ नहीं होता। यह आपके browser में कुछ सौ milliseconds JavaScript चलाता है, score करता है कि वह browser कितना असली दिखता है, और एक token जारी करता है। अगर आपका scraper उस JS को विश्वसनीय ढंग से नहीं चला सकता, तो आपको कभी एक मान्य token नहीं मिलता, और हर वह request जिसे एक की ज़रूरत है, एक challenge बनकर वापस आती है।
यही वजह है कि सामान्य scraping उपाय Turnstile के लिए कुछ नहीं करते। Proxies rotate करना, headers सेट करना, यहाँ तक कि एक बेहतरीन browser TLS fingerprint भेजना — इनमें से कोई भी मायने नहीं रखता अगर JavaScript challenge कभी execute ही न हो। यह गाइड बताती है कि Turnstile असल में क्या मापता है और 2026 में इससे पार पाने के व्यावहारिक तरीके।
Turnstile एक "proof of browser" है, "proof of human" नहीं। जब widget load होता है तो यह चुपचाप जाँचों की एक श्रृंखला चलाता है और उन्हें एक score में डालता है:
requests, httpx, curl) एक token बिल्कुल नहीं बना सकता।navigator.webdriver, CDP कलाकृतियाँ, गायब या नकली plugins, और वे CDP/headless संकेत जो स्पष्ट flags patch करने के बाद भी बचे रहते हैं।जो token आपको मिलता है वह आपकी IP और एक छोटी time window से बँधा होता है। इसलिए कहीं और से "उधार" लिया गया एक मान्य token भी विफल हो जाता है अगर आप फिर उसे एक अलग exit से इस्तेमाल करें।
Proxies उन संकेतों में से ठीक एक को हिलाते हैं: IP प्रतिष्ठा। यह मायने रखता है — एक साफ़ residential ASN एक सीमारेखा वाले score को रेखा के ऊपर उठा सकता है — पर यह एक token नहीं बना सकता। अगर आप एक HTTP client से Turnstile को hit कर रहे हैं, तो कोई proxy इसे ठीक नहीं करता, क्योंकि challenge चलाने के लिए कोई browser ही नहीं है। Proxy ज़रूरी है पर पर्याप्त नहीं।
सबसे विश्वसनीय रास्ता है challenge को वाकई एक असली, अच्छी तरह छिपाए गए browser में execute करना — anti-detection patches के साथ Playwright या Puppeteer, या एक stealth-केंद्रित browser। token स्वाभाविक रूप से, आपकी IP पर, एक असली environment में उत्पन्न होता है:
from playwright.sync_api import sync_playwright
proxy = {"server": "socks5h://us.jibaoproxy.com:913",
"username": "USERNAME", "password": "PASSWORD"}
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, proxy=proxy)
page = browser.new_page()
page.goto("https://target.site")
page.wait_for_timeout(4000) # let Turnstile run and settle
# the cf token is now in the form; submit / read it as the site expects
token = page.eval_on_selector(
"input[name='cf-turnstile-response']", "el => el.value")
print("token:", token[:20], "...")
browser.close()
Headful (या एक असली headless build) चलाएँ, browser environment को संगत रखें, और इसे एक residential exit के ज़रिए route करें ताकि IP score browser score से सहमत हो। दोनों को मेल खाना ही होगा — एक datacenter IP पर एक बेहतरीन browser भी फिर भी ख़राब score करता है।
2Captcha, CapSolver और अन्य जैसी सेवाएँ आपके लिए challenge चला देंगी और एक API के ज़रिए token लौटाएँगी। ये पैमाने पर उपयोगी हैं, पर दो ऐसी पेचों के साथ जो लोगों को फँसाती हैं:
Turnstile आमतौर पर एक गैर-इंटरैक्टिव "managed" mode में चलता है: अगर आपका score काफ़ी ऊँचा है, तो यह बिना checkbox और बिना अड़चन के एक token जारी कर देता है। सबसे सस्ता "bypass" अक्सर बस इतना असली दिखना है कि आपको कभी challenge ही न मिले — एक साफ़ browser fingerprint और एक अच्छी ASN प्रतिष्ठा वाली residential IP। Score को threshold से ऊपर ले जाएँ और Turnstile आपको चुपचाप आगे जाने देता है।
navigator.webdriver और CDP संकेतों को patch करें, वरना score नीचे रहता है।नए यूज़र्स को साइन अप पर 500MB मिलते हैं, साथ ही पहली रिचार्ज पर बोनस। सीमित समय की पेशकश।