Impostazione del proxy · 2 min di lettura

Utilizzando le variabili di ambiente HTTP_PROXY / HTTPS_PROXY

Le variabili d'ambiente HTTP_PROXY, HTTPS_PROXY e NO_PROXY sono il modo più veloce per inviare il traffico in uscita di un programma attraverso un proxy. Ecco come si comportano su curl, wget, Python, Node.js e Docker — e dove silenziosamente non lo fanno.

Come funzionano le variabili ambientali del proxy

HTTP_PROXY, HTTPS_PROXY e NO_PROXY sono una vecchia convenzione multipiattaforma: molti strumenti da riga di comando e librerie HTTP li leggono all'avvio e instradano le richieste in uscita attraverso il proxy che nomini. L'effetto è semplice — il tuo vero / IP di origine rimane nascosto e la destinazione vede invece l'indirizzo di uscita del proxy.

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.

Non tutti gli strumenti rispettano queste variabili, e quelli che lo fanno non sono d'accordo sui dettagli:

StrumentoLegge le variabili d'ambiente?Note
curlSìminuscolo http_proxy solo per HTTP; entrambi i casi per HTTPS
wgetSìrispetta http_proxy, https_proxy, no_proxy
Python requests / urllibSìautomatico; un argomento per richiesta proxies= sovrascrive
Node.js core fetch / httpNorichiede undici ProxyAgent o global-agent
Docker CLI / buildParzialepassa tramite --build-arg, -e o 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.

Imposta le variabili nel tuo shell (curl + wget)

Esporta una volta, poi i comandi ordinari escono attraverso il proxy. L'autenticazione va in linea nell'URL come USER:PASS. Imposta anche la forma minuscola — curl legge solo http_proxy in minuscolo per lo schema 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

Le richieste/urllib di Python raccolgono automaticamente le variabili. Il core http di Node e fetch() globale non lo fanno — devi allegare un agente proxy tu stesso.

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 (build e runtime)

I contenitori non ereditano il tuo ambiente shell. Passa le variabili esplicitamente per build e run; il demone che estrae le immagini le legge dal proprio file di configurazione.

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" } } }

Cose da sapere

Percent-encode credenziali

I caratteri speciali in USER:PASS interrompono l'URL. Codificali: @ diventa %40, : diventa %3A, / diventa %2F, # diventa %23. Altrimenti il parser taglia il valore nel posto sbagliato.

HTTPS_PROXY mira a https:// URL

Seleziona il proxy per gli URL di destinazione HTTPS — non un proxy raggiunto tramite HTTPS. Lo schema nel valore (http:// o socks5h://) determina come ti connetti al nostro proxy.

NO_PROXY è esigente

Separati da virgole, senza spazi, corrispondenza del suffisso (.example.com). Gli intervalli CIDR e il carattere jolly * sono supportati da alcuni strumenti e ignorati da altri, quindi testa piuttosto che assumere.

socks5h vs socks5

Con socks5:// la tua macchina risolve DNS localmente e solo la connessione TCP è proxyata. Usa socks5h:// affinché la ricerca del nome host avvenga anche al proxy, mantenendo il DNS lontano dalla tua origine.

Le credenziali sono visibili localmente

Le variabili d'ambiente appaiono nell'output di ps, nella cronologia della shell e nei log CI. Usa una credenziale proxy per account che puoi ruotare e preferisci i segreti rispetto a commetterli in un Dockerfile o in una pipeline.

Non tutti i client li rispettano

Il core http e fetch del nodo, oltre ad alcuni SDK, ignorano completamente queste variabili. Conferma sempre con un'eco IP come api.ipify.org che il traffico sia effettivamente uscito attraverso l'uscita del proxy, non il tuo vero IP.

Share this page
FAQ

Domande, risposte

Perché curl ignora HTTP_PROXY ma rispetta http_proxy?

Per lo schema HTTP, curl legge deliberatamente solo http_proxy in minuscolo. L'HTTP_PROXY maiuscolo è stato disabilitato anni fa perché gli script CGI ricevono una variabile di ambiente HTTP_* dalle intestazioni del client, che potrebbe dirottare un'impostazione proxy. Per HTTPS e NO_PROXY curl legge entrambi i casi. L'abitudine sicura è esportare sia le forme maiuscole che minuscole.

Qual è la differenza tra HTTPS_PROXY e 'un proxy su HTTPS'?

HTTPS_PROXY sceglie quale proxy gestisce le richieste agli URL di destinazione https://. Non dice nulla su come ti connetti al proxy stesso — questo è impostato dallo schema nel valore. http://proxy.s4m.online:3128 raggiunge il nostro proxy HTTP in chiaro CONNECT; socks5h://proxy.s4m.online:1080 raggiunge il punto finale SOCKS5. Il tuo payload effettivo a un sito https rimane crittografato TLS end-to-end indipendentemente.

Posso mettere un URL SOCKS5 in HTTP_PROXY?

curl accetta socks5:// e socks5h:// nell'URL del proxy, ma molti altri strumenti non lo fanno. Per portabilità, usa ALL_PROXY per SOCKS5 o l'opzione SOCKS della libreria. Preferisci socks5h:// in modo che il DNS si risolva su proxy.s4m.online:1080 invece di rivelare ricerche dalla tua origine.

Questi sono proxy residenziali?

No. I proxy s4m sono proxy SOCKS5 e HTTP autenticati da datacenter, fatturati pay-as-you-go. Gli IP da datacenter sono veloci e affidabili per API, CI e obiettivi di scraping che controlli, ma alcuni siti consumer rilevano e bloccano più facilmente gli intervalli da datacenter rispetto a quelli residenziali. Non vendiamo né rivendichiamo IP residenziali.

Impostare queste variabili nasconderà il mio vero IP ovunque?

Solo per programmi che li leggono effettivamente. Il core http di Node, fetch globale, alcuni SDK e qualsiasi app che apre socket raw bypasseranno il proxy ed esporranno il tuo vero IP. Dopo la configurazione, verifica con un'eco IP come api.ipify.org, o usa il nostro VPN WireGuard quando hai bisogno che ogni processo sul dispositivo sia instradato.

Instrada le tue richieste attraverso s4m

Proxy di data center SOCKS5 e HTTP autenticati, pagamento a consumo, più VPN WireGuard a tariffa fissa. No-logs per design, RAM-first, account anonimi. Aggiungi un IP personale dedicato ogni volta che hai bisogno di un'uscita statica.

Le persone hanno trovato questa pagina cercando

Frasi di ricerca reali a cui questa pagina risponde — i collegamenti aprono la pagina che le tratta in dettaglio.