# Proxy Python Requests : utiliser un proxy ISP statique | ProxyJam

Comment définir un proxy dans Python requests : par requête, par session et en SOCKS5 avec DNS côté proxy, avec du code testé pour une adresse ISP statique.

- Canonical: https://proxyjam.com/fr/integrations/python-requests/
- Updated: 2026-10-23
- Language: fr

Faites passer requests par une adresse ISP statique : une seule IP sur le réseau d'un fournisseur d'accès nommé, conservée pendant la période que vous payez. Le code ci-dessous a été exécuté contre un proxy avec authentification avant sa publication.


Passez un dictionnaire proxies avec les deux clés http et https, chacune réglée sur http://USERNAME:PASSWORD@HOST:PORT, et requests envoie l'appel via le proxy ; les cibles HTTPS le traversent sous forme de tunnel. Pour SOCKS5, installez requests[socks], basculez le proxy en SOCKS5 sur votre commande et utilisez le schéma socks5h, pour que ce soit le proxy qui résolve les noms d'hôte et non votre machine.


## Définir un proxy dans Python requests

1. **Copiez les quatre valeurs de votre commande** Hôte, port, identifiant et mot de passe, depuis Mes proxys dans le tableau de bord ou depuis la commande dans l'API. Chaque adresse a ses quatre valeurs ; il n'y a pas de passerelle partagée.
2. **Construisez une URL de proxy** `http://USERNAME:PASSWORD@HOST:PORT`. Si le mot de passe contient `/`, `?`, `#` ou `%`, encodez-le d'abord pour l'URL avec `urllib.parse.quote(password, safe="")`.
3. **Définissez-la pour les deux schémas** Donnez la même URL à la clé `http` et à la clé `https`. Si seule `http` est définie, chaque requête HTTPS contourne le proxy et part de votre propre adresse.
4. **Vérifiez une fois l'adresse de sortie** Demandez une page qui affiche l'IP de l'appelant, ou ouvrez [Quelle est mon IP](/fr/what-is-my-ip/) via le même proxy, et vérifiez qu'il s'agit bien de l'adresse achetée.
5. **Lancez la tâche avec un délai d'expiration** Passez toujours `timeout=` : par défaut, requests attend indéfiniment, et une connexion bloquée ressemble alors à un script figé.

## Code testé pour requests

Chaque exemple se connecte via un proxy HTTP avec identifiant et mot de passe, sauf l'exemple SOCKS5 : il faut d'abord basculer le proxy en SOCKS5, et la commande affiche ensuite un nouveau port et de nouveaux identifiants à utiliser. Remplacez les quatre valeurs en majuscules par celles de votre commande.

### Par requête

Passer le proxy à un seul appel.

```
import requests

# The four values come with your order (dashboard or API)
proxy = "http://USERNAME:PASSWORD@HOST:PORT"

response = requests.get(
    "https://example.com/",
    proxies={"http": proxy, "https": proxy},
    timeout=30,
)
response.raise_for_status()
print(response.status_code)
```

### Session

Définir le proxy une fois pour tous les appels d'une session.

```
import requests

proxy = "http://USERNAME:PASSWORD@HOST:PORT"

with requests.Session() as session:
    # HTTP_PROXY / HTTPS_PROXY in the environment would override
    # session.proxies; this makes the session use only its own setting.
    session.trust_env = False
    session.proxies.update({"http": proxy, "https": proxy})
    response = session.get("https://example.com/", timeout=30)
    response.raise_for_status()
    print(response.status_code)
```

### SOCKS5

SOCKS5 avec résolution des noms d'hôte par le proxy.

```
# pip install "requests[socks]"
import requests

# Switch the proxy to SOCKS5 first; use the values the order then shows.
# socks5h: the proxy resolves the hostname, not your machine.
proxy = "socks5h://USERNAME:PASSWORD@HOST:PORT"

response = requests.get(
    "https://example.com/",
    proxies={"http": proxy, "https": proxy},
    timeout=30,
)
response.raise_for_status()
print(response.status_code)
```


## Où définir le proxy dans requests

|  | Portée | Identifiants | Quand l'utiliser |
|---|---|---|---|
| proxies= sur un appel | Cette seule requête | Dans l'URL | Un script de quelques appels |
| Session.proxies | Chaque requête de la session | Dans l'URL | Tout ce qui est plus long, avec trust_env réglé sur False |
| HTTP_PROXY et HTTPS_PROXY | Chaque appel requests du processus | Dans l'URL | Du code que vous ne pouvez pas modifier ; NO_PROXY liste les hôtes à exclure |
| URL socks5h:// | La portée où elle est définie | Dans l'URL | Quand les noms d'hôte doivent être résolus par le proxy |

Tiré de la documentation de requests et vérifié avec les exemples de code de cette page contre un proxy local avec authentification. Quand plusieurs réglages coexistent, un argument proxies sur l'appel l'emporte sur l'environnement, et l'environnement l'emporte sur Session.proxies, sauf si la session règle trust_env sur False, comme le fait l'exemple Session.


## Ce à quoi requests se connecte

- **Protocoles:** HTTP, qui transporte HTTPS, ou SOCKS5, activé sur la commande
- **Authentification:** Identifiant et mot de passe, ou liste blanche d'IP définie via l'API
- **Adresse:** Une IP statique pour la période, sur le réseau d'un fournisseur d'accès nommé
- **Rotation:** Aucune : la même adresse à chaque requête

## Ce qui tourne mal avec requests et les proxys

### Seule la clé http est définie

