# Proxy Playwright : configuration avec authentification, Python et Node | ProxyJam

Comment définir un proxy Playwright par navigateur ou par contexte, avec identifiant et mot de passe en HTTP, et pourquoi SOCKS5 exige une liste blanche d'IP. Code testé.

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

Donnez à Playwright une adresse ISP statique, au lancement ou pour un seul contexte de navigateur. Les exemples ont été exécutés dans Chromium, Firefox et WebKit contre un proxy local avant leur publication.


Passez proxy avec server, username et password à chromium.launch, ou à browser.new_context pour le limiter à un contexte. En HTTP, les trois moteurs s'authentifient avec ces champs. En SOCKS5, aucun n'accepte d'identifiant ni de mot de passe : Playwright refuse de se lancer. Ajoutez votre IP à la liste blanche du proxy et ne donnez que le serveur socks5://.


## Définir un proxy dans Playwright

1. **Copiez l'hôte, le port, l'identifiant et le mot de passe** Depuis Mes proxys dans le tableau de bord ou depuis la commande dans l'API. Chaque adresse est livrée avec ses quatre valeurs.
2. **Choisissez la portée** Avec `launch`, tout le navigateur utilise le proxy. Avec `new_context`, seul ce contexte l'utilise, si bien qu'un script peut faire tourner plusieurs contextes via des adresses différentes.
3. **Passez l'objet proxy** `{"server": "http://HOST:PORT", "username": "USERNAME", "password": "PASSWORD"}`. Les identifiants vont dans leurs propres champs, jamais dans l'URL du serveur.
4. **Passage à SOCKS5 ? Retirez les identifiants** Playwright ne sait pas s'authentifier auprès d'un proxy SOCKS5 : basculez donc la commande en SOCKS5, admettez l'IP de votre machine avec l'appel de liste blanche des onglets de code, et ne gardez que `socks5://HOST:PORT`, avec le nouveau 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.
5. **Confirmez l'adresse de sortie** Ouvrez une fois [Quelle est mon IP](/fr/what-is-my-ip/) dans une page de ce navigateur ou de ce contexte, avant l'exécution réelle.

## Code testé pour Playwright

Exécuté avec Playwright 1.64 pour Python et pour Node. Les exemples HTTP envoient un identifiant et un mot de passe et demandent une commande sans liste blanche définie ; l'exemple SOCKS5 repose sur la liste blanche et exige d'abord de basculer le proxy en SOCKS5, ce qui donne un nouveau port. Remplacez les valeurs en majuscules par celles de votre commande.

### Python

Proxy pour tout le navigateur, Python.

```
# pip install playwright && playwright install chromium
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={
        "server": "http://HOST:PORT",
        "username": "USERNAME",
        "password": "PASSWORD",
    })
    page = browser.new_page()
    page.goto("https://example.com/")
    print(page.title())
    browser.close()
```

### Node.js

Proxy pour tout le navigateur, Node.

```
// npm i playwright && npx playwright install chromium
const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({
    proxy: {
      server: 'http://HOST:PORT',
      username: 'USERNAME',
      password: 'PASSWORD',
    },
  });
  const page = await browser.newPage();
  await page.goto('https://example.com/');
  console.log(await page.title());
  await browser.close();
})();
```

### Par contexte

Proxy pour un seul contexte de navigateur.

```
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    # The proxy belongs to this context only; another context can use
    # a different address, or none.
    context = browser.new_context(proxy={
        "server": "http://HOST:PORT",
        "username": "USERNAME",
        "password": "PASSWORD",
    })
    page = context.new_page()
    page.goto("https://example.com/")
    print(page.title())
    browser.close()
```

### SOCKS5

SOCKS5 avec une IP en liste blanche.

```
# Switch the proxy to SOCKS5 and put your machine's IP on its whitelist:
# Chromium cannot send a SOCKS5 username and password.
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={"server": "socks5://HOST:PORT"})
    page = browser.new_page()
    page.goto("https://example.com/")
    print(page.title())
    browser.close()
```

### Appel liste blanche

Ajouter votre IP à la liste blanche du proxy.

```
# Put the public IPv4 address your code runs from on the proxy's
# whitelist. Replaces the list; an empty list turns whitelisting off
# and the proxy falls back to username and password.
curl -X PUT "https://api.proxyjam.com/public/v1/orders/ORDER_ID/whitelist" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"whitelisted_ips": ["YOUR_IP"]}'
```


## Ce que chaque navigateur Playwright accepte

|  | HTTP avec mot de passe | SOCKS5 avec mot de passe | SOCKS5, en liste blanche |
|---|---|---|---|
| Chromium | Fonctionne | Refusé au lancement | Fonctionne |
| Firefox | Fonctionne | Refusé au lancement | Fonctionne |
| WebKit | Fonctionne | Refusé au lancement | Fonctionne |

Testé le 2026-10-22 avec Playwright 1.64 pour Python sous macOS : chaque moteur a été lancé contre un proxy local qui exigeait un mot de passe, et contre un proxy qui admettait un client en liste blanche. Refusé signifie que Playwright s'est arrêté au lancement avec une erreur.


## Comment l'adresse s'inscrit dans le modèle de Playwright

- **Un contexte, une adresse:** Chaque contexte de navigateur peut porter sa propre IP statique, issue de sa propre commande
- **Connexion en HTTP:** Champs username et password, acceptés par Chromium, Firefox et WebKit
- **Connexion en SOCKS5:** Uniquement par adresse IPv4 en liste blanche, définie via l'API ou MCP
- **Stabilité:** L'IP reste la même d'une exécution à l'autre pendant toute la période payée

