GNU Wget

Revisión del 12:10 19 mar 2012 de Enrique oni (discusión | contribuciones) (Revertidos los cambios de 103 (disc.) a la última edición de Anahis may.jc)
Wget
Información sobre la plantilla
Wget.jpeg
Gestor de descarga para entornos GNU/LINUX
Sistemas Operativos compatiblesGNU/Linux, Microsoft Windows, Mac OS X
IdiomaMultilingüe
LicenciaGPL
Sitio web
www.gnu.org/software/wget/

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.

Su primera versión se lanzó en 1996, coincidiendo con el boom de popularidad de la web. Es un programa utilizado a través de línea de comandos, principalmente en sistemas de UNIX/Linux. Escrito en el lenguaje de programación C, Wget puede ser fácilmente instalado en sistemas derivados de UNIX, y ha sido portado a muchas interfaces gráficas de usuario (GUI) y aplicaciones gráficas de descarga como Gwget[1] para GNOME, wGetGUI[2] y VisualWget[3] para Microsoft Windows, Wget 1.10.2r2[4] para Mac OS X.

Características

Robustez

Wget ha sido diseñado para la robustez en conexiones de red lentas o inestables. Si una descarga no se completa debido a un problema en la red, Wget automáticamente tratará de seguir descargado desde donde acabó, y repetir el proceso hasta que el archivo completo haya sido recuperado. Fue uno de los primeros clientes que hizo uso de la entonces nueva Gama HTTP de cabecera (header), para soportar está característica.

Descarga recurrente

Wget opcionalmente puede trabajar como un web crawler extrayendo recursos enlaces de las páginas web HTML y descargarlas en la secuencia, repitiendo el proceso recursivamente hasta que todas las páginas hayan sido descargadas o hasta que haya sido alcanzada una profundidad de repetición máxima especificada por el usuario. Las páginas descargadas son guardadas en una estructura de directorio que se parece a un servidor remoto. Esta descarga recurrente permite hacer una copia exacta de cualquier sistema de archivos parcial o completamente de un sitio web vía HTTP. Los enlaces de sitios web HTML descargados pueden ser ajustados para indicar el punto o zona de descarga. Cuando se realiza esta clase de copia exacta del sistema de archivos (en inglés mirroring) automática de un sitio web, Wget soporta el estándar de exclusión de robots.

Portabilidad

Escrito en una forma que permita la portabilidad, en lenguaje C y con la menor cantidad posible de bibliotecas de terceros, Wget requiere no mucho más que un compilador C y una interfaz tipo BSD para usar la red con TCP/IP. Diseñado como un programa Unix invocado desde un Unix shell, el programa ha sido portado a numerosos sistemas y ambientes tipo Unix, tal como Cygwin y Mac OS X, así como también a sistemas Microsoft Windows.

Otras características

  • Wget soporta descargas a través de proxies, los cuales son ampliamente desplegados para proporcionar acceso web dentro de cortafuegos de empresas y al caché y rápidamente entregar contenido de frecuencia de acceso.
  • Hace uso de conexiones persistentes de HTTP donde están disponibles.
  • Soporte de IPv6 en sistemas que incluyen los interfaces apropiados.
  • SSL/TLS es soportado para cifrado de descarga usando la biblioteca OpenSSL.
  • Archivos más grandes a 2 Gb son soportados en sistemas de 32 bits que incluyan los interfaces apropiados.
  • La velocidad de descarga puede ser limitada para evitar consumir toda el ancho de banda disponible.

Ficheros de Configuración

Los ficheros de configuración sirven para personalizar algunas opciones del wget de forma que no necesitemos introducirlas por línea de comandos.

   ~/.wgetrc             = Configuración personal de un usuario
   /usr/local/etc/wgetrc = Configuración Global
   /etc/wgetrc           = Configuración Global (en algunas distribuciones)

Lo usual, si eres un usuario normal, es que copies el fichero de configuración global a tu directorio home y lo edites completándolo con tus preferencias

Basico

# Descarga del título de página ejemplo.com a un archivo
# llamado "index.html".
wget http://www.ejemplo.com/
# Descarga desde el código fuente con Wget de un sitio GNU ftp.
wget ftp://ftp.gnu.org/pub/gnu/wget/wget-1.10.2.tar.gz

El uso más complejo incluye descargas automáticas desde múltiples URLs en un directorio con jerarquía:

# Descarga del título de página ejemplo.com , acompañado con
# las imágenes y el ''estilo de cascada'' (css) necesario para mostrar la página, y convertir las
# URLs dentro para referirse a los contenidos disponibles a nivel local.
wget -p -k http://www.ejemplo.com/
# Descarga de todo el contenido de ejemplo.com
wget -r -l 0 http://www.example.com/

