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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/feder-cr/invisible_playwright
التهرب من IDS/IPSأدوات انتحال الشخصيةأمن الويبمكافحة الروبوتاتانتحال البصمة الرقميةتجاوز كابتشا
GitHubfeder-cr/invisible_playwright

invisible_playwright

متصفح تخفٍّ مجاني مضاد للاكتشاف مع Playwright: بصمة Firefox غير مكتشفة في وضع headless. استخراج بيانات عبر Python وتجاوز reCAPTCHA وكشف الروبوتات. مفتوح المصدر.

عرض المستودع
1.8k20142منذ 20س 20دتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

تخفٍّ مجاني بمتصفح مضاد للكشف لـ Playwright: بصمة Firefox غير قابلة للكشف، بوضع headless أو headed.
كشط الويب بلغة Python وتجاوز الكابتشا. مفتوح المصدر، ويجتاز كل اختبارات كشف البوتات.

invisible_playwright - 5/5 detection suites passed

كيف يعمل

تطرح أنظمة مكافحة البوتات سؤالين، وتقيّم reCAPTCHA وhCaptcha وCloudflare Turnstile الإجابات عليهما. يجيب invisible_playwright بنعم على كليهما.

1. هل هذا متصفح حقيقي؟ نعم. إنه Firefox، مُرقَّع على مستوى مصدر C++.

  • تُضبط بصمة المتصفح داخل المحرك نفسه، لا تُحقن في الصفحة: navigator، والشاشة، وGPU/WebGL، والكانفس، والخطوط، والصوت، وWebRTC، والمنطقة الزمنية، والشبكة. سواء في وضع headless أو headed، القيم نفسها في الحالتين.
  • لا طبقة JS وهمية، ولا تجاوز، ولا خط التحام يمكن قراءته.

2. هل يستخدمه شخص حقيقي؟ نعم. الإجراءات مُحوَّلة إلى سلوك بشري داخل المشغّل.

  • كل نقرة وتمرير وسحب يتبع مسار فأرة طبيعيًا بتوقيت بشري، دون قفز المؤشر.
  • كل إدخال مطابق بايت ببايت لفأرة حقيقية: مصدر إدخال حقيقي، وضغط، وأحداث موثوقة.

التثبيت

root@kitploit:~
pip install invisible-playwright
python -m invisible_playwright fetch      # one-time download, sha256-verified: 240 MB (Windows) / 262 MB (Linux x86_64) / 253 MB (Linux arm64), about 550 MB unpacked

يتطلب Python 3.11 أو أحدث.

المنصات المدعومة: Windows x86_64، Linux x86_64 / arm64.


الاستخدام

بصمة عشوائية لكل جلسة

واجهة Playwright البرمجية، المتزامنة وغير المتزامنة، دون أي تغيير في الكود. الكائنات نفسها، والاستدعاءات نفسها، والقيم المُعادة نفسها. بعض الأسطح خارج النطاق - التتبع (tracing)، وHAR، وCDP، وسياق طلبات API - كما أن go_back() وgo_forward() معطّلتان بسبب خلل في الصفحات المُستعادة؛ كل واحدة منهما ترفض بجملة توضح السبب بدلًا من أن تسيء التصرف بصمت. إذا كنت تستخدم Playwright بالفعل، فالتبديل سطران:

root@kitploit:~
- from playwright.sync_api import sync_playwright
- with sync_playwright() as p:
-     browser = p.firefox.launch()
+ from invisible_playwright import InvisiblePlaywright
+ with InvisiblePlaywright() as browser:

كل جلسة تحصل على بصمة مميزة (GPU، والصوت، والخطوط، والشاشة، ونحو 200 حقل) وحركة فأرة بمنحنيات بيزيه.

متزامن

root@kitploit:~
from invisible_playwright import InvisiblePlaywright

with InvisiblePlaywright(proxy={"server": "socks5://...", "username": "u", "password": "p"}) as browser:
    page = browser.new_page()
    page.goto("https://example.com")
    page.click("#submit")   # mouse arcs to the button on a Bezier curve

غير متزامن

root@kitploit:~
from invisible_playwright.async_api import InvisiblePlaywright

async with InvisiblePlaywright(proxy={"server": "socks5://...", "username": "u", "password": "p"}) as browser:
    page = await browser.new_page()
    await page.goto("https://example.com")
    await page.click("#submit")

