Configuração de proxy · 2 min de leitura

Usando variáveis de ambiente HTTP_PROXY / HTTPS_PROXY

As variáveis de ambiente HTTP_PROXY, HTTPS_PROXY e NO_PROXY são a maneira mais rápida de enviar o tráfego de saída de um programa através de um proxy. Aqui está como elas se comportam em curl, wget, Python, Node.js e Docker — e onde silenciosamente não funcionam.

Como as variáveis de ambiente do proxy funcionam

HTTP_PROXY, HTTPS_PROXY e NO_PROXY são uma convenção antiga e multiplataforma: muitas ferramentas de linha de comando e bibliotecas HTTP as leem na inicialização e roteiam solicitações de saída através do proxy que você nomear. O efeito é simples — seu IP real / de origem permanece oculto e o destino vê o endereço de saída do proxy em vez disso.

The naming trips people up. HTTP_PROXY is the proxy used for http:// destination URLs and HTTPS_PROXY for https:// destination URLs — it does not mean "a proxy reached over HTTPS". The scheme inside the value (http:// or socks5h://) is what decides how your client reaches our proxy.

Nem toda ferramenta respeita essas variáveis, e as que respeitam discordam nos detalhes:

FerramentaLê variáveis de ambiente?Notas
curlSimminúsculas http_proxy apenas para HTTP; ambos os casos para HTTPS
wgetSimrespeita http_proxy, https_proxy, no_proxy
Python requests / urllibSimautomático; um argumento por solicitação proxies= substitui
Node.js core fetch / httpNãoprecisa de undici ProxyAgent ou global-agent
Docker CLI / buildParcialpassar via --build-arg, -e ou config.json

Ours are datacenter proxies (not residential), so consumer sites may flag them more readily — great for APIs, CI and scraping targets you control, less so for locked-down consumer platforms. Our authenticated SOCKS5 and HTTP proxies take a username and password, so nothing egresses without your credential. For always-on, full-device routing use the WireGuard VPN instead; to try the throwaway public proxy list or price metered access see pricing. More recipes live in the guides, and a full comparison of VPN vs proxy is here too.

Defina as variáveis no seu shell (curl + wget)

Exporte uma vez, depois comandos comuns saem pelo proxy. A autenticação vai inline na URL como USER:PASS. Defina a forma em letras minúsculas também — curl só lê http_proxy em letras minúsculas para o esquema HTTP.

bash
# HTTP proxy endpoint (port 3128) with inline auth
export HTTP_PROXY="http://USER:PASS@proxy.s4m.online:3128"
export HTTPS_PROXY="http://USER:PASS@proxy.s4m.online:3128"
# curl and some tools only read the lowercase form — set both
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"

# Never send local / internal traffic through the proxy
export NO_PROXY="localhost,127.0.0.1,::1,.internal,169.254.169.254"
export no_proxy="$NO_PROXY"

# Now normal commands go through the proxy
curl https://api.ipify.org      # prints the proxy exit IP, not yours
wget -qO- https://api.ipify.org

# One-off, without exporting anything:
curl -x http://USER:PASS@proxy.s4m.online:3128 https://example.com

# SOCKS5 (port 1080). socks5h makes DNS resolve AT the proxy,
# so your origin never leaks the hostname lookup.
export ALL_PROXY="socks5h://USER:PASS@proxy.s4m.online:1080"
curl https://api.ipify.org

Python e Node.js

As requisições/urllib do Python pegam as variáveis automaticamente. O http central do Node e o fetch() global não — você deve anexar um agente proxy você mesmo.

python
# --- Python: requests, urllib, pip and httpx honor the env vars ---
import requests
print(requests.get("https://api.ipify.org").text)   # proxy exit IP

# Override per-request (this ignores the env vars):
proxies = {
    "http":  "http://USER:PASS@proxy.s4m.online:3128",
    "https": "http://USER:PASS@proxy.s4m.online:3128",
}
requests.get("https://api.ipify.org", proxies=proxies)

# SOCKS5 needs the extra:  pip install "requests[socks]"
proxies = {"https": "socks5h://USER:PASS@proxy.s4m.online:1080"}


# --- Node.js (>=18): core fetch does NOT read HTTP_PROXY on its own ---
// import { ProxyAgent, setGlobalDispatcher } from "undici";
// setGlobalDispatcher(
//   new ProxyAgent("http://USER:PASS@proxy.s4m.online:3128"));
// const r = await fetch("https://api.ipify.org");
// console.log(await r.text());        // proxy exit IP
//
// To make libraries respect the env vars instead:
//   npm i global-agent
//   GLOBAL_AGENT_HTTP_PROXY=$HTTP_PROXY node -r global-agent/bootstrap app.js

Docker (construção e tempo de execução)

Contêineres não herdam seu ambiente de shell. Passe as variáveis explicitamente para builds e execuções; o daemon que puxa imagens as lê de seu próprio arquivo de configuração.

bash
# Build-time: forward the proxy into the build
docker build \
  --build-arg HTTP_PROXY="http://USER:PASS@proxy.s4m.online:3128" \
  --build-arg HTTPS_PROXY="http://USER:PASS@proxy.s4m.online:3128" \
  --build-arg NO_PROXY="localhost,127.0.0.1" .

