Você conhece o utilitário WGET do Linux

WGET é um utilitário gratuito para baixar arquivos da web. Ele obtém dados da Internet e os salva em um arquivo ou os exibe em seu terminal. É claro que de forma semelhante, é isso que os navegadores da Web fazem, como Firefox ou Chromium, exceto que, por padrão, eles renderizam as informações em uma janela gráfica e geralmente exigem que um usuário os controle ativamente.

O utilitário WGET foi projetado para ser não interativo, o que significa que você pode programar ou agendar o WGET para baixar arquivos, esteja você em seu computador ou não.




Você pode baixar um arquivo com WGET fornecendo um link para um URL específico. Se você fornecer um URL padronizado como index.html, a página de índice será baixada. Por padrão, o arquivo é baixado em um arquivo com o mesmo nome em seu diretório de trabalho atual.
$ wget http://exemplo.com
--2021-09-20 17:23:47-- http://exemplo.com/
Resolvendo example.com... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
Conectando-se a exemplo.com|93.184.216.34|:80... conectado.
Solicitação HTTP enviada, aguardando resposta... 200 OK
Comprimento: 1256 (1.2K) [text/html]
Salvando em: 'index.html'
Você pode fazer com que o WGET envie os dados para a saída padrão usando a opção --output-document:
$ wget http://exemplo.com --output-document - | head -n4
<!doctype html>
<html>
<head>
    <title>Exemplo de domínio</title>
Você pode também usar a opção --output-document (-O para abreviar) para nomear seu download como quiser:
$ wget http://exemplo.com --output-document foo.html

Continuar um download parcial

Se você estiver baixando um arquivo muito grande, talvez precise interromper o download. Com a opção --continue (-c para abreviar), o WGET pode determinar onde o download parou e continuar a transferência de arquivos. Isso significa que da próxima vez que você baixar por exemplo uma ISO de distribuição Linux de 4 GB, você não precisará voltar ao início quando algo der errado.
$ wget --continue https://exemplo.com/linux-distro.iso

Baixe uma sequência de arquivos

Se não for um arquivo grande, mas vários arquivos que você precisa baixar, o WGET pode ajudá-lo com isso. Supondo que você conheça o local e o padrão de nome de arquivo dos arquivos que deseja baixar, você pode usar a sintaxe Bash para especificar os pontos inicial e final entre um intervalo de números inteiros para representar uma sequência de nomes de arquivo:
$ wget http://exemplo.com/file_{1..4}.webp

Espelhar um site inteiro

Você pode baixar um site inteiro, incluindo sua estrutura de diretórios, usando a opção --mirror. Esta opção é a mesma que executar --recursive --level inf --timestamping --no-remove-listing, o que significa que é infinitamente recursiva, então você está obtendo tudo no domínio que você especificar. Dependendo da idade do site, isso pode significar que você está recebendo muito mais conteúdo do que imagina. Se você estiver usando o WGET para arquivar um site, as opções --no-cookies --page-requisites --convert-links também são úteis para garantir que cada página seja atualizada, completa e que a cópia do site seja mais ou menos autossuficiente.
$ wget --mirror --no-cookies --page-requisites --convert-links exemplo.com

Modificar cabeçalhos HTML

Os protocolos usados para troca de dados têm muitos metadados embutidos nos pacotes que os computadores enviam para se comunicar. Os cabeçalhos HTTP são componentes da parte inicial dos dados. Quando você navega em um site, seu navegador envia cabeçalhos de solicitação HTTP. Use a opção --debug para ver quais informações de cabeçalho o WGET envia com cada solicitação:
$ wget --debug exemplo.com
--- início do pedido ---
GET / HTTP/1.1
User-Agent: Wget/1.19.5 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: exemplo.com
Connection: Keep-Alive
--- fim do pedido ---
Você pode modificar seu cabeçalho de solicitação com a opção --header. Por exemplo, às vezes é útil imitar um navegador específico, seja para teste ou para considerar sites mal codificados que funcionam corretamente apenas para agentes de usuário específicos.

Para identificar como Microsoft Edge em execução no Windows:
$ wget --debug --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59" http://exemplo.com
Você também pode se passar por um dispositivo móvel específico:
$ wget --debug \
--header="User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1" \
http://exemplo.com

Como visualizar cabeçalhos de resposta

Da mesma forma que as informações do cabeçalho são enviadas com as solicitações do navegador, as informações do cabeçalho também são incluídas nas respostas.

Você pode ver os cabeçalhos de resposta com a opção --debug:
$ wget --debug exemplo.com
[...]
--- início da resposta---
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 188102
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Etag: "3147526947"
Server: ECS (sab/574F)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256
---fim da resposta---
200 OK
Soquete 3 registrado para reutilização persistente.
Codificação de conteúdo URI = 'UTF-8'
Comprimento: 1256 (1.2K) [text/html]
Salvando em: 'index.html'

Respondendo a uma resposta 301

Um código de resposta 200 significa que tudo funcionou conforme o esperado. Uma resposta 301, por outro lado, significa que um URL foi movido permanentemente para um local diferente. É uma maneira comum de um administrador de site realocar o conteúdo enquanto deixa um "rastro" para que as pessoas que visitam o local antigo ainda possam encontrá-lo. Por padrão, o WGET segue os redirecionamentos, e isso é provavelmente o que você normalmente deseja que ele faça. No entanto, você pode controlar o que o WGET faz quando encontra uma resposta 301 com a opção --max-redirect.

Você pode configurá-lo para 0 para seguir sem redirecionamentos:
$ wget --max-redirect 0 http://iana.org
--2021-09-21 11:01:35-- http://iana.org/
Resolvendo iana.org... 192.0.43.8, 2001:500:88:200::8
Conectando a iana.org|192.0.43.8|:80... conectado.
Solicitação HTTP enviada, aguardando resposta... 301 Movido permanentemente
Local: https://www.iana.org/ [seguindo]
0 redirecionamentos excedidos.
Alternativamente, você pode configurá-lo para algum outro número para controlar quantos redirecionamentos o WGET segue.

Expandir um URL encurtado

A opção --max-redirect é útil para ver URLs encurtados antes de realmente visitá-los. URLs encurtados podem ser úteis para mídia impressa, na qual os usuários não podem simplesmente copiar e colar um URL longo, ou em redes sociais com limites de caracteres. No entanto, eles também podem ser um pouco perigosos porque seu destino é, por natureza, oculto.

Ao combinar a opção --head para visualizar apenas os cabeçalhos HTTP e a opção --location para desvendar o destino final de uma URL, você pode espiar uma URL abreviada sem carregar o recurso completo:
$ wget --max-redirect 0 "https://bit.ly/2yDyS4T"
--2021-09-21 11:32:04-- https://bit.ly/2yDyS4T
Resolvendo bit.ly... 67.199.248.10, 67.199.248.11
Conectando ao bit.ly|67.199.248.10|:443... conectado.
Solicitação HTTP enviada, aguardando resposta... 301 Movido permanentemente
Local: http://exemplo.com/ [seguindo]
0 redirecionamentos excedidos.
A penúltima linha de saída, começando com Local, revela o destino pretendido.

E então, você conseguiu aprender um pouco mais sobre o WGET? Deixa aí nos comentários se você tiver alguma dúvida, ou talvez alguma dica a mais para fortalecer a comunidade... VLW e até o próximo post!


Comentários

Postagens mais visitadas deste blog

Você sabe ler e escrever arquivos JSON com Python?

Exemplos de comandos if, if else e if elif no Python