## Ce qui tourne mal avec les proxys Playwright

### Des identifiants dans la chaîne server

Playwright lit l'identifiant et le mot de passe dans leurs propres champs. Écrits dans l'URL du serveur à la place, ils ne sont pas envoyés du tout : dans notre test, la première navigation est restée bloquée jusqu'à expiration du délai, sans aucun message qui désignait les identifiants.

### Un mot de passe SOCKS5

Chaque moteur refuse l'authentification SOCKS5, et l'erreur arrive au lancement, avant qu'une page ne s'ouvre. Changer de bibliothèque ne règle rien : mettez en liste blanche l'IP depuis laquelle tourne votre script et retirez les identifiants.

### Compter sur new_page pour changer d'adresse

Les pages partagent le proxy de leur contexte, et les contextes partagent celui du navigateur sauf s'ils reçoivent le leur. Pour faire tourner deux adresses côte à côte, créez deux contextes, chacun avec son proxy.

### Sauter la vérification de sortie

Une faute de frappe dans le port ou un proxy encore réglé sur HTTP échoue de façon visible, mais un contexte créé sans l'objet proxy sort directement, sans rien signaler. Chargez une fois une page qui renvoie l'IP dans chaque contexte que vous configurez.


## Questions sur les proxys dans Playwright

### Comment définir un proxy avec authentification dans Playwright ?

Passez un objet avec server, username et password, soit à launch, soit à new_context. Via un proxy HTTP, Chromium, Firefox et WebKit envoient tous ces identifiants quand le proxy les demande.

### Puis-je utiliser un proxy SOCKS5 avec mot de passe dans Playwright ?

Non. Playwright s'arrête au lancement avec une erreur indiquant que le navigateur ne prend pas en charge l'authentification de proxy SOCKS5, dans les trois moteurs. Mettez en liste blanche l'IP depuis laquelle tourne votre script, puis ne passez que le serveur socks5 ; notre liste blanche s'applique en SOCKS5 comme en HTTP.

### Comment utiliser un proxy différent pour chaque page ?

Donnez à chaque contexte de navigateur son propre proxy et ouvrez la page dans ce contexte. Les pages d'un même contexte partagent toujours son proxy : un proxy par page veut donc dire un contexte par page.

### La configuration est-elle la même en Python et en Node ?

Le même objet avec les trois mêmes champs : Python l'écrit comme un dictionnaire, Node comme un littéral d'objet. Les deux exemples de cette page ont été exécutés avec Playwright 1.64.

### Puis-je utiliser le proxy pour du scraping ?

Tester vos propres pages par région, les contrôles qualité, la vérification publicitaire, les études de prix et de marché, le suivi SEO et la protection de marque se font sans examen préalable au titre de notre politique d'utilisation acceptable. Qu'une donnée soit accessible publiquement n'autorise pas à elle seule à la collecter, les données personnelles exigent une base légale déclarée, et l'adresse ne passe ni les CAPTCHA, ni la détection de bots, ni les limites de débit, ni les bannissements ; la politique interdit d'essayer.


Contextes et adresses statiques se correspondent un à un : un contexte par marché ou par tâche, chacun atteignant la cible depuis une IP inchangée à chaque exécution du script. Achetez autant d'adresses que vous faites tourner de contextes sur [Proxys ISP](/fr/isp-proxies/), comparez les offres sur la page [tarifs](/fr/pricing/), et récupérez des pages sans navigateur avec le guide [Python requests](/fr/integrations/python-requests/).



## Sources

- [Playwright documentation, Network: HTTP proxy](https://playwright.dev/python/docs/network#http-proxy) : l'option proxy au lancement et par contexte
- [Playwright API, BrowserType.launch](https://playwright.dev/python/docs/api/class-browsertype#browser-type-launch) : les champs server, bypass, username et password
- [RFC 1929, Username/Password Authentication for SOCKS V5](https://www.rfc-editor.org/rfc/rfc1929) : l'authentification SOCKS5 que les navigateurs n'implémentent pas




Playwright pilote Chromium, Firefox et WebKit par une seule API, et le proxy fait partie de la façon dont un navigateur ou un contexte est créé. Il est donc facile de faire tourner plusieurs adresses dans un même script, et c'est aussi là que se trouve sa seule limite stricte : SOCKS5 avec mot de passe.

## Proxy Playwright en Python

L'exemple Python lance Chromium avec le proxy pour tout le navigateur ; l'exemple par contexte le limite à un seul contexte. Changer de moteur revient à remplacer chromium par firefox ou webkit ; l'objet proxy reste le même.

## Authentification de proxy dans Playwright

Les trois moteurs répondent au 407 du proxy avec l'identifiant et le mot de passe de l'objet proxy quand le proxy parle HTTP. Un proxy SOCKS5 ne reçoit cette réponse d'aucun d'eux, c'est pourquoi l'exemple SOCKS5 ne contient aucun identifiant et repose sur la liste blanche.

## Proxy Playwright par page, et bypass

Un proxy ne peut pas être attaché à une seule page. L'unité est le contexte : créez un contexte par adresse et ouvrez-y les pages qui doivent partager cette adresse. Les contextes coûtent peu dans Playwright, si bien qu'un script qui vérifie une boutique depuis trois pays tient trois contextes, chacun construit à partir de sa propre commande.

L'objet proxy accepte aussi un champ bypass, une liste d'hôtes séparés par des virgules à joindre directement. Utilisez-le pour vos propres services internes ou un serveur de test local, afin que seul le trafic destiné au monde extérieur sorte par l'adresse que vous payez.

