Descarga un sitio entero con wget aún cuando hayan restricciones

20
16805

¿Qué es wget?

Nada mejor que Wikipedia para explicar en que consiste esta herramienta:

GNU Wget es una herramienta de software libre que permite la descarga de contenidos desde servidores web de una forma simple. Su nombre deriva de World Wide Web (w), y de «obtener» (en inglés get), esto quiere decir: obtener desde la WWW.


Actualmente soporta descargas mediante los protocolos HTTP, HTTPS y FTP.

Entre las características más destacadas que ofrece wget está la posibilidad de fácil descarga de mirrors (espejos) complejos de forma recursiva, conversión de enlaces para la visualización de contenidos HTML localmente, soporte para proxies…

De wget hemos hablado ya bastante aquí en DesdeLinux. De hecho ya habíamos visto como descargar un sitio web completo con wget, el problema es que hoy en día los administradores no permiten siempre que cualquiera descargue todo su sitio web así sin más, no es algo que guste en realidad… y, obviamente lo entiendo. El sitio está ahí en internet para consultarlo, el lector accede a contenido de su interés y el administrador del sitio se ve beneficiado bien económicamente (por publicidad), como en visitas, etc. Si el lector descarga el sitio hacia su ordenador, no tendrá la necesidad de acceder al online para consultar algún post pasado.

Para descargar un sitio con wget es tan simple como:

wget -r -k http://www.sitio.com

  • -r : Esto indica que se descargará el sitio web completo.
  • -k : Esto indica que se convertirán los links del sitio descargado para poder verlos en ordenadores sin internet.

Ahora, el asunto se complica cuando el administrador del sitio nos la pone difícil…

¿qué restricciones pudieran existir?

La más común que podríamos encontrarnos es que solo se permite el acceso al sitio si tienes un UserAgent reconocido. O sea, el sitio reconocerá que el UserAgent que tantas páginas está descargando no es de los “normales” y por lo tanto cerrará el acceso.

También mediante el archivo robots.txt se puede especificar que wget (al igual que un montón más de aplicaciones similares) no podrá descargar según desee el cliente, pues … bueno, el administrador del sitio así lo quiere y punto 😀

¿cómo burlar estas restricciones?

Para el primer caso le estableceremos un UserAgent a wget, esto podremos hacerlo con la opción –user-agent, aquí les muestro cómo:

wget --user-agent="Mozilla/5.0 (X11; Linux amd64; rv:32.0b4) Gecko/20140804164216 ArchLinux KDE Firefox/32.0b4" -r http://www.sitio.com -k

Ahora, para burlar al robots.txt basta con hacer un exclude a ese archivo, o sea, que wget descargue el sitio y le importe nada lo que diga robots.txt :

wget --user-agent="Mozilla/5.0 (X11; Linux amd64; rv:32.0b4) Gecko/20140804164216 ArchLinux KDE Firefox/32.0b4" -r http://www.sitio.com -k -e robots=off

Ahora… hay otras opciones o parámetros que podemos usar para engañar aún más al sitio, por ejemplo, indicarle que entramos al sitio desde Google, aquí les dejo ya la línea final con todo:

wget --header="Accept: text/html" --user-agent="Mozilla/5.0 (X11; Linux amd64; rv:32.0b4) Gecko/20140804164216 ArchLinux KDE Firefox/32.0b4" --referer=http://www.google.com -r http://www.sitio.com -e robots=off -k

No es obligatorio que el sitio contenga http://www al inicio, puede ser uno directamente http:// como por ejemplo este de Geometry Dash

¿está bien hacer esto?

Eso depende… siempre hay que verlo desde los dos puntos de vista, desde el del administrador del sitio pero también desde el lector.

Por una parte a mí como administrador no me gustaría que se estén llevando una copia en HTML de mi sitio así sin más, está aquí online no por gusto, para el disfrute de todos… nuestra meta es tenerles disponible contenido interesante, que puedan aprender.

Pero, por otra parte…  hay usuarios que no tienen internet en casa, que les gustaría contar con toda la sección de Tutoriales que hemos puesto aquí… me pongo en el lugar de ellos (de hecho lo estoy, pues en casa no tengo internet) y no es agradable estar en el ordenador, tener un problema o querer hacer algo y no poder pues no se tiene acceso a la red de redes.

Si está bien o mal es cosa de cada administrador, de la realidad de cada uno… lo que más me preocuparía a mí sería el consumo de recursos que el wget provoque en el servidor, pero con un buen sistema de caché debería bastar para que el server no sufra.