كائن browser هو playwright.sync_api.Browser / playwright.async_api.Browser - كل دوال Playwright تعمل كما هي.

سجّل الـ seed لإعادة تشغيل الجلسة:

root@kitploit:~
sf = InvisiblePlaywright()
with sf as browser:
    print("seed =", sf.seed)
    # ...

بصمة قابلة لإعادة الإنتاج

root@kitploit:~
with InvisiblePlaywright(seed=42) as browser:
    ...   # same GPU, same canvas hash, same audio context, every run

الوكلاء (Proxies)

root@kitploit:~
proxy = {
    "server": "socks5://gate.example.com:1080",
    "username": "user",
    "password": "pass",
}
with InvisiblePlaywright(proxy=proxy) as browser:
    ...

المخططات المدعومة: socks5، وsocks4، وhttp، وhttps. يُوجَّه DNS عبر الوكيل افتراضيًا، دون أي تسريب محلي.

المنطقة الزمنية

تتبع المنطقة الزمنية للمتصفح الوسيط timezone=:

root@kitploit:~
# default: timezone is auto-derived from the egress IP (proxy egress if a
# proxy is set, otherwise the host's own public IP)
with InvisiblePlaywright(proxy=proxy) as browser:
    ...

# explicit IANA zone always wins, the only way to force a specific zone
with InvisiblePlaywright(proxy=proxy, timezone="America/New_York") as browser:
    ...

تثبيت حقول بصمة محددة

افتراضيًا يأتي كل شيء من seed. لفرض قيم محددة مع بقاء الباقي مشتقًا من الـ seed:

root@kitploit:~
with InvisiblePlaywright(
    seed=42,
    pin={
        "gpu.renderer": "ANGLE (AMD, Radeon R9 200 Series Direct3D11 vs_5_0 ps_5_0, D3D11)",
        "gpu.vendor":   "Google Inc. (AMD)",
        "screen.width":  2560,
        "screen.height": 1440,
        "hardware.concurrency": 16,
    },
) as browser:
    ...

تثبيت GPU يختار واحدة من الشخصيات المُتحقَّق منها بدلًا من تعيين نص حر، لأن قيم getParameter البالغ عددها نحو 81 وقائمة الإضافات تسير مع اسم الـ renderer ويقوم أحد الكواشف بالتحقق المتقاطع منها مقابل الاسم. أي اسم لا تحمله المجموعة يُطلق خطأً، ويسرد الخطأ الأسماء التي تحملها.

القائمة الكاملة للمفاتيح القابلة للتثبيت، وكيفية تفاعل التثبيت مع مُعيّن بايز، والأنماط الشائعة موجودة في docs/pinning.md.


واجهة سطر الأوامر (CLI)

الأمر المُثبَّت هو invisible-playwright، بشرطة. ويعمل python -m invisible_playwright بالطريقة نفسها ولا يحتاج شيئًا في PATH.

root@kitploit:~
invisible-playwright fetch    # download the engine if missing, check every cached
                              # one against the seal, print the path
invisible-playwright version  # wrapper, core and engine versions, and where the
                              # engine is cached

التوثيق والأدلة والمقارنات

إذا كنت تفضّل التوجيه بدلًا من كتابة السكربتات. هذه الصفحة هي المحرك، كمكتبة Python. هناك طريقتان لاستخدامه دون كتابة كود، كلتاهما بسطر واحد: من عميل MCP لديك بالفعل (Claude Code، وClaude Desktop، وCursor)، claude mcp add stealth -- uvx aihawk، انظر صفحة خادم MCP؛ أو بواجهة ونموذج مضمّنين، لا يحتاجان سوى مفتاح OpenRouter، uvx aihawk ui --openrouter-key sk-or-...، انظر AIHawk. المحرك نفسه في الأسفل، والثاني عميل للأول.

