২০২৬ সালে সাইটগুলো কীভাবে headless ব্রাউজার শনাক্ত করে: CDP লিক, সামঞ্জস্য পরীক্ষা এবং কী সাহায্য করে

6 জুন 2026 প্রকাশিত · ≈11 মিনিট পড়া

আপনি raw HTTP থেকে একটি আসল ব্রাউজারে সরে এসেছেন। TLS fingerprint: সত্যিকারের Chrome-এর। IP: residential। আর তবুও সাইটটি জানে। ২০২৬ সালে, headless browser detection navigator.webdriver-এর অনেক দূর এগিয়ে গেছে — বর্তমান প্রজন্মের পরীক্ষাগুলো automation প্রোটোকল নিজেই শনাক্ত করে, এবং বেশিরভাগ "stealth" প্লাগইন গতকালের সিগন্যাল প্যাচ করে অথচ আজকের সিগন্যাল জোরেশোরে প্রকাশ করে।

এই নিবন্ধটি মোটামুটিভাবে সাইটগুলো যে ক্রমে পরীক্ষা করে সেই ক্রমে এখন আসলে কী পরীক্ষা করে তা মানচিত্রায়িত করে, এবং প্রতিটি স্তরে আসলে কী সাহায্য করে তা দেখায়। এটি JA3/JA4 TLS fingerprinting (নেটওয়ার্ক স্তর) এবং IP reputation & ASN (অ্যাড্রেস স্তর) দিয়ে শনাক্তকরণ ত্রয়ী সম্পূর্ণ করে — এটি হলো ব্রাউজার স্তর।

Tier 1: ক্লাসিকগুলো (সমাধান হয়ে গেছে, কিন্তু এখনও পরীক্ষা করা হয়)

যদি কোনো টার্গেট শুধুমাত্র Tier 1 পরীক্ষা করে, তাহলে headless=new সহ আধুনিক Playwright অনায়াসে পার হয়ে যায়। গুরুতর টার্গেটগুলো বছরখানেক আগেই এর বাইরে চলে গেছে।

Tier 2: CDP Detection — ২০২৬-এর কর্মঘোড়া

Playwright এবং Puppeteer Chrome DevTools Protocol-এর মাধ্যমে Chrome চালায়, এবং CDP রানটাইম পার্শ্বপ্রতিক্রিয়া রেখে যায় যা পেজের JavaScript পর্যবেক্ষণ করতে পারে:

// The classic CDP leak: serialization callbacks
const err = new Error();
Object.defineProperty(err, "stack", {
  get() {
    // This getter fires DURING console serialization -
    // which only happens when DevTools/CDP is attached
    window.__cdp_detected = true;
  },
});
console.debug(err);

এর ভ্যারিয়েন্টগুলো — console serialization-এর সময় getter পার্শ্বপ্রতিক্রিয়া, Runtime.evaluate-এ টাইমিং অসঙ্গতি, প্যাচ করা native ফাংশনগুলোর উপর toString()-এর আচরণ — প্রতিটি বাণিজ্যিক anti-bot বান্ডিলে রয়েছে। গুরুত্বপূর্ণ বিষয়: এটি প্রোটোকল শনাক্ত করে, headless মোড নয়। একটি headed, stealth-প্যাচ করা, নিখুঁতভাবে মানুষের মতো দেখতে Chrome-ও CDP-এর মাধ্যমে চালালে ব্যর্থ হয়।

যা সাহায্য করে:

Tier 3: পরিবেশগত সামঞ্জস্য

আর্টিফ্যাক্টের বাইরে, আধুনিক সিস্টেমগুলো পরীক্ষা করে আপনার ব্রাউজারের গল্পটি অভ্যন্তরীণভাবে সামঞ্জস্যপূর্ণ কিনা:

পরীক্ষাবটের আভাস
Canvas / WebGL render hashSwiftShader/llvmpipe সফটওয়্যার রেন্ডারিং = সার্ভার GPU; অথবা ১০,০০০ "ভিন্ন ব্যবহারকারীর" দ্বারা শেয়ার করা একটি hash
Fonts & codecsWindows User-Agent-এর অধীনে Linux সার্ভার ফন্ট সেট
Timezone × locale × IP geoIntl বলে UTC, IP বলে Texas, Accept-Language বলে de-DE
স্ক্রিন মেট্রিক্সশূন্য taskbar সহ 1920×1080, devicePixelRatio ঠিক 1, উইন্ডো কখনও resize হয়নি
Hardware concurrency / memoryএকটি ফোন বলে দাবি করা পেজে ৯৬ কোর রিপোর্ট করা
আচরণগত মাইক্রো-সিগন্যালকোনো মাউস এনট্রপি নেই, তাৎক্ষণিক ফর্ম পূরণ, অভিন্ন 100px ধাপে স্ক্রোল

