Sans KYC — pas d’ID, pas de selfie, pas de documents. Payer en crypto : BTC, USDT, USDC, ETH, SOL, LTC
Langue: Français
Commencez

Référence d’erreur proxy · Erreurs du navigateur et du client

ProxyError : « Impossible de se connecter au proxy » en Python et Node.js

Erreur bibliothèque client (Python, Node.js) : message exact dans chaque outil, causes probables par ordre, et solution efficace.

Dernière mise à jour: · 5 min de lecture

Réponse rapide

Que signifie Cannot connect to proxy (ProxyError) avec un proxy ?

« Impossible de se connecter au proxy » est une erreur englobante : les modules requests et urllib3 de Python y placent la cause réelle. Lisez la cause la plus profonde. « Connexion refusée » ou un délai dépassé signifient un problème d’hôte, de port ou de réseau ; « Échec de résolution » signifie DNS ; « Échec de connexion tunnel : 407 » signifie des problèmes d’identifiants. Avec CrawlRelay, chacun a une solution d’une ligne.

Cannot connect to proxy (ProxyError) en un coup d'œil

ErreurCannot connect to proxy (ProxyError)
TypeErreur bibliothèque client (Python, Node.js)
Envoyé parVotre client HTTP, avant ou pendant la communication avec le proxy
Défini dansLibrary error; read the nested cause for the real reason
Réessayer ?Dépend de la cause imbriquée
Vérification initialeLisez l’exception la plus interne : refus, délai expiré, résolution de nom, ou un code d’état

Que signifie Cannot connect to proxy (ProxyError) ?

urllib3 déclenche une ProxyError pour chaque échec lié au proxy, et requests la transmet. L’information utile se trouve dans l’exception imbriquée, dont la trace d’exécution s’affiche en fin d’une ligne longue.

Les clients Node.js se comportent différemment : ils rapportent directement l’erreur de socket, comme ECONNREFUSED ou ETIMEDOUT, souvent sans indiquer que l’adresse était celle du proxy.

À quoi ressemble 'Cannot connect to proxy' en Python, curl, Node.js et navigateurs ?

La même erreur s'affiche différemment selon chaque outil. Voici les messages à rechercher dans vos logs :

  • Refusé : ProxyError('Unable to connect to proxy', NewConnectionError(... Connection refused))
  • DNS : NameResolutionError(... Failed to resolve ...) dans la ProxyError
  • Identifiants : OSError('Tunnel connection failed: 407 Proxy Authentication Required')
  • Erreur de passerelle : OSError('Tunnel connection failed: 502 Bad Gateway')
  • Node.js : Error: connect ECONNREFUSED, ETIMEDOUT ou ENOTFOUND, suivi de l’adresse du proxy

Quelles sont les causes de 'Cannot connect to proxy' ?

Probablement en premier lieu :

  • Hôte ou port erroné dans l’URL de proxy.
  • Absence de schéma : host:port sans http:// est analysé de manière surprenante par certaines bibliothèques.
  • Trafic sortant bloqué sur votre réseau ou serveur.
  • Erreurs d’identifiants ou de passerelle apparues lors de l’étape CONNECT, encapsulées dans la même exception.
  • Variables d’environnement comme HTTPS_PROXY pointant vers un ancien proxy et qui priment sur votre code.

Comment diagnostiquer 'Cannot connect to proxy' étape par étape ?

  1. Affichez l’exception complète et lisez la dernière cause imbriquée.
  2. Affichez requests.utils.get_environ_proxies(url) ou les variables HTTP_PROXY, HTTPS_PROXY et NO_PROXY pour voir les autres configurations.
  3. Lancez le test curl ci-dessous depuis la même machine.
  4. Associez la cause à la liste de corrections ci-dessous.
Tester l'URL en échec avec curl (port HTTP, mode verbeux)
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL

Comment résoudre 'Cannot connect to proxy' ?

  • Refusé ou délai dépassé : corrigez l’hôte et le port ou ouvrez le trafic sortant vers la passerelle.
  • Échec de résolution : vérifiez le DNS sur la machine ; testez l’hôte avec nslookup.
  • 407 : corrigez et encodez les identifiants dans l’URL. Voir 407 Proxy Authentication Required.
  • 502 ou 504 : retentez via une nouvelle sortie. Voir 502 et 504.
  • Proxy indésirable en variable d’environnement : positionnez session.trust_env = False dans requests, ou nettoyez ces variables.
Python : construire l'URL du proxy avec des identifiants encodés
from urllib.parse import quote

import requests

user = "USERNAME-country-us"
password = "p@ss:word/1"  # example containing special characters

# safe="" also encodes "/", "@" and ":" inside the credentials
proxy = "http://{}:{}@gw.crawlrelay.com:7777".format(
    quote(user, safe=""), quote(password, safe="")
)
proxies = {"http": proxy, "https": proxy}  # http:// for both keys

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=(10, 30))
print(r.status_code, r.text)

Dois-je réessayer après 'Cannot connect to proxy' ?

Retentez seulement les causes réseau changeantes : délais dépassés et erreurs de passerelle comme 502 ou 504. Une connexion refusée, un échec DNS ou 407 se répéteront tant que la configuration n’est pas modifiée, donc considérez-les comme fatals dans votre gestion d’erreur.

Quelle est l'incidence de Cannot connect to proxy (ProxyError) sur CrawlRelay ?

Pour CrawlRelay, l’URL du proxy est http://USERNAME:PASSWORD@ suivie de l’hôte de passerelle et du port HTTP listés ci-dessous, pour cibles HTTP et HTTPS. Utilisez la même URL http:// pour les clés http et https dans requests : le schéma désigne le protocole parlé au proxy, pas au site.

Passerelle : gw.crawlrelay.com, port 7777 (HTTP, HTTPS via CONNECT) et port 7778 (SOCKS5). Format du nom d'utilisateur : USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Voir aussi : SSL: WRONG_VERSION_NUMBER · 407 · Guide Python.

Cannot connect to proxy (ProxyError) : questions fréquentes des développeurs

Que signifie « Max retries exceeded with url » avec un proxy ?

Cela signifie qu’urllib3 a renoncé après son budget de tentatives, la cause réelle suit dans la partie « Caused by » du message. Avec un proxy, cette partie est généralement un ProxyError avec une cause imbriquée : connexion refusée, délai dépassé, échec de résolution de nom ou état tunnel comme 407.

Pourquoi requests utilise-t-il un proxy que je n’ai pas configuré ?

requests lit par défaut les variables d’environnement HTTP_PROXY, HTTPS_PROXY et NO_PROXY, sur Windows il lit aussi les paramètres système de proxy. Une valeur héritée outrepasse vos attentes. Positionnez session.trust_env = False, ou transmettez explicitement les proxies à chaque requête.

Dois-je écrire http:// ou https:// devant l’adresse du proxy ?

Écrivez http:// pour un proxy HTTP, même si le site est en HTTPS. Le schéma décrit comment votre client s’adresse au proxy. Écrire https:// fait que les versions récentes d’urllib3 démarrent un TLS avec le proxy, ce qui échoue sur un port de proxy HTTP classique avec une erreur SSL.

Autres erreurs de proxy dans cette référence

Codes d'état HTTP

Erreurs du navigateur et du client

Erreurs de connexion et TLS

Proxies résidentiels avec documentation couvrant les cas de défaillance

Proxies résidentiels CrawlRelay de 0,50 $US/GB, trafic sans expiration.

À partir de 0,50 $US/GB · sans KYC

Commencez