
مولد حركة مرور HTTP/S "عضوية" سريع وغير متقن.
مولد حركة مرور HTTP/S "عضوي" سريع وغير مرتب.
مجرد سكربت Python بسيط (مكتوب بشكل سيء) يتصفح الإنترنت بلا هدف عن طريق البدء من ROOT_URLS محددة مسبقًا والنقر عشوائيًا على الروابط في الصفحات حتى يتم الوصول إلى MAX_DEPTH المحدد مسبقًا.
أنشأت هذا كمولد ضوضاء لاستخدامه في محاكاة الاستجابة للحوادث / الدفاع الشبكي. المشكلة الوحيدة هي أن بيئة المحاكاة الخاصة بي تستخدم أجهزة IDS/IPS/NGFW متعددة لن تمرر وتسجل عمليات إعادة تشغيل TCP بسيطة لحركة مرور معدة مسبقًا. كنت بحاجة إلى أن تكون حركة المرور عضوية قدر الإمكان، تحاكي بشكل أساسي المستخدمين الحقيقيين الذين يتصفحون الويب.
تم اختباره على Ubuntu 14.04 و 16.04 بنسخة الحد الأدنى، ولكن يجب أن يعمل على أي نظام مثبت عليه Python.
بسيط جداً...
أولاً، حدد بعض الإعدادات في أعلى السكربت...
MAX_DEPTH = 10, MIN_DEPTH = 5 بدءًا من كل عنوان URL جذر (مثل: www.yahoo.com)، سينقر المولد إلى عمق يتم اختياره عشوائيًا بين MIN_DEPTH و MAX_DEPTH.يتم اختيار الفاصل الزمني بين كل طلب HTTP GET بشكل عشوائي بين المتغيرين التاليين...
MIN_WAIT = 5 انتظر لمدة 5 ثوانٍ على الأقل بين الطلبات... كن حذرًا من تقديم الطلبات بسرعة كبيرة لأن ذلك قد يزعج خوادم الويب.
MAX_WAIT = 10 أعتقد أنك فهمت الفكرة.
DEBUG = False مسجل فقير. قم بتعيينه إلى True للطباعة التفصيلية في الوقت الفعلي على وحدة التحكم لأغراض التصحيح أو التطوير. سأدمج تسجيلًا مناسبًا لاحقًا (ربما).
ROOT_URLS = [url1,url2,url3] قائمة عناوين URL الجذر للبدء منها عند التصفح. يتم اختيارها عشوائيًا.
blacklist = [".gif", "intent/tweet", "badlink", إلخ...] قائمة سوداء من السلاسل النصية التي نتحقق من كل رابط مقابلها. إذا كان الرابط يحتوي على أي من السلاسل في هذه القائمة، يتم تجاهله. مفيد لتجنب الأشياء غير الملائمة لمولد حركة المرور مثل روابط "Tweet this!" أو روابط ملفات الصور.
userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3).......' لقد خمنت ذلك، وكيل المستخدم الذي يسلمه متصفحنا بدون رأس إلى خادم الويب. يمكنك على الأرجح تركه على الإعداد الافتراضي، ولكن لا تتردد في تغييره. أوصي بشدة باستخدام وكيل مستخدم شائع/صالح وإلا فمن المحتمل أن تتعرض لتحديد المعدل بسرعة.
الشيء الوحيد الذي تحتاجه وقد لا يكون متوفرًا هو requests. احصل عليه باستخدام
sudo pip install requests
أنشئ ملف الإعدادات أولاً:
cp config.py.template config.py
قم بتشغيل المولد:
python gen.py
للحصول على مزيد من التفاصيل حول ما يحدث تحت الغطاء، قم بتغيير متغير Debug في config.py من False إلى True. يوفر هذا المخرجات التالية...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Traffic generator started
Diving between 3 and 10 links deep into 489 different root URLs,
Waiting between 5 and 10 seconds between requests.
This script will run indefinitely. Ctrl+C to stop.
Randomly selecting one of 489 URLs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Recursively browsing [https://arstechnica.com] ~~~ [depth = 7]
Requesting page...
Page size: 77.6KB
Data meter: 77.6KB
Good requests: 1
Bad reqeusts: 0
Scraping page for links
Found 171 valid links
Pausing for 7 seconds...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Recursively browsing [https://arstechnica.com/author/jon-brodkin/] ~~~ [depth = 6]
Requesting page...
Page size: 75.7KB
Data meter: 153.3KB
Good requests: 2
Bad reqeusts: 0
Scraping page for links
Found 168 valid links
Pausing for 9 seconds...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Recursively browsing [https://arstechnica.com/information-technology/2020/01/directv-races-to-decommission-broken-boeing-satellite-before-it-explodes/] ~~~ [depth = 5]
Requesting page...
Page size: 43.8KB
Data meter: 197.1KB
Good requests: 3
Bad reqeusts: 0
Scraping page for links
Found 32 valid links
Pausing for 8 seconds...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Recursively browsing [https://www.facebook.com/sharer.php?u=https%3A%2F%2Farstechnica.com%2F%3Fpost_type%3Dpost%26p%3D1647915] ~~~ [depth = 4]
Requesting page...
Page size: 64.2KB
Data meter: 261.2KB
Good requests: 4
Bad reqeusts: 0
Scraping page for links
Found 0 valid links
Stopping and blacklisting: no links
يوفر آخر عنوان URL تمت محاولته مثالاً جيدًا على وقت حدوث خطأ في عنوان URL معين. نقوم ببساطة بإضافته إلى مصفوفة config.blacklist في الذاكرة، ونواصل التصفح. هذا يمنع عنوان URL سيئ معروف من العودة إلى قائمة الانتظار.