
एक तेज़ और गंदा HTTP/S 'ऑर्गेनिक' ट्रैफ़िक जनरेटर।
एक त्वरित और गंदा HTTP/S "ऑर्गेनिक" ट्रैफ़िक जनरेटर।
बस एक सरल (खराब लिखा गया) Python स्क्रिप्ट जो पूर्व-परिभाषित ROOT_URLS से शुरू होकर और पृष्ठों पर यादृच्छिक रूप से लिंक पर "क्लिक" करके इंटरनेट पर बिना किसी उद्देश्य के "ब्राउज़" करता है, जब तक कि पूर्व-परिभाषित MAX_DEPTH तक नहीं पहुँच जाता।
मैंने इसे एक शोर जनरेटर के रूप में बनाया है जिसका उपयोग Incident Response / Network Defense सिमुलेशन के लिए किया जाता है। एकमात्र समस्या यह है कि मेरे सिमुलेशन वातावरण में कई IDS/IPS/NGFW उपकरण हैं जो डिब्बाबंद ट्रैफ़िक के सरल TCPreplays को पास और लॉग नहीं करेंगे। मुझे ट्रैफ़िक को यथासंभव ऑर्गेनिक बनाने की आवश्यकता थी, मूल रूप से वास्तविक उपयोगकर्ताओं के वेब ब्राउज़ करने की नकल करना।
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", etc...] स्ट्रिंग्स की एक ब्लैकलिस्ट जिसके विरुद्ध हम प्रत्येक लिंक की जाँच करते हैं। यदि लिंक में इस सूची में से कोई भी स्ट्रिंग है, तो इसे छोड़ दिया जाता है। उन चीजों से बचने के लिए उपयोगी जो ट्रैफ़िक-जनरेटर के अनुकूल नहीं हैं जैसे "Tweet this!" लिंक या इमेज फ़ाइलों के लिंक।
userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3).......' आपने अनुमान लगा लिया, हमारा हेडलेस ब्राउज़र वेब सर्वर को जो user-agent देता है। आप इसे डिफ़ॉल्ट पर सेट छोड़ सकते हैं, लेकिन इसे बदलने के लिए स्वतंत्र महसूस करें। मैं दृढ़ता से एक सामान्य/मान्य user-agent का उपयोग करने का सुझाव दूंगा अन्यथा आप जल्दी से दर-सीमित हो जाएंगे।
आपको केवल एक चीज़ की आवश्यकता है और शायद आपके पास नहीं है वह है requests। इसे इस प्रकार प्राप्त करें
sudo pip install requests
पहले अपनी कॉन्फ़िग फ़ाइल बनाएँ:
cp config.py.template config.py
जनरेटर चलाएँ:
python gen.py
हुड के नीचे क्या हो रहा है, इसके बारे में अधिक जानकारी प्राप्त करने के लिए, config.py में Debug वेरिएबल को 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 को कतार में वापस आने से रोकता है।