internet

Conclusiones

Les pido que ahora no se pongan a estar todos descargando DesdeLinux JAJAJA!! Por ejemplo, mi novia me pidió que descargara unos trucos de Geometry Dash (algo así como Geometry Dash Cheats), no descargaré el sitio web completo, sino que simplemente abriré la página deseada y la guardaré en PDF o en HTML o algo así, eso es lo que les recomendaría a ustedes.

Si tienes algún tutorial de DesdeLinux que deseas guardar, guárdalo en tus marcadores, como HTML o PDF … pero, por uno o dos tutoriales no hace falta generar un tráfico y consumo excesivo en el servidor 😉

Bueno nada, espero les sea útil … Saludos

↓↓↓¿Te sirvió este artículo?, Vota por nosotros en los OpenAwards↓↓↓

20 COMENTARIOS

  1. Expresamente es lo que me había pasado dos veces, y era ciertamente por ello. Aunque, era por cuestiones de velocidad (casa vs universidad) que quise acceder a contenido de esa forma. 😛
    Gracias por el consejo. Saludos.

  2. Muy interesante el articulo.
    Pregunta : como se puede hacer para sitios https ?
    Donde se requiere autenticar por medio de usuario y contrasena y ademas gran parte del sitio esta escrito en java ?
    Saludos y Gracias

  3. Gracias por esa joya:
    wget –header=”Accept: text/html” –user-agent=”Mozilla/5.0 (X11; Linux i686; rv:31) Gecko/20100101 Firefox/31″ –referer=http://www.google.com -r https://launchpad.net/~linux-libre/+archive/ubuntu/rt-ppa/+files/linux-image-3.6.11-gnu-3-generic_3.6.11-gnu-3.rt25.precise1_i386.deb -k -e robots=off

    wget –header=”Accept: text/html” –user-agent=”Mozilla/5.0 (X11; Linux i686; rv:31) Gecko/20100101 Firefox/31″ –referer=http://www.google.com -r https://launchpad.net/~linux-libre/+archive/ubuntu/rt-ppa/+files/linux-headers-3.6.11-gnu-3_3.6.11-gnu-3.rt25.precise1_all.deb -k -e robots=off

    wget –header=”Accept: text/html” –user-agent=”Mozilla/5.0 (X11; Linux i686; rv:31) Gecko/20100101 Firefox/31″ –referer=http://www.google.com -r https://launchpad.net/~linux-libre/+archive/ubuntu/rt-ppa/+files/linux-headers-3.6.11-gnu-3-generic_3.6.11-gnu-3.rt25.precise1_i386.deb -k -e robots=off

  4. wget es una de esas herramientas ultrapoderosas, con un poco de programación de terminal puedes hacer tu propio robot al estilo google para comenzar a bajar el contenido de las paginas y almacenarlo en tu propia base de datos y hacer lo qu quieras despues con dicha data.

  5. Me parece muy interesante esta herramienta, nunca había puesto atención a sus parámetros, me gustaría saber si se puede descargar contenido de una pagina “X” a la cual se necesita estar loggeado para entrar, y si es que en algún lugar de este sitio “X” existe algún vídeo, también lo descargaría aunque pertenezca a un CDN diferente al sitio “X”?

    Si esto fuese posible como se protege contra un sitio contra una herramienta así?

    Saludos!

  6. Buenas NOches:

    Les escribo para una consulta. Descargué con el último comando de este artículo, casi 300MB de información.. archivos .swf, .js, .html, desde la página http://www.netacad.com/es con mi usuario de un pequeño curso que realicé en Maracay, Venezuela.

    Mi pregunta es… Habrá posibilidad de ver las animaciones flash?

    Ingreso a “Configuración Global” y las opciones que muestra ninguna me permite configurar.

    Agradezco alguna respuesta.

    Gracias de antemano!

    • tengo el mismo detalle, los .swf se descargan a medias, si consigues saltarlo me compartes info. Lo que hice de ultimo intento fue usar un spider para obtener todos los enlaces del netacad pero aun así los .swf no terminan de descargarse como debería

  7. Hola, gracias por tu tuto. Intento descargarme un blog en el que estoy invitada, con contraseña, para poderlo leer desde casa sin conexión. Uso este programa, y obviamente, tengo la contraseña del blog (wordpress), pero no sé cómo proceder. Podrías indicarme?
    Gracias con antelación y un saludo!

Dejar una respuesta