يُعد puppeteer-extra-plugin-stealth الحزمة الأكثر شيوعًا لمكافحة الكشف في Puppeteer. لا يزال يسجّل أكثر من 600K تنزيل أسبوعيًا على npm. لكن آخر تحديث له كان في مارس 2023. الإصدار الأخير هو v2.11.2 ولن يتغير: الصيانة متوقفة، والمشكلات على GitHub تتراكم، وأنظمة مكافحة البوت تجاوزته.
الخلاصة: تقوم إضافات stealth بتعديل إشارات الكشف من خلال JavaScript overrides على مستوى الصفحة. في عام 2026، تفحص أنظمة مكافحة البوت مثل Cloudflare وAkamai وDataDome إشارات لا يمكن لـ JavaScript الوصول إليها: بصمات TLS، وآثار بروتوكول CDP، واختلافات العرض على مستوى المحرك. الحل ليس إضافة أفضل، بل العمل على طبقة مختلفة: إما محرك معدّل يخفي تسريبات البروتوكول أو متصفح معدّل يعالج البصمات على مستوى المحرك.
ما الذي تفعله إضافات stealth فعليًا
تجمع puppeteer-extra-plugin-stealth بين 11 وحدة تهرب تعمل عبر evaluateOnNewDocument. تقوم كل وحدة بتعديل سطح كشف واحد:
| Module | ما تعدّله |
|---|---|
webdriver |
إزالة navigator.webdriver = true |
chrome.runtime |
محاكاة كائن chrome.runtime |
chrome.csi / chrome.app |
إضافة Chrome API stubs المفقودة |
navigator.plugins |
تزييف مصفوفة الإضافات |
navigator.languages |
تجاوز إعدادات اللغة |
navigator.permissions |
إصلاح سلوك استعلام الأذونات |
media.codecs |
تزييف دعم الترميز |
sourceurl |
إخفاء //# sourceURL من السكربتات المحقونة |
iframe.contentWindow |
إصلاح كشف iframe عبر النطاقات |
webgl.vendor |
تزييف سلاسل vendor/renderer في WebGL |
user-agent-override |
تعيين ترويسة User-Agent واقعية |
عملت هذه التعديلات في الفترة 2021-2022 عندما كانت أنظمة مكافحة البوت تفحص بشكل أساسي خصائص JavaScript على مستوى الصفحة. لكنها لا تعمل ضد ما تفحصه أنظمة الكشف الحديثة فعليًا.
لماذا تفشل إضافات stealth في 2026
انتقل كشف البوت إلى ما تحت طبقة JavaScript. الإشارات المهمة الآن هي تلك التي لا يمكن لـ evaluateOnNewDocument الوصول إليها.
تسريبات بروتوكول CDP
عندما يتصل Puppeteer بـ Chrome، يرسل أوامر CDP مثل Runtime.enable وPage.enable وNetwork.enable. تترك هذه الأوامر آثارًا في الحالة الداخلية للمتصفح يمكن لسكربتات مكافحة البوت اكتشافها. لا تمس إضافة stealth بروتوكول CDP لأنها تعمل على مستوى الصفحة وليس مستوى البروتوكول.
أمر Runtime.enable وحده كافٍ لتحديد بصمة جلسة مؤتمتة. لا يمكن لأي قدر من التعديل على مستوى الصفحة إخفاء حقيقة أن أوامر CDP قد صدرت.
بصمة TLS
يفحص Cloudflare بصمات TLS (JA3/JA4) قبل تقديم أي HTML. إذا كانت بصمة TLS خاطئة، يتم تحدي جلستك أو حظرها قبل أن تُحمّل تعديلات JavaScript الخاصة بإضافة stealth. تعمل الإضافة على مستوى الصفحة وليس لديها وصول إلى طبقة TLS. للحصول على شرح كامل لكيفية عمل بصمة TLS في منظومة الكشف، راجع قسم طبقة الشبكة في أتمتة المتصفح بدون حجب.
كشف JavaScript override
لا تفحص سكربتات مكافحة البوت قيمة navigator.webdriver فقط، بل تفحص أيضًا property descriptor. في المتصفح الحقيقي، يُعرّف webdriver كـ native getter على prototype الخاص بـ Navigator. تقوم إضافة stealth بتجاوزه باستخدام Object.defineProperty، مما يغيّر علامة configurable في الواصف وناتج toString() لدالة getter. تختبر سكربتات الكشف هذه التناقضات.
ينطبق الأمر نفسه على التجاوزات الأخرى. chrome.runtime ومصفوفات الإضافات واستعلامات الأذونات جميعها تحمل اختلافات قابلة للكشف عند استبدال تنفيذاتها الأصلية بـ JavaScript stubs.
اختلافات العرض في وضع headless
حتى مع --headless=new (وضع headless الأحدث)، يعرض Chrome بشكل مختلف قليلاً عن وضع headed. تختلف مقاييس الخطوط وناتج Canvas المسرّع بـ GPU وواجهات برمجة أبعاد الشاشة. تعدّل إضافة stealth بعض خصائص navigator لكنها لا تستطيع تغيير سلوك محرك العرض نفسه.
ما الذي حلّ محل إضافات stealth
انقسم النظام البيئي إلى نهجين: محركات معدّلة (إصلاح طبقة البروتوكول) ومتصفحات معدّلة (إصلاح طبقة المحرك). يحلّ كل منهما مشاكل مختلفة.
المحركات المعدّلة: Rebrowser وPatchright
يوفر Rebrowser بدائل مباشرة لـ Puppeteer وPlaywright (rebrowser-puppeteer وrebrowser-playwright). تستهدف التعديلات آثار بروتوكول CDP: تعدّل طريقة تفاعل Runtime.enable والأوامر الأخرى مع المتصفح لتجنب ترك آثار قابلة للكشف. تستبدل اسم الحزمة في الكود وكل شيء آخر يبقى كما هو.
// Before: detected
const puppeteer = require('puppeteer');
// After: CDP artifacts patched
const puppeteer = require('rebrowser-puppeteer');يقوم Patchright بالدور نفسه لـ Playwright مع التركيز على Python. يعدّل تسريبات Runtime.enable ويُصان بنشاط.
القيود: تصلح المحركات المعدّلة كشف البروتوكول لكنها لا تعالج بصمة المتصفح. إذا كان الموقع يفحص Canvas أو WebGL أو AudioContext أو عرض الخطوط، فأنت لا تزال مكشوفًا. تجيب المحركات المعدّلة على سؤال "هل أنت مؤتمت؟" لكنها لا تجيب على "هل أنت جهاز حقيقي؟".
المتصفحات المعدّلة: محركات مضادة للكشف
يعدّل المتصفح المعدّل Chromium نفسه بحيث تكون إشارات البصمة متسقة على مستوى المحرك. ناتج Canvas وعرض WebGL وبيانات AudioContext ومقاييس الخطوط وأبعاد الشاشة والمنطقة الزمنية واللغة تُبلّغ جميعها عن قيم تطابق ملف تعريف جهاز حقيقي واحد.
هذا ما يفعله Clawbrowser. إنه fork من Chromium مع تعديلات بصمة على مستوى المحرك عبر أكثر من 20 سطحًا، وتوجيه بروكسي مدمج، ومنع تسريب WebRTC، ودعم CDP أصلي. يتصل كود Puppeteer أو Playwright الحالي عبر CDP:
from playwright.async_api import async_playwright
async def automate_without_detection():
async with async_playwright() as p:
# Connect to Clawbrowser instead of stock Chromeما يعالجه Clawbrowser ولا تستطيع إضافات stealth معالجته:
- اتساق Canvas/WebGL/AudioContext على مستوى المحرك (وليس JavaScript stubs)
- بصمة TLS تطابق جلسة Chrome حقيقية
- اتصال CDP بدون آثار
Runtime.enable - منع تسريب WebRTC على مستوى المتصفح
- توجيه بروكسي مدمج مع محاذاة جغرافية
للاطلاع على التحليل الكامل لما يتم أخذ بصمته، راجع شرح بصمة المتصفح: أكثر من 20 إشارة تستخدمها أنظمة مكافحة البوت.
كيف تختار
الأداة المناسبة تعتمد على ما الذي يكشفك.
| نوع الكشف | الأعراض | الحل |
|---|---|---|
| آثار بروتوكول CDP | حظر فوري عند تحميل الصفحة، بدون CAPTCHA | محرك معدّل (Rebrowser, Patchright) |
| عدم تطابق بصمة المتصفح | CAPTCHA في كل صفحة أو اختلافات بيانات صامتة | متصفح معدّل (Clawbrowser) |
| عدم تطابق بصمة TLS | حظر قبل تحميل الصفحة (403 في أول طلب) | متصفح معدّل مع توجيه بروكسي |
| سمعة IP | حظر من عناوين IP لمراكز البيانات | بروكسي سكني (أي نهج) |
| كشف سلوكي | حظر بعد 5-10 صفحات | إدارة التوقيت والجلسات في الكود |
متى تكفي المحركات المعدّلة
إذا كنت تؤتمت مواقع ذات كشف أساسي يفحص آثار CDP لكن لا يحلل بصمة المتصفح بعمق، فإن Rebrowser أو Patchright سيكفيان. يشمل ذلك كثيرًا من المواقع ذات إعدادات مكافحة بوت خفيفة.
متى تحتاج متصفحًا معدّلاً
إذا كان الموقع يستخدم Cloudflare Bot Management أو Akamai Bot Manager أو DataDome أو PerimeterX، فأنت بحاجة إلى اتساق البصمات على مستوى المحرك. عندما يفحص نظام الكشف أكثر من 20 سطح متصفح في وقت واحد، لا تكفي التعديلات على مستوى الصفحة أو المحرك.
Clawbrowser هو متصفح مضاد للكشف مبني على Chromium، محلي ومجاني. يتضمن بصمات مُدارة وتوجيه بروكسي ودعم CDP أصلي وخادم MCP مدمج. يتولى هوية المتصفح وطبقة الشبكة حتى يتعامل الكود فقط مع السلوك وإدارة الجلسات.
الانتقال من إضافات stealth
إذا كنت تستخدم حاليًا puppeteer-extra-plugin-stealth أو playwright-stealth، فإن الانتقال إلى Clawbrowser يستغرق أقل من خمس دقائق.
Before (إضافة stealth)
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({ headless: false });After (Clawbrowser)
const puppeteer = require('puppeteer-core');
// Connect to Clawbrowser over CDP
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://127.0.0.1:9222'الفرق الجوهري: تحذف puppeteer-extra وpuppeteer-extra-plugin-stealth من التبعيات تمامًا. لا تهيئة إضافة. لا اختيار وحدات تهرب. مكافحة الكشف تحدث على مستوى المتصفح وليس في الكود.
لأنماط الاستخلاص (التصفح، تسخين الجلسات، تجاوز Cloudflare)، راجع استخلاص الويب بدون كشف.
الأسئلة الشائعة
هل أصبح puppeteer-extra-stealth عديم الفائدة تمامًا؟
لا يزال يعمل على المواقع التي لا تستخدم نظام مكافحة بوت تجاري. إذا كان الموقع المستهدف يفحص فقط navigator.webdriver وخصائص JavaScript الأساسية، فإن إضافة stealth تكفي. لكن أي موقع يستخدم Cloudflare أو Akamai أو DataDome أو PerimeterX أو منصات التواصل الاجتماعي مثل Facebook وInstagram وLinkedIn وX سيكشفها.
هل يعاني playwright-stealth من نفس المشاكل؟
نعم. يستخدم playwright-stealth نفس النهج: JavaScript overrides عبر حقن على مستوى الصفحة. لا يمكنه الوصول إلى بصمات TLS أو آثار CDP أو العرض على مستوى المحرك. قيود الكشف متطابقة.
هل يمكن استخدام Rebrowser وClawbrowser معًا؟
لا حاجة لذلك. يعالج Clawbrowser طبقة البروتوكول وطبقة البصمات معًا. تعديلات Rebrowser مفيدة عند استخدام Chrome العادي وعدم القدرة على التبديل إلى متصفح مضاد للكشف. إذا كنت تستخدم Clawbrowser، فإن آثار CDP مُعالجة بالفعل.
لماذا لا يزال stealth يحصل على 600K تنزيل أسبوعيًا؟
القصور الذاتي. معظم الدروس وإجابات Stack Overflow لا تزال توصي به. ينسخ المطورون حلولاً كانت تعمل في 2022 دون التحقق مما إذا كانت الحزمة لا تزال تُصان. عدد التنزيلات المرتفع لا يعني أنها فعالة ضد أنظمة الكشف الحديثة.
توقف عن الترقيع وعالج الجذر
كانت إضافات stealth حلاً معقولاً عندما اعتمد كشف البوت على فحوصات مستوى JavaScript. انتقل الكشف إلى بصمات TLS وتحليل بروتوكول CDP واختلافات العرض على مستوى المحرك. لا يمكن للتعديل على مستوى الصفحة الوصول إلى هذه الإشارات.
ثبّت Clawbrowser لمعالجة الكشف على مستوى المتصفح: انسخ أمر التثبيت من clawbrowser.ai والصقه في وكيل الذكاء الاصطناعي الخاص بك. احذف puppeteer-extra وpuppeteer-extra-plugin-stealth من التبعيات. اربط كود Puppeteer أو Playwright الحالي عبر CDP. مكافحة الكشف في المتصفح وليس في الكود.
لفهم نموذج الكشف الأساسي، راجع أتمتة المتصفح بدون حجب: منظومة الدفاع ذات الأربع طبقات.
Continue exploring
Ask AI how Clawbrowser helps
تابع القراءة
مقالات ذات صلة

CDP مقابل MCP: متى تستخدم كلًا منهما للتحكم بالمتصفح بالذكاء الاصطناعي
CDP يتحكم بالمتصفح. MCP يربط الذكاء الاصطناعي. تعرّف متى تستخدم Chrome DevTools Protocol مقابل Model Context Protocol لأتمتة المتصفح بوكلاء الذكاء الاصطناعي.
قراءة المقال →
كيفية ربط Cursor بمتصفح حقيقي عبر CDP
المتصفح المدمج في Cursor هو webview معزول. اربطه مع Clawbrowser عبر CDP للحصول على profiles دائمة وfingerprints مُدارة وproxy routing.
قراءة المقال →