Skip to content

Tudo para WordPress, desenvolvimento web — e não só

📥 Como descarregar um site inteiro com o Wget no Windows

📥 Como descarregar um site inteiro com o Wget no Windows

A ferramenta gratuita de linha de comandos Wget consegue espelhar sites, descarregando cada página, cada imagem, cada ficheiro CSS e armazenando-os numa pasta no seu disco. Soa a magia, mas é pura engenharia: travessia recursiva de links, conversão de caminhos para URLs relativos e preservação cuidadosa da estrutura. Depois de criar esse arquivo, o site abre localmente como se estivesse online; basta clicar em qualquer ficheiro .html.

O problema é que guias decentes para Windows são quase inexistentes. A maioria dos manuais é escrita para Unix, e o utilizador médio de Windows precisa de um .exe pronto a usar, comandos claros e proteção contra armadilhas comuns como a recursão infinita ou links quebrados. É esta lacuna que vamos preencher.

💡 Visão geral rápida:

  • Descarregue o Wget para Windows e adicione o caminho do utilitário ao PATH do sistema
  • Abra uma linha de comandos na sua pasta de destino e execute o comando de espelhamento
  • Após o download, corrija links quebrados e caminhos usando o grepWin, e o arquivo estará pronto para visualização
  • Se a recursão não for necessária, use um modo com uma lista de URLs previamente preparada

Porquê descarregar um site inteiro

A internet não é para sempre. Os sites fecham, mudam de dono, sofrem redesigns e perdem conteúdo antigo. A comunidade de acumulação de dados no Reddit há muito que transformou o arquivamento numa cultura, e com bons motivos. Não se pode prever quando o seu blogue favorito desaparecerá ou quando documentação valiosa passará para trás de uma paywall, mas pode guardá-la na sua forma atual.

Os cenários vão do óbvio ao inesperado. Está prestes a viajar para algum lugar sem acesso à internet e precisa de uma cópia funcional de um site informativo. Ou coleciona eras do design; a web de ontem, com os seus layouts de tabela e botões de cores ácidas, já é história. Até o seu próprio site faz sentido espelhar periodicamente: não é um backup no sentido tradicional (não pode restaurar a base de dados), mas uma cópia estática que sobreviverá a qualquer falha de alojamento.

Um aviso importante: tenha cuidado com o que descarrega. As leis de direitos de autor e privacidade continuam a aplicar-se. O uso privado de uma cópia guardada é geralmente legal, mas publicar conteúdo de terceiros sem permissão pode criar problemas.

Como o Wget percorre um site: mecânica do processo

O Wget começa no URL que especificar e segue recursivamente cada link interno, teoricamente até uma profundidade infinita. Quando configurado corretamente, não sairá para a internet aberta a descarregar o Google: a opção --mirror combinada com --reject-regex mantém o rastreio dentro dos limites do domínio de destino. Todos os links externos permanecem intocados, simplesmente texto com o URL original.

Pelo caminho, o Wget recolhe tudo: páginas HTML, folhas de estilo, scripts, imagens, tipos de letra. Depois converte os links internos em caminhos relativos, o que permite que o arquivo abra localmente com a navegação a funcionar como no site online. Os links externos permanecem inalterados e continuam a apontar para a internet (se a tiver disponível durante a visualização).

Um arquivo, não um backup. Não pode restaurar um site a partir de uma cópia estática destas porque não há base de dados nem lógica de servidor. O Wget funciona como um rastreador de motores de busca: só encontra páginas às quais alguém fez link. No processo, verá como os links internos são importantes para a conectividade do conteúdo; páginas órfãs sem links de entrada não entrarão no arquivo.

Embora o Wget não esteja vinculado a nenhum CMS em particular, funciona especialmente bem com sites WordPress. A razão é simples: widgets padrão como nuvens de etiquetas e arquivos mensais criam uma rede densa de links internos que o bot percorre sem esforço.

Instalar o Wget no Windows

O mundo do Wget gira historicamente em torno do Unix, e os utilizadores de Windows são convidados aqui. Se for ao site oficial da GNU e descarregar o código-fonte, receberá um monte de ficheiros .c, não um programa pronto a executar. Precisa de um binário pré-compilado:

  • Vá a eternallybored.org/misc/wget, um repositório não oficial mas testado pelo tempo de compilações do Wget para Windows (versão atual 1.21.4)
  • Descarregue o arquivo zip da versão mais recente e extraia-o para uma pasta separada. Não é necessária instalação; é um utilitário portátil

