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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Pyison — مصيدة زواحف الذكاء الاصطناعي بأسلوب بايثوني | Kitploit
أدوات/GitHubGitHub/jonaslong/pyison
أدوات دفاعيةالبرمجة النصية والأتمتةأمن الويبالتعلم والتعليمزاحف الويبمكافحة الروبوتات
GitHubjonaslong/pyison

Pyison

مصيدة زواحف الذكاء الاصطناعي بأسلوب بايثوني

عرض المستودع
12224منذ 11 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Pyison

Pyison هي مصيدة (tarpit) لزواحف الويب الخاصة بالذكاء الاصطناعي

مقدمة

  • مثل جميع زواحف الويب، تطلب روبوتات الذكاء الاصطناعي صفحات من خوادم الويب، ثم تتبع الروابط الموجودة في الصفحة إلى صفحات أخرى. وبهذه الطريقة، يمكنها بناء فهرس لموقع ويب بأكمله.
    • ولكن على عكس زواحف الويب الأخرى، تطرح روبوتات الذكاء الاصطناعي بعض المشكلات الفريدة
      • يمكن لمسؤولي الخوادم تكوين ملف robots.txt، الذي يخبر زواحف الويب بالصفحات التي يجب أن تزحف إليها والتي لا يجب أن تزحف إليها.
        • تم اكتشاف أن بعض زواحف الذكاء الاصطناعي تتجاهل هذا الملف. هناك مخاوف تتعلق بالخصوصية وحقوق النشر بشأن السماح لهذه الروبوتات باستخدام بيانات موقع ويب لتدريب نماذج LLM، خاصة عندما يكون المستخدم قد اختار صراحةً عدم السماح بالزحف.
        • تتجاهل بعض الزواحف أيضًا تحديد المعدل (ratelimiting). فعندما تطلب الصفحات بأسرع ما يمكن، يمكنها أن تضع حملاً كبيرًا على خادم الويب.
    • وهنا يأتي دور Pyison. مثل مصائد زواحف الذكاء الاصطناعي الأخرى (Nepenthes، Iocane)، تقدم Pyison لزواحف الويب قائمة لا نهائية من الروابط لصفحات أخرى على موقعها. وهذا يحبس الزواحف في موقع واحد، حيث ستتنقل بلا نهاية في بحر متزايد من الروابط.
      • إن إبقاء زواحف الذكاء الاصطناعي عالقة في مكان واحد يمنعها من فهرسة أجزاء أخرى من الموقع قد لا يرغب المالك في تغذيتها لنماذج LLM.
      • في الوقت نفسه، يمكن أن تحتوي هذه الصفحات على الكثير من النصوص عديمة الفائدة. عندما تدمج نماذج LLM هذا النص في نماذجها، يمكن أن يتم "تسميمها" تدريجيًا حيث أن المدخلات العشوائية ستجعل استجاباتها أقل ترابطًا.

الدوافع

  • إنشاء برمجيات مفيدة لمواجهة تزايد سرقة المحتوى بواسطة نماذج LLM
  • حل المشكلات في مصائد الذكاء الاصطناعي الموجودة:
    • توليد نص عشوائي دون استخدام سلسلة ماركوف أو نماذج LLM أو أي عينات كتابة موجودة
    • عدم التمييز بين روبوتات الذكاء الاصطناعي بناءً على ترويسة User-Agent، نظرًا لأن الزواحف غالبًا ما تتنكر في هيئة مستخدمين عاديين
    • تصميم موقع واقعي يشبه المدونات لمنع اكتشافه
      • إنشاء إطار عمل قابل للتخصيص بدرجة كبيرة للسماح بمزيد من الإعدادات
    • تقديم حل يمكن دمجه بسهولة في موقع ويب موجود
      • يدعم الوكلاء العكسيين/خوادم الويب المحددة دون أن يتطلبها، ويوفر إعداد مسار فرعي مع إعداد جذر المستندات
    • العمل ببصمة صغيرة بدلاً من نظام CMS كامل أو خادم ويب غني بالميزات