Avanzado

# Descargar un espejo de las erratas (errores) para un libro que usted/tú justo compró.
# Seguir todos los enlaces locales recursivamente y hacer apropiados los archivos
# para verlos desconectado.
# Usar una espera arbitraria (al azar) de 0 a 5 segundos entre los archivos.
# Cuando hay un fracaso, reintentar hasta 7 veces con 14 segundos 
# entre cada reintento.
# Poner al agente de usuario a Firefox en Windows XP e ignorar exclusiones.
# Recoger resultados de acceso al archivo local "myLog.log"
wget -t 7 -w 5 --waitretry=14 --random-wait --user-agent="Mozilla/5.0 
     (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 
      Firefox/1.5.0.1" -m -k -K -e robots=off 
      http://www.oreilly.com/catalog/upt3/errata/ -o ./myLog.log
# Recoger sólo los enlaces específicos listados linea a linea en 
# el archivo local "my_movies.txt" 
# Usar una espera arbitraria de 0 a 33 segundos entre archivos.
# Cuando hay un fracaso, reintente para hasta 22 veces con 48 segundos 
# entre cada reintento. No envíe ningún agente de usuario en absoluto. Ignore exclusiones de robot.
# Colocar todos los archivos capturados en el directorio "/movies" 
# y recoger los resultados de acceso al archivo local "my_movies.log"
# Bueno sólo para descargar imágenes específicas conocidas u otros archivos.
wget -t 22 --waitretry=48 --wait=33 --random-wait --user-agent=""
     -e robots=off -o ./my_movies.log -P/movies -i ./my_movies.txt
#Usando wget para descargar contenido protegido por referer y cookies.
# obtener la url base y guardar sus cookies en el archivo 
# obtener el contenido protegido usando cookies almacenadas 
wget --cookies=on --keep-session-cookies --save-cookies=cookie.txt http://first_page
wget --referer=http://first_page --cookies=on --load-cookies=cookie.txt --keep-session-cookies --save-cookies=cookie.txt http://second_page
#Sitio web espejo a una copia estática para un navegador local.
#Esto quiere decir que todos los enlaces serán cambiados para apuntar a los archivos locales.
#Nota --html-extension convertirá cualquier archivo CGI, ASP O PHP generado a HTML (o algo más no .html).
wget --mirror -w 2 -p --html-extension --convert-links -P <dir> http://www.yourdomain.com

Extremo

# Bbusca archivos de música mp3 desde una lista de sitios que previamente hayas definido en sitiosmp3.txt, recuerda, un renglón por cada sitio.

wget -r -l1 -H -t1 -nd -N -np -A.mp3 -erobots=off -i sitiosmp3.txt

Veámoslo por partes:

* [-r -l1] recursivo en solo un nivel, solo buscará un nivel en cada subdirectorio que encuentre por sitio.
* [-H] si dentro del sitio encuentra un enlace externo, que lo siga, ya que posiblemente lleve a otro sitio de descarga de múscia.
* [-t1] -t es igual --tries, solo hará un intento de conexión, si no lo logra continua al siguiente sitio.
* [-nd] indica no crear subdirectorios para cada archivo descargado, es decir, todo nos lo deja en el mismo lugar.
* [-N] conserva la fecha y hora (timestamp) del archivo original que se descargue, de otro modo pondría la fecha y hora de nuestro sistema.
* [-np] no parent, no seguir enlaces a directorios superiores, solo del actual y uno hacía abajo, por -r -l1
* [-A.mp3] -A indica a wget el tipo de archivo a descargar solamente, en este caso solo "mp3".
* [-erobots=off] esto evita que wget ignore los archivos 'robots.txt' que pudiera haber, ya que puede ser que dentro de estos archivos haya indicaciones de que subdirectorios los buscadores no deben hurgar (incluyendo a wget). Con esto lo evitamos y buscamos en todo el nivel.
* [-i sitiosmp3.txt] el archivo con la lista (hecha a tu gusto, con unos cuantos o decenas de sitios de música) de los sitios desde donde buscar "mp3" y descargarlos.

Si ejecutas este comando de manera diaria o a través de un cron entonces se descargará la música, y gracias a la marca de tiempo solo descargará los que sean más nuevos que el original.

Referencias

  1. Gwget (en inglés).
  2. wGetGUI (en inglés).
  3. VisualWget (en inglés).
  4. Wget para Mac OS X (en inglés).

Enlaces externos