Como usar proxies com solicitações Python
A biblioteca de requisições roteia o tráfego através de um proxy com um pequeno dicionário — mas o esquema que você escolhe decide se seu DNS e IP de origem permanecem ocultos. Aqui está a versão prática, com código totalmente executável.
O dicionário de proxies e por que o esquema importa
Python's requests library talks to a proxy through a single dictionary. The keys are not the proxy's protocol — they are the scheme of the target URL. So {"http": ..., "https": ...} tells requests which proxy to use when the destination is an HTTP or HTTPS site, and in practice both keys point at the same endpoint.
What actually changes your privacy is the scheme inside the proxy URL. With socks5:// your own machine resolves DNS first and then connects through the proxy, which can leak the hostnames you visit. With socks5h:// the proxy resolves DNS for you, so the target hostname never leaves your machine in the clear. For an authenticated s4m.online proxy, prefer socks5h to keep DNS remote and better hide your origin IP.
| Proxy scheme | DNS resolved by | Port | Install |
|---|---|---|---|
socks5h:// | Proxy (remote) | 1080 | requests[socks] |
socks5:// | Your machine (local) | 1080 | requests[socks] |
http:// | Proxy | 3128 | Stock requests |
SOCKS support needs PySocks (pip install "requests[socks]"); the HTTP endpoint works with a stock install. s4m proxies are datacenter SOCKS5 and HTTP, billed per gigabyte — see pricing. If you only need throwaway endpoints for quick tests, the free public proxy list is a separate, third-party pool (use at your own risk). Choosing between a full tunnel and a proxy? Read the comparison, the VPN overview, or more guides.
Exemplo completo executável
Substitua USER:PASS pelas suas credenciais de proxy. Isso verifica seu IP de saída, reutiliza uma sessão e, em seguida, alterna entre um pequeno pool com timeouts e tentativas.
import random
import requests
from requests.exceptions import RequestException
# --- Credentials & endpoints (replace with your s4m.online proxy user) ---
USER = "USER"
PASS = "PASS"
HOST = "proxy.s4m.online"
# SOCKS5 with REMOTE DNS (socks5h) — needs: pip install "requests[socks]"
SOCKS5 = f"socks5h://{USER}:{PASS}@{HOST}:1080"
# Plain HTTP CONNECT proxy — works with a stock requests install
HTTP = f"http://{USER}:{PASS}@{HOST}:3128"
def proxies_for(proxy_url):
# The "http"/"https" keys are the scheme of the TARGET url,
# not the proxy's protocol — both can point at one proxy.
return {"http": proxy_url, "https": proxy_url}
def check_ip(session, proxy):
r = session.get(
"https://api.ipify.org?format=json",
proxies=proxies_for(proxy),
timeout=(5, 15), # (connect, read) seconds
)
r.raise_for_status()
return r.json()["ip"]
# --- Per-session config: pools connections, keeps cookies/headers ---
with requests.Session() as s:
s.headers.update({"User-Agent": "s4m-example/1.0"})
print("Exit IP:", check_ip(s, SOCKS5))
# --- Rotate across a list, retrying on failure ---
POOL = [SOCKS5, HTTP]
def fetch(url, retries=3):
last_err = None
for attempt in range(1, retries + 1):
proxy = random.choice(POOL)
try:
with requests.Session() as s:
r = s.get(url, proxies=proxies_for(proxy), timeout=(5, 15))
r.raise_for_status()
return r
except RequestException as e:
last_err = e
print(f"[{attempt}/{retries}] {proxy} failed: {e}")
raise last_err
resp = fetch("https://httpbin.org/ip")
print(resp.json())Por solicitação, por sessão ou global
Por solicitação
Passe proxies= para cada chamada: requests.get(url, proxies=proxies_for(SOCKS5), timeout=10). A forma mais explícita e a mais fácil de trocar ou rotacionar em uma base de chamada por chamada.
Por sessão
Defina uma vez com session.proxies = proxies_for(SOCKS5). Cada solicitação feita através dessa Sessão herda o proxy e reutiliza conexões TCP, o que é mais rápido do que um fresh get() a cada vez.
Global via ambiente
requests honra HTTP_PROXY, HTTPS_PROXY e ALL_PROXY. Exporte ALL_PROXY=socks5h://USER:PASS@proxy.s4m.online:1080 e cada solicitação é roteada sem alteração de código. Use NO_PROXY para excluir hosts, ou trust_env=False em uma Sessão para ignorar o ambiente.
Coisas que confundem as pessoas
A autenticação vai na URL
Coloque USER:PASS@ diretamente na URL do proxy e as requisições enviam as credenciais para você. Se sua senha contiver os caracteres @, : ou /, codifique-a primeiro com urllib.parse.quote.
Mantenha o DNS remoto
socks5 resolve nomes de host na sua máquina; socks5h os resolve no proxy. Use socks5h quando o objetivo é manter suas consultas e IP de origem fora do radar do alvo.
Reutilizar uma Sessão
Uma requests.Session agrupa conexões e persiste cookies, então um aumento de requisições através de um proxy é visivelmente mais rápido do que chamar requests.get() a frio a cada vez.
Mantenha a verificação TLS ativada
Um proxy apenas encaminha seu tráfego — não é motivo para definir verify=False. Mantenha a verificação de certificado ativada para que um intermediário não possa adulterar silenciosamente as respostas HTTPS.
Perguntas, respondidas
Os proxies SOCKS5 precisam de um pacote extra?
Sim. requests precisa de PySocks para suporte a SOCKS: instale com pip install "requests[socks]". O endpoint HTTP na porta 3128 funciona com uma instalação padrão do requests e sem dependência extra.
Qual é a diferença entre socks5 e socks5h?
Trata-se de onde o DNS é resolvido. socks5:// resolve o nome do host de destino na sua própria máquina antes de conectar; socks5h:// pede ao proxy para resolvê-lo. Use socks5h para evitar vazar os nomes dos hosts que você visita.
Por que meu IP de saída não está mudando quando eu rotaciono?
Normalmente, o dicionário de proxies não está realmente sendo aplicado, ou uma única Sessão está reutilizando uma conexão upstream. Confirme se cada solicitação passa por proxies=, crie uma nova Sessão por proxy ao rotacionar e imprima a resposta de um endpoint de eco de IP para verificar.
Esses são IPs residenciais?
Não. Os proxies s4m são pontos finais SOCKS5 e HTTP de datacenter, autenticados com um nome de usuário e senha e medidos por gigabyte. A lista de proxies públicos gratuitos separada é de terceiros e não validada para uso em produção.
Como faço para pular um proxy inativo em uma lista?
Envolva cada tentativa em try/except requests.exceptions.RequestException, depois tente novamente com o próximo proxy do seu pool. O exemplo executável acima faz exatamente isso com um pequeno loop de retry.
Proxies criados para ocultar seu IP de origem
Proxies SOCKS5 e HTTP autenticados de datacenter, pagamento conforme o uso, com um IP pessoal dedicado opcional. Direcione solicitações para proxy.s4m.online e vá.
As pessoas encontraram esta página pesquisando por
- como usar proxies com solicitações Python
- o que é autenticação de proxy
- como construir seu próprio servidor proxy em um VPS (3proxy / Dante)
- autenticação de proxy
- usando variáveis de ambiente HTTP_PROXY / HTTPS_PROXY
- proxy para scraping
- melhor openvpn 2026
- interruptor de desligamento vpn explicado
- configuração de proxy Puppeteer com autenticação
- lista de proxies gratuitos por país
- interruptor de desligamento vpn
- melhor interruptor de desligamento vpn 2026
Frases de busca reais que esta página responde — os links abrem a página que as cobre em profundidade.