
Un generador de tráfico HTTP/S "orgánico" rápido y sucio.
Un generador de tráfico HTTP/S "orgánico" rápido y sucio.
Es solo un script de Python simple (mal escrito) que "navega" sin rumbo por internet empezando desde ROOT_URLS predefinidas y "haciendo clic" aleatoriamente en enlaces de páginas hasta alcanzar la MAX_DEPTH predefinida.
Creé esto como un generador de ruido para usar en una simulación de Respuesta a Incidentes / Defensa de Red. El único problema es que mi entorno de simulación utiliza múltiples dispositivos IDS/IPS/NGFW que no pasarán ni registrarán simples reproducciones de TCP de tráfico predefinido. Necesitaba que el tráfico fuera lo más orgánico posible, esencialmente imitando a usuarios reales navegando por la web.
Probado en Ubuntu 14.04 y 16.04 minimal, pero debería funcionar en cualquier sistema con Python instalado.
Tan simple como parece...
Primero, especifica algunas configuraciones al inicio del script...
MAX_DEPTH = 10, MIN_DEPTH = 5 Empezando desde cada URL raíz (por ejemplo: www.yahoo.com), nuestro generador hará clic hasta una profundidad seleccionada aleatoriamente entre MIN_DEPTH y MAX_DEPTH.El intervalo entre cada solicitud HTTP GET se elige al azar entre las siguientes dos variables...
MIN_WAIT = 5 Espera un mínimo de 5 segundos entre solicitudes... Ten cuidado con hacer solicitudes demasiado rápido, ya que eso tiende a enfadar a los servidores web.
MAX_WAIT = 10 Creo que entiendes la idea.
DEBUG = False Un registrador de pobres. Establécelo en True para impresión detallada en tiempo real en la consola para depuración o desarrollo. Incorporaré un registro adecuado más adelante (quizás).
ROOT_URLS = [url1,url2,url3] La lista de URLs raíz desde las que comenzar al navegar. Se seleccionan aleatoriamente.
blacklist = [".gif", "intent/tweet", "badlink", etc...] Una lista negra de cadenas contra las que verificamos cada enlace. Si el enlace contiene alguna de las cadenas de esta lista, se descarta. Útil para evitar cosas que no son amigables para el generador de tráfico, como enlaces "¡Twittea esto!" o enlaces a archivos de imagen.
userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3).......' Lo has adivinado, el user-agent que nuestro navegador sin cabeza entrega al servidor web. Probablemente puedas dejarlo en el valor predeterminado, pero siéntete libre de cambiarlo. Recomiendo encarecidamente usar uno común/válido, de lo contrario es probable que te limiten la velocidad rápidamente.
La única cosa que necesitas y quizás no tengas es requests. Consíguelo con
sudo pip install requests
Crea tu archivo de configuración primero:
cp config.py.template config.py
Ejecuta el generador:
python gen.py
Para obtener más detalles sobre lo que sucede bajo el capó, cambia la variable Debug en config.py de False a True. Esto proporciona la siguiente salida...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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