0% encontró este documento útil (0 votos)
100 vistas12 páginas

Comando WGET

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 12

¿Qué es el comando wget?

El comando wget es una popular utilidad de línea de comandos de Unix / Linux para obtener el
contenido de la web. Es de uso gratuito y proporciona una forma no interactiva de descargar archivos
de la web. El comando wget es compatible con los protocolos HTTPS, HTTP y FTP listos para usar.
Además, también puede usar proxies HTTP con él.

¿Cómo te ayuda a solucionar problemas?


Hay muchas maneras.
Como administrador de sistemas, la mayor parte del tiempo trabajará en un terminal y, al solucionar
problemas relacionados con la aplicación web, es posible que no desee verificar toda la página, sino
solo la conectividad. O desea verificar los sitios web de la intranet. O desea descargar una determinada
página para verificar el contenido.
wget no es interactivo, lo que significa que puede ejecutarlo en segundo plano incluso cuando está
desconectado. Puede haber muchos casos en los que sea esencial que se desconecte del sistema incluso
cuando esté recuperando archivos de la web. Al fondo, el wget se ejecutará y finalizará su trabajo
asignado.
También se puede utilizar para obtener el sitio web completo en sus máquinas locales. Puede seguir
enlaces en XHTML y HTML páginas para crear una versión local. Para ello, tiene que descargar la
página de forma recursiva. Esto es muy útil, ya que puede usarlo para descargar páginas o sitios
importantes para verlos sin conexión.
Veámoslos en acción. La sintaxis del wget es la siguiente.
wget [option] [URL]

Descarga una página web


Intentemos descargar una página. Ejemplo: github.com
wget github.com
Si la conectividad está bien, descargará la página de inicio y mostrará el resultado como se muestra a
continuación.
root@trends:~# wget github.com
URL transformed to HTTPS due to an HSTS policy
--2020-02-23 10:45:52-- https://github.com/
Resolving github.com (github.com)... 140.82.118.3
Connecting to github.com (github.com)|140.82.118.3|:443...
connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’

index.html [ <=>
] 131.96K --.-KB/s in 0.04s
2020-02-23 10:45:52 (2.89 MB/s) - ‘index.html’ saved [135126]

root@trends:~#

Descarga varios archivos


Útil cuando tienes que descargar varios archivos a la vez. Esto puede darle una idea sobre la
automatización de la descarga de archivos a través de algunos scripts.
Intentemos descargar archivos Python 3.8.1 y 3.5.1.
wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
Entonces, como puede adivinar, la sintaxis es la siguiente.
wget URL1 URL2 URL3
Solo tienes que asegurarte de dejar espacio entre las URL.

Limitar la velocidad de descarga


Sería útil cuando desee comprobar cuánto tiempo tarda su archivo en descargarse en diferentes anchos
de banda.
Usando el patrón de velas del --limit-rate opción, puede limitar la velocidad de descarga.
Aquí está el resultado de descargar el archivo Nodejs.
root@trends:~# wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-
linux-x64.tar.xz
--2020-02-23 10:59:58-- https://nodejs.org/dist/v12.16.1/node-
v12.16.1-linux-x64.tar.xz
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46,
2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443...
connected.
HTTP request sent, awaiting response... 200 OK
Length: 14591852 (14M) [application/x-xz]
Saving to: ‘node-v12.16.1-linux-x64.tar.xz’

node-v12.16.1-linux-x64.tar.xz 100%
[==================================================================
=========================>] 13.92M --.-KB/s in 0.05s

2020-02-23 10:59:58 (272 MB/s) - ‘node-v12.16.1-linux-x64.tar.xz’


saved [14591852/14591852]
Se tardaron 0.05 segundos en descargar archivos de 13.92 MB. Ahora, intentemos limitar la velocidad a
500K.
root@trends:~# wget --limit-rate=500k
https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
--2020-02-23 11:00:18-- https://nodejs.org/dist/v12.16.1/node-
v12.16.1-linux-x64.tar.xz
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46,
2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443...
connected.
HTTP request sent, awaiting response... 200 OK
Length: 14591852 (14M) [application/x-xz]
Saving to: ‘node-v12.16.1-linux-x64.tar.xz.1’