Se fizer duplo clique em wget.exe, uma janela da linha de comandos piscará e fechar-se-á imediatamente. O Wget é um programa de consola; precisa de um terminal aberto na sua pasta de destino. E para evitar copiar o .exe para cada pasta com arquivos futuros, adicione o Wget ao PATH do sistema:

  • Prima Windows + R, cole e execute:
1 "C:\Windows\system32\rundll32.exe" sysdm.cpl,EditEnvironmentVariables
  • Na secção Variáveis de utilizador, encontre a variável Path e clique em Editar...
  • Clique em Novo e introduza o caminho completo para a pasta que contém o wget.exe
  • Feche todos os diálogos clicando em OK

Verificação: prima Windows + R novamente → cmd /k "wget -V". Deverá ver a versão do Wget, e não uma mensagem a dizer que o comando não é reconhecido.

Janela da linha de comandos a mostrar informação da versão do Wget

Opções principais do Wget: análise detalhada

A maioria das opções tem equivalentes curtos de uma letra, mas os nomes longos são mais significativos e legíveis sem cábula. Selecionei configurações comprovadas na prática, por isso, em vez de ler o manual GNU Wget de 181 páginas, obtém um extrato com a explicação do «porquê» de cada uma.

Opções principais

--mirror ativa a recursão infinita. Essencialmente, é um conjunto de outras opções combinadas sob um único sinalizador. Sem ele, o Wget apenas descarrega a página especificada, não o site inteiro. É o --mirror que torna o espelhamento possível.

--page-requisites descarrega todos os recursos associados: CSS, JavaScript, imagens, tipos de letra. Sem esta opção, o seu arquivo parecerá uma página HTML simples, sem estilos nem imagens.

--convert-links reescreve os links nos ficheiros HTML após a conclusão do descarregamento, para que funcionem localmente. Os URLs absolutos são substituídos por caminhos relativos. É isto que lhe permite abrir o index.html a partir do disco e navegar pelas páginas como num site ativo.

--adjust-extension adiciona extensões aos ficheiros que chegaram sem elas. Os sites modernos servem frequentemente páginas sem .html no final (URLs legíveis por humanos) e, sem esta opção, o navegador não perceberá que está a ver um documento HTML. Há um senão: se o servidor comprimir conteúdo via gzip, o Wget pode dar ao ficheiro uma extensão .gz por engano. A próxima opção protege contra isso.

--compression=auto trata da compressão gzip em tempo real. Sem ela, um logótipo SVG pode ser guardado como logo.svg.gz e tornar-se inútil para visualização local. Esta opção não está disponível em todas as compilações; os utilizadores de Unix por vezes deparam-se com a sua ausência. A compilação para Windows do eternallybored.org inclui-a.

--reject-regex "/search|/rss" impede o rastreio de URLs que contenham as palavras especificadas. As páginas de pesquisa e os feeds RSS geram cadeias infinitas de parâmetros que enchem o seu sistema de ficheiros com nomes com vários ecrãs de comprimento. A expressão regular aqui usa sintaxe POSIX básica, não PCRE completo. Tenha cuidado: /search cortará não só o lixo da pesquisa, mas também artigos legítimos com URLs como yoursite.com/search-for-extraterrestrial-life. Em caso de tais colisões, torne o padrão mais específico.

Opções adicionais

--no-if-modified-since desativa a verificação do cabeçalho If-Modified-Since. Só incluo este sinalizador quando o servidor se queixa explicitamente nos registos. Se não planeia executar novamente na mesma pasta para recolher alterações, esta opção não é crítica.

--no-check-certificate ignora a verificação do certificado SSL. Ao espelhar, não está a introduzir palavras-passe nem a transmitir dados confidenciais, pelo que a verificação rigorosa do certificado é excessiva. Este sinalizador evita dores de cabeça em sites com certificados expirados ou autoassinados.

--user-agent falsifica o User-Agent do navegador. Alguns servidores detetam o Wget e bloqueiam os pedidos. Falsificar como um navegador Chrome normal resolve o problema:

