Introdução
Se você precisa clonar um site inteiro para estudos, backups, testes offline ou análise estrutural, o wget pode ser a ferramenta ideal. É leve, nativo em sistemas Linux e funciona perfeitamente para sites com conteúdo estático (HTML, CSS, JS e imagens).
Neste post, será apresentado um comando completo para realizar esse tipo de clonagem com eficiência, além de observações técnicas sobre limitações e possíveis alternativas.
Exemplo prático
Vamos supor que você queira clonar o seguinte site de exemplo:
https://exemplo.com/templates/painel-cliente/
Seu objetivo é ter uma cópia funcional, com todos os arquivos requisitados (imagens, CSS, JS), links ajustados para uso offline e estrutura de diretórios preservada.
Comando recomendado
wget --mirror \
--convert-links \
--adjust-extension \
--page-requisites \
--no-parent \
-e robots=off \
-U "Mozilla/5.0" \
https://exemplo.com/templates/painel-cliente/
Explicando cada parte:
| Parâmetro | Função |
|---|---|
--mirror | Ativa o modo espelho (equivale a -r -N -l inf --no-remove-listing) |
--convert-links | Ajusta os links internos para apontar localmente |
--adjust-extension | Corrige extensões dos arquivos para .html, .css, .js, etc |
--page-requisites | Baixa todos os recursos necessários para renderização |
--no-parent | Restringe à pasta inicial, evitando subir diretórios |
-e robots=off | Ignora restrições de robots.txt |
-U "Mozilla/5.0" | Define o User-Agent como navegador real, evitando bloqueios por bot |
Estrutura de saída
Ao final da execução, será criada uma pasta com a seguinte estrutura:
exemplo.com/
└── templates/
└── painel-cliente/
├── index.html
├── assets/
├── css/
├── js/
└── imagens...
Os links internos estarão todos convertidos para acesso local.
Salvando em diretório personalizado
Se quiser definir onde salvar o conteúdo clonado:
wget -P /caminho/para/salvar \
--mirror \
--convert-links \
--adjust-extension \
--page-requisites \
--no-parent \
-e robots=off \
-U "Mozilla/5.0" \
https://exemplo.com/templates/painel-cliente/
Ajustes adicionais
Ignorar certos arquivos:
--reject=zip,mp4,avi
Definir número de tentativas e timeout:
--tries=10 --timeout=10 --waitretry=5
Limitações do wget
- Não funciona bem com sites dinâmicos (ex: React, Vue, Angular).
- Não lida com autenticação complexa (login via JavaScript, tokens).
- Requisições AJAX (como
/api) não são automaticamente detectadas.
Alternativas para casos dinâmicos
| Ferramenta | Vantagem |
|---|---|
httrack | Interface mais amigável, útil para ambientes gráficos |
puppeteer | Renderiza conteúdo via navegador headless |
playwright | Alternativa moderna ao Puppeteer, com suporte a múltiplos browsers |
curl | Boa opção para baixar URLs específicas ou endpoints REST |
webrecorder | Permite gravar sessões inteiras, ideal para captura fiel |
Conclusão
Para sites puramente estáticos, o wget é uma solução sólida, rápida e controlável. Quando bem configurado, ele permite clonar com perfeição sites inteiros, mesmo com dependências e estruturas mais profundas. Para projetos que exigem conteúdo dinâmico, considere ferramentas baseadas em browser.
Se precisar adaptar esse clone para um painel funcional, integrar com backend PHP ou preparar uma versão white-label para uso comercial, entre em contato com a equipe DevData.
