Changer de langue
Français English Русский Deutsch Español Italiano Українська Tiếng Việt Türkçe Bahasa Indonesia हिन्दी 日本語 中文
Menu
Tarifs
Proxys
TYPES DE PROXY
PAR EMPLACEMENT77 emplacements
Solutions
Ressources

Comment utiliser un proxy avec Playwright

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.

En bref : 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://.

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.

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 dans une page de ce navigateur ou de ce contexte, avant l’exécution réelle.

# 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()
// 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();
})();
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()
# 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()
# 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"]}'

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.

Documentation API complète

Ce que chaque navigateur Playwright accepte

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.
HTTP avec mot de passeSOCKS5 avec mot de passeSOCKS5, en liste blanche
ChromiumFonctionneRefusé au lancementFonctionne
FirefoxFonctionneRefusé au lancementFonctionne
WebKitFonctionneRefusé au lancementFonctionne

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.

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

Après Playwright

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. SOCKS5

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. Politique d'utilisation acceptable

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, comparez les offres sur la page tarifs, et récupérez des pages sans navigateur avec le guide Python requests.

Sources