# Runtime: inject into the running container
docker run --rm \
  -e HTTP_PROXY="http://USER:PASS@proxy.s4m.online:3128" \
  -e HTTPS_PROXY="http://USER:PASS@proxy.s4m.online:3128" \
  -e NO_PROXY="localhost,127.0.0.1" \
  curlimages/curl https://api.ipify.org

# The Docker daemon itself (image pulls) reads ~/.docker/config.json:
#   { "proxies": { "default": {
#       "httpProxy":  "http://USER:PASS@proxy.s4m.online:3128",
#       "httpsProxy": "http://USER:PASS@proxy.s4m.online:3128",
#       "noProxy":    "localhost,127.0.0.1" } } }

Armadilhas que vale a pena conhecer

Codifique as credenciais em percentagem

Caracteres especiais em USER:PASS quebram a URL. Codifique-os: @ se torna %40, : se torna %3A, / se torna %2F, # se torna %23. Caso contrário, o parser corta o valor no lugar errado.

HTTPS_PROXY direciona para URLs https://

Ele seleciona o proxy para URLs de destino HTTPS — não um proxy acessado via HTTPS. O esquema no valor (http:// ou socks5h://) é o que define como você se conecta ao nosso proxy.

NO_PROXY é exigente

Separados por vírgula, sem espaços, correspondência de sufixo (.example.com). Faixas CIDR e o caractere curinga * são suportados por algumas ferramentas e ignorados por outras, então teste em vez de assumir.

socks5h vs socks5

Com socks5:// sua máquina resolve DNS localmente e apenas a conexão TCP é proxy. Use socks5h:// para que a busca do nome do host também aconteça no proxy, mantendo o DNS fora da sua origem.

Credenciais são visíveis localmente

As variáveis de ambiente aparecem na saída do ps, no histórico do shell e nos logs do CI. Use uma credencial de proxy por conta que você pode rotacionar, e prefira armazenamentos secretos em vez de comprometê-las em um Dockerfile ou pipeline.

Nem todo cliente os obedece

O núcleo http e fetch do nó, além de alguns SDKs, ignoram completamente essas variáveis. Sempre confirme com um eco de IP como api.ipify.org que o tráfego realmente saiu pela saída do proxy, e não pelo seu IP real.

Share this page
FAQ

Perguntas, respondidas

Por que o curl ignora HTTP_PROXY, mas respeita http_proxy?

Para o esquema HTTP, o curl lê deliberadamente apenas o http_proxy em letras minúsculas. O HTTP_PROXY em letras maiúsculas foi desativado há anos porque scripts CGI recebem uma variável de ambiente HTTP_* dos cabeçalhos do cliente, o que poderia sequestrar uma configuração de proxy. Para HTTPS e NO_PROXY, o curl lê ambas as formas. O hábito seguro é exportar tanto as formas em maiúsculas quanto em minúsculas.

Qual é a diferença entre HTTPS_PROXY e 'um proxy sobre HTTPS'?

HTTPS_PROXY escolhe qual proxy lida com solicitações para URLs de destino https://. Não diz nada sobre como você se conecta ao proxy em si — isso é definido pelo esquema no valor. http://proxy.s4m.online:3128 alcança nosso proxy HTTP em texto claro CONNECT; socks5h://proxy.s4m.online:1080 alcança o endpoint SOCKS5. Sua carga útil real para um site https permanece criptografada em TLS de ponta a ponta, independentemente.

Posso colocar uma URL SOCKS5 em HTTP_PROXY?

curl aceita socks5:// e socks5h:// na URL do proxy, mas muitas outras ferramentas não. Para portabilidade, use ALL_PROXY para SOCKS5 ou a própria opção SOCKS da biblioteca. Prefira socks5h:// para que o DNS resolva em proxy.s4m.online:1080 em vez de vazar consultas da sua origem.

Esses são proxies residenciais?

Não. Proxies s4m são proxies SOCKS5 e HTTP autenticados de datacenter, cobrados conforme o uso. IPs de datacenter são rápidos e confiáveis para APIs, CI e alvos de scraping que você controla, mas alguns sites de consumo detectam e bloqueiam faixas de datacenter mais facilmente do que as residenciais. Não vendemos nem reivindicamos IPs residenciais.

Definir essas variáveis esconderá meu IP real em todos os lugares?

Apenas para programas que realmente os leem. O http central do Node, fetch global, certos SDKs e qualquer aplicativo que abra sockets brutos ignorará o proxy e exporá seu IP real. Após a configuração, verifique com um eco de IP como api.ipify.org, ou use nosso VPN WireGuard quando precisar que cada processo no dispositivo seja roteado.

Roteie suas solicitações através do s4m

Proxies de data center SOCKS5 e HTTP autenticados, pagamento medido conforme o uso, além de VPN WireGuard de taxa fixa. Sem registros por design, primeiro em RAM, contas anônimas. Adicione um IP pessoal dedicado sempre que precisar de uma saída estática.

As pessoas encontraram esta página pesquisando por

Frases de busca reais que esta página responde — os links abrem a página que as cobre em profundidade.