Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/rebrowser/rebrowser-patches
زاحف الويبمكافحة الروبوتاتتجاوز كابتشا
GitHubrebrowser/rebrowser-patches

rebrowser-patches

مجموعة من الترقيعات (patches) لـ puppeteer و playwright لتجنب اكتشاف الأتمتة والتسريبات. تساعد في تجنب صفحات CAPTCHA الخاصة بـ Cloudflare و DataDome. سهلة الترقيع/إلغاء الترقيع، ويمكن تمكينها/تعطيلها عند الطلب.

عرض المستودعالموقع الإلكتروني
1.4k79منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

🪄 تصحيحات لأتمتة المتصفح غير القابلة للاكتشاف

يحتوي هذا المستودع على تصحيحات لتحسين مكتبات أتمتة الويب الشائعة. على وجه التحديد، يستهدف حزمتي puppeteer و playwright.

لا يمكن تعديل بعض جوانب مكتبات الأتمتة أو سلوك المتصفح من خلال الإعدادات أو مفاتيح سطر الأوامر. لذلك، نصلح هذه المشكلات عن طريق تصحيح الكود المصدري للمكتبة. على الرغم من أن هذا النهج هش وقد يتعطل مع تغيّر الكود المصدري للمكتبات بمرور الوقت، فإن الهدف هو الحفاظ على هذا المستودع بمساعدة المجتمع لإبقاء التصحيحات محدثة.

هل أحتاج حقًا إلى أي تصحيحات؟

تعمل Puppeteer و Playwright افتراضيًا مع بعض التسريبات الكبيرة التي يسهل اكتشافها. لا يهم مدى جودة بروكسياتك، وبصماتك الرقمية، ونصوص سلوكياتك؛ إذا لم تكن قد طبّقت التصحيح، فأنت مجرد علم أحمر كبير لأي موقع رئيسي.

🕵️ يمكنك بسهولة اختبار إعداد الأتمتة لديك ضد تقنيات الكشف الحديثة الرئيسية باستخدام rebrowser-bot-detector (المصادر والتفاصيل)

قبل التصحيحات 👎بعد التصحيحات 👍
قبلبعد

هل هناك بديل جاهز سهل؟

إذا كنت لا تريد العبث بالتصحيحات وجميع الأخطاء المحتملة، فهناك حل جاهز لك. هذه الحزم طبّقت ببساطة rebrowser-patches فوق الكود الأصلي، لا أكثر.

Puppeteer: rebrowser-puppeteer (المصدر) و rebrowser-puppeteer-core (المصدر)

Playwright (Node.js): rebrowser-playwright (المصدر) و rebrowser-playwright-core (المصدر)

Playwright (Python): rebrowser-playwright (المصدر)

أسهل طريقة لبدء استخدامه هي تعديل package.json لاستخدام الحزم الجديدة مع الإبقاء على الاسم القديم كاسم مستعار. بهذه الطريقة، لن تحتاج إلى تغيير أي كود مصدري في الأتمتة الخاصة بك. إليك كيفية القيام بذلك:

  1. افتح package.json واستبدل "puppeteer": "^23.3.1" و "puppeteer-core": "^23.3.1" بـ "puppeteer": "npm:rebrowser-puppeteer@^23.3.1" و "puppeteer-core": "npm:rebrowser-puppeteer-core@^23.3.1". ملاحظة: 23.3.1 مجرد مثال، تحقق من أحدث إصدار على npm.
  2. شغّل npm install (أو yarn install)

طريقة أخرى هي استخدام الحزم الجديدة فعليًا بدلاً من الحزمة الأصلية. إليك الخطوات التي يجب اتباعها:

  1. افتح package.json واستبدل حزمتي puppeteer و puppeteer-core بحزمتي rebrowser-puppeteer و rebrowser-puppeteer-core. لا تغيّر إصدارات الحزم، فقط استبدل الأسماء.
  2. شغّل npm install (أو yarn install)
  3. ابحث في نصوصك البرمجية عن أي ذكر لـ puppeteer و puppeteer-core واستبدله بـ rebrowser-puppeteer و rebrowser-puppeteer-core

🚀 هذا كل شيء! فقط قم بزيارة صفحة rebrowser-bot-detector واختبر متصفحك المُصحَّح.