1--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Se o bloqueio ocorrer por IP, precisará de uma VPN e, possivelmente, da distribuição do descarregamento por várias máquinas. Neste caso, as opções --wait e --random-wait para abrandar a taxa de pedidos também serão úteis.

--restrict-file-names=windows limita os caracteres nos nomes dos ficheiros a um conjunto seguro para Windows. Em Unix, são permitidos caracteres especiais nos nomes e um arquivo descarregado numa máquina Linux pode ser ilegível no Windows. Se estiver a trabalhar em Windows, o sinalizador é aplicado automaticamente; se estiver a descarregar em Unix, mas for visualizar em Windows, especifique-o explicitamente.

--backup-converted guarda uma cópia original de cada ficheiro que o Wget modificou durante a conversão de links. Isto duplica o tamanho do arquivo. Não o utilizo, mas menciono-o caso precise de uma cópia de segurança de cada edição ao segundo.

Abrir a linha de comandos na pasta correta

O Wget é executado a partir de um terminal e o terminal deve estar a apontar para a pasta onde planeia armazenar o arquivo. Existem vários métodos, do padrão ao avançado:

  • Windows + Rcmd → Enter, depois cd /d C:\path\to\archive (o sinalizador /d permite alternar entre unidades)
  • Se o caminho contiver espaços, coloque-o entre aspas: cd /d "C:\My Archive"

Mais rápido, numa linha: Windows + Rcmd /k "cd /d C:\path\to\archive". O sinalizador /k mantém a janela aberta após a execução do comando.

Se usar o Total Commander: Comandos → Abrir shell de comandos abre um terminal diretamente na pasta atual. Para o Explorador, existe um ajuste de registo que adiciona uma opção «Abrir janela de comando aqui» ao menu de contexto.

Iniciar o descarregamento: o comando completo

Juntando tudo. Aqui está o comando que utilizo para espelhar um site comum:

1wget --mirror --page-requisites --convert-links --adjust-extension --compression=auto --reject-regex "/search|/rss" --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" https://example.com

O mesmo pode ser escrito com sinalizadores curtos: wget -mkp -E --compression=auto -R "/search|/rss" .... Mas os nomes longos tornam o comando autodocumentado. Daqui a um mês, abrirá o seu ficheiro .bat e perceberá imediatamente o que cada opção faz.

Substitua https://example.com pelo URL real do site alvo e prima Enter. O processo pode demorar de alguns minutos a várias horas, dependendo do tamanho do site e das limitações do servidor.

Pós-processamento: grepWin e correções típicas

Após o descarregamento, o arquivo quase sempre requer alguns retoques finais. O utilitário grepWin é um canivete suíço para pesquisa e substituição em lote em ficheiros de texto no Windows. Aqui estão alguns cenários típicos:

  • Remover etiquetas HTML de lixo. Algumas plataformas CMS geram etiquetas <source> vazias que interferem com a renderização. No grepWin, selecione a pesquisa por regex para <source media=".*">, especifique a máscara *.html e substitua por uma string vazia.

  • Corrigir caminhos de recursos. Se alguns caminhos permaneceram absolutos, o grepWin encontrá-los-á por um padrão como src="https://example.com/ e substituirá pelo equivalente local.

Janela do utilitário grepWin com definições de pesquisa e substituição

Este é apenas um ponto de partida; cada site tem as suas próprias surpresas. Os pontos fortes do grepWin: pré-visualização instantânea antes da substituição, processamento recursivo de pastas e suporte a regex. Mas quando o volume de edições ultrapassa o «localizar e substituir», ferramentas Unix como o sed e o grep oferecem muito mais flexibilidade. As versões para Windows estão disponíveis através do WSL ou do Cygwin.

Alternativa: transferir a partir de uma lista de URLs sem recursão

O rastreamento recursivo nem sempre é adequado. Se o site for enorme, mas só precisar de uma seleção específica de páginas, é mais fácil preparar uma lista de URLs e fornecê-la ao Wget através de --input-file:

1wget --input-file=links.txt --page-requisites --convert-links --adjust-extension --compression=auto --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Note que --mirror e --reject-regex foram removidos: a recursão não é necessária e é o próprio a controlar a lista de URLs.