এখানেই DIY stealth মারা যায়: আপনি যে প্রতিটি প্যাচ প্রয়োগ করেন তা প্রতিটি অন্য সিগন্যালের সাথে একমত হতে হবে। একটি Linux কন্টেইনারে একটি spoof করা Windows UA একই সাথে ফন্ট, GPU স্ট্রিং এবং TCP fingerprint-এর বিপরীত হয়। নিখুঁততার চেয়ে সামঞ্জস্য বেশি গুরুত্বপূর্ণ — একটি সৎ headed Linux Chrome একটি খারাপভাবে spoof করা "Windows"-এর চেয়ে ভালো স্কোর করে।

এবং নিচের স্তরটি এখনও প্রযোজ্য

এর কোনোটাই গুরুত্বপূর্ণ নয় যদি অ্যাড্রেস স্তর পুড়ে যায়: একটি datacenter ASN-এ একটি নিখুঁত ব্রাউজার এখনও "একটি datacenter-এ একটি নিখুঁত ব্রাউজার" — এবং headless detection থ্রেশহোল্ড IP reputation-এর সাথে অভিযোজিত। একই ব্রাউজার একটি flag করা IP থেকে আরও বেশি JavaScript চ্যালেঞ্জ পায়। Residential exits কার্যকরভাবে ব্রাউজার স্তরকে যে পরিমাণ যাচাই-বাছাইয়ের মধ্যে টিকে থাকতে হয় তা কমিয়ে দেয়:

browser = p.chromium.launch(
    headless=False,                      # headed survives more checks
    args=["--disable-blink-features=AutomationControlled"],
    proxy={
        "server": "us.jibaoproxy.com:913",
        "username": "USERNAME", "password": "PASSWORD",
    },
)

ব্যবহারিক চেকলিস্ট

  1. নতুন headless বা headed মোড ব্যবহার করুন; কখনও legacy headless নয়।
  2. যেকোনো গুরুতর টার্গেটে CDP detection ধরে নিন — প্যাচ করা রানটাইম, non-CDP ড্রাইভার, অথবা একটি hardened non-Chromium ইঞ্জিন।
  3. অন্ধভাবে stealth প্লাগইন স্তূপ করবেন না; প্রতিটি unpatched toString() নিজেই একটি সিগন্যাল। কম, সামঞ্জস্যপূর্ণ প্যাচ জয়ী হয়।
  4. সম্পূর্ণ গল্পটি মেলান: timezone = IP geo = locale; দাবিকৃত OS-এর জন্য GPU যুক্তিসঙ্গত।
  5. ইনপুট এনট্রপি যোগ করুন — বাঁকানো মাউস পথ, পরিবর্তনশীল বিলম্ব, মাঝে মাঝে scroll-back।
  6. আসল টার্গেটের আগে একটি নিরপেক্ষ পর্যবেক্ষকের বিপরীতে পরীক্ষা করুন।
বিনামূল্যের টুল · সাইনআপ নেই

এক পেজ লোডে আপনার automation স্ট্যাক অডিট করুন

আমাদের Fingerprint & Leak Test webdriver flag, CDP আর্টিফ্যাক্ট, canvas/WebGL hash, timezone-বনাম-IP দ্বন্দ্ব, এবং anti-bot ভেন্ডররা যে সামঞ্জস্য পরীক্ষা চালায় তা রিপোর্ট করে — আপনি যে ব্রাউজারই এর দিকে নির্দেশ করুন তার বিপরীতে।

আমার ব্রাউজার fingerprint পরীক্ষা করুন →

ব্রাউজার পরিষ্কার কিন্তু IP আপনাকে ধরিয়ে দিচ্ছে? এটি residential exits-এর সাথে জুড়ে দিন — 500MB ফ্রি ট্রাফিক →

সারসংক্ষেপ

আপনার ব্রাউজারকে একটি বিশ্বাসযোগ্য অ্যাড্রেস দিন

আপনার fingerprint যে গল্প বলে তার সাথে মিলে যাওয়া Residential IP — 500MB ফ্রি ট্রাফিক, কোনো কার্ড প্রয়োজন নেই।

বিনামূল্যে ট্রায়াল শুরু করুন

সকল IP পণ্যের জন্য · যেকোনো সময় উপলব্ধ বিশাল নোড পুল

এখনই নিবন্ধন করুন এবং আপনার রিচার্জে ১০০% পর্যন্ত ফেরত পান

নতুন ব্যবহারকারীরা নিবন্ধনের সময় 500MB পান, সাথে প্রথম রিচার্জে বোনাস। সীমিত সময়ের অফার।