هدفنا هو الحفاظ على حزم البديل الجاهز هذه ودعمها بأحدث الإصدارات، لكننا نركّز بشكل أساسي على الإصدارات الحديثة. لذا إذا كنت ما زلت تستخدم puppeteer 13.3.7 من أوائل التسعينيات، فقد حان الوقت للترقية. هناك احتمال كبير ألا يكسر ذلك أي شيء حقًا لأن الواجهة البرمجية (API) مستقرة إلى حد كبير بمرور الوقت.

التصحيحات المتاحة

إصلاح تسريب Runtime.Enable

تعتمد مكتبات الأتمتة الشائعة على أمر CDP Runtime.Enable، الذي يسمح باستقبال الأحداث من نطاق Runtime.. وهذا أمر بالغ الأهمية لإدارة سياقات التنفيذ المستخدمة لتقييم JavaScript في الصفحات، وهي ميزة أساسية لأي عملية أتمتة.

ومع ذلك، هناك تقنية تكتشف استخدام هذا الأمر، مما يكشف أن المتصفح خاضع لبرنامج أتمتة مثل Puppeteer أو Playwright. هذه التقنية تُستخدم من قبل جميع برامج مكافحة البوتات الرئيسية مثل Cloudflare و DataDome وغيرها.

لقد أعددنا مقالًا كاملًا عن تحقيقنا حول هذا التسريب، يمكنك قراءته في مدونتنا.

لمزيد من التفاصيل حول هذه التقنية، اقرأ تدوينة DataDome: كيف تؤثر ميزة Headless Chrome الجديدة وإشارة CDP على اكتشاف البوتات. باختصار، إنها بضعة أسطر من JavaScript في الصفحة تُستدعى تلقائيًا إذا تم استخدام Runtime.Enable.

يعمل إصلاحنا على تعطيل أمر Runtime.Enable التلقائي في كل إطار. بدلاً من ذلك، نقوم يدويًا بإنشاء سياقات بمعرّفات غير معروفة عند إنشاء إطار. ثم عندما يحتاج كود إلى التنفيذ، هناك عدة طرق للحصول على معرّف السياق.

1. إنشاء binding جديد في العالم الرئيسي، واستدعاؤه وحفظ معرّف السياق الخاص به.

🟢 الإيجابيات: النهج الأمثل الذي يحافظ على الوصول إلى العالم الرئيسي ويعمل مع web workers و iframes. لا تحتاج إلى تغيير أي شيء في قاعدة الكود الحالية لديك.

🔴 السلبيات: لم يتم اكتشاف أي منها حتى الآن.

2. إنشاء سياق معزول جديد عبر Page.createIsolatedWorld وحفظ معرّفه.

🟢 الإيجابيات: سيتم تنفيذ جميع أكوادك في عالم معزول منفصل، مما يمنع نصوص الصفحة من اكتشاف تغييراتك عبر MutationObserver والتقنيات الأخرى.

🔴 السلبيات: لن تتمكن من الوصول إلى متغيرات وكود السياق الرئيسي. على الرغم من أن هذا ضروري لبعض حالات الاستخدام، فإن السياق المعزول يعمل بشكل جيد عمومًا في معظم السيناريوهات. أيضًا، لا تسمح web workers بإنشاء عوالم جديدة، لذا لا يمكنك تنفيذ الكود الخاص بك داخل worker. هذه حالة استخدام متخصصة ولكنها قد تهم في بعض المواقف. يوجد حل بديل لهذه المشكلة، يرجى قراءة كيفية الوصول إلى كائنات السياق الرئيسي من السياق المعزول في Puppeteer و Playwright.

3. استدعاء Runtime.Enable ثم استدعاء Runtime.Disable فورًا.

يؤدي هذا إلى تشغيل أحداث Runtime.executionContextCreated، مما يتيح لنا التقاط معرّف السياق الصحيح.

🟢 الإيجابيات: ستحصل على وصول كامل إلى السياق الرئيسي.