المواصفات التقنية

  • يشغل هذا المشروع خادم ويب ديناميكيًا باستخدام مكتبة HTTPServer الخاصة ببايثون
  • يتم إنتاج الجمل من مزيج 50/50 بين كلمات إنجليزية عشوائية و"كلمات التوقف"
  • تستخدم Pyison ملحًا عامًا بالإضافة إلى عنوان URL للصفحة لتهيئة مولّد الأرقام العشوائي (RNG) الخاص بها. وهذا يضمن أنه إذا قامت الزواحف بإجراء "فحص سلامة" عن طريق إعادة تحميل صفحة، فستكون مماثلة لآخر مرة فحصتها فيها. وفي الوقت نفسه، يجب أن تستخدم الخوادم المختلفة بذورًا عامة مختلفة بحيث لا تبدو جميع المواقع التي تستخدم Pyison متشابهة.
  • من الممكن توليد عدد غير محدود من الصفحات، لأن Pyison لا تنشئ في الواقع أي ملفات دائمة. إنه خادم ويب ديناميكي، لذا فهو يولد html فقط ويرسله إلى العميل.
  • استخدام وسوم محتوى HTML وتنسيق CSS والصور يجب أن يجعل الموقع يبدو أكثر واقعية قليلاً بالنسبة للزاحف.
  • من الممكن تكوين مخرجات Pyison دون إعادة كتابة البرنامج، عن طريق تغيير ملفات الإعدادات والثابتة والقالب
  • تستجيب Pyison لطلبات POST و PUT الخاطئة برمز 404 في حال اختبرت الزواحف ما إذا كانت أفعال HTTP هذه مُهيأة

البدء

  • استنسخ هذا المشروع إلى مجلد محلي

  • غيّر الإعدادات في ملف config/config.json

    • اضبط random-seed على رقم عشوائي!
    • اضبط رقم port الذي سيستخدمه الخادم
    • راجع قسم الإعدادات لمزيد من المعلومات
  • (اختياري لكن موصى به) حدّث قالب HTML وCSS والصور وrobots.txt بالطريقة التي تريدها

    • يكون هذا المشروع أكثر فعالية إذا بدت الصفحات مختلفة، ويمكن تحقيق ذلك بتنويع بنية HTML وCSS. أعد ترتيب بعض الأشياء وأعد تسميتها، أو أعد كتابتها بالكامل.
  • (اختياري) حرّر ملف robots.txt إذا أردت تغيير الروبوتات المتأثرة

  • جهّز بيئة الخادم بأي من الطرق أدناه

  • ضع الخادم خلف وكيل عكسي

    التشغيل محليًا

    • ثبّت nltk
      • pip install nltk
    • شغّل Pyison
      • python3 src/server.py
    • تحقق من أنه يعمل
      • افتح http://localhost:<your port number> في المتصفح

    Docker

    باستخدام docker compose

الوكيل العكسي

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

اعتبارات

  • تستخدم هذه الأمثلة Nginx Proxy Manager، ولكن يجب أن يعمل أي برنامج وكيل عكسي
  • تدعم Pyison إعدادات SSL الأكثر صرامة في NPM
  • من المفترض أن يمرر NPM ترويسة http الخاصة بـ User-Agent من NPM إلى خادم Pyison دون أي إعداد خاص. استخدم proxy_pass_header User-Agent; إذا لزم الأمر.

إعداد النطاق الفرعي المستقل

  • حدد الإعدادات التالية في الواجهة، أو أدخل الإعدادات المكافئة في ملف الإعدادات:

    واجهة NGINX Reverse Proxy. مربع حوار "Edit Proxy Host مفتوح.
    • أسماء النطاقات: نطاق أو نطاق فرعي تتحكم فيه، مثل tarpit.example.com
    • المخطط: http
    • اسم المضيف / عنوان IP الأمامي: localhost، أو اسم حاوية docker إذا كنت تستخدم شبكة docker
    • المنفذ الأمامي: أي منفذ محدد في docker-compose/أمر التشغيل/config.json (الافتراضي هو 80)
    • فعّل Cache Assets و Block Common Exploits، لكن ليس Websockets Support