كل ذلك يُقرأ بشكل أفضل، وقابل للبحث، في الويكي، منظَّمًا في أربعة أقسام بدلًا من قائمة مسطحة واحدة:

  • التوثيق - التثبيت، والتبديل بسطرين من Playwright العادي، وتهيئة الوكيل/المنطقة الزمنية، وتثبيت حقول محددة، وواجهة سطر الأوامر.
  • الأدلة - كيف يعمل الكشف فعليًا، في سبع مجموعات: هوية المتصفح، والكانفس/WebGL/الخطوط/ والصوت، والشبكة وWebRTC، وطبقة الأتمتة، ووكلاء الذكاء الاصطناعي، والكواشف نفسها مشروحة من المصدر، والاختبار.
  • المقارنات - مقابل Camoufox، وPatchright، وnodriver، وplaywright-stealth، وحجة تفضيل Firefox على Chromium عمومًا.
  • التكاملات - Scrapy، وCrawlee، وRobot Framework، وCodeceptJS، ومشغّلات الاختبارات، وPlaywright MCP، والأطر التي لا يناسبها، بالاسم.

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

يغطي قسم الكواشف الآن منتجات مكافحة البوتات التجارية بالاسم، كل واحد مقروء من توثيقه الخاص أو من هندسة عكسية مؤكدة: Cloudflare Bot Management و Turnstile، وDataDome، وKasada، وAkamai Bot Manager، وPerimeterX، وhCaptcha، وImperva، و بقية المجموعة.

مشاريع ذات صلة

الأجزاء الأخرى من هذا المشروع. المحرك هو الأوسط بين ثلاثة، والاثنان حوله هما كيف يصل إليه معظم الناس:

  • invisible_core - من الـ seed إلى البصمة إلى التفضيلات، إضافة إلى الوكيل والموقع الجغرافي. هذه الحزمة تثبّته.
  • AIHawk - هذا المحرك كخادم MCP (uvx aihawk، لأي عميل يجلب نموذجه الخاص) وفي الحزمة نفسها، واجهة بنموذج مضمّن، من أمر واحد. الواجهة عميل للخادم، دون أي مسار خاص إلى المتصفح.

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

في جانب Firefox

  • Camoufox - يرقّع C++ أيضًا، بسطح أوسع، ويشحن قاعدة بيانات بصمات بدلًا من اشتقاق واحدة من seed. مقارنة.
  • LibreWolf - Firefox بإعدادات خصوصية افتراضية للتصفح به، لا لأتمتته.
  • arkenfox/user.js - تحصين عبر التفضيلات. حيث يكفي تفضيل، استخدمه.

في جانب Chromium

  • Patchright - تفرّع مُرقَّع من Playwright: العمل يقع في المشغّل، لا في الملف التنفيذي. مقارنة.
  • nodriver - خليفة undetected-chromedriver، يقود Chrome عبر CDP. مقارنة.
  • rebrowser-patches - يعالج تسريب Runtime.enable في CDP. مقارنة.
  • fingerprint-suite - مُولّد بصمات بايزي، ثم يُحقن في الصفحة. مقارنة.
  • playwright-with-fingerprints - قيم من خدمة بعيدة مدفوعة، لويندوز فقط. مقارنة.
  • playwright-stealth - ترقيع بسكربت init؛ يصفه القائم عليه بأنه إثبات مفهوم. مقارنة.
  • puppeteer-extra-plugin-stealth - أصل هذا الخط، آخر إيداع جوهري في منتصف 2024. ماذا يعني ذلك.
  • selenium-stealth - النهج نفسه على Selenium، آخر إيداع في ديسمبر 2021. ماذا يعني ذلك.
  • pyppeteer - غير مُصان حسب README الخاص به، الذي يوجّه إلى playwright-python. عن ماذا تكون هذه التوصية.

ما الذي يُرقَّع في المحرك

تنطبق قاعدتان على كل ما يلي. كل قيمة تُحدَّد قبل أن تتمكن الصفحة من السؤال، داخل المتصفح، فلا توجد طبقة JavaScript وهمية يمكن العثور عليها. وكل قيمة تأتي من ملف تعريف واحد، فلا يتناقض أي سطحين، وهذه هي الطريقة التي يُكشف بها المتصفح المُنتحَل عادةً. المصدر: feder-cr/firefox_antidetect_patch.

الهوية

  • navigator، وسلسلة user agent، وتلميحات العميل تُشتق معًا، فلا يمكن أن تتعارض: هل يضبط Playwright قيمة navigator.webdriver، تلميحات العميل وSec-Fetch.
  • navigator.languages وترويسة Accept-Language هما الإعلان نفسه، يُرسَلان ويُقرآن: Accept-Language وnavigator.languages.
  • هندسة الشاشة، وdevicePixelRatio، واستعلامات الوسائط التي تكشفه مُعلَنة، لا مقروءة من المضيف: devicePixelRatio وتفضيل Firefox، بصمة استعلامات وسائط CSS.

