Réponse rapide
Comment utiliser des proxies avec Playwright, Puppeteer et Selenium ?
Dirigez le navigateur vers http://gw.namelessproxy.com:7777 et connectez-vous avec votre nom d'utilisateur et mot de passe proxy. Nameless Proxy, un fournisseur de proxy résidentiel axé sur la confidentialité, sans KYC, fonctionne avec l'option proxy de Playwright, page.authenticate() de Puppeteer et Selenium via un forwarder local. Un ID de session par contexte navigateur garantit une IP par profil. Le trafic proxy résidentiel commence à 0,53 $US/GB. Sans KYC — pas d'ID, pas de selfie, pas de documents. Payer en crypto.
Configuration du navigateur en un coup d'œil
| Serveur proxy | http://gw.namelessproxy.com:7777 (port HTTP) |
|---|---|
| Playwright | Option proxy avec serveur, nom d'utilisateur et mot de passe, par navigateur ou par contexte |
| Puppeteer | Flag --proxy-server plus page.authenticate() |
| Selenium | Forwarder local qui ajoute les identifiants, ou une liste blanche d'IP |
| Une IP par profil | Un ID de session par contexte, jusqu'à 60 minutes |
| Ciblage | Dans le nom d'utilisateur : USERNAME-country-{cc}-city-{city}-session-{id}-ttl-{minutes} |
Quel port proxy les navigateurs utilisent-ils ?
Utilisez le port HTTP, 7777. Il transporte HTTPS via des tunnels CONNECT, supportés par tous les navigateurs. Chromium ne supporte pas SOCKS5 avec nom d'utilisateur et mot de passe, donc le port SOCKS5 convient uniquement aux outils qui gèrent eux-mêmes la connexion SOCKS5.
Un navigateur télécharge images, polices et scripts, donc il consomme beaucoup plus de trafic par page qu’un simple client HTTP. Bloquez les ressources lourdes dont vous n’avez pas besoin ; le trafic est facturé par GB décimal.
Comment configurer un proxy dans Playwright ?
Passez un objet proxy avec server, username et password. Configurez-le sur chaque contexte navigateur pour donner à chaque contexte son propre pays et session persistante dans un seul processus navigateur. Faites correspondre locale et timezone_id au pays de sortie pour que la page voie un visiteur cohérent.
# pip install playwright && playwright install chromium
import uuid
from playwright.sync_api import sync_playwright
SERVER = "http://gw.namelessproxy.com:7777" # HTTP port: browsers
USERNAME, PASSWORD = "USERNAME", "PASSWORD"
def proxy_for(country, city, ttl=30):
"""One sticky session per browser context."""
session = uuid.uuid4().hex[:10]
return {
"server": SERVER,
"username": f"{USERNAME}-country-{country}-city-{city}-session-{session}-ttl-{ttl}",
"password": PASSWORD,
}
with sync_playwright() as p:
# Placeholder launch proxy: some Chromium builds need one before contexts
# can set their own. It is never used when every context sets a proxy.
browser = p.chromium.launch(proxy={"server": "http://per-context"})
for country, city, tz in [("ae", "dubai", "Asia/Dubai"), ("sa", "riyadh", "Asia/Riyadh")]:
context = browser.new_context(proxy=proxy_for(country, city), locale="ar", timezone_id=tz)
page = context.new_page()
page.goto("https://api.ipify.org")
print(country, page.inner_text("body"))
context.close()
browser.close()// npm i playwright && npx playwright install chromium
const { chromium } = require('playwright');
const crypto = require('crypto');
const server = 'http://gw.namelessproxy.com:7777';
const proxyFor = (country, city, ttl = 30) => ({
server,
username: `USERNAME-country-${country}-city-${city}-session-${crypto.randomBytes(5).toString('hex')}-ttl-${ttl}`,
password: 'PASSWORD',
});
(async () => {
const browser = await chromium.launch({ proxy: { server: 'http://per-context' } });
const context = await browser.newContext({ proxy: proxyFor('eg', 'cairo') });
const page = await context.newPage();
await page.goto('https://api.ipify.org');
console.log(await page.textContent('body'));
await browser.close();
})();Comment configurer un proxy dans Puppeteer ?
Lancez Chrome avec --proxy-server et appelez page.authenticate() avant la première navigation. Chrome ignore les identifiants écrits dans le flag, donc la page répond au challenge 407 du proxy. Chaque page peut s’authentifier avec un nom d’utilisateur différent, donc chaque page peut avoir son propre pays et session. Les versions récentes de Puppeteer acceptent aussi une option proxyServer dans browser.createBrowserContext().
// npm i puppeteer
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
args: ['--proxy-server=http://gw.namelessproxy.com:7777'],
});
const page = await browser.newPage();
// Chrome ignores credentials in --proxy-server, so answer the 407 challenge per page
await page.authenticate({
username: 'USERNAME-country-ng-city-lagos-session-x7k2p9-ttl-30',
password: 'PASSWORD',
});
await page.goto('https://api.ipify.org');
console.log(await page.evaluate(() => document.body.innerText));
await browser.close();
})();Comment utiliser un proxy authentifié avec Selenium ?
Lancez un petit forwarder local qui ajoute vos identifiants, et pointez Chrome dessus. Le flag --proxy-server de Chrome n’accepte pas de nom d’utilisateur ni mot de passe, et Selenium ne propose pas d’option pour remplir la connexion proxy. Le forwarder ci-dessous utilise pproxy : il écoute sur votre machine sans mot de passe et relaie vers la passerelle avec votre nom d’utilisateur, cible incluse. Lancez un forwarder par session persistante, chacun sur son propre port local.
Si votre machine a une IP publique fixe, vous pouvez la mettre en liste blanche dans l’espace client et passer directement l’adresse de la passerelle à --proxy-server. Le package selenium-wire gérait aussi la connexion proxy, mais il n’est plus maintenu.
pip install pproxy selenium
# Local forwarder: no auth on 127.0.0.1:8899, adds your credentials upstream (#user:pass)
pproxy -l http://127.0.0.1:8899 \
-r "http://gw.namelessproxy.com:7777#USERNAME-country-ke-city-nairobi-session-k3m9q1-ttl-30:PASSWORD"# Selenium 4.6+ downloads the matching chromedriver itself (Selenium Manager)
from selenium import webdriver
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://127.0.0.1:8899") # the local forwarder
driver = webdriver.Chrome(options=options)
try:
driver.get("https://api.ipify.org")
print(driver.find_element(By.TAG_NAME, "body").text)
finally:
driver.quit()Comment garder une IP par profil de navigateur ?
Attribuez à chaque contexte de navigateur son propre ID de session et un TTL, et conservez cet ID pendant toute la durée de vie du profil. Le contexte utilise alors la même IP résidentielle tant que le TTL est valide (jusqu'à 60 minutes). Si l'appareil derrière l'IP se déconnecte, démarrez un nouvel ID de session.
Quand un profil doit garder une IP pendant plusieurs jours, un port 4G/5G dédié convient mieux : l'IP reste jusqu'à ce que vous la fassiez tourner. Utilisez des proxies pour des travaux légitimes comme la vérification de publicités, le contrôle qualité et la gestion des comptes clients. Les faux comptes et l’évasion de bannissement sont interdits par la Politique d’Utilisation Acceptable.
Questions fréquentes
Pourquoi Chrome ignore-t-il le nom d'utilisateur et le mot de passe dans --proxy-server ?
Le flag en ligne de commande de Chrome ne prend en compte que le schéma, l’hôte et le port ; il ne lit pas les identifiants. Le navigateur attend plutôt le challenge 407 du proxy. Playwright y répond via son option proxy et Puppeteer via page.authenticate(). Selenium ne dispose pas d’un tel mécanisme pour la connexion proxy, d’où la nécessité d’un forwarder local ou d’une liste blanche d’IP.
Puis-je utiliser le port SOCKS5 avec Playwright ou Puppeteer ?
Pas avec un nom d'utilisateur et un mot de passe : Chromium ne supporte pas l’authentification proxy SOCKS5. Utilisez le port HTTP, 7777, qui transporte HTTPS via des tunnels CONNECT et supporte la connexion. Le port SOCKS5, 7778, est destiné aux outils qui gèrent eux-mêmes l’authentification SOCKS5, comme curl ou Python avec socks5h://.
Comment donner à chaque contexte de navigateur un pays différent ?
Construisez le nom d’utilisateur proxy par contexte : USERNAME-country-ae-city-dubai-session-… pour un contexte et USERNAME-country-sa-city-riyadh-session-… pour un autre. Dans Playwright, passez-le via new_context(proxy=…). Dans Puppeteer, ouvrez une page par pays et appelez page.authenticate() avec chaque nom d’utilisateur. Un processus navigateur peut ainsi servir plusieurs pays.
Comment réduire le trafic utilisé par un navigateur headless ?
Bloquez ce dont vous n’avez pas besoin. Dans Playwright, page.route() peut annuler les requêtes d’images, polices et médias ; dans Puppeteer, utilisez l’interception des requêtes. Réutilisez un contexte pour plusieurs pages du même site afin que le cache fonctionne. Le trafic est facturé par GB décimal, et l’espace client affiche la consommation quotidienne, mesurez donc avant et après.
Pourquoi un site affiche-t-il encore le mauvais pays ?
L’IP n’est qu’un signal. Les sites lisent aussi la langue du navigateur, le fuseau horaire et parfois l’API Géolocalisation. Configurez locale et timezone_id sur le contexte Playwright pour correspondre au pays de sortie, par exemple Asia/Dubai pour les Émirats arabes unis. Supprimez aussi les cookies que le site a pu poser lors d’une visite précédente depuis un autre pays.
Selenium-wire est-il toujours une bonne solution pour ajouter une connexion proxy ?
Cela fonctionnait, mais le projet n’est plus maintenu, il peut donc casser avec les nouvelles versions de Chrome ou Selenium. Un forwarder local comme pproxy fait ce travail, ajoutant les identifiants à un proxy en amont, et fonctionne avec n’importe quel navigateur. Mettre votre IP serveur en liste blanche dans l’espace client supprime totalement le besoin d’identifiants.
Donnez à chaque profil de navigateur sa propre IP
Proxies résidentiels de 0,53 $US/GB, ports 4G/5G dédiés de $2.63/jour. Sans KYC — pas d’ID, pas de selfie, pas de documents.