Utilisation des variables d'environnement HTTP_PROXY / HTTPS_PROXY
Les variables d'environnement HTTP_PROXY, HTTPS_PROXY et NO_PROXY sont le moyen le plus rapide d'envoyer le trafic sortant d'un programme à travers un proxy. Voici comment elles se comportent dans curl, wget, Python, Node.js et Docker — et où elles ne fonctionnent pas discrètement.
Comment fonctionnent les variables d'environnement du proxy
HTTP_PROXY, HTTPS_PROXY et NO_PROXY sont une ancienne convention multiplateforme : de nombreux outils en ligne de commande et bibliothèques HTTP les lisent au démarrage et acheminent les requêtes sortantes via le proxy que vous nommez. L'effet est simple — votre véritable / IP d'origine reste cachée et la destination voit l'adresse de sortie du proxy à la place.
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.
Tous les outils ne respectent pas ces variables, et ceux qui le font ne s'accordent pas sur les détails :
| Outil | Lit les variables d'environnement ? | Remarques |
|---|---|---|
| curl | Oui | minuscule http_proxy uniquement pour HTTP ; les deux cas pour HTTPS |
| wget | Oui | respecte http_proxy, https_proxy, no_proxy |
| Python requests / urllib | Oui | automatique ; un argument par requête proxies= remplace |
Node.js core fetch / http | Non | nécessite undici ProxyAgent ou global-agent |
| Docker CLI / build | Partiel | passer via --build-arg, -e ou config.json |
Les nôtres sont des proxies de datacenter (pas résidentiels), donc les sites de consommation peuvent les signaler plus facilement — parfait pour les API, CI et les cibles de scraping que vous contrôlez, moins pour les plateformes de consommation verrouillées. Nos proxies SOCKS5 et HTTP authentifiés prennent un nom d'utilisateur et un mot de passe, donc rien ne sort sans vos identifiants. Pour un routage toujours actif et sur tous les appareils, utilisez le VPN WireGuard à la place ; pour essayer la liste de proxy public jetable ou l'accès tarifé, consultez les prix. Plus de recettes se trouvent dans les guides, et une comparaison complète entre VPN et proxy est également ici.
Définissez les variables dans votre shell (curl + wget)
Exportez une fois, puis les commandes ordinaires sortent par le proxy. L'authentification se fait en ligne dans l'URL sous la forme USER:PASS. Définissez également la forme en minuscules — curl ne lit que http_proxy en minuscules pour le schéma HTTP.
# 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 et Node.js
Les requêtes/urllib de Python récupèrent automatiquement les variables. Le http de base de Node et fetch() global ne le font pas — vous devez attacher un agent proxy vous-même.
# --- 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.jsDocker (construction et exécution)
Les conteneurs n'héritent pas de votre environnement shell. Passez les variables explicitement pour les constructions et les exécutions ; le démon qui tire les images les lit à partir de son propre fichier de configuration.
# 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" } } }Astuces à connaître
Encodage des identifiants en pourcentage
Les caractères spéciaux dans USER:PASS cassent l'URL. Encodez-les : @ devient %40, : devient %3A, / devient %2F, # devient %23. Sinon, le parseur coupe la valeur au mauvais endroit.
HTTPS_PROXY cible les URL https://
Il sélectionne le proxy pour les URL de destination HTTPS — pas un proxy atteint via HTTPS. Le schéma dans la valeur (http:// ou socks5h://) détermine comment vous vous connectez à notre proxy.
NO_PROXY est exigeant
Séparés par des virgules, sans espaces, correspondant au suffixe (.example.com). Les plages CIDR et le caractère générique * sont pris en charge par certains outils et ignorés par d'autres, donc testez plutôt que de supposer.
socks5h vs socks5
Avec socks5://, votre machine résout le DNS localement et seule la connexion TCP est proxifiée. Utilisez socks5h:// pour que la recherche de nom d'hôte se fasse également au niveau du proxy, gardant le DNS hors de votre origine.
Les identifiants sont visibles localement
Les variables d'environnement apparaissent dans la sortie ps, l'historique de la shell et les journaux CI. Utilisez un identifiant de proxy par compte que vous pouvez faire tourner, et préférez les magasins secrets plutôt que de les engager dans un Dockerfile ou un pipeline.
Tous les clients ne les respectent pas
Le cœur http et fetch du nœud, ainsi que certains SDK, ignorent complètement ces variables. Confirmez toujours avec un écho IP comme api.ipify.org que le trafic est réellement sorti par la sortie du proxy, et non votre vraie IP.
Questions, réponses
Pourquoi curl ignore-t-il HTTP_PROXY mais respecte-t-il http_proxy ?
Pour le schéma HTTP, curl lit délibérément uniquement le http_proxy en minuscules. Le HTTP_PROXY en majuscules a été désactivé il y a des années car les scripts CGI reçoivent une variable d'environnement HTTP_* des en-têtes clients, ce qui pourrait détourner un paramètre de proxy. Pour HTTPS et NO_PROXY, curl lit les deux cas. L'habitude sûre est d'exporter les formes en majuscules et en minuscules.
Quelle est la différence entre HTTPS_PROXY et 'un proxy sur HTTPS' ?
HTTPS_PROXY choisit quel proxy gère les requêtes vers les URL de destination https://. Cela ne dit rien sur la façon dont vous vous connectez au proxy lui-même — cela est défini par le schéma dans la valeur. http://proxy.s4m.online:3128 atteint notre proxy HTTP en texte clair CONNECT ; socks5h://proxy.s4m.online:1080 atteint le point de terminaison SOCKS5. Votre charge utile réelle vers un site https reste chiffrée TLS de bout en bout, peu importe.
Puis-je mettre une URL SOCKS5 dans HTTP_PROXY ?
curl accepte socks5:// et socks5h:// dans l'URL du proxy, mais de nombreux autres outils ne le font pas. Pour la portabilité, utilisez ALL_PROXY pour SOCKS5 ou l'option SOCKS de la bibliothèque. Préférez socks5h:// afin que le DNS se résolve à proxy.s4m.online:1080 au lieu de fuir les recherches depuis votre origine.
S'agit-il de proxies résidentiels ?
Non. Les proxies s4m sont des proxies SOCKS5 et HTTP de centre de données authentifiés, facturés à l'utilisation. Les IP de centre de données sont rapides et fiables pour les API, CI et les cibles de scraping que vous contrôlez, mais certains sites de consommation détectent et bloquent plus facilement les plages de centres de données que celles résidentielles. Nous ne vendons pas et ne revendiquons pas d'IP résidentielles.
Est-ce que la définition de ces variables cachera ma vraie IP partout ?
Uniquement pour les programmes qui les lisent réellement. Le http de base de Node, le fetch global, certains SDK et toute application qui ouvre des sockets bruts contourneront le proxy et exposeront votre véritable IP. Après configuration, vérifiez avec un écho IP tel que api.ipify.org, ou utilisez notre VPN WireGuard lorsque vous avez besoin que chaque processus sur l'appareil soit routé.
Acheminez vos requêtes via s4m
Proxies de centre de données SOCKS5 et HTTP authentifiés, pay-as-you-go mesuré, plus VPN WireGuard à tarif fixe. Pas de logs par conception, RAM-first, comptes anonymes. Ajoutez une IP personnelle dédiée chaque fois que vous avez besoin d'une sortie statique.
Les gens ont trouvé cette page en recherchant
- utilisation des variables d'environnement HTTP_PROXY / HTTPS_PROXY
- Réglages openvpn
- est openvpn sûr
- openvpn
- est authentification de proxy sûr
- fonctionne liste de proxies gratuits
- qu'est-ce qu'un proxy transparent
- VPN pour le travail à distance
- comment configurer interrupteur d'arrêt VPN
- configuration de proxy Puppeteer avec authentification
- proxy http
- qu'est-ce que proxy pour le scraping
Vraies phrases de recherche auxquelles cette page répond — les liens ouvrent la page qui les couvre en profondeur.