---
title: "Uso de proxy com o wget: comandos e exemplos"
description: "Você pode configurar o proxy no wget por variável de ambiente, pelo arquivo .wgetrc ou pela opção -e. Explicamos autenticação, HTTPS e erros comuns."
url: https://proxynet.io/pt-br/blog/wget-proxy
date: 2026-09-13
author: "Acar Diveroli"
category: "Tutoriais, Integração"
lang: pt-BR
---

# Uso de proxy com o wget: comandos e exemplos

O **wget** é uma ferramenta de linha de comando, presente por padrão na maioria dos sistemas Linux e macOS, usada para baixar arquivos e buscar páginas web. É bastante usada para baixar arquivos a partir de scripts em servidores, espelhar um site ou fazer um teste simples de acesso. Neste artigo explicamos três formas de rodar o wget via proxy, a autenticação, os detalhes de HTTPS, os cuidados em downloads em massa e os erros mais comuns, com comandos de exemplo.

Todas as opções apresentadas estão documentadas no [manual do GNU Wget](https://www.gnu.org/software/wget/manual/wget.html).

> **Nota: Resposta rápida**
>
> Para um teste rápido, digite `export https_proxy="http://usuario:senha@servidor:porta"` e rode o wget normalmente. Para uso pontual em um script, prefira as opções `-e use_proxy=yes -e https_proxy=...`; para uso contínuo, o arquivo `~/.wgetrc`. O wget só suporta proxy HTTP/HTTPS; se precisar de SOCKS5, use o cURL.

## Antes de começar: o wget está instalado?

Verifique a versão no terminal:

```bash
wget --version
```

Se o comando não for encontrado, instale com `sudo apt install wget` no Debian e Ubuntu, ou com `brew install wget` via Homebrew no macOS. No Windows, o wget não vem instalado por padrão; para os mesmos trabalhos, pode-se usar o `curl.exe`, que já vem com o Windows 10 e versões posteriores. Já o `wget` do PowerShell não é o wget de verdade, é um apelido do comando `Invoke-WebRequest`, e não aceita as opções deste artigo.

Nos testes, usar um endereço que retorna o seu IP facilita o trabalho. Se o proxy estiver funcionando, esse endereço mostra não o seu IP, mas o do proxy:

```bash
wget -qO- https://httpbin.org/ip
```

Aqui, `-q` deixa a saída silenciosa, e `-O-` imprime o conteúdo baixado na tela em vez de gravar em arquivo. Rode uma vez antes de configurar o proxy e anote o seu próprio IP; nas tentativas seguintes, você verá a diferença na hora.

## O formato do endereço do proxy

Nos três métodos, o proxy é escrito no mesmo formato:

```text
http://usuario:senha@servidor:porta
```

- O esquema `http://` é o protocolo da conexão estabelecida com o proxy. Ele é usado mesmo ao acessar sites HTTPS; explicamos o motivo abaixo.
- A parte `usuario:senha@` é opcional. Se você autorizou o IP do seu servidor no painel do seu proxy, pode omitir essa parte completamente.
- A informação `servidor:porta` varia de acordo com o seu pacote; encontre os valores corretos no seu painel de cliente.

## Método 1: por variáveis de ambiente

O wget lê as variáveis de ambiente padrão de proxy do sistema: `http_proxy`, `https_proxy`, `ftp_proxy` e `no_proxy`. Esse é o método mais rápido, e muitas outras ferramentas rodando no mesmo terminal também usam essas variáveis.

```bash
export http_proxy="http://usuario:senha@pr.proxynet.io:8000"
export https_proxy="http://usuario:senha@pr.proxynet.io:8000"

wget -qO- https://httpbin.org/ip
```

Há três pontos a observar:

- **O valor de `https_proxy` também começa com `http://`.** Essa variável define o proxy que será usado para acessar sites HTTPS; a conexão estabelecida com o próprio proxy é HTTP, e o tráfego HTTPS é tunelado dentro dela.
- **As variáveis valem apenas para aquela sessão do terminal.** Se quiser que sejam permanentes, adicione-as ao `~/.bashrc` ou `~/.zshrc`.
- **Prefira a grafia em minúsculas.** O wget lê as variáveis em minúsculas; em alguns sistemas, a versão em maiúsculas `HTTP_PROXY` também pode estar definida, e se as duas definições entrarem em conflito, isso pode confundir. O mais seguro é definir as duas com o mesmo valor.

Se você quer que determinados endereços não passem pelo proxy, use `no_proxy`:

```bash
export no_proxy="localhost,127.0.0.1,.suaempresa.local"
```

Essa variável evita que serviços da rede interna ou servidores de desenvolvimento local passem pelo proxy. Um domínio começando com ponto abrange todos os subdomínios daquele domínio.

## Método 2: na linha de comando, uso pontual

Para passar apenas um comando específico pelo proxy sem alterar as variáveis de ambiente, você pode passar as configurações do wget diretamente no comando com a opção `-e` (`--execute`):

```bash
wget -e use_proxy=yes \
     -e https_proxy=http://pr.proxynet.io:8000 \
     --proxy-user=usuario \
     --proxy-password=senha \
     https://httpbin.org/ip -O -
```

Esse método é especialmente útil em scripts: a configuração de proxy não afeta outros comandos, e você pode passar um proxy diferente em cada chamada. Por exemplo, em um loop, se você quiser fazer cada download a partir de um ponto de saída diferente, pode ler o valor de `-e https_proxy=` a partir da variável do loop.

Cada linha passada com `-e` é uma configuração que também pode ser gravada no arquivo `.wgetrc`. Ou seja, cada chave que você verá no próximo método também vale aqui.

> **Atenção**
>
> Escrever a senha na linha de comando a deixa exposta no histórico do shell e na lista de processos do sistema. Em servidores compartilhados, leia as credenciais a partir de uma variável de ambiente ou de um arquivo de configuração com permissões restritas. Se possível, autorize o endereço IP do seu servidor no seu painel e passe a usar sem senha.

## Método 3: pelo arquivo .wgetrc, de forma permanente

Se você usa o wget com proxy o tempo todo na mesma máquina, pode gravar as configurações no arquivo `~/.wgetrc`, no seu diretório de usuário:

```ini
use_proxy = on
http_proxy = http://pr.proxynet.io:8000
https_proxy = http://pr.proxynet.io:8000
proxy_user = usuario
proxy_password = senha
```

Como o arquivo contém a senha, restrinja as permissões para que só você consiga lê-lo:

```bash
chmod 600 ~/.wgetrc
```

Se for necessária uma configuração para todo o sistema, as mesmas linhas podem ser gravadas em `/etc/wgetrc`; o arquivo no diretório do usuário sobrepõe os valores do arquivo do sistema.

Se você quiser desativar o proxy temporariamente enquanto esse arquivo está definido, adicione a opção `--no-proxy` a um único comando:

```bash
wget --no-proxy https://httpbin.org/ip -O -
```

## Qual método escolher?

| Situação | Método recomendado |
|---|---|
| Teste rápido no terminal | Variável de ambiente |
| Em script, proxy diferente a cada chamada | Linha de comando com `-e` |
| Uso contínuo de proxy no servidor | `.wgetrc` |
| Manter determinados endereços fora do proxy | `no_proxy` |
| Download agendado via cron | `.wgetrc` (o cron não propaga variáveis de ambiente) |
| Dentro de um container Docker | Variável de ambiente (via `ENV`) |

Se os três métodos estiverem definidos ao mesmo tempo, a ordem de prioridade é: as opções de linha de comando sobrepõem as variáveis de ambiente, e as variáveis de ambiente sobrepõem o arquivo `.wgetrc`.

## Como o proxy funciona em sites HTTPS?

Ao acessar um endereço HTTPS via proxy, o wget primeiro envia ao proxy uma requisição `CONNECT destino:443`. O proxy abre uma conexão TCP com o destino e, a partir daí, só transporta os bytes criptografados. Ou seja, o proxy não consegue ver o conteúdo do site; ele só sabe a qual domínio a conexão foi feita.

A consequência prática disso é: mesmo que o endereço do proxy comece com `http://`, você pode acessar sites HTTPS com segurança. A validação do certificado é feita entre a sua máquina e o site de destino; o proxy não interfere nessa validação. Comparamos esse comportamento do proxy e a diferença em relação ao SOCKS no artigo [Diferença entre SOCKS e HTTP proxy](/pt-br/blog/socks-vs-http-proxy).

## Usando junto com opções comuns

A configuração de proxy sozinha raramente é suficiente; em trabalhos reais, você precisa de mais algumas opções. O exemplo abaixo baixa um arquivo via proxy com configurações de nova tentativa e tempo limite:

```bash
wget --timeout=30 --tries=3 --waitretry=5 \
     --user-agent="Mozilla/5.0 (X11; Linux x86_64)" \
     -O relatorio.pdf https://example.com/relatorio.pdf
```

- `--timeout` limita o tempo de espera de cada operação de rede.
- `--tries` define quantas vezes tentar de novo um download que falhou; `--waitretry` coloca uma espera entre as tentativas.
- `--user-agent` muda a identidade do navegador. A identidade padrão do wget é bloqueada diretamente em alguns sites; usar um valor que se identifique é mais transparente e gera menos problemas.
- `-O` nomeia o arquivo de saída; se você adicionar `-c`, um download interrompido continua de onde parou.

Se a página exige cookies, as opções `--load-cookies` e `--save-cookies` mantêm a sessão em um arquivo; assim é possível manter uma sessão já autenticada junto com o proxy.

## O wget suporta proxy SOCKS?

O GNU wget não tem suporte nativo a SOCKS; todos os métodos acima são para proxy HTTP e HTTPS. Se você precisa de SOCKS5, tem duas opções:

- **Usar o cURL.** O cURL suporta diretamente os esquemas `socks5://` e `socks5h://` e faz praticamente tudo o que o wget faz. Mais detalhes no artigo [Como usar proxy com o cURL?](/pt-br/blog/curl-proxy).
- **Usar uma ferramenta de redirecionamento.** No Linux, ferramentas como o `proxychains` conseguem redirecionar para um proxy SOCKS as conexões de programas sem suporte nativo a SOCKS. No Windows, o [Proxifier](/pt-br/blog/proxifier) faz o mesmo trabalho.

Para pacotes que funcionam diretamente com o wget, veja a nossa página de [Proxies HTTPS](https://proxynet.io/pt-br/https-proxy).

## Erros comuns e suas soluções

### "407 Proxy Authentication Required"

As credenciais do proxy estão faltando ou incorretas. Verifique o usuário e a senha. Se a senha tiver caracteres especiais como `@`, `:` ou `#`, codifique-os no endereço com codificação percentual (`%40` para `@`) ou use as opções `--proxy-user` e `--proxy-password`, que não exigem codificação.

### O comando não está usando o proxy

- Confirme que você definiu a variável com `export`; apenas escrever `http_proxy=...` não a propaga para os subprocessos.
- Se o endereço for HTTPS, é a variável `https_proxy`, não `http_proxy`, que precisa estar definida.
- Verifique se não há uma linha `use_proxy = off` no `.wgetrc`.
- Se você está rodando `sudo wget`, o `sudo` pode não propagar suas variáveis de ambiente por padrão; propague com `sudo -E` ou grave a configuração em `/etc/wgetrc`.
- O endereço de destino pode estar coincidindo com um domínio da lista `no_proxy`.

### "Unable to establish SSL connection"

Primeiro, verifique se o endereço de destino abre sem proxy. Se o problema for de certificado, a opção `--no-check-certificate` pula a validação; mas essa opção enfraquece a segurança da conexão e deve ser usada só para teste. Lembre-se de que o proxy não interfere na validação de certificado: esse erro costuma vir de um repositório de certificados raiz desatualizado no sistema ou da configuração do site de destino.

### A conexão está expirando

Verifique de novo o endereço e a porta do proxy. Certifique-se de que o firewall permite tráfego para a porta do proxy. Em downloads longos, definir explicitamente o tempo limite e o número de tentativas evita que os scripts travem:

```bash
wget --timeout=30 --tries=3 https://httpbin.org/ip -O -
```

### "ERROR 403: Forbidden"

O site de destino está recusando a requisição. O motivo pode não ser o proxy; o valor padrão de User-Agent do wget é bloqueado diretamente em alguns sites. Informe um valor que se identifique com `--user-agent`. Se o problema persistir, o site de destino pode estar reagindo ao tipo de IP do proxy; explicamos por que endereços de datacenter são recusados com mais frequência no artigo [Diferença entre proxy residencial e datacenter](/pt-br/blog/residential-vs-datacenter-proxy).

## Cuidados em downloads em massa

A opção `-r` (download recursivo) do wget consegue baixar um site inteiro com um único comando. Esse poder pode gerar uma carga séria no servidor de destino. Em downloads em massa, as opções a seguir são boas tanto para você quanto para o destino:

```bash
wget -r -l 2 --wait=2 --random-wait --limit-rate=500k \
     --no-parent -A pdf https://example.com/documentos/
```

- `-l 2` limita a profundidade a dois níveis; profundidade ilimitada baixa o site inteiro.
- `--wait=2` coloca dois segundos entre as requisições; `--random-wait` torna esse intervalo aleatório.
- `--limit-rate=500k` limita a velocidade de download.
- `--no-parent` impede subir para diretórios pai; `-A pdf` pega apenas as extensões indicadas.

Por padrão, o wget respeita as regras do `robots.txt`; não desative esse comportamento. Explicamos quais dados podem ser coletados sob quais condições no artigo [A extração de dados é legal?](/pt-br/blog/is-data-web-scraping-legal). Se você só quer as imagens de uma página, não precisa do terminal; as opções sem código estão em [como baixar todas as imagens de um site](/pt-br/blog/download-all-images-from-website).

Em projetos que exigem muitas requisições, distribuir os endereços com o [Proxies rotativos](https://proxynet.io/pt-br/rotating-proxy), em vez de concentrar o tráfego em um único IP, reduz o risco de bloqueio e gera uma carga mais equilibrada no site de destino. Para necessidades mais amplas, veja nossas [soluções de extração de dados](/pt-br/data-scraping).

## Perguntas frequentes

### wget ou cURL?

Para download de arquivos, espelhamento e captura recursiva, o wget é mais prático; para requisições de API, métodos HTTP personalizados e proxy SOCKS, o cURL é mais versátil. Os dois leem o proxy HTTP das mesmas variáveis de ambiente, então uma configuração definida uma vez funciona nas duas ferramentas.

### A configuração de proxy afeta outros programas?

O proxy definido por variável de ambiente afeta todo programa iniciado no mesmo shell que lê essas variáveis (como cURL, pip, git). Os métodos `.wgetrc` e `-e` afetam apenas o wget.

### Posso usar proxy sem salvar minha senha?

Sim. Se você autorizar o endereço IP do seu servidor no painel do seu provedor de proxy, não precisa de usuário e senha; o endereço é escrito apenas no formato `http://servidor:porta`. Para servidores com IP fixo, esse é o método mais limpo.

### Posso obter um IP diferente a cada requisição com o wget?

O wget, por si só, não faz rotação. Existem dois caminhos: usar um proxy rotativo (um único endereço, um IP de saída diferente a cada conexão) ou, em um script, passar um proxy diferente a cada chamada com `-e https_proxy=`.

### Posso baixar via FTP usando proxy?

Se a variável `ftp_proxy` estiver definida, o wget busca endereços FTP através de um proxy HTTP; o proxy precisa suportar esse uso. Hoje em dia, com a queda no uso de FTP, a maioria dos pacotes de proxy foca em HTTP e HTTPS.

## Em resumo

Existem três formas de usar o wget com proxy: variáveis de ambiente para testes rápidos, a opção `-e` para uso pontual em scripts e o arquivo `.wgetrc` para uso contínuo. Não esqueça de definir `https_proxy` para endereços HTTPS, guardar as credenciais com segurança, limitar a velocidade em downloads em massa e migrar para o cURL quando precisar de SOCKS.