🔴 السلبيات: هناك احتمال ضئيل أنه خلال هذه الفترة الزمنية القصيرة، ستستدعي الصفحة كودًا يؤدي إلى التسريب. الخطر منخفض، لأن كود الكشف يُستدعى عادةً أثناء إجراءات محددة مثل صفحات CAPTCHA أو نماذج تسجيل الدخول/التسجيل، وعادةً بعد تحميل الصفحة مباشرةً. منطق عملك يُستدعى عادةً بعد ذلك بقليل.

🎉 تُظهر اختباراتنا أن جميع هذه الأساليب غير قابلة للاكتشاف حاليًا بواسطة Cloudflare أو DataDome.

ملاحظة: يمكنك تغيير إعدادات هذا التصحيح أثناء التشغيل باستخدام متغير بيئة. يتيح لك ذلك التبديل بسهولة بين الإصدارات المُصحَّحة وغير المُصحَّحة بناءً على منطق عملك.

  • REBROWSER_PATCHES_RUNTIME_FIX_MODE=addBinding — تقنية addBinding (الافتراضية)
  • REBROWSER_PATCHES_RUNTIME_FIX_MODE=alwaysIsolated — تشغيل جميع النصوص دائمًا في سياق معزول
  • REBROWSER_PATCHES_RUNTIME_FIX_MODE=enableDisable — استخدام تقنية Enable/Disable
  • REBROWSER_PATCHES_RUNTIME_FIX_MODE=0 — تعطيل إصلاح هذا التسريب تمامًا
  • REBROWSER_PATCHES_DEBUG=1 — تفعيل بعض رسائل التصحيح

تذكر أنه يمكنك ضبط هذه المتغيرات بطرق مختلفة، على سبيل المثال، في الكود:

root@kitploit:~
process.env.REBROWSER_PATCHES_RUNTIME_FIX_MODE = "alwaysIsolated"

أو في سطر الأوامر:

root@kitploit:~
REBROWSER_PATCHES_RUNTIME_FIX_MODE=alwaysIsolated node app.js

تغيير sourceURL إلى اسم سكربت عام

افتراضيًا، يضيف Puppeteer //# sourceURL=pptr:... إلى كل سكربت في page.evaluate(). يمكن لموقع ويب بعيد اكتشاف هذا السلوك وإطلاق إشارات خطر. يغيّر هذا التصحيح ذلك إلى //# sourceURL=app.js. يمكنك أيضًا تعديله عبر متغير بيئة:

root@kitploit:~
# use any generic filename
REBROWSER_PATCHES_SOURCE_URL=jquery.min.js
# use 0 to completely disable this patch
REBROWSER_PATCHES_SOURCE_URL=0

طريقة للوصول إلى اتصال CDP للمتصفح

في بعض الأحيان، قد يكون الوصول إلى جلسة CDP على مستوى المتصفح مفيدًا جدًا. على سبيل المثال، عندما تريد تنفيذ أمر CDP مخصص. توجد طريقة page._client() تُرجع جلسة CDP لمثيل الصفحة الحالي، لكن لا توجد طريقة مماثلة لمثيل المتصفح. يضيف هذا التصحيح طريقة جديدة _connection() إلى فئة Browser، بحيث يمكنك استخدامها على النحو التالي:

root@kitploit:~
browser._connection().on('Rebrowser.addRunEvent', (params) => { ... })

ملاحظة: لا يمكن اكتشافها بواسطة نصوص مواقع الويب الخارجية، إنها فقط لراحتك.

تغيير اسم العالم المساعد الافتراضي

اسم العالم المساعد الافتراضي هو '__puppeteer_utility_world__' + packageVersion. في بعض الأحيان قد ترغب في تغييره إلى شيء آخر. يغيّر هذا التصحيح ذلك إلى util ويتيح لك تخصيصه عبر متغير بيئة:

root@kitploit:~
REBROWSER_PATCHES_UTILITY_WORLD_NAME=customUtilityWorld
# use 0 to completely disable this patch
REBROWSER_PATCHES_UTILITY_WORLD_NAME=0

لا يمكن تغيير هذا المتغير البيئي أثناء التشغيل، يجب عليك ضبطه قبل تشغيل السكربت الخاص بك لأنه يُستخدم في اللحظة التي يتم فيها استيراد الوحدة.

قبل التصحيح 👎بعد التصحيح 👍
قبلبعد

