GNU Wget (o simplemente Wget , anteriormente Geturl , también escrito como el nombre de su paquete, wget ) es un programa informático que recupera contenido de servidores web . Forma parte del Proyecto GNU . Su nombre deriva de " World Wide Web " y " get ". Admite descargas mediante HTTP , HTTPS y FTP .
Entre sus características destacan la descarga recursiva, la conversión de enlaces para visualización offline de HTML local y soporte para proxies. Apareció en 1996, coincidiendo con el boom de popularidad de la Web, provocando su amplio uso entre los usuarios de Unix y su distribución con la mayoría de las principales distribuciones Linux . Wget está escrito en C , y puede instalarse fácilmente en cualquier sistema tipo Unix. Wget ha sido portado a Microsoft Windows , macOS , OpenVMS , HP-UX , AmigaOS , MorphOS y Solaris . Desde la versión 1.14, Wget ha podido guardar su salida en el formato estándar de archivado web WARC . [3]
Wget desciende de un programa anterior llamado Geturl del mismo autor, [4] cuyo desarrollo comenzó a fines de 1995. El nombre cambió a Wget después de que el autor se dio cuenta de un programa Amiga anterior llamado GetURL, escrito por James Burton en AREXX .
Wget llenó un vacío en el inconsistente software de descarga web disponible a mediados de los años 90. Ningún programa podía usar de manera confiable HTTP y FTP para descargar archivos. Los programas existentes admitían FTP (como NcFTP y dl) o estaban escritos en Perl , que aún no era omnipresente. Si bien Wget se inspiró en características de algunos de los programas existentes, admitía HTTP y FTP y podía crearse utilizando solo las herramientas de desarrollo estándar que se encuentran en todos los sistemas Unix.
En ese momento, muchos usuarios de Unix luchaban con conexiones a Internet universitarias y de acceso telefónico extremadamente lentas , lo que generó una creciente necesidad de un agente de descarga que pudiera lidiar con fallas transitorias de la red sin asistencia del operador humano.
Wget ha sido diseñado para ofrecer robustez en conexiones de red lentas o inestables. Si una descarga no se completa debido a un problema de red , Wget intentará automáticamente continuar la descarga desde donde la dejó y repetirá el proceso hasta que se haya recuperado todo el archivo. Fue uno de los primeros clientes en utilizar el nuevo Range
encabezado HTTP para admitir esta función.
Wget puede funcionar opcionalmente como un rastreador web extrayendo recursos vinculados desde páginas HTML y descargándolos en secuencia, repitiendo el proceso recursivamente hasta que se hayan descargado todas las páginas o se haya alcanzado una profundidad de recursión máxima especificada por el usuario. Las páginas descargadas se guardan en una estructura de directorio similar a la del servidor remoto. Esta "descarga recursiva" permite la duplicación parcial o completa de sitios web a través de HTTP. Los enlaces en las páginas HTML descargadas se pueden ajustar para que apunten a material descargado localmente para verlo sin conexión . Al realizar este tipo de duplicación automática de sitios web, Wget admite el estándar de exclusión de robots (a menos que se utilice la opción ).-e robots=off
La descarga recursiva también funciona con FTPLIST
, donde Wget emite el comando para encontrar qué archivos adicionales descargar y repite este proceso para los directorios y archivos que se encuentren debajo del especificado en la URL superior . Se admiten comodines similares a los de Shell cuando se solicita la descarga de URL de FTP.
Al descargar de forma recursiva a través de HTTP o FTP , se puede indicar a Wget que inspeccione las marcas de tiempo de los archivos locales y remotos, y que descargue solo los archivos remotos más recientes que los locales correspondientes. Esto permite una fácil duplicación de sitios HTTP y FTP , pero se considera ineficiente y más propenso a errores en comparación con los programas diseñados para la duplicación desde cero, como rsync . Por otro lado, Wget no requiere un software especial del lado del servidor para esta tarea.
Wget no es interactivo en el sentido de que, una vez iniciado, no requiere la interacción del usuario y no necesita controlar un TTY , pudiendo registrar su progreso en un archivo separado para su posterior inspección. Los usuarios pueden iniciar Wget y cerrar sesión , dejando el programa desatendido. Por el contrario, la mayoría de los navegadores web con interfaz de usuario gráfica o de texto requieren que el usuario permanezca conectado y reinicie manualmente las descargas fallidas, lo que puede ser un gran obstáculo cuando se transfieren muchos datos.
Escrito en un estilo de C altamente portable con dependencias mínimas de bibliotecas de terceros, Wget requiere poco más que un compilador de C y una interfaz tipo BSD para redes TCP/IP . [ cita requerida ] Diseñado como un programa Unix invocado desde el shell de Unix , el programa ha sido portado a numerosos entornos y sistemas similares a Unix, incluidos Microsoft Windows a través de Cygwin y macOS . También está disponible como un programa nativo de Microsoft Windows como uno de los paquetes GnuWin .
GNU Wget fue escrito por Hrvoje Nikšić con contribuciones de muchas otras personas, incluyendo Dan Harkless, Ian Abbott y Mauro Tortonesi. Las contribuciones significativas se acreditan en el archivo AUTHORS incluido en la distribución, y todas las restantes están documentadas en los registros de cambios , también incluidos con el programa. Actualmente, Wget es mantenido por Giuseppe Scrivano, Tim Rühsen y Darshit Shah. [5]
Los derechos de autor de Wget pertenecen a la Free Software Foundation , cuya política es exigir cesiones de derechos de autor para todas las contribuciones no triviales al software GNU. [6]
GNU Wget se distribuye bajo los términos de la Licencia Pública General de GNU , versión 3 o posterior, con una excepción especial que permite la distribución de binarios vinculados con la biblioteca OpenSSL . El texto de la excepción es el siguiente: [2]
Permiso adicional bajo la sección 7 de la GNU GPL versión 3
Si modifica este programa, o cualquier trabajo cubierto, vinculándolo o combinándolo con la biblioteca OpenSSL del proyecto OpenSSL (o una versión modificada de esa biblioteca), que contenga partes cubiertas por los términos de las licencias OpenSSL o SSLeay, la Free Software Foundation le otorga permiso adicional para transmitir el trabajo resultante. El código fuente correspondiente a una forma no fuente de dicha combinación deberá incluir el código fuente de las partes de OpenSSL utilizadas, así como el del trabajo cubierto.
Se espera [¿ quién lo espera? ] que la cláusula de excepción se elimine una vez que Wget se modifique para vincularse también con la biblioteca GnuTLS .
La documentación de Wget , en forma de manual de referencia de Texinfo , se distribuye bajo los términos de la Licencia de Documentación Libre de GNU , versión 1.2 o posterior. La página del manual que se distribuye habitualmente en sistemas tipo Unix se genera automáticamente a partir de un subconjunto del manual de Texinfo y se rige por los términos de la misma licencia.
Wget se desarrolla de forma abierta y la mayoría de las decisiones de diseño se suelen discutir en la lista de correo pública [7], seguida por los usuarios y los desarrolladores. Los informes de errores y los parches se envían a la misma lista.
El método preferido para contribuir al código y la documentación de Wget es a través de actualizaciones de código fuente en forma de parches de texto generados por la utilidad diff . Los parches que se pretende incluir en Wget se envían a la lista de correo [7] donde son revisados por los mantenedores. Los parches que pasan el escrutinio de los mantenedores se instalan en los códigos fuente. Las instrucciones sobre la creación de parches, así como las pautas de estilo, se describen en la wiki del proyecto. [8]
El código fuente también se puede rastrear a través de un repositorio de control de versiones remoto que aloja el historial de revisiones a partir de la versión 1.5.3. El repositorio está ejecutando actualmente Git . [9] Antes de eso, el código fuente había estado alojado en (en orden inverso): Bazaar , [10] Mercurial , Subversion y a través de CVS .
Cuando se acumula una cantidad suficiente de características o correcciones de errores durante el desarrollo, Wget se lanza al público general a través del sitio FTP de GNU y sus réplicas. Al estar completamente administrado por voluntarios, no hay presión externa para publicar una versión ni hay plazos de publicación obligatorios.
Las versiones se numeran como versiones de la forma de major.minor[.revision] , como Wget 1.11 o Wget 1.8.2 . Un aumento del número de versión principal representa cambios grandes y posiblemente incompatibles en el comportamiento de Wget o un rediseño radical de la base de código. Un aumento del número de versión secundaria designa la incorporación de nuevas características y correcciones de errores. Una nueva revisión indica una versión que, en comparación con la revisión anterior, solo contiene correcciones de errores. Se omite la revisión cero, lo que significa que, por ejemplo, Wget 1.11 es igual a 1.11.0. Wget no utiliza la convención de número de versión par-impar popularizada por Linux.
Wget aparece en la película The Social Network , estrenada en 2010 por Columbia Pictures . El personaje principal, una versión un tanto ficticia del cofundador de Facebook , Mark Zuckerberg , utiliza Wget para recopilar fotos de estudiantes de varios directorios de residencias de la Universidad de Harvard .
Las siguientes versiones representan hitos importantes en el desarrollo de Wget. Las características que aparecen junto a cada versión se han editado para abreviar y no constituyen información completa sobre la versión, que está disponible en el archivo NEWS distribuido con Wget. [4]
Content-Disposition
suelen usar para indicar el nombre de un archivo para descargar. También se realizaron mejoras relacionadas con la seguridad en el código de autenticación HTTP. Micah Cowan se hizo cargo del mantenimiento del proyecto.--retry-on-host-error
, para mayor confiabilidad --accept-regex
, --reject-regex
opciones para recuperaciones FTP recursivas.GNU Wget2 2.0.0 se lanzó el 26 de septiembre de 2021. Tiene licencia GPL-3.0 o posterior y está encapsulado en Libwget, que tiene licencia LGPL-3.0 o posterior . [14] Tiene muchas mejoras en comparación con Wget, en particular, en muchos casos Wget2 se descarga mucho más rápido que Wget1.x debido al soporte de los siguientes protocolos y tecnologías: [15]
GWget es una interfaz gráfica de usuario de software libre para Wget. Fue desarrollada por David Sedeño Fernández basándose en la pila de software GNOME . GWget admite todas las características principales de Wget, así como también descargas paralelas. [16]
Cliget es un descargador de complementos de código abierto para Firefox que utiliza Curl , Wget y Aria2. Fue desarrollado por Zaid Abdulla. [17] [18] [19]
Existen clones de GNU Wget pensados para sistemas embebidos , que suelen estar limitados en memoria y almacenamiento. Soportan sus opciones más básicas, normalmente limitadas a la descarga.
Wget 1.4.0 [antes conocido como Geturl] es una reescritura extensa de Geturl.