إعداد المسار الفرعي

  • لاستخدام Pyison في مسار فرعي، استخدم إعداد الموقع التالي

    root@kitploit:~
    # Handles the root page ("example.com/tarpit")
    location /tarpit {
        proxy_pass http://localhost:80;
    }
    
    # Handles all sub-pages ("example.com/tarpit/a" and "example.com/tarpit/a/b")
    location /tarpit/ {
        proxy_pass http://localhost:80;
    }
    
    # Handles all urls with a 3-letter file extension ("example.com/tarpit/style.css" and "example.com/tarpit/images/picture.jpg")
    # Note that the ~ denotes regex matching. The string immediately following it must be a valid regex statement.
    location ~ .*\/tarpit\/.*\....$ {  
        proxy_pass http://localhost:80;
    }
    
  • إليك إعداد عملي باستخدام الواجهة:

    واجهة NGINX Reverse Proxy. مربع حوار "Edit Proxy Host مفتوح على تبويب "Custom locations".
    • كتلة الموقع الأولى، /tarpit، لا تحتوي على أي إعداد مخصص. وستعمل مثل كتلة الموقع الأولى المعرفة أعلاه.
    • كتلة الموقع الثانية، /tarpit/، تحتوي على كتلتي الموقع الثانية والثالثة المعرفتين أعلاه
    • استبدل tarpit بمسار الجذر المطلوب.
      • إذا كنت تستخدم مسار جذر أعمق مثل /tar/pit، فلاحظ أن كتلة الموقع الثالثة تستخدم regex، لذا يجب إفلات أي شرطات مائلة بشرطة مائلة عكسية
        • مثال: /tar/pit يتطلب في كتلة الموقع الثالثة

الإعدادات

  • يحدد ملف config.json الإعدادات المختلفة لسهولة التخصيص:
  • port (الافتراضي 80)
    • المنفذ الذي سيُقدَّم عليه المحتوى
  • random-seed (يرجى تغييره!)
    • البذرة العامة (الملح) المستخدمة للتأكد من أنه ليست كل خوادم الويب لديها النص نفسه تمامًا
    • اضبط هذا على رقم عشوائي، لا يحتاج إلى أن يكون آمنًا
  • document-root (الافتراضي "/")
    • يضيف مسارًا بادئًا إلى الروابط
    • ستحتاج فقط إلى تغيير هذا إذا كنت تستخدم وكيلًا عكسيًا وتقدّم المحتوى إلى دليل فرعي
      • إذا كان الأمر كذلك، استخدم إما مسارًا مؤهلًا بالكامل أو مسارًا نسبيًا إلى الجذر
        • أي https://example.com/pyison/ أو /pyison/
  • fake-image-dir (الافتراضي ["images"])
    • ستظهر جميع الصور كما لو أنها تُقدَّم من هذا المسار
    • يقبل إما سلسلة واحدة، أو null، أو قائمة من الخيارات للاختيار منها عشوائيًا
  • fake-css-dir (الافتراضي ["css"])
    • ستظهر جميع ملفات css كما لو أنها تُقدَّم من هذا المسار
    • يقبل إما سلسلة واحدة، أو null، أو قائمة من الخيارات للاختيار منها عشوائيًا
  • spacing-characters (الافتراضي ["_","-","%20"])
    • المسافات المستخدمة بين الكلمات في عنوان URL للصفحة
    • سيؤثر هذا أيضًا على كيفية تقسيم عناوين URL للصفحات لفك تشفيرها مرة أخرى إلى عناوين

قوالب HTML

  • قبل تقديم ملف (ملفات) HTML الخاصة بك، ستستبدل Pyison بعض الوسوم المحددة مسبقًا بقيمها الخاصة

    القيم الثابتة

    عندما يتم تحديد أحد هذه الوسوم عدة مرات في القالب، ستكون كل قيمة هي نفسها
    • {HOME}
      • رابط إلى جذر المستندات، كما هو محدد في الإعدادات
    • {TITLE}
      • نص عنوان الصفحة، بناءً على عنوان URL الحالي
        • مثال /blog/about/once-upon-a-time -> Once Upon A Time
    • {UPTITLE}
      • نص عنوان الصفحة الأم، المولّد من عنوان URL الحالي
    • {MAIN}
      • يجب استخدام هذا كمحتوى الموقع الرئيسي. سيولد عدة فقرات تحتوي على نص عشوائي، بالإضافة إلى عناوين أقسام وعناوين فرعية. قد توجد أيضًا روابط عشوائية في جميع أنحاء كل فقرة.
    • {UP}
      • المسار إلى الصفحة الأم
      • مثال: /blog/about/once-upon-a-time -> /blog/about
    • {CSSLINK}
    سيتم استبدال كل ظهور لهذه الوسوم بقيمة فريدة

