Réponse rapide
Comment configurer un proxy statique dans Playwright ?
Pour un proxy statique Playwright, passez un proxy avec serveur, nom d'utilisateur et mot de passe à chromium.launch(), ou donnez à chaque contexte de navigateur son propre proxy pour faire tourner plusieurs IP statiques dans un seul navigateur. Ouvrez ensuite api.ipify.org pour vérifier l'IP de sortie. Les IP statiques SteadyProxy sont louées pour 30 jours, à partir de 2,24 $US par IP en octobre 2026, sans KYC et paiement en crypto.
Quels sont les points clés ?
| Option de lancement | proxy = serveur, nom d'utilisateur, mot de passe (login proxy HTTP) |
|---|---|
| Selon le contexte | browser.newContext({ proxy }) donne à chaque contexte sa propre IP statique |
| SOCKS5 | Pris en charge par Playwright ; la documentation décrit le nom d'utilisateur et le mot de passe pour les proxies HTTP(S), donc associez SOCKS5 à la liste d'autorisation d'IP |
| Authentification SteadyProxy | Nom d'utilisateur et mot de passe, ou une liste d'autorisation IP (jusqu'à 10 IP) |
| Vérifier | api.ipify.org pour l'IP de sortie, ipinfo.io/json pour le réseau |
| Vérifications du code | Python a passé py_compile et Node.js a passé node --check le 19 octobre 2026 (Playwright 1.60) |
Comment définir un proxy statique dans Playwright pour Python ?
Indiquez le proxy au lancement lorsque tout le navigateur doit utiliser une seule IP statique. Le serveur est l'adresse HTTP de votre IP, http://host:port ; le nom d'utilisateur et le mot de passe vont dans leurs propres champs, pas dans l'URL. Playwright répond à la demande de connexion du proxy à votre place, donc aucune fenêtre de connexion n'apparaît. L'exemple ouvre api.ipify.org, puis ipinfo.io/json, et affiche les deux.
"""Playwright (Python) through one static proxy.
Install: python -m pip install playwright && python -m playwright install chromium
"""
import os
from playwright.sync_api import sync_playwright
PROXY = {
"server": "http://" + os.environ.get("PROXY_HOST", "gw.steadyproxy.com") + ":"
+ os.environ.get("PROXY_PORT", "7777"),
"username": os.environ.get("PROXY_USER", "USERNAME"),
"password": os.environ.get("PROXY_PASS", "PASSWORD"),
}
with sync_playwright() as p:
browser = p.chromium.launch(proxy=PROXY)
context = browser.new_context()
page = context.new_page()
page.goto("https://api.ipify.org?format=json", timeout=30000)
print("Exit IP:", page.inner_text("body"))
page.goto("https://ipinfo.io/json", timeout=30000)
print("Network:", page.inner_text("body"))
browser.close()
Comment utiliser plusieurs IP statiques dans un seul navigateur Playwright ?
Créez un contexte de navigateur par IP. La documentation Playwright indique qu'un proxy peut être défini pour tout le navigateur ou pour chaque contexte de navigateur individuellement. Les contextes ne partagent ni cookies ni stockage, donc chacun agit comme un profil séparé sur sa propre IP. L'exemple Node.js parcourt deux IP, ouvre api.ipify.org dans chaque contexte et ferme le contexte après usage. Remplissez la liste avec l'hôte, le port, le nom d'utilisateur et le mot de passe de chaque IP depuis votre tableau de bord.
// Playwright (Node.js): one browser, one context per static IP.
// Install: npm i playwright && npx playwright install chromium
import { chromium } from 'playwright';
// Copy host, port, username and password of each IP from your dashboard.
const staticIps = [
{ name: 'client-a', host: 'gw.steadyproxy.com', port: '7777', username: 'USERNAME', password: 'PASSWORD' },
{ name: 'client-b', host: 'gw.steadyproxy.com', port: '7777', username: 'USERNAME', password: 'PASSWORD' },
];
const browser = await chromium.launch();
try {
for (const ip of staticIps) {
const context = await browser.newContext({
proxy: { server: `http://${ip.host}:${ip.port}`, username: ip.username, password: ip.password },
});
const page = await context.newPage();
await page.goto('https://api.ipify.org?format=json', { timeout: 30000 });
console.log(ip.name, await page.innerText('body'));
await context.close();
}
} finally {
await browser.close();
}
Faut-il utiliser HTTP ou SOCKS5 dans Playwright ?
Utilisez le port HTTP avec nom d'utilisateur et mot de passe dans la plupart des cas. C'est la combinaison que la documentation Playwright décrit pour la connexion au proxy, et les pages HTTPS passent par un tunnel CONNECT. N'utilisez SOCKS5 avec un serveur socks5:// que si votre machine figure sur la liste d'autorisation d'IP, pour qu'aucune connexion ne soit nécessaire. Les deux ports d'une même IP statique donnent la même IP de sortie. SteadyProxy prend en charge HTTP, HTTPS (CONNECT) et SOCKS5.
Comment conserver les connexions entre les exécutions sur la même IP statique ?
Enregistrez l'état de stockage du contexte après vous être connecté, et chargez-le la fois suivante avec le même proxy. En Python, context.storage_state(path='client-a.json') écrit les cookies et le stockage local ; browser.new_context(storage_state='client-a.json', proxy=...) les restaure. Gardez un fichier d'état par IP et par compte, et ne chargez jamais l'état d'un compte sur l'IP d'un autre compte. Traitez ces fichiers comme des secrets.
Qu'est-ce qui échoue le plus souvent ?
Quatre erreurs couvrent la plupart des cas. ERR_PROXY_CONNECTION_FAILED signifie que l'hôte ou le port est erroné ou bloqué de votre côté. Une réponse 407 signifie un identifiant erroné, ou une IP source absente de votre liste d'autorisation. ERR_TUNNEL_CONNECTION_FAILED signifie que le proxy a refusé la cible ; vérifiez la liste des blocages : Sites bancaires, gouvernementaux, portails de paiement et billetterie, ainsi que les ports SMTP (envoi d'e-mails) 25, 465 et 587. Un timeout sur chaque page indique un défaut sur l'IP ; testez-la avec curl, puis contactez le support.
Que demande-t-on d'autre à propos de Playwright et des proxies statiques ?
Puis-je mettre le nom d'utilisateur et le mot de passe dans l'URL du serveur ?
Utilisez plutôt les champs séparés nom d'utilisateur et mot de passe. C'est la méthode documentée pour se connecter à un proxy HTTP dans Playwright, et elle évite les problèmes d'encodage d'URL avec les caractères spéciaux. Le champ serveur ne contient alors que le schéma, l'hôte et le port de votre IP statique.
Chaque page Playwright obtient-elle sa propre IP ?
Non. Les pages héritent du proxy de leur contexte, et les contextes héritent du proxy du navigateur sauf s'ils définissent le leur. Toutes les pages d'un même contexte partagent une seule IP statique. Pour plusieurs IP, créez plusieurs contextes, comme dans l'exemple Node.js, ou plusieurs navigateurs.
Puis-je utiliser Firefox ou WebKit avec un proxy statique dans Playwright ?
Oui. L'option proxy a la même forme pour les lancements chromium, firefox et webkit. Testez chaque moteur avec api.ipify.org, car les moteurs diffèrent dans leur gestion de certaines erreurs de proxy. Pour les tests QA sur plusieurs moteurs, gardez la même IP statique pour chaque moteur afin que les résultats restent comparables.
Faut-il régler la locale et le fuseau horaire pour correspondre à l'IP ?
Pour les tests QA locaux et les tests de géolocalisation, oui : browser.new_context(locale='de-DE', timezone_id='Europe/Berlin') fait rendre votre site comme pour un visiteur local. Cela change ce que votre navigateur de test demande, pas l'IP, qui décide toujours du pays que votre site détecte. Voir QA de géolocalisation pour les plans de test.
Comment vérifier que chaque contexte utilise la bonne IP ?
Ouvrez api.ipify.org en premier dans chaque nouveau contexte et comparez la réponse avec la liste d'IP de votre tableau de bord. Faites échouer l'exécution si elle ne correspond pas. Le coût est d'une requête légère par contexte, et cela évite qu'une exécution entière parte sur la mauvaise IP.
Combien coûte l'exécution de 10 contextes Playwright sur 10 IP statiques ?
En octobre 2026, 10 IP ISP coûtent 20,86 $US et 10 IP datacenter dédiées coûtent 12,69 $US, chacune pour 30 jours. La facturation est par IP, pas par GB. Le paiement se fait en crypto, sans KYC. Voir tarifs pour toutes les tailles de forfait.
Quelles sources ce guide utilise-t-il ? (3)
- Réseau : proxy HTTP (Python) — Playwright (2026-10-19)
- Réseau : proxy HTTP (Node.js) — Playwright (2026-10-19)
- API ipify — ipify (2026-10-19)