Cloudflare Turnstile দেখতে একটি চেকবক্সের মতো, কিন্তু পুরোনো অর্থে এটি কোনো CAPTCHA নয় — সাধারণত সমাধান করার মতো কিছুই থাকে না। এটি আপনার ব্রাউজারে কয়েকশ মিলিসেকেন্ড JavaScript চালায়, সেই ব্রাউজার কতটা আসল দেখাচ্ছে তার স্কোর দেয় এবং একটি টোকেন ইস্যু করে। আপনার স্ক্র্যাপার যদি সেই JS বিশ্বাসযোগ্যভাবে চালাতে না পারে, তাহলে আপনি কখনোই বৈধ টোকেন পাবেন না, এবং যে প্রতিটি অনুরোধের জন্য এটি দরকার সেগুলো চ্যালেঞ্জ হিসেবে ফিরে আসে।
এই কারণেই সাধারণ স্ক্র্যাপিং সমাধানগুলো Turnstile-এর জন্য কিছুই করে না। প্রক্সি রোটেট করা, হেডার সেট করা, এমনকি একটি নিখুঁত browser TLS fingerprint পাঠানো — JavaScript চ্যালেঞ্জ যদি কখনো এক্সিকিউট না হয় তবে এগুলোর কোনোটিই গুরুত্বপূর্ণ নয়। এই গাইডটি ব্যাখ্যা করে Turnstile আসলে কী পরিমাপ করে এবং ২০২৬ সালে এর মধ্য দিয়ে যাওয়ার বাস্তবসম্মত উপায়গুলো।
Turnstile হলো একটি "proof of browser," "proof of human" নয়। উইজেটটি লোড হওয়ার সময় এটি নীরবে একগুচ্ছ যাচাই চালায় এবং সেগুলোকে একটি স্কোরে রূপান্তরিত করে:
requests, httpx, curl) আদৌ কোনো টোকেন তৈরি করতে পারে না।navigator.webdriver, CDP আর্টিফ্যাক্ট, অনুপস্থিত বা নকল প্লাগইন, এবং সেই CDP/headless signals যেগুলো স্পষ্ট ফ্ল্যাগ প্যাচ করার পরেও টিকে থাকে।আপনি যে টোকেনটি পান তা আপনার IP এবং একটি সংক্ষিপ্ত সময়সীমার সাথে বাঁধা। তাই অন্য কোথাও থেকে "ধার করা" একটি বৈধ টোকেনও ব্যর্থ হয় যদি আপনি তারপর সেটি একটি ভিন্ন এক্সিট থেকে ব্যবহার করেন।
প্রক্সি ওই সংকেতগুলোর ঠিক একটি সরায়: IP রেপুটেশন। সেটি গুরুত্বপূর্ণ — একটি পরিচ্ছন্ন রেসিডেনশিয়াল ASN একটি সীমান্তবর্তী স্কোরকে রেখার উপরে তুলতে পারে — কিন্তু এটি একটি টোকেন তৈরি করতে পারে না। আপনি যদি একটি HTTP ক্লায়েন্ট দিয়ে Turnstile-এ আঘাত করেন, তবে কোনো প্রক্সি এটি ঠিক করে না, কারণ চ্যালেঞ্জ চালানোর জন্য কোনো ব্রাউজার নেই। প্রক্সি প্রয়োজনীয় কিন্তু যথেষ্ট নয়।
সবচেয়ে নির্ভরযোগ্য পথ হলো চ্যালেঞ্জটি আসলেই একটি বাস্তব, ভালোভাবে ছদ্মবেশী ব্রাউজারে এক্সিকিউট করা — anti-detection প্যাচসহ Playwright বা Puppeteer, অথবা একটি স্টেলথ-ভিত্তিক ব্রাউজার। টোকেনটি স্বাভাবিকভাবে, আপনার IP-তে, একটি আসল এনভায়রনমেন্টে তৈরি হয়:
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 বিল্ড) চালান, ব্রাউজার এনভায়রনমেন্ট সামঞ্জস্যপূর্ণ রাখুন, এবং এটিকে একটি রেসিডেনশিয়াল এক্সিটের মধ্য দিয়ে রুট করুন যাতে IP স্কোর ব্রাউজার স্কোরের সাথে মেলে। দুটিকে অবশ্যই মিলতে হবে — একটি ডেটাসেন্টার IP-তে একটি নিখুঁত ব্রাউজারও খারাপ স্কোর করে।
2Captcha, CapSolver এবং অন্যান্যের মতো সার্ভিসগুলো আপনার জন্য চ্যালেঞ্জ চালিয়ে দেবে এবং একটি API-এর মাধ্যমে টোকেন ফেরত দেবে। এগুলো স্কেলে উপযোগী, কিন্তু দুটি ফাঁদসহ যা মানুষকে আটকে দেয়:
Turnstile সাধারণত একটি নন-ইন্টারঅ্যাক্টিভ "managed" মোডে চলে: আপনার স্কোর যথেষ্ট বেশি হলে, এটি কোনো চেকবক্স ছাড়াই এবং কোনো ঘর্ষণ ছাড়াই একটি টোকেন ইস্যু করে। সবচেয়ে সস্তা "bypass" প্রায়ই কেবল যথেষ্ট আসল দেখানো যাতে আপনি কখনো চ্যালেঞ্জের মুখে না পড়েন — একটি পরিচ্ছন্ন ব্রাউজার fingerprint প্লাস ভালো ASN রেপুটেশনসহ একটি রেসিডেনশিয়াল IP। স্কোরকে থ্রেশহোল্ডের উপরে তুলুন এবং Turnstile নীরবে আপনাকে যেতে দেয়।
navigator.webdriver এবং CDP চিহ্ন প্যাচ করুন, নাহলে স্কোর কম থাকে।নতুন ব্যবহারকারীরা নিবন্ধনের সময় 500MB পান, সাথে প্রথম রিচার্জে বোনাস। সীমিত সময়ের অফার।