الصور

شعار Pyison. صورة مستطيلة باتجاه أفقي بخلفية رمادية محببة. نص أخضر ساطع بخط يشبه ضربات الفرشاة مع ظل نص أحمر داكن متمركز في الثلث العلوي من الصورة. يقرأ 'Pyison'. بالقرب من الأسفل، يقرأ نص أبيض زاوي منمق 'هذه مصيدة (tar pit) لزواحف الويب الخاصة بالذكاء الاصطناعي'. هناك تشويش مرئي من نوع jpeg في جميع أنحاء الصورة عند الفحص الدقيق.

فيما يلي نموذج لكيفية ظهور الموقع قبل أي تعديل على القالب:

صورة مصغرة لصفحة Pyison كاملة. تستخدم نصًا أسود على خلفية صفراء فاتحة. في أعلى الصفحة يوجد شريط تنقل أخضر في الأعلى مع روابط تحتوي على كلمات عشوائية. أسفل شريط التنقل يوجد العنوان 'الرئيسية' وصورة شعار تقرأ 'Pyison: هذه مصيدة (tar pit) لزواحف الويب الخاصة بالذكاء الاصطناعي'. تحت الصور توجد عدة فقرات من كلمات عشوائية مع عناوين بمستويات مختلفة من المسافة البادئة. تشغل هذه الفقرات معظم الصفحة. بعض النصوص داخل الفقرات هي روابط لصفحات أخرى. بالقرب من أسفل الصفحة، توجد نبذة مؤلف مزيفة مع شعار Pyison آخر. تقرأ النبذة 'كتب بواسطة It'S An'. أسفل ذلك يوجد قسم 'منشورات أخرى'، مع عدة روابط إضافية.
تنزيل الأداة
  • أنشئ ملف docker-compose.yml بالحد الأدنى يحتوي على
    root@kitploit:~
    services:
      pyison:
        image: "ghcr.io/jonaslong/pyison:main"
        container_name: pyison
        tty: true
        ports:
          - 80:80
    
  • docker compose up
    • (اختياري) استخدم العلم -d لفصل الحاوية
  • لكي تؤثر التغييرات على الملفات المحلية، استنسخ هذا المستودع واستخدم ربط التحميل (bind mount). راجع ملف compose الكامل.

باستخدام docker run

  • docker run --tty --name pyison -p "127.0.0.1:80:80" --rm ghcr.io/jonaslong/pyison:main
    • (اختياري) أزل العلم --rm للإبقاء على الحاوية

البناء من المصدر

  • استنسخ المستودع محليًا
  • docker build -t pyison:latest .
  • شغّل الحاوية باستخدام docker run --tty --name pyison -p "127.0.0.1:80:80" --rm pyison:latest
