dcrawl: un web crawler multihilo y multidominio

Seguimos aumentando nuestro arsenal, esta vez con un web crawler escrito en go, llamado dcrawl, que es sencillo pero a la vez inteligente, que soporta múltiples hilos para el descubrimiento de enormes listas de nombres de dominio únicos.

dcrawl toma una URL de una web como entrada y detecta todos los enlaces en el cuerpo (body) del sitio. Cada enlace encontrado se añade a la cola. Sucesivamente, cada enlace encolado se rastrea de la misma manera, ramificando en múltiples URLs según se vayan encontrando.


Cómo funciona el crawling o rastreo inteligente:
  • Ramificación limitada por un número predefinido de enlaces por cada hostname único.
  • Número máximo de nombres de host diferentes permitidos por dominio (evita subdominios que se rastreen hasta el “infierno” como por ejemplo, blogspot.com).
  • Se puede reiniciar con la misma lista de dominios - los últimos dominios guardados se agregan a la cola de URL.
  • Rastrea solo los sitios que devuelven text/html en el Content-Type de las respuestas a HEAD.
  • Recupera el cuerpo del sitio con un tamaño máximo de 1MB.
  • No guarda los dominios inaccesibles.
Cómo ejecutarlo
go build dcrawl.go
./dcrawl -url http://wired.com -out ~/domain_lists/domains1.txt -t 8
Uso
     ___                          __
  __| _/________________ __  _  _|  |
 / __ |/ ___\_  __ \__  \\ \/ \/ /  |
/ /_/ \  \___|  | \// __ \\     /|  |__
\____ |\___  >__|  (____  /\/\_/ |____/
     \/    \/           \/       v.1.0

usage: dcrawl -url URL -out OUTPUT_FILE -t THREADS

  -ms int
        maximum different subdomains for one domain (def. 10) (default 10)
  -mu int
        maximum number of links to spider per hostname (def. 5) (default 5)
  -out string
        output file to save hostnames to
  -t int
        number of concurrent threads (def. 8) (default 8)
  -url string
        URL to start scraping from
  -v bool
        verbose (default false)
Fuente: https://github.com/kgretzky/dcrawl

Comentarios