ملاحظة: لا يمكن اكتشافها بواسطة نصوص مواقع الويب الخارجية، لكن Google قد تستخدم هذه المعلومات في متصفح Chrome المملوك لها؛ لا نعلم أبدًا.

الاستخدام

صُممت هذه الحزمة ليتم تشغيلها على مكتبة مثبتة. ثبّت المكتبة، ثم استدعِ أداة التصحيح، وستكون جاهزة للعمل.

في المجلد الجذري لمشروعك، شغّل:

root@kitploit:~
npx rebrowser-patches@latest patch --packageName puppeteer-core

يمكنك بسهولة التراجع عن جميع التغييرات باستخدام هذا الأمر:

root@kitploit:~
npx rebrowser-patches@latest unpatch --packageName puppeteer-core

يمكنك أيضًا تصحيح حزمة بتوفير المسار الكامل لمجلدها، على سبيل المثال:

root@kitploit:~
npx rebrowser-patches@latest patch --packagePath /web/app/node_modules/puppeteer-core-custom

يمكنك رؤية جميع خيارات سطر الأوامر بتشغيل npx rebrowser-patches@latest --help، لكن حاليًا يوجد تصحيح واحد فقط لمكتبة واحدة، لذا لا تحتاج إلى تكوين أي شيء.

⚠️ انتبه إلى أنه بعد تشغيل npm install أو yarn install في مجلد مشروعك، قد يتم استبدال جميع التغييرات الناتجة عن التصحيحات. ستحتاج إلى تشغيل أداة التصحيح مرة أخرى للحفاظ على التصحيحات في مكانها.

كيفية تحديث التصحيحات؟

إذا كانت حزمتك مُصحَّحة بالفعل وتريد التحديث إلى أحدث إصدار من rebrowser-patches، فإن أسهل طريقة هي حذف node_modules/puppeteer-core، ثم تشغيل npm install أو yarn install --check-files، ثم تشغيل npx rebrowser-patches@latest patch.

كيفية تصحيح إصدارات Java/Python/.NET من Playwright؟

جميع هذه الإصدارات هي مجرد أغلفة حول إصدار Node.js من Playwright. تحتاج إلى العثور على مجلد driver داخل حزمة Playwright الخاصة بك وتشغيل هذا التصحيح باستخدام --packagePath=$yourDriverFolder/$yourPlatform/package.

دعم Puppeteer

✅ أحدث إصدار تم اختباره بالكامل: 24.8.1 (صدر في 2025-05-06)

دعم Playwright

تشمل تصحيحات Playwright ما يلي:

  • تسريب Runtime.enable: وضعا addBinding و alwaysIsolated.
  • القدرة على تغيير اسم العالم المساعد عبر متغير البيئة REBROWSER_PATCHES_UTILITY_WORLD_NAME.
  • المزيد من التصحيحات قادمة، قم بوضع نجمة ومتابعة المستودع.

مهم: طريقة page.pause() لا تعمل مع الإصلاح المفعل، وهي تحتاج إلى مزيد من التحقيق. يمكنك ببساطة تعطيل الإصلاح تمامًا أثناء التصحيح باستخدام متغير البيئة REBROWSER_PATCHES_RUNTIME_FIX_MODE=0.

تعمل هذه التصحيحات على Chrome فقط حاليًا. إذا كنت تريد حقًا استخدامها مع WebKit أو Firefox، فيرجى فتح issue جديد.

✅ أحدث إصدار تم اختباره بالكامل: 1.52.0 (صدر في 2025-04-17)

كيفية استخدام rebrowser-puppeteer مع puppeteer-extra؟

استخدم طريقة addExtra، إليك المثال:

root@kitploit:~
// before
import puppeteer from 'puppeteer-extra'

// after
import { addExtra } from 'puppeteer-extra'
import rebrowserPuppeteer from 'rebrowser-puppeteer-core'
const puppeteer = addExtra(rebrowserPuppeteer)

تابع المشروع

نعمل حاليًا على تطوير المزيد من التصحيحات لتحسين شفافية أتمتة الويب، والتي سيتم إصدارها في هذا المستودع قريبًا. يرجى دعم المشروع بالنقر على زر ⭐️ نجمة أو زر متابعة (watch).