location ~ .*\/tar\/pit\/.*\....$
  • حدّث إعداد document-root في Pyison بالمسار الفرعي المستخدم بواسطة الوكيل (راجع قسم الإعدادات)
  • راجع الأقسام أعلاه لمزيد من الإعدادات للمضيف والمنافذ وSSL وما إلى ذلك
  • unsafe-characters (الافتراضي ["'","`"])
    • الأحرف التي يمكن أن تظهر بشكل طبيعي في قائمة الكلمات ولكن يجب إزالتها من عناوين URL
    • بشكل افتراضي، يزيل هذا الفواصل العليا (`) وعلامات الاقتباس المفردة (')
  • robots-txt (الافتراضي "assets/robots.txt")
    • يهيئ هذا الملف الذي يتم تقديمه في /robots.txt
    • إذا كانت السلسلة فارغة، فسيتم إرجاع استجابة 404 بدلاً من ذلك
  • html-templates (الافتراضي ["assets/template.html"])
    • ملف HTML لتقديمه، يحتوي على نص تنسيق لتوفير قيم عشوائية له (راجع قوالب HTML)
    • يقبل إما سلسلة واحدة، أو قائمة من الخيارات للاختيار منها عشوائيًا
  • css-files (الافتراضي ["assets/style.css"])
    • ملف (ملفات) CSS لتقديمها
    • لا يتم أي استبدال على ملفات CSS
    • يقبل إما سلسلة واحدة، أو قائمة من الخيارات للاختيار منها عشوائيًا
  • images
    • ico (الافتراضي ["assets/logo.ico"])
    • jpg (الافتراضي ["assets/logo.jpg"])
    • png (الافتراضي ["assets/logo.png"])
    • لكل امتداد صورة من الامتدادات أعلاه: ملف صورة واحد، أو null، أو قائمة صور للاختيار منها عشوائيًا
  • remove-from-stop-words
    • تحتوي مكتبة nltk على قائمة "كلمات التوقف" (stop words) مفيدة لتوليد الكثير من الكلمات الشائعة. ومع ذلك، لا ينبغي استخدام بعض الإدخالات لتوليد النص لأنها دليل واضح على أن هذا محتوى مولّد
    • عنوان URL عشوائي لمستند CSS
    • يمكن تعيين المسار الابتدائي لهذا URL (مثل /styles) في الإعدادات
    • تأكد من تحديد ".css" مباشرة بعد الوسم. هكذا يعرف خادم الويب أنه يجب إرسال css بدلاً من مزيد من html.
      • سيتم اختيار المستند الفعلي الذي يعيده الخادم بناءً على صفحة (صفحات) css المحددة في الإعدادات

    القيم الديناميكية

    • {WORD}
      • يولد كلمة عشوائية واحدة. قد تُكتب الأسماء العلمية بحرف كبير.
    • {NAME}
      • يولد كلمتين بحروف كبيرة مع مسافة بينهما.
    • {SENTENCE}
      • يولد جملة عشوائية تبدأ بحرف كبير وتنتهي بنقطة.
    • {PIC}
      • يولد عنوان URL عشوائيًا لملف صورة
      • يمكن تعيين المسار الابتدائي لهذا URL (مثل /images) في الإعدادات
      • تأكد من وضع امتداد ملف مناسب بعد الرابط (.png، .jpg، .ico)
        • سيتم اختيار الصورة الفعلية التي يعيدها الخادم بناءً على الامتداد المقدم والصورة (الصور) المحددة في الإعدادات
    • {LINK}
      • يولد رابطًا عشوائيًا قد يحتوي على مسارات فرعية
      • قد يكون اسم الصفحة مفصولاً بشرطات أو شرطات سفلية
      • مثال: /dressage/electrochronometer/himself-she-eciliate
    • {OVER}
      • يولد رابطًا عشوائيًا لصفحة شقيقة
      • مثال: عند زيارة /neighborliness/wont_unhonest، قد يتم استبدال وسم {OVER} بـ /neighborliness/hooliganism
    • {NEWTITLE}
      • يولد عنوانًا عشوائيًا
      • يستخدم سلسلة من الكلمات العشوائية بتنسيق عنوان بحروف كبيرة
      • مثال: Nectarial Electrofusion Which Dephosphorization
      • إذا تبع هذا الوسم وسم {LINK} أو {OVER}، فسيتم مزامنة العنوان وurl
        • مثال: قد يتم استبدال <a href="https://github.com/jonaslong/pyison/blob/main/%7BOVER%7D">{NEWTITLE}</a> بـ <a href="https://github.com/jonaslong/pyison/blob/main/swordmanship/yeller/over-will-oghuz">Over Will Oghuz</a>
        • يتم تقييم الوسوم للأمام عبر القالب. سيبحث وسم {NEWTITLE} للخلف عن أقرب وسم {LINK} أو {OVER} للمزامنة معه.
          • ستترافق الوسوم دائمًا بشكل صحيح عندما يتبع أي وسم {LINK} أو {OVER} مباشرة بوسم {NEWTITLE} الخاص به، إذا كان وسم مرغوبًا
    {NEWTITLE}