العرض

  • قراءة الكانفس حتمية لكل seed وتحافظ على الشكل الحقيقي، بدلًا من حجبها أو تشويشها: تشويش بصمة الكانفس، لماذا تتغير بصمة الكانفس في كل تشغيل.
  • يبلّغ WebGL عن شخصية GPU متماسكة: البائع، والـ renderer، وحدود المعاملات تُتحقق منها بشكل متقاطع، لا تُضبط واحدة تلو الأخرى: سلاسل WebGL renderer، معاملات WebGL متطابقة.
  • الخطوط تُشحن مع المتصفح، فتوجد الوجوه نفسها على كل مضيف ولم يعد محرك خطوط المنصة هو من يختار: خطوط مضمّنة عبر المنصات، لماذا تعرض المتصفحات headless خطوطًا مختلفة، كشف الخطوط المثبَّتة من JavaScript.
  • تتبع مقاييس النص تلك الخطوط: يعيد measureText عشرة أرقام وأكثر من استدعاء واحد، دون طلب إذن: measureText وTextMetrics.
  • يتفق الكانفس وWebGL عبر أنظمة التشغيل لنفس الـ seed: الاتساق عبر المنصات، الكانفس يختلف عبر أنظمة التشغيل.

الصوت والوسائط

  • يجيب مكدس الصوت من ملف التعريف بدلًا من جهاز المضيف: بصمة AudioContext، معدل العينات وزمن الاستجابة.
  • جدول الترميزات مُعلَن، فلا يجيب مضيف Linux على سؤال Windows بدعم Linux: بصمة الترميزات.

الشبكة

  • يقدّم WebRTC مرشحًا اصطناعيًا واحدًا يحمل مخرج الوكيل، بدلًا من تسريب العنوان الحقيقي أو عدم تقديم أي شيء، وهو بحد ذاته دليل: انتحال مرشح WebRTC ICE، هل يطابق عنوان WebRTC مخرج الوكيل.
  • يُحلّ DNS عبر الوكيل، بما في ذلك عندما لا يكون الوكيل في التفضيلات: هل يسرّب الوكيل DNS، كيف تتحقق من تسريب عنوان IP للوكيل.
  • تأتي المنطقة الزمنية من عنوان IP الخارج، وتُحلّ دون اتصال، فتطابق المخرج: عدم تطابق المنطقة الزمنية والوكيل، GeoIP دون اتصال للمنطقة الزمنية.

طبقة الأتمتة

  • تأتي أحداث الإدخال من مسار الإدخال الحقيقي، فتكون isTrusted صحيحة لأنها صحيحة فعلًا: نقرات Playwright وisTrusted.
  • يتبع المؤشر مسارًا وتوقيتًا بشريين، بإيقاع يمكن لجهاز حقيقي إنتاجه: حركة الفأرة البشرية، ديناميكيات الفأرة كقياسات حيوية سلوكية.
  • لا يجيب سطح المُنقّح (debugger) على أسئلة التوقيت التي تفضح متصفحًا مُدارًا: كشف توقيت المُنقّح.
  • جذور الظل في الوضع المغلق (closed-mode shadow roots) يمكن الوصول إليها، وهو ما لا يستطيعه Playwright الأصلي في أي من المحركين، بينما تظل الصفحة تقرأ null: جذور الظل المغلقة.

الترخيص

MIT - انظر LICENSE. يُوزَّع ملف Firefox التنفيذي المُرقَّع بموجب MPL-2.0 (ترخيص Firefox الأصلي). ترقيعات C++ مقابل mozilla-central التي تنتج ذلك الملف التنفيذي موجودة في feder-cr/firefox_antidetect_patch.


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

هذا المشروع لأغراض تعليمية فقط. يُقدَّم كما هو، دون أي ضمانات. لا أتحمل أي مسؤولية عن كيفية استخدامه. استخدمه على مسؤوليتك الخاصة وبما يتوافق مع قوانين ولايتك القضائية.


Built by Federico Elia  LinkedIn

tests License: MIT Python 3.11+ Firefox 151.0 browser launches GitHub stars

تنزيل الأداة