web-traffic-generator en bref
Un générateur de trafic "organique" HTTP/S
Explications en détail
Juste un simple script Python (mal écrit) qui "navigue" sans but sur Internet en commençant par des rootURL prédéfinis et en "cliquant" au hasard sur des liens sur les pages jusqu'à ce que le clickDepth prédéfini soit atteint.
Je l'ai créé en tant que générateur de bruit à utiliser pour une simulation de réponse aux incidents / de défense du réseau. Le seul problème est que mon environnement de simulation utilise plusieurs périphériques IDS / IPS / NGFW qui ne transmettent pas et ne consignent pas les sous-ensembles TCP simples du trafic pré-enregistré. J'avais besoin que le trafic soit aussi organique que possible, en imitant essentiellement les utilisateurs réels naviguant sur le Web.
Testé sur Ubuntu 14.04 et 16.04 minimum, mais devrait fonctionner sur tous les systèmes sur lesquels Python est installé.
Comment ça fonctionne ?
A peu près aussi simple que ça ...
Tout d'abord, spécifiez quelques paramètres en haut du script ...
clickDepth = 5 À partir de chaque URL racine (par exemple: www.yahoo.com), notre générateur clique sur 5 liens avant de passer à l’URL racine suivante.
L'intervalle entre chaque requête HTTP GET est choisi au hasard entre les deux variables suivantes ...
-
minWait = 5 Attendre au moins 5 secondes entre les requêtes ... Faites attention de ne pas faire des demandes trop rapides car cela a tendance à embêter les serveurs Web.
-
maxWait = 10 Je pense que vous comprenez l'idée.
-
debug = False Un pauvre loggueur. Défini sur True pour une journalisation en temps réel en mode verbeux sur la console pour le débogage ou le développement. Je vais incorporer la journalisation appropriée plus tard (peut-être).
-
rootURLs = [url1,url2,url3] La liste des URL racine à partir desquelles vous naviguez. Lorsque nous arrivons à la fin, nous recommençons tout simplement depuis le début.
-
blacklist = [".gif", "intent/tweet", "badlink", etc...] Une liste noire de chaînes sur lesquelles nous vérifions chaque lien. Si le lien contient l'une des chaînes de cette liste, il est ignoré. Utile pour éviter les choses qui ne sont pas favorables au générateur de trafic comme des liens "Tweetez ceci!" ou des liens vers des fichiers image.
-
userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3).......' Vous l'avez deviné, l'agent utilisateur que notre navigateur sans tête transmet au serveur Web. Vous pouvez probablement le laisser défini par défaut, mais n'hésitez pas à le modifier. Je suggère fortement d'utiliser une version commune / valide, sinon vous obtiendrez probablement rapidement un taux limité.
Dépendances
La seule chose dont vous avez besoin et que vous n'avez peut-être pas, ce sont les "requests". Prenez-les.
sudo pip install requests
Utilisation
Créez d'abord votre fichier de configuration:
cp config.py.template config.py
Exécutez le générateur:
python gen.py
Dépannage et débogage
Pour obtenir plus de données sur ce qui se passe sous le capot, changez la variable Debug dans config.py de False à True. Ceci fournit la sortie suivante
Traffic generator started...
----------------------------
https://github.com/ecapuano/web-traffic-generator
Clcking 5 links deep into 7 different root URLs,
waiting between 5 and 10 seconds between requests.
This script will run indefinitely. Ctrl+C to stop.
requesting: https://digg.com/
Page size: 388840
Data meter: 388840 bytes
Good requests: 1
Bad reqeusts: 0
Sleeping for 6 seconds...
------------------------------------------------------
config.blacklist: ['https://t.co', 't.umblr.com', 'messenger.com', 'itunes.apple.com', 'l.facebook.com', 'bit.ly', 'mediawiki', '.css', '.ico', '.xml', 'intent/tweet', 'twitter.com/share', 'signup', 'login', 'dialog/feed?', '.png', '.jpg', '.json', '.svg', '.gif', 'zendesk', 'clickserve']
URL: 1 / 7 -- Depth: 0 / 5
Choosing random link from total: 221
Link chosen: 64 of 221
requesting: http://nautil.us/issue/54/the-unspoken/physics-has-demoted-mass
Page size: 85012
Data meter: 473852 bytes
Good requests: 2
Bad reqeusts: 0
Sleeping for 7 seconds...
------------------------------------------------------
config.blacklist: ['https://t.co', 't.umblr.com', 'messenger.com', 'itunes.apple.com', 'l.facebook.com', 'bit.ly', 'mediawiki', '.css', '.ico', '.xml', 'intent/tweet', 'twitter.com/share', 'signup', 'login', 'dialog/feed?', '.png', '.jpg', '.json', '.svg', '.gif', 'zendesk', 'clickserve']
URL: 1 / 7 -- Depth: 1 / 5
Choosing random link from total: 16
Link chosen: 0 of 16
requesting: http://shop.nautil.us?utm_source=mainsite&utm_medium=popup&utm_campaign=springsale_2017
Page size: 58467
Data meter: 532319 bytes
Good requests: 3
Bad reqeusts: 0
Sleeping for 5 seconds...
------------------------------------------------------
config.blacklist: ['https://t.co', 't.umblr.com', 'messenger.com', 'itunes.apple.com', 'l.facebook.com', 'bit.ly', 'mediawiki', '.css', '.ico', '.xml', 'intent/tweet', 'twitter.com/share', 'signup', 'login', 'dialog/feed?', '.png', '.jpg', '.json', '.svg', '.gif', 'zendesk', 'clickserve']
URL: 1 / 7 -- Depth: 2 / 5
Choosing random link from total: 93
Link chosen: 88 of 93
requesting: http://shop.nautil.us/rss.php?action=popularproducts&type=rss
Page size: 25106
Data meter: 557425 bytes
Good requests: 4
Bad reqeusts: 0
Sleeping for 6 seconds...
------------------------------------------------------
config.blacklist: ['https://t.co', 't.umblr.com', 'messenger.com', 'itunes.apple.com', 'l.facebook.com', 'bit.ly', 'mediawiki', '.css', '.ico', '.xml', 'intent/tweet', 'twitter.com/share', 'signup', 'login', 'dialog/feed?', '.png', '.jpg', '.json', '.svg', '.gif', 'zendesk', 'clickserve']
URL: 1 / 7 -- Depth: 3 / 5
Choosing random link from total: 18
Link chosen: 15 of 18
requesting: http://shop.nautil.us/may-june-2017/
Page size: 62543
Data meter: 619968 bytes
Good requests: 5
Bad reqeusts: 0
Sleeping for 9 seconds...
------------------------------------------------------
config.blacklist: ['https://t.co', 't.umblr.com', 'messenger.com', 'itunes.apple.com', 'l.facebook.com', 'bit.ly', 'mediawiki', '.css', '.ico', '.xml', 'intent/tweet', 'twitter.com/share', 'signup', 'login', 'dialog/feed?', '.png', '.jpg', '.json', '.svg', '.gif', 'zendesk', 'clickserve']
URL: 1 / 7 -- Depth: 4 / 5
Choosing random link from total: 70
Link chosen: 16 of 70
requesting: http://shop.nautil.us/my-test/
Page size: 206
Data meter: 620174 bytes
Good requests: 6
Bad reqeusts: 0
Sleeping for 7 seconds...
^CException on URL: http://shop.nautil.us/my-test/ -- removing from list and trying again!
La dernière URL tentée fournit un bon exemple de moment où une URL particulière émet une erreur. Nous l’ajoutons simplement à notre tableau config.blacklist en mémoire et continuons à naviguer. Cela empêche une URL connue incorrecte de retourner dans la file d'attente.
Téléchargement
Tags
SURVEILLANCE INTERNET
VIE PRIVÉE
Inscription à notre lettre d'information
Inscrivez-vous à notre
lettre d'information pour vous tenir au courant de nos actualités et de nos dernières trouvailles.