La clé désigne le schéma de la cible, pas celui du proxy. Un dictionnaire avec seulement http fait passer le HTTP simple et laisse chaque appel HTTPS sortir directement, sans aucune erreur pour vous prévenir.

### socks5 au lieu de socks5h

Avec socks5, votre machine résout le nom d'hôte et transmet une IP au proxy. Avec socks5h, c'est le proxy qui le résout, si bien que la requête DNS et sa réponse viennent du réseau du proxy, ce qui compte pour les sites qui répondent selon la localisation.

### Un mot de passe qui casse l'URL

Une barre oblique, un point d'interrogation ou un dièse dans le mot de passe tronque l'URL, et requests échoue avant d'atteindre le proxy ; un signe pourcentage est décodé comme une séquence d'échappement. Encodez le mot de passe pour l'URL, ou utilisez l'authentification par liste blanche d'IP et laissez les identifiants de côté.

### Une variable d'environnement oubliée

requests lit HTTP_PROXY, HTTPS_PROXY et NO_PROXY, sauf si vous réglez trust_env sur False dans la session, et ces variables priment sur Session.proxies. Une variable périmée sur un serveur peut envoyer le trafic d'une session là où vous ne l'aviez pas prévu, ou le faire passer à côté du proxy.


## Questions sur les proxys dans Python requests

### Comment utiliser un proxy avec authentification dans Python requests ?

Mettez l'identifiant et le mot de passe dans l'URL du proxy, http://USERNAME:PASSWORD@HOST:PORT, et passez-la pour les deux clés http et https. requests envoie les identifiants au proxy, qui répond 407 s'ils sont faux. Encodez un mot de passe qui contient des caractères réservés, ou utilisez plutôt une liste blanche d'IP.

### Comment utiliser un proxy SOCKS5 avec requests ?

Installez l'extra avec pip install requests[socks], basculez le proxy lui-même en SOCKS5 sur votre commande, et utilisez le port et les identifiants que la commande affiche alors dans une URL socks5h://. Changer le schéma ne suffit pas : une adresse réglée sur HTTP ne répond pas en SOCKS5 tant qu'elle n'a pas été basculée.

### Puis-je utiliser l'authentification par liste blanche d'IP au lieu d'un mot de passe ?

Oui. Ajoutez l'adresse IPv4 publique depuis laquelle tourne votre script à la liste blanche du proxy avec un appel d'API, PUT /orders/ORDER_ID/whitelist, ou via le serveur MCP ; le tableau de bord n'a pas encore de réglage pour cela. Le proxy accepte alors les connexions venant de cette adresse sans identifiants, en HTTP et en SOCKS5, et l'URL devient http://HOST:PORT. Tant qu'une liste blanche est définie, le proxy n'admet que les adresses listées, et l'identifiant et le mot de passe cessent de fonctionner pour cette commande ; envoyer une liste vide désactive la liste blanche, et la connexion par mot de passe fonctionne de nouveau.

### L'adresse change-t-elle d'une requête à l'autre ?

Non. Un proxy ISP statique est une adresse pour la période que vous payez, et chaque requête que vous envoyez par lui part de cette adresse. Si une tâche a besoin d'une adresse différente à chaque requête, c'est un pool rotatif, que nous ne vendons pas encore.

### Comment savoir quelle IP un site voit ?

Demandez via le même proxy une page qui renvoie l'adresse de l'appelant, ou ouvrez la page Quelle est mon IP dans un navigateur réglé sur ce proxy. Si elle affiche votre propre adresse, c'est probablement la clé https qui manque.

### À quoi puis-je utiliser le proxy ?

Tester vos propres sites par région, les contrôles qualité, la vérification publicitaire, les études de prix et de marché et la protection de marque ne demandent aucun examen au titre de notre politique d'utilisation acceptable. Le proxy ne contourne ni les CAPTCHA, ni la détection de bots, ni les limites de débit, ni les bannissements de comptes, et la politique interdit d'essayer.


Une adresse statique convient aux tâches qui doivent arriver chaque fois du même endroit : une surveillance, un contrôle régional, un test qui compare aujourd'hui à la semaine dernière. Commandez une adresse par tâche sur [Proxys ISP](/fr/isp-proxies/), consultez les [tarifs](/fr/pricing/), et si la même tâche tourne dans un navigateur, les guides [Selenium](/fr/integrations/selenium/) et [Playwright](/fr/integrations/playwright/) y règlent la même adresse.



## Sources

- [Requests documentation, Proxies](https://requests.readthedocs.io/en/latest/user/advanced/#proxies) : l'argument proxies, les variables d'environnement et la prise en charge de SOCKS
- [RFC 1928, SOCKS Protocol Version 5](https://www.rfc-editor.org/rfc/rfc1928) : comment un client demande une destination à un proxy SOCKS5, par nom ou par adresse
- [RFC 3986, URI Generic Syntax](https://www.rfc-editor.org/rfc/rfc3986#section-3.2.1) : la partie userinfo d'une URL et les caractères qui doivent y être encodés




Python requests prend son proxy dans un dictionnaire qui associe le schéma de l'URL cible à une URL de proxy. Ce guide règle ce dictionnaire pour une adresse ISP statique et montre les trois endroits où il peut se trouver : sur un appel, sur une session ou dans l'environnement.

## Proxy Python requests avec identifiant et mot de passe

La plupart des proxys, les nôtres compris, demandent un identifiant et un mot de passe. requests les lit dans l'URL du proxy et les envoie au proxy à chaque connexion. Pour une cible HTTPS, le proxy ouvre un tunnel et ne voit jamais le contenu de la requête. Les onglets de code montrent la forme par requête et la forme par session.

