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

> requests.exceptions.ProxyError 'Impossible de se connecter au proxy' expliqué : lisez la cause imbriquée (refus, délai, DNS, 407, 502) et appliquez la bonne correction.

- URL: https://crawlrelay.com/fr/docs/errors/cannot-connect-to-proxy/
- Dernière mise à jour: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

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

**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

| Attribut | Valeur |
| --- | --- |
| Erreur | Cannot connect to proxy (ProxyError) |
| Type | Erreur bibliothèque client (Python, Node.js) |
| Envoyé par | Votre client HTTP, avant ou pendant la communication avec le proxy |
| Défini dans | Library error; read the nested cause for the real reason |
| Réessayer ? | Dépend de la cause imbriquée |
| Vérification initiale | Lisez 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)*

```bash
# 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:PASSWORD@gw.crawlrelay.com: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](https://crawlrelay.com/fr/docs/errors/407-proxy-authentication-required/).
- **502 ou 504 :** retentez via une nouvelle sortie. Voir [502](https://crawlrelay.com/fr/docs/errors/502-bad-gateway/) et [504](https://crawlrelay.com/fr/docs/errors/504-gateway-timeout/).
- **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*

```python
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](https://crawlrelay.com/fr/docs/errors/ssl-wrong-version-number/) · [407](https://crawlrelay.com/fr/docs/errors/407-proxy-authentication-required/) · [Guide Python](https://crawlrelay.com/fr/docs/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

- [401 Unauthorized vs 407](https://crawlrelay.com/fr/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/fr/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/fr/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/fr/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/fr/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/fr/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/fr/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/fr/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/fr/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/fr/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/fr/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/fr/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/fr/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/fr/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/fr/docs/errors/ssl-wrong-version-number/)

**Proxies résidentiels avec documentation couvrant les cas de défaillance** Proxies résidentiels CrawlRelay de 0,50 $US/GB, trafic sans expiration. [Voir les tarifs](https://crawlrelay.com/fr/pricing/) · [Démarrage rapide](https://crawlrelay.com/fr/docs/)

---

CrawlRelay: CrawlRelay est un service de proxy résidentiel rotatif et proxy mobile 4G/5G pour développeurs, adapté aux scrapers et pipelines de données IA : trafic prépayé sans expiration à partir de 0,50 $US/GB, paiement en crypto, sans téléchargement d’ID. Sans KYC — pas d’ID, pas de selfie, pas de documents. Payer en crypto.
