چطور سایتها در ۲۰۲۶ مرورگر headless را تشخیص میدهند: نشت CDP، بررسی انسجام و راهکارها

منتشر شده در 6 ژوئن 2026 · زمان مطالعه ≈ 9 دقیقه

از HTTP خام به یک مرورگر واقعی کوچ کردید. فینگرپرینت TLS: واقعاً مال Chrome. IP: مسکونی. و سایت باز هم میداند. در سال 2026، تشخیص مرورگر headless بسیار فراتر از navigator.webdriver رفته است — نسل فعلی بررسیها خودِ پروتکل اتوماسیون را تشخیص میدهد، و اکثر افزونههای «stealth» سیگنالهای دیروز را وصله میکنند در حالی که با صدای بلند سیگنالهای امروز را به نمایش میگذارند.

این مقاله نقشهٔ آن چیزی را میکشد که سایتها واقعاً الان بررسی میکنند، تقریباً به همان ترتیبی که بررسیشان میکنند، و اینکه در هر لایه چه چیزی واقعاً کمک میکند. این مقاله سهگانهٔ تشخیص را با فینگرپرینت TLS با JA3/JA4 (لایهٔ شبکه) و اعتبار IP و ASN (لایهٔ آدرس) کامل میکند — این لایهٔ مرورگر است.

ردهٔ ۱: کلاسیکها (حلشده، اما هنوز بررسی میشوند)

اگر یک هدف فقط ردهٔ ۱ را بررسی کند، Playwright مدرن با headless=new از آن عبور میکند. اهداف جدی سالها پیش از این مرحله گذشتند.

ردهٔ ۲: تشخیص CDP — اسب کاری سال 2026

Playwright و Puppeteer مرورگر Chrome را روی Chrome DevTools Protocol هدایت میکنند، و CDP عوارض جانبی زمان اجرا به جا میگذارد که جاوااسکریپت صفحه میتواند مشاهده کند:

// نشت کلاسیک CDP: کالبکهای سریالایز شدن
const err = new Error();
Object.defineProperty(err, "stack", {
  get() {
    // این getter حین سریالایز شدن console فعال میشود -
    // که فقط زمانی رخ میدهد که DevTools/CDP متصل باشد
    window.__cdp_detected = true;
  },
});
console.debug(err);

گونههای مختلف این — عوارض جانبی getter حین سریالایز شدن console، ناهنجاریهای زمانی در Runtime.evaluate، رفتار toString() روی توابع بومی وصلهشده — در هر بستهٔ تجاری ضدبات وجود دارند. نکتهٔ حیاتی: این پروتکل را تشخیص میدهد، نه حالت headless را. یک Chrome سردار (headed)، stealth-وصلهشده و کاملاً شبیه انسان هم اگر روی CDP هدایت شود مردود میشود.

چه چیزی کمک میکند:

ردهٔ ۳: انسجام محیطی

فراتر از آرتیفکتها، سیستمهای مدرن بررسی میکنند که آیا روایت مرورگر شما از درون سازگار است یا نه:

بررسینشانهٔ بات
هش رندر Canvas / WebGLرندر نرمافزاری SwiftShader/llvmpipe = GPU سرور؛ یا هشی که میان ۱۰٬۰۰۰ «کاربر متفاوت» مشترک است
فونتها و کدکهامجموعهٔ فونت سرور Linux زیر یک User-Agent ویندوزی
منطقهٔ زمانی × لوکیل × جغرافیای IPIntl میگوید UTC، IP میگوید Texas، Accept-Language میگوید de-DE
متریکهای صفحه1920×1080 بدون هیچ نوار وظیفه، devicePixelRatio دقیقاً 1، پنجرهای که هیچوقت تغییر اندازه نداده
تعداد هستههای پردازنده / حافظه۹۶ هسته گزارششده به صفحهای که ادعا میکند یک تلفن است
میکروسیگنالهای رفتاریبدون آنتروپی ماوس، پر شدن آنی فرمها، اسکرول در گامهای یکسان ۱۰۰ پیکسلی