node-v12.16.1-linux-x64.tar.xz.1 100%
[==================================================================
=========================>] 13.92M 501KB/s in 28s

2020-02-23 11:00:46 (500 KB/s) - ‘node-v12.16.1-linux-x64.tar.xz.1’


saved [14591852/14591852]
La reducción del ancho de banda tardó más en descargarse: 28 segundos. Imagínese, sus usuarios se
quejan de una descarga lenta y usted sabe que el ancho de banda de su red es bajo. Puedes probar
rápidamente --limit-rate para simular el problema.

Descargar en segundo plano


La descarga de archivos grandes puede llevar el tiempo o el ejemplo anterior en el que también desea
establecer el límite de velocidad. Esto es lo esperado, pero ¿qué pasa si no quiere mirar su terminal?
Bueno, puedes usar -b argumento para iniciar el wget en segundo plano.
root@trends:~# wget -b https://slack.com
Continuing in background, pid 25430.
Output will be written to ‘wget-log.1’.
root@trends:~#

Ignorar error de certificado


Esto es útil cuando necesita verificar aplicaciones web de intranet que no tienen el certificado
adecuado. De forma predeterminada, wget arrojará un error cuando un certificado no sea válido.
root@trends:~# wget https://expired.badssl.com/
--2020-02-23 11:24:59-- https://expired.badssl.com/
Resolving expired.badssl.com (expired.badssl.com)... 104.154.89.105
Connecting to expired.badssl.com (expired.badssl.com)|
104.154.89.105|:443... connected.
ERROR: cannot verify expired.badssl.com's certificate, issued by
‘CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA
Limited,L=Salford,ST=Greater Manchester,C=GB’:
Issued certificate has expired.
To connect to expired.badssl.com insecurely, use `--no-check-
certificate'.
El ejemplo anterior es para la URL donde caducó el certificado. Como puede ver, ha sugerido usar
--no-check-certificate que ignorará cualquier validación de certificado.
root@trends:~# wget https://untrusted-root.badssl.com/ --no-check-
certificate
--2020-02-23 11:33:45-- https://untrusted-root.badssl.com/
Resolving untrusted-root.badssl.com (untrusted-root.badssl.com)...
104.154.89.105
Connecting to untrusted-root.badssl.com (untrusted-
root.badssl.com)|104.154.89.105|:443... connected.
WARNING: cannot verify untrusted-root.badssl.com's certificate,
issued by ‘CN=BadSSL Untrusted Root Certificate
Authority,O=BadSSL,L=San Francisco,ST=California,C=US’:
Self-signed certificate encountered.
HTTP request sent, awaiting response... 200 OK
Length: 600 [text/html]
Saving to: ‘index.html.6’

index.html.6 100%
[==================================================================
=========================>] 600 --.-KB/s in 0s

2020-02-23 11:33:45 (122 MB/s) - ‘index.html.6’ saved [600/600]

root@trends:~#
Genial, ¿no es así?

Encabezado de respuesta HTTP


Vea el encabezado de respuesta HTTP de un sitio determinado en la terminal.
Usar -S imprimirá el encabezado, como puede ver a continuación para Coursera.
root@trends:~# wget https://www.coursera.org -S
--2020-02-23 11:47:01-- https://www.coursera.org/
Resolving www.coursera.org (www.coursera.org)... 13.224.241.48,
13.224.241.124, 13.224.241.82, ...
Connecting to www.coursera.org (www.coursera.org)|
13.224.241.48|:443... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 511551
Connection: keep-alive
Cache-Control: private, no-cache, no-store, must-revalidate, max-
age=0
Date: Sun, 23 Feb 2020 11:47:01 GMT
etag: W/"7156d-WcZHnHFl4b4aDOL4ZSrXP0iBX3o"
Server: envoy
Set-Cookie: CSRF3-Token=1583322421.s1b4QL6OXSUGHnRI; Max-
Age=864000; Expires=Wed, 04 Mar 2020 11:47:02 GMT; Path=/;
Domain=.coursera.org
Set-Cookie: __204u=9205355775-1582458421174; Max-Age=31536000;
Expires=Mon, 22 Feb 2021 11:47:02 GMT; Path=/; Domain=.coursera.org
Strict-Transport-Security: max-age=31536000; includeSubDomains;
preload
X-Content-Type-Options: nosniff
x-coursera-render-mode: html
x-coursera-render-version: v2
X-Coursera-Request-Id: NCnPPlYyEeqfcxIHPk5Gqw
X-Coursera-Trace-Id-Hex: a5ef7028d77ae8f8
x-envoy-upstream-service-time: 1090
X-Frame-Options: SAMEORIGIN
x-powered-by: Express
X-XSS-Protection: 1; mode=block
X-Cache: Miss from cloudfront
Via: 1.1 884d101a3faeefd4fb32a5d2a8a076b7.cloudfront.net
(CloudFront)
X-Amz-Cf-Pop: LHR62-C3
X-Amz-Cf-Id:
vqvX6ZUQgtZAde62t7qjafIAqHXQ8BLAv8UhkPHwyTMpvH617yeIbQ==
Length: 511551 (500K) [text/html]

Manipular al agente de usuario


Puede haber una situación en la que desee conectar un sitio mediante un agente de usuario
personalizado. O el agente de usuario del navegador específico. Esto es factible especificando --user-
agent. El siguiente ejemplo es para el agente de usuario como MyCustomUserAgent.
root@trends:~# wget https://gf.dev --user-agent="MyCustomUserAgent"

Encabezado de host
Cuando una aplicación aún está en desarrollo, es posible que no tenga una URL adecuada para
probarla. O bien, es posible que desee probar una instancia HTTP individual utilizando IP, pero debe
proporcionar el encabezado del host para que la aplicación funcione correctamente. En esta situación,
--header sería útil.
Tomemos un ejemplo de prueba http://10.10.10.1 con el encabezado de host como application.com
wget --header="Host: application.com" http://10.10.10.1
No solo host, sino que puede inyectar cualquier encabezado que desee.
Conectarse usando Proxy
Si está trabajando en un entorno DMZ, es posible que no tenga acceso a sitios de Internet. Pero puede
aprovechar el proxy para conectarse.
wget -e use_proxy=yes http_proxy=$PROXYHOST:PORT
http://externalsite.com
No olvide actualizar la variable $ PROXYHOST: PORT con las reales.

Conectarse usando un protocolo TLS específico


Por lo general, recomendaría usar OpenSSL para probar el protocolo TLS. Pero también puedes usar
wget.
wget --secure-protocol=TLSv1_2 https://example.com
Lo anterior obligará a wget a conectarse a través de TLS 1.2.

Cómo descargar a salida estándar con Wget


En el siguiente ejemplo, Wget silenciosamente (flag -q ) descargará y enviará la última
versión de WordPress a stdout (flag -O - ) y la canalizará a la utilidad tar que extraerá el
archivo al directorio /var/www .
wget -q -O - "http://wordpress.org/latest.tar.gz" | tar -xzf - -C
/var/www
Uso del comando Wget para crear un espejo de un sitio web
Para crear un espejo de un sitio web con Wget, use la opción -m . Esto creará una copia
local completa del sitio web siguiendo y descargando todos los enlaces internos, así
como los recursos del sitio web (JavaScript, CSS, Imágenes).
wget -m https://example.com
wget -m -k -p https://example.com
La opción -k hará que Wget convierta los enlaces en los documentos descargados para
que sean adecuados para la visualización local. La opción -p le dirá a wget que
descargue todos los archivos necesarios para mostrar la página HTML.

Uso del comando Wget para descargar a través de FTP


Para descargar un archivo de un servidor FTP protegido con contraseña, especifique el
nombre de usuario y la contraseña como se muestra a continuación:
wget --ftp-user=FTP_USERNAME --ftp-password=FTP_PASSWORD
ftp://ftp.example.com/filename.tar.gz

Cómo reanudar una descarga con Wget


Puede reanudar una descarga con la opción -c . Esto es útil si su conexión se cae
durante la descarga de un archivo grande y, en lugar de comenzar la descarga desde
cero, puede continuar con la anterior.
En el siguiente ejemplo, reanudamos la descarga del archivo iso Ubuntu 18.04:
wget -c http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-
amd64.iso
Si el servidor remoto no admite la reanudación de descargas, Wget comenzará la
descarga desde el principio y sobrescribirá el archivo existente.

Descargar uno o varios archivos


Colocando directamente la URL
wget http://ejemplo.org/directorio/archivo.7z
wget http://ejemplo.org/directorio/archivo.7z http://ejemplo2.o
rg/directorio/archivo2.7z ftp://ejemplo3.org/directorio/archivo
3.7z
Descargar a partir de un lista
Podemos descargar varios archivos si metemos todos en una lista y luego
colocamos la opción -i.
Así, crear un archivo con las URL de los archivos que serán descargados:
http://ejemplo.org/directorio/archivo.7z
http://ejemplo2.org/directorio/archivo2.7z
ftp://ejemplo3.org/directorio/archivo3.7z

Guardarlo con algún nombre cualquiera como “descargar.txt” y luego:


wget -i descargar.txt
Supón que tienes un directorio con archivos nombrados desde el p001.jpg hasta
el p020.jpg y quieres descargarlos todos, utilizas “{“ y “}” para colocar el rango de
los valores del nombre de los archivos a descargar:
wget wget
es.sitiodemanga.com/jejeje/manga/unbuenuso/jeje12345/p0{00..20}
.jpg
(nota que el valor prefijo es “p0” que se repirte en todos los archivos).
También podrías descargar del p003.jpg al p009.jpg
wget wget
es.sitiodemanga.com/jejeje/manga/unbuenuso/jeje12345/p00{3..9}.
jpg
(nota que ahora el valor prefijo es “p00” puesto que es el que se repite).

Opciones varias
Si la descarga se interrumpe y quieres continuarla a partir de donde que se
quedó, puedes utilizar la opción -c
wget -i -c http://ejemplo.org/directorio/archivo.7z
wget -i -c descargar.txt

Si arroja un error similar a este:


Reusing existing connection to [sitio]
HTTP request sent, awaiting response... 403 Forbidden
[fecha] [hora] ERROR 403: Forbidden.
Es porque el sitio no permite al wget descargar, ya que solo permite el acceso
desde un navegador, en muchos casos ese no es problema, le decimos al wget
que se identifique con el navegador con la opción -U así:
wget -U
firefox http://es.sitiorestrictivo.com/blablabla/arhivo.rar

Hay sitios que tienen problemas técnicos y a veces no reaccionan a la primera, ni


a la segunda, ni muchas otras veces, pero llega el momento en el que si se logra
atender una petición, para esos intentos persistentes se puede usar la opción -t
[numIntentos]. Por defecto wget hace 20 intentos de conexión, probemos con 10
intentos más:
wget -t 30 http://weblentaysaturada.net/archivo.tar.gz
Si quieres intentos infinitos hasta que se logre la conexión prueba con la opción “-
t inf”
wget -t inf http://weblentaysaturada.net/archivo.tar.gz
Se puede descargar un sitio .html
wget www.lignux.com
Usar la opción -p para descargar los elementos extras de la página como CSS,
imágenes, etc:
wget -p www.lignux.com
Conservar la fecha y hora del archivo original que se descargo (y no la fecha de
nuestro sistema)
wget -N www.sitio.com/archivo.odt

Descarga recursiva por niveles


La opción -r sirve para descargar recursivamente 5 niveles del sitio
$ wget -r http://eheheh.com/directorio
Pero se puede cambiar el nivel de recursividad con la opción -l[numero]
Un nivel de recursividad:
$ wget -r -l1 http://eheheh.com/directorio
Tres niveles de recursividad:
$ wget -r -l3 http://eheheh.com/directorio
Quince niveles de recursividad:
$ wget -r -l15 http://eheheh.com/directorio
Descargar solamente un tipo de archivo con la opción -A.extension
$ wget -r -l1 -A.bz2 http://eheheh.com/directorio
En ese ejemplo se descarga solamente los archivos .bz2 en un nivel de directorio
de forma recursiva.
Esto es todo por ahora, solo es un poco de todo lo que se puede hacer con wget,
si quieren informarse más (mucho más) y saben Inglés pueden leer este manual
de Wget: http://www.gnu.org/software/wget/manual/wget.html Saludos.

Ejemplos avanzados
wget www.linuxtotal.com.mx

Puedes descargar toda una página completa, wget no está limitado a solo descargas de archivos. Sitios completos
pueden descargarse también.

wget -p www.linuxtotal.com.mx

Lo mismo que lo anterior pero con esta opción p descarga además todos los elementos extras necesarios de la página
como hojas de estilos, imágenes en línea, etc.

wget -r www.ejemplo.com -o reporte.log

wget -r -l10 www.ejemplo.com -o reporte.log

Con la opción r se descarga recursivamente hasta 5 niveles del sitio.

Con la opción l se aumenta el nivel de recursividad hasta el número indicado, también es posible usar 'inf' como valor
de recursividad infinito.

wget --convert-links -r http://www.sitio.com/

(o también)

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

Por defecto, los enlaces dentro del sitio apuntan a la dirección del dominio completo. Si deseas descargar el sitio
recursivamente y después estudiarlo fuera de línea (off line) usa la opción convert-links que los convertirá en enlaces
locales, apuntando a las páginas dentro del sitio descargado.

wget -r -l3 -P/tmp/sitio ftp://www.unsitio.com/


Por defecto, el sitio a descargar se guarda en el mismo directorio donde estés ejecutando wget, con la opción P puedes
indicar un directorio distinto.

wget --mirror http://www.linuxtotal.com.mx/

(o también)

wget -m http://www.linuxtotal.com.mx/

De este modo obtienes una copia (un espejo) completa del sitio. La opción --mirror es igual a usar las opciones -r -l
inf -N que indica recursividad a nivel infinito y obtienendo la marca de tiempo original de cada archivo descargado
(opción -N).

wget --mirror --convert-links --html-extension http://www.linuxtotal.com.mx

(o tambíen)

wget -m -k -E http://www.linuxtotal.com.mx

Si descargas el sitio completo para verlo fuera de línea (off line) es posible que varios archivos descargados no se
abran, debido a extensiones como .cgi, .asp o .php, es entonces posible indicarle a wget con la opción E o --html-
extension que convierta todos los archivos a extensión .html.

wget -H -r -l3 -k -E -p http://miblog.sitiodeblogs.com

La opción H (span hosts) expande la recursividad a los sitios desde donde se enlace el original. Este comando
descargará el sitio con una recursividad de 3 niveles (-r -l3), conviertiendo los enlaces a locales para examinarlo off
line (-k), convierte todo a extensiones .html (-E), descarga completamente imágenes y demás elementos de cada
página (-p) y además descarga la página externa de los enlaces que apunten fuera del sitio (-H).

Este tipo de descargas, dependiendo del sitio, puede llenar todo un disco duro!!!!, asi que úsalo a discresión.

Un ejemplo extremo de la potencia de wget


El siguiente ejemplo viene muy bien detallado en este sitio, es una línea que busca archivos de música mp3 desde una
lista de sitios que previamente hayas definido, 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.

También podría gustarte