sábado, 9 de enero de 2016

Clonar un portal Moddle (y mas) con wget

Buscando una manera efectiva y rápida para clonar un sitio web, buscando la mejor herramienta tipo Teleport Pro o HTTrack, cuando un amigo me comentó que wget es bastante potente incluso para spidering/crawling. Y tanto que sí basta echar un vistazo al manual de la herramienta para darse cuenta de que wget no sólo vale para descargar un simple fichero, si no que tiene muchísimas opciones y parámetros que se pueden adaptar según el sitio web que quieras duplicar.

Sirva de ejemplo el de esta entrada con el que es posible crear un mirror de cualquier portal que use Moodle, ya sabéis, un sistema de gestión de cursos de formación. Imaginemos lo rápido que obtendríamos una copia de un curso en concreto que nos interesara para poder consultarlo offline cuando nos vamos de viaje...

Primero obtenemos la cookie ya que, evidentemente, la autenticación en Moodle se realiza mediante un formulario de login:


wget --load-cookies my-cookies.txt \
--post-data='username=YOUR_USERNAME&password=YOUR_PASSWORD&testcookies=1'
--save-cookies=my-cookies.txt --keep-session-cookies http://moodlesite.com/

Luego, con dicha cookie, comenzamos con el mirror mediante los siguientes parámetros:

wget --load-cookies my-cookies.txt --keep-session-cookies --save-cookies my-cookies.txt\
--referer=http://moodlesite.com/login/index.php -m -E -k
--reject logout*,*cal_m*,*cal_y*,post.php*,*subscribe*,help.php*,enrol.php*
--exclude-directories=/calendar http://moodlesite.com/course/view.php?id=XXX
-m: activa el mirroring. Es equivalente a ‘-r -N -l inf –no-remove-listing’
-E: si un fichero de tipo ‘application/xhtml+xml’ o ‘text/html’ es descargado y la URL no termina con la regexp ‘\.[Hh][Tt][Mm][Ll]?’, esta opción pondrá el sufijo ‘.html’
-k: después de que la descarga se complete, convierte los enlaces para hacerlos accesibles de forma local.
--exclude-directories: directorios que el crawler saltará.
--reject: indica los ficheros que wget no salvará al disco

Y básicamente esto sería lo suficiente para empezar y hacer un mirror de un portal Moodle. Luego podríamos hacer menos "ruido" modificando el user-agent, usando un proxy (Tor!), añadiendo pausas entre descargas, etc. 


wget -r -l 0 -U Mozilla -t 1 -nd -D playboy.com -A jpg,jpeg,gif,png "http://www.le-website" -e robots=off

No hay comentarios:

Publicar un comentario