اینجاست که stealth خانگی میمیرد: هر وصلهای که اعمال میکنید باید با هر سیگنال دیگری توافق داشته باشد. یک UA ویندوز جعلی روی یک کانتینر Linux همزمان با فونتها، رشتههای GPU و فینگرپرینتهای TCP تناقض دارد. انسجام بر کمال برتری دارد — یک Chrome سردار Linux صادق بهتر از یک «ویندوز» بدجعلشده امتیاز میگیرد.

و لایهٔ زیرین هنوز برقرار است

هیچکدام از اینها اهمیتی ندارد اگر لایهٔ آدرس سوخته باشد: یک مرورگر بینقص روی یک ASN دیتاسنتر باز هم «یک مرورگر بینقص در یک دیتاسنتر» است — و آستانههای تشخیص headless با اعتبار IP تطبیقپذیرند. همان مرورگر از یک IP علامتخورده چالشهای جاوااسکریپت بیشتری میگیرد. خروجیهای مسکونی عملاً سطح موشکافیای را که لایهٔ مرورگر باید از آن جان سالم به در ببرد پایین میآورند:

browser = p.chromium.launch(
    headless=False,                      # حالت سردار (headed) از بررسیهای بیشتری جان سالم به در میبرد
    args=["--disable-blink-features=AutomationControlled"],
    proxy={
        "server": "us.jibaoproxy.com:913",
        "username": "USERNAME", "password": "PASSWORD",
    },
)

چکلیست عملی

  1. از حالت headless جدید یا سردار (headed) استفاده کنید؛ هیچوقت headless قدیمی.
  2. روی هر هدف جدی تشخیص CDP را فرض کنید — رانتایم وصلهشده، درایور غیر-CDP، یا یک موتور سختشدهٔ غیر-Chromium.
  3. افزونههای stealth را کورکورانه روی هم نچینید؛ هر toString() وصلهنشده خودش یک سیگنال است. وصلههای کمتر و منسجم برنده میشوند.
  4. کل روایت را منطبق کنید: منطقهٔ زمانی = جغرافیای IP = لوکیل؛ GPU باورپذیر برای سیستمعامل ادعاشده.
  5. آنتروپی ورودی اضافه کنید — مسیرهای منحنی ماوس، تأخیرهای متغیر، اسکرول-به-عقب گاهبهگاه.
  6. قبل از هدف واقعی، روی یک ناظر بیطرف تست کنید.
ابزار رایگان · بدون ثبتنام

استک اتوماسیون خود را در یک بار صفحه ممیزی کنید

تست فینگرپرینت و نشت ما فلگهای webdriver، آرتیفکتهای CDP، هشهای canvas/WebGL، تناقضهای منطقهٔ زمانی در برابر IP و بررسیهای انسجامی را که فروشندگان ضدبات اجرا میکنند گزارش میدهد — روی هر مرورگری که به آن نشانه بگیرید.

فینگرپرینت مرورگر من را تست کن →

مرورگر تمیز است اما IP لوتان میدهد؟ آن را با خروجیهای مسکونی جفت کنید — ۵ دلار اعتبار رایگان →

جمعبندی

به مرورگرتان یک آدرس باورپذیر بدهید

IPهای مسکونی که با روایتی که فینگرپرینت شما میگوید مطابقت دارند — ۵ دلار اعتبار رایگان، بدون نیاز به کارت.

شروع تست رایگان

برای همه محصولات IP · هزاران نود همیشه در دسترس

همین حالا ثبت‌نام کنید و تا ۱۰۰٪ کش‌بک شارژ بگیرید

کاربران جدید با ثبت‌نام 500MB هدیه می‌گیرند، به‌علاوه بونوس اولین شارژ. پیشنهاد محدود.