Generator lalu lintas "organik" HTTP/S yang cepat dan kotor.
Hanya skrip Python sederhana (yang ditulis dengan buruk) yang "menjelajah" internet tanpa tujuan dengan memulai dari ROOT_URLS
yang telah ditentukan sebelumnya dan secara acak "mengklik" tautan pada halaman hingga MAX_DEPTH
yang telah ditentukan sebelumnya terpenuhi.
Saya membuat ini sebagai generator kebisingan untuk digunakan dalam simulasi Respons Insiden/Pertahanan Jaringan. Satu-satunya masalah adalah lingkungan simulasi saya menggunakan beberapa perangkat IDS/IPS/NGFW yang tidak akan meneruskan dan mencatat pemutaran ulang TCP sederhana dari lalu lintas terekam. Saya ingin lalu lintasnya seorganik mungkin, yang pada dasarnya meniru pengguna sebenarnya yang menjelajahi web.
Diuji minimal pada Ubuntu 14.04 & 16.04, tetapi dapat berfungsi pada sistem apa pun yang menginstal Python.
Sesederhana mungkin...
Pertama, tentukan beberapa pengaturan di bagian atas skrip...
MAX_DEPTH = 10
, MIN_DEPTH = 5
Mulai dari setiap URL root (yaitu: www.yahoo.com), generator kami akan mengklik hingga kedalaman yang dipilih secara acak antara MIN_DEPTH dan MAX_DEPTH.Interval antara setiap permintaan HTTP GET dipilih secara acak antara dua variabel berikut...
MIN_WAIT = 5
Tunggu minimal 5
detik di antara permintaan... Hati-hati dalam membuat permintaan terlalu cepat karena hal ini cenderung membuat marah server web.
MAX_WAIT = 10
Saya rasa Anda mengerti maksudnya.
DEBUG = False
Seorang logger orang miskin. Setel ke True
untuk pencetakan waktu nyata verbose ke konsol untuk debugging atau pengembangan. Saya akan memasukkan logging yang benar nanti (mungkin).
ROOT_URLS = [url1,url2,url3]
Daftar URL root untuk memulai saat menjelajah. Dipilih secara acak.
blacklist = [".gif", "intent/tweet", "badlink", etc...]
Daftar hitam string yang kami periksa pada setiap tautan. Jika tautan berisi salah satu string dalam daftar ini, tautan tersebut akan dibuang. Berguna untuk menghindari hal-hal yang tidak ramah terhadap traffic-generator seperti "Tweet ini!" tautan atau tautan ke file gambar.
userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3).......'
Anda dapat menebaknya, agen pengguna yang diserahkan browser tanpa kepala kami ke server web. Anda mungkin dapat membiarkannya disetel ke default, namun jangan ragu untuk mengubahnya. Saya sangat menyarankan menggunakan yang umum/valid atau Anda mungkin akan mendapatkan batasan tarif dengan cepat.
Satu-satunya hal yang Anda perlukan dan mungkin tidak Anda miliki adalah requests
. Raih dengan
sudo pip install requests
Buat file konfigurasi Anda terlebih dahulu:
cp config.py.template config.py
Jalankan generatornya:
python gen.py
Untuk mengetahui lebih jauh tentang apa yang terjadi, ubah variabel Debug di config.py
dari False
menjadi True
. Ini memberikan output berikut...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
Upaya URL terakhir memberikan contoh yang baik tentang kapan URL tertentu menimbulkan kesalahan. Kami cukup menambahkannya ke array config.blacklist
kami di memori, dan melanjutkan penelusuran. Hal ini mencegah URL buruk yang diketahui kembali ke antrean.