Descargar una página web entera con wget

Si se quiere descargar una web entera para verla offline o por si va a dejar de existir, el siguiente comando permite hacer una copia de ella:

wget \
--recursive \
--no-clobber \
--page-requisites \
--html-extension \
--convert-links \
--restrict-file-names=windows \
--domains dominio.com \
--no-parent \
--e robots=off \
http://dominio.com/a/b/

Esto haría una copia en HTML de http://dominio.com/a/b/ sin subir al dominio principal (http://dominio.com/)

Fuente: http://www.linuxjournal.com/content/downloading-entire-web-site-wget

Cookies para VBulletin con wget

Hay numerosas páginas con enlaces a Megaupload, Rapidshare, etc, donde sólo se pueden ver dichos enlaces si estás logueado. Si se quiere hacer un script que filtre los enlaces de las descargas para así poder copiarlos y pegarlos en tu gestor de descargas preferido, es necesario usar cookies con wget.

En el siguiente ejemplo he usado una página con el foro VBulletin. Primero hay que conseguir el post-data para pasárselo a wget. Para ello, usaré el sniffer WireShark para obtener el parámetro post-data.

Al ejecutar el WireShark, debemos identificarnos en la página en cuestión y buscar el siguiente dato:

wireshark

Ahí lo tenemos, vb_login_username=….

Ahora debemos guardar la cookie con wget cuando ejecutemos este login sobre el foro:

wget --save-cookies cookies.tmp --keep-session-cookies --post-data='vb_login_username=patata&cookieuser=1&vb_login_password=&s=&securitytoken=guest&do=login&vb_login_md5password=2j5l29gaksd&vb_login_md5password_utf=23lkjga98ljga09JDlsf9s' http://www.foroencuestion.com/login.php

Es importante que se haga sobre login.php

Ya tenemos la cookie en cookies.tmp y ahora se puede ejecutar wget dentro de nuestro script para que se identifique y obtena los enlaces a filtrar:

wget --load-cookies cookies.tmp http://www.foroencuestion.com/showthread.php?t=228