GNU Wget (o simplemente Wget , anteriormente Geturl , también escrito como su nombre de paquete, wget ) es un programa informático que recupera contenido de servidores web . Es parte del Proyecto GNU . Su nombre deriva de World Wide Web y get . Admite la descarga a través de HTTP , HTTPS y FTP .
Autor (es) original (es) | Hrvoje Nikšić |
---|---|
Desarrollador (es) | Giuseppe Scrivano, Tim Rühsen, Darshit Shah |
Versión inicial | Enero de 1996 |
Lanzamiento estable | 1.21.1 [1] / 9 de enero de 2021 |
Versión de vista previa | 1.99.2 [2] / 30 de agosto de 2019 |
Repositorio | |
Escrito en | C |
Sistema operativo | Multiplataforma |
Tipo | Cliente FTP / Cliente HTTP |
Licencia | GPLv3 + [3] |
Sitio web | www |
Sus características incluyen descarga recursiva, conversión de enlaces para visualización sin conexión de HTML local y soporte para proxies. Apareció en 1996, coincidiendo con el auge de la popularidad de la Web, lo que provocó su amplio uso entre los usuarios de Unix y su distribución con la mayoría de las principales distribuciones de Linux . Escrito en C portátil , Wget se puede instalar fácilmente en cualquier sistema similar a Unix. Wget se ha adaptado 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 WARC estándar de archivo web . [4]
Se ha utilizado como base para programas gráficos como GWget para el escritorio GNOME .
Historia
Wget desciende de un programa anterior llamado Geturl por el mismo autor, [5] cuyo desarrollo comenzó a finales de 1995. El nombre cambió a Wget después de que el autor se enteró de un programa anterior de Amiga llamado GetURL, escrito por James Burton en AREXX .
Wget llenó un vacío en el software de descarga web inconsistente disponible a mediados de la década de 1990. Ningún programa puede utilizar de forma fiable HTTP y FTP para descargar archivos. Los programas existentes soportaban FTP (como NcFTP y dl) o estaban escritos en Perl , que aún no era omnipresente. Si bien Wget se inspiró en las características de algunos de los programas existentes, era compatible con HTTP y FTP y se podía construir utilizando solo las herramientas de desarrollo estándar que se encuentran en todos los sistemas Unix.
En ese momento, muchos usuarios de Unix luchaban detrás de conexiones universitarias y de acceso telefónico a Internet extremadamente lentas , lo que llevó a una creciente necesidad de un agente de descarga que pudiera lidiar con fallas transitorias de red sin la ayuda del operador humano.
En 2010, Chelsea Manning utilizó Wget para descargar 250.000 cables diplomáticos estadounidenses y 500.000 informes del ejército que se conocieron como los registros de la guerra de Irak y los registros de la guerra afgana enviados a WikiLeaks . [6]
Características
Robustez
Wget ha sido diseñado para ser robusto en conexiones de red lentas o inestables. Si una descarga no se completa debido a un problema de red , Wget automáticamente intentará continuar la descarga desde donde se detuvo y lo repetirá hasta que se haya recuperado todo el archivo. Fue uno de los primeros clientes en hacer uso del entonces nuevo Range
encabezado HTTP para admitir esta función.
Descarga recursiva
Wget puede funcionar opcionalmente como un rastreador web extrayendo recursos vinculados de páginas HTML y descargándolos en secuencia, repitiendo el proceso de forma recursiva hasta que se hayan descargado todas las páginas o se haya alcanzado una profundidad de recursividad 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 total o parcial 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 su visualización 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 FTP , donde Wget emite el LIST
comando para encontrar qué archivos adicionales descargar, repitiendo este proceso para directorios y archivos debajo del especificado en la URL superior . Se admiten comodines tipo 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 nuevos que los locales correspondientes. Esto permite duplicar fácilmente los sitios HTTP y FTP , pero se considera ineficiente y más propenso a errores en comparación con los programas diseñados para duplicar desde cero, como rsync . Por otro lado, Wget no requiere un software especial del lado del servidor para esta tarea.
No interactividad
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 al transferir una gran cantidad de datos.
Portabilidad
Escrito en un estilo de C altamente portátil con dependencias mínimas de bibliotecas de terceros, Wget requiere poco más que un compilador de C y una interfaz similar a BSD para redes TCP / IP . Diseñado como un programa de Unix invocado desde el shell de Unix , el programa se ha adaptado a numerosos entornos y sistemas similares a Unix, incluido Microsoft Windows a través de Cygwin y macOS . También está disponible como programa nativo de Microsoft Windows como uno de los paquetes de GnuWin .
Otras características
- Wget admite la descarga a través de proxies , que se implementan ampliamente para proporcionar acceso web dentro de los firewalls de la empresa y almacenar en caché y entregar rápidamente el contenido al que se accede con frecuencia.
- Hace uso de conexiones HTTP persistentes cuando están disponibles.
- IPv6 es compatible con sistemas que incluyen las interfaces adecuadas.
- SSL / TLS es compatible con descargas cifradas mediante la biblioteca OpenSSL o GnuTLS .
- Los archivos de más de 2 GiB se admiten en sistemas de 32 bits que incluyen las interfaces adecuadas.
- Es posible que se reduzca la velocidad de descarga para evitar consumir todo el ancho de banda disponible .
- Puede guardar su salida en el formato WARC estándar de archivo web , deduplicando de un archivo CDX asociado según sea necesario. [4]
Autores y derechos de autor
GNU Wget fue escrito por Hrvoje Nikšić con contribuciones de muchas otras personas, incluidos Dan Harkless, Ian Abbott y Mauro Tortonesi. Las contribuciones significativas se acreditan en el archivo de AUTORES incluido en la distribución, y todas las restantes se documentan en los registros de cambios , también incluidos con el programa. Actualmente, Wget es mantenido por Giuseppe Scrivano, Tim Rühsen y Darshit Shah. [7]
Los derechos de autor de Wget pertenecen a la Free Software Foundation , cuya política es exigir asignaciones de derechos de autor para todas las contribuciones no triviales al software GNU. [8]
Licencia
GNU Wget se distribuye bajo los términos de la Licencia Pública General GNU , versión 3 o posterior, con una excepción especial que permite la distribución de binarios vinculados a la biblioteca OpenSSL . El texto de la excepción es el siguiente: [3]
Permiso adicional bajo GNU GPL versión 3 sección 7
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 contiene partes cubiertas por los términos de las licencias OpenSSL o SSLeay, la Free Software Foundation otorga su permiso adicional para transmitir el trabajo resultante. La fuente correspondiente para una forma no fuente de dicha combinación incluirá el código fuente de las partes de OpenSSL utilizadas, así como el del trabajo cubierto.
Se espera [¿ por quién? ] que la cláusula de excepción se eliminará una vez que se modifique Wget para que también se vincule 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 GNU , versión 1.2 o posterior. La página de manual generalmente distribuida en sistemas similares a 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.
Desarrollo
Wget se desarrolla de forma abierta, y la mayoría de las decisiones de diseño normalmente se discuten en la lista de correo pública [9] seguida por los usuarios y desarrolladores. Los informes de errores y los parches se envían a la misma lista.
Contribución de la fuente
El método preferido para contribuir al código y la documentación de Wget es a través de actualizaciones de fuentes en forma de parches textuales generados por la utilidad diff . Los parches que se pretenden incluir en Wget se envían a la lista de correo [9], donde los encargados de mantenimiento los revisan. Los parches que pasan el escrutinio de los mantenedores se instalan en las fuentes. Las instrucciones sobre la creación de parches, así como las pautas de estilo, se describen en la wiki del proyecto. [10]
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 revisión a partir de la versión 1.5.3. El repositorio actualmente ejecuta Git . [11] Antes de eso, el código fuente se había alojado en (en orden inverso): Bazaar , [12] Mercurial , Subversion ya través de CVS .
Lanzamiento
Cuando se acumula una cantidad suficiente de funciones o correcciones de errores durante el desarrollo, Wget se lanza al público en general a través del sitio FTP de GNU y sus espejos. Al estar completamente a cargo de voluntarios, no hay presión externa para emitir una liberación ni hay fechas límite de liberación exigibles.
Los lanzamientos se enumeran como versiones del formato 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 del código. Un aumento del número de versión menor indica la adición de nuevas funciones 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 lo mismo que 1.11.0. Wget no utiliza la convención de números de versiones pares e impares popularizada por Linux.
Referencias populares
Wget hace una aparición en el lanzamiento de la película cinematográfica de Columbia Pictures de 2010 , The Social Network . El personaje principal, basado libremente en el cofundador de Facebook , Mark Zuckerberg , usa Wget para agregar fotos de estudiantes de varios directorios de instalaciones de vivienda de la Universidad de Harvard .
Lanzamientos notables
Los siguientes lanzamientos representan hitos notables en el desarrollo de Wget. Las características enumeradas al lado de cada versión se editan por brevedad y no constituyen información completa sobre la versión, que está disponible en el archivo NEWS distribuido con Wget. [5]
- Geturl 1.0, lanzado en enero de 1996, fue el primer lanzamiento disponible públicamente. El primer anuncio en inglés se remonta a una publicación de noticias de Usenet, que probablemente se refiere a Geturl 1.3.4 lanzado en junio. [13]
- Wget 1.4.0, lanzado en noviembre de 1996, fue la primera versión en usar el nombre Wget . También fue la primera versión distribuida bajo los términos de GNU GPL , ya que Geturl se distribuyó bajo una licencia ad hoc sin garantía .
- Wget 1.4.3, lanzado en febrero de 1997, fue la primera versión lanzada como parte del proyecto GNU con los derechos de autor asignados a la FSF .
- Wget 1.5.3, lanzado en septiembre de 1998, fue un hito en la popularidad del programa. Esta versión se incluyó con muchas distribuciones basadas en Linux , lo que expuso el programa a una audiencia mucho más amplia.
- Wget 1.6, lanzado en diciembre de 1999, incorporó muchas correcciones de errores para la versión (para entonces obsoleta) 1.5.3, en gran parte gracias al esfuerzo de Dan Harkless.
- Wget 1.7, lanzado en junio de 2001, introdujo el soporte SSL , las cookies y las conexiones persistentes .
- Wget 1.8, lanzado en diciembre de 2001, agregó limitación de ancho de banda , nuevos indicadores de progreso y el recorrido del gráfico de hipervínculo en primer lugar en amplitud .
- Wget 1.9, lanzado en octubre de 2003, incluía compatibilidad con IPv6 experimental y capacidad para enviar datos por POST a servidores HTTP.
- Wget 1.10, publicada en junio de 2005, introdujo soporte de archivos grandes , IPv6 apoyo en sistemas de doble familia, NTLM autorización, y SSL mejoras. El mantenimiento fue asumido por Mauro Tortonesi.
- Wget 1.11, lanzado en enero de 2008, pasó a la versión 3 de la Licencia Pública General GNU y agregó soporte preliminar para el
Content-Disposition
encabezado, que los scripts CGI suelen utilizar 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. - Wget 1.12, lanzado en septiembre de 2009, agregó soporte para analizar URL de contenido CSS en la web y para manejar identificadores de recursos internacionalizados .
- Wget 1.13, lanzado en agosto de 2011, admite HTTP / 1.1, solucionó algunos problemas de portabilidad y usó la biblioteca GnuTLS de forma predeterminada para conexiones seguras. [14]
- Wget 1.14, lanzado en agosto de 2012, mejoró el soporte para TLS y agregó soporte para RFC 2617 Digest Access Authentication.
- Wget 1.15, lanzado en enero de 2014, agregado: solo https y compatibilidad con Perfect-Forward Secrecy.
- Wget 1.16, lanzado en octubre de 2014, cambió la salida de la barra de progreso predeterminada, cerró CVE - 2014-4877 , se agregó soporte para libpsl para verificar los dominios de cookies, y se introdujo start-pos para permitir el inicio de descargas desde una posición específica.
- Wget 1.17, lanzado en noviembre de 2015, eliminó FTP pasivo a respaldo activo debido a problemas de privacidad, agregó soporte para FTPS y para —si se modifica desde entonces.
- Wget 1.18, lanzado en junio de 2016, resolvió el CVE - 2016-4971 y se agregaron las opciones "--bind-dns-address" y "--dns-servers".
- Wget 1.19, lanzado en febrero de 2017, agregó nuevas opciones para procesar un archivo Metalink; la versión 1.19.1 agregó la opción — retry-on-http-error para reintentar una descarga si el servidor Web responde con un código de estado HTTP dado.
- Wget 1.20, publicada en noviembre de 2018, añadió
--retry-on-host-error
para más fiabilidad y--accept-regex
,--reject-regex
opciones para recuperar FTP recursivas.
Obras relacionadas
GWget
GWget es una interfaz gráfica de usuario de software gratuito para Wget. Está desarrollado por David Sedeño Fernández y forma parte del proyecto GNOME . GWget es compatible con todas las funciones principales de Wget, así como con las descargas paralelas. [15]
Cliget
Cliget es un descargador de complementos de Firefox de código abierto que utiliza Curl , Wget y Aria2. Está desarrollado por Zaid Abdulla. [16] [17] [18]
Wget2
Actualmente se está desarrollando GNU Wget2. [19] [20] Tendrá muchas mejoras en comparación con Wget, particularmente, en muchos casos Wget2 se descarga mucho más rápido que Wget1.x debido al soporte de los siguientes protocolos y tecnologías: [21]
- HTTP / 2 ,
- Compresión HTTP ,
- conexiones paralelas,
- uso del encabezado HTTP If-Modified-Since ,
- TCP Fast Open .
Ver también
- rizo
- HTTrack
- lftp
- Rastreador web
- Comando PowerShell iwr Invoke-WebRequest
Referencias
- ^ Shah, Darshit (9 de enero de 2021). "wget-1.21.1 lanzado [estable]" . La Fundación del Software Libre . Consultado el 15 de enero de 2021 .
- ^ "Lanzamientos · Wget / wget2 · GitLab" . La Fundación del Software Libre. 30 de agosto de 2019 . Consultado el 10 de febrero de 2020 .
- ^ a b "Archivo README" . Consultado el 1 de diciembre de 2014 .
- ^ a b Scrivano, Giuseppe (6 de agosto de 2012). "GNU wget 1.14 publicado" . Lanzamiento de GNU wget 1.14 . Free Software Foundation, Inc . Consultado el 25 de febrero de 2016 .
- ^ a b "GNU Wget NEWS - historial de cambios visibles para el usuario" . Svn.dotsrc.org. 20 de marzo de 2005. Archivado desde el original el 13 de marzo de 2007 . Consultado el 8 de diciembre de 2012 .
Wget 1.4.0 [antes conocido como Geturl] es una extensa reescritura de Geturl.
- ^ Sanger, David y Eric Schmitt (8 de febrero de 2014). "Snowden utilizó una herramienta de bajo costo para ser la mejor NSA" The New York Times . Consultado el 10 de febrero de 2014 .
- ^ "Wget - Proyecto GNU" . 30 de noviembre de 2018 . Consultado el 30 de noviembre de 2018 .
- ^ "Por qué la FSF recibe asignaciones de derechos de autor de los contribuyentes - Proyecto GNU - Free Software Foundation (FSF)" . Gnu.org . Consultado el 8 de diciembre de 2012 .
- ^ a b "Telar de Gmane" . News.gmane.org . Consultado el 8 de diciembre de 2012 .
- ^ "PatchGuidelines - The Wget Wgiki" . Wget.addictivecode.org. 22 de septiembre de 2009 . Consultado el 8 de diciembre de 2012 .
- ^ "RepositoryAccess" . 31 de julio de 2012 . Consultado el 7 de junio de 2013 .
- ^ "RepositoryAccess" . 22 de mayo de 2010 . Consultado el 20 de junio de 2010 .
- ^ Niksic, Hrvoje (24 de junio de 1996). "Geturl: Software para descarga no interactiva" . comp.infosystems.www.announce . Consultado el 17 de noviembre de 2016 .
- ^ Archivo Wget NEWS
- ^ Página de inicio de GWget
- ^ "zaidka / cliget" . GitHub . Consultado el 25 de agosto de 2016 .
- ^ "Conoce al desarrollador de cliget :: Complementos para Firefox" . addons.mozilla.org . Consultado el 25 de agosto de 2016 .
- ^ "cliget" . addons.mozilla.org . Consultado el 25 de agosto de 2016 .
- ^ "wget" . gnu.org .
- ^ "Confirma · maestro · Wget / Wget2" . GitLab .
- ^ "wget2" . GitLab .
enlaces externos
- Página web oficial