💭 إذا كانت لديك أي أفكار أو ملاحظات أو أسئلة، فلا تتردد في التواصل مع فريقنا عبر البريد الإلكتروني أو استخدام قسم القضايا (issues).

الإصلاح لا يساعد، ما زلت أُحظَر 🤯

⚠️ من المهم أن تعلم أن هذا الإصلاح وحده لن يجعل متصفحك منيعًا وغير قابل للاكتشاف. تحتاج إلى معالجة العديد من الجوانب الأخرى مثل البروكسيات، وuser-agent المناسب، والبصمات الرقمية (canvas، WebGL)، والمزيد.

ضع دائمًا في اعتبارك: كلما قللتَ التلاعب بالجوانب الداخلية للمتصفح عبر حقن JS، كان ذلك أفضل. توجد طرق لكشف أن الكائنات الداخلية مثل console و navigator وغيرها تأثرت بكائنات Proxy أو Object.defineProperty. الأمر صعب، لكنه دائمًا لعبة قط وفأر.

إذا جربت كل شيء وما زلت تواجه مشكلات، فحاول طرح سؤال في قسم القضايا (issues) أو فكّر في استخدام الحلول السحابية من Rebrowser.

ما هي Rebrowser؟

هذه الحزمة برعاية وصيانة Rebrowser. نتيح لك توسيع نطاق أتمتة المتصفح وتجميع بيانات الويب في السحابة مع مئات البصمات الرقمية الفريدة.

تتمتع متصفحاتنا السحابية بمعدلات نجاح ممتازة وتأتي مع ميزات رائعة مثل الإشعارات إذا كانت مكتبتك تستخدم Runtime.Enable أثناء التنفيذ أو تحتوي على مؤشرات خطر أخرى يمكن تحسينها. أنشئ حسابًا اليوم للحصول على دعوة لاختبار منصتنا فائقة التطور وارتقِ بأعمال الأتمتة الخاصة بك إلى المستوى التالي.

Automated warnings

أمر التصحيح على Windows

عند محاولة تشغيل أداة التصحيح هذه على جهاز Windows، ستواجه على الأرجح خطأً لأن أمر patch غير موجود. لإصلاح ذلك، تحتاج إلى تثبيت Git، الذي يتضمن patch.exe. بعد تثبيته، تحتاج إلى إضافته إلى PATH الخاص بك:

root@kitploit:~
set PATH=%PATH%;C:\Program Files\Git\usr\bin\

يمكنك التحقق من تثبيت patch.exe بشكل صحيح باستخدام الأمر التالي:

root@kitploit:~
patch -v

شكر خاص

zfcsoftware/puppeteer-real-browser - أفكار عامة ومساهمة في مجتمع الأتمتة

Kaliiiiiiiiii-Vinyzu/patchright - مجموعة تصحيحات لإصلاح تسريبات Playwright

kaliiiiiiiiii/brotector - بعض الاختبارات الحديثة، وخوارزمية للتمييز بين CDP و devtools

prescience-data/harden-puppeteer - أحد رواد التنفيذ في عالم معزول

puppeteer-extra-plugin-stealth - حيث بدأ كل شيء، تحية كبيرة لجميع المساهمين والمجتمع 🙏 berstend وفريقه هم الأساطير

إخلاء المسؤولية

لا تُقبل أي مسؤولية عن استخدام هذا البرنامج. هذا البرنامج مخصص للأغراض التعليمية والإعلامية فقط. يجب على المستخدمين استخدام هذا البرنامج على مسؤوليتهم الخاصة. لا يمكن تحميل مطوّري البرنامج المسؤولية عن أي أضرار قد تنجم عن استخدام هذا البرنامج. هذا البرنامج غير مخصص لتجاوز أي إجراءات أمنية، بما في ذلك على سبيل المثال لا الحصر أنظمة CAPTCHA وأنظمة مكافحة البوتات أو آليات الحماية الأخرى التي توظّفها مواقع الويب. يجب عدم استخدام البرنامج لأغراض خبيثة. باستخدامك لهذا البرنامج، فإنك توافق على إخلاء المسؤولية هذا وتقرّ بأنك تستخدم البرنامج بمسؤولية ووفقًا لجميع القوانين واللوائح المعمول بها.
تنزيل الأداة