Como compilar essa lista? Um método é a pesquisa avançada do Google: a consulta site:yoursite.com "keyword phrase" devolve páginas indexadas sobre o tópico. Defina os resultados para 100, equipe-se com a extensão Copy Links para o Chrome e copie os URLs em lotes para o ficheiro links.txt.

Vídeo: espelhar um site em 5 minutos

Para ver todo o processo ao vivo, da instalação ao arquivo finalizado, veja esta gravação de ecrã:

O autor percorre o processo de raiz: transferir o Wget, configurar as opções, executar o comando e abrir o resultado num navegador. Recomendo que veja antes da sua primeira execução; 7 minutos de ecrã vão poupar-lhe uma hora de depuração.

⁉️🤔 Perguntas frequentes

Posso restaurar um site a partir de um arquivo do Wget?

Um arquivo do Wget é um instantâneo estático: HTML, CSS, JS e ficheiros multimédia. Não contém base de dados nem lógica de servidor. Não pode carregar essa cópia para um alojamento e reavivar o WordPress com comentários e painel de administração. Esta é uma ferramenta para preservar conteúdo, não para backup. Para um backup completo do WordPress, utilize plugins como o UpdraftPlus ou o Duplicator, que guardam tanto os ficheiros como a base de dados.

O Wget está a descarregar demasiado lixo. Como posso limitá-lo?

Uma combinação de --reject-regex (filtro de URL por padrão) e --reject (filtro por extensões de ficheiro) resolve o problema. Por exemplo, adicionar --reject=jpg,png,gif irá ignorar todas as imagens. Ou --reject-regex "/tag/|/category/|/page/" cortará os arquivos de etiquetas, categorias e paginação. O segredo é testar num pequeno subconjunto de páginas antes de uma execução completa.

O servidor bloqueou o meu IP depois de eu começar a descarregar. O que devo fazer?

O Wget pode ser detetado pelo User-Agent ou pela taxa de pedidos. Três níveis de proteção: falsificação do User-Agent via --user-agent (mostrado acima), limitação de velocidade via --wait=1 --random-wait (pausa de 1 segundo mais adição aleatória) e mudança de IP via VPN. Para sites grandes, pode dividir a descarga: prepare várias listas de URLs e execute o Wget em paralelo a partir de diferentes máquinas ou pontos de extremidade VPN.

Porque é que o Wget é melhor do que as extensões de navegador para guardar páginas?

Extensões como o SingleFile guardam uma única página. O Wget espelha um site inteiro, com navegação, paginação e todos os links internos. Para um blogue com 500 artigos, uma extensão de navegador exigiria 500 cliques manuais. O Wget fá-lo com um único comando. Além disso, as extensões de navegador não convertem links para navegação local: obteria 500 ficheiros isolados sem ligação entre si.

O arquivo pesa gigabytes. Como o comprimo e armazeno?

Uma pasta com milhares de pequenos ficheiros é inconveniente para transferir, fazer backup e analisar com antivírus. Eu empacoto esses arquivos em RAR usando o método "Store" ou "Fastest": a velocidade importa mais do que a taxa de compressão, porque o HTML e os multimédia já estão comprimidos. Adiciono sempre um registo de recuperação, que salva o dia quando há setores defeituosos num disco ou erros de transferência. O resultado: um único ficheiro que se copia em segundos e não se desfaz durante o armazenamento.

Descarregar ou não descarregar: quando vale a pena usar o Wget

O Wget não é para uso diário. É uma ferramenta para uma tarefa específica: obter uma cópia estática completa de um site que lhe interessa ou que considera útil. Quando há o risco de o recurso desaparecer, recorra ao Wget. Quando for trabalhar offline, recorra ao Wget. Quando precisar de preservar um «fóssil digital» da era do Geocities, mais razão ainda.

Para páginas pontuais, uma extensão de navegador será suficiente. Para um backup completo do WordPress, utilize um plugin de backup. Mas quando precisa especificamente de um arquivo autossuficiente e navegável de um site inteiro, o Wget praticamente não tem alternativas, e agora já sabe como executá-lo no Windows sem dores de cabeça.

Experimente-o num site pequeno de um conhecido ou no seu próprio blogue. A primeira execução esclarecerá muita coisa, e a segunda correrá sem problemas. E não se esqueça do registo de recuperação no seu arquivo: que a sua coleção sobreviva a qualquer disco rígido.