Sans KYC — pas d’ID, pas de selfie, pas de documents. Payer en crypto : BTC, USDT, USDC, ETH, SOL, LTC
Langue: Français
Commencez

Docs · Puppeteer · Chrome pour les tests

Authentification proxy Puppeteer avec des IPs proxy résidentiels et mobiles 4G

Chrome prend l'adresse proxy depuis un flag de lancement et les identifiants avec page.authenticate(). Utilisez un contexte navigateur par session pour que les identifiants ne se mélangent jamais entre les tâches.

Dernière mise à jour: · 4 min de lecture

Réponse rapide

Comment utiliser un proxy authentifié dans Puppeteer ?

Lancez Chrome avec --proxy-server=http://gw.crawlrelay.com:7777, puis appelez page.authenticate({ username, password }) avant la première goto. Chrome ignore les identifiants dans le flag. Les proxies résidentiels CrawlRelay lisent le pays et la session sticky depuis le nom d'utilisateur, ainsi chaque page ou contexte peut avoir sa propre sortie IP. Le trafic coûte 0,50 $US/GB à partir de 50 GB. Paiement en crypto, sans KYC.

Configuration Puppeteer en un coup d'œil

Adresse proxy--proxy-server=http://gw.crawlrelay.com:7777 en args, ou proxyServer sur un contexte navigateur
Identifiantsawait page.authenticate({ username, password }) avant la navigation
Sessions séparéesbrowser.createBrowserContext({ proxyServer }) : un contexte par session
SOCKS5Pas avec authentification sous Chrome : utilisez le port HTTP
Économie de traficpage.setRequestInterception(true) et abandon des images, polices et médias

Comment configurer un proxy unique et authentifié ?

C’est le schéma minimal. Le bloc try … finally ferme Chrome même si la navigation échoue, ce qui est important sur serveurs où les instances orphelines s’empilent.

Node.js (module ES) : un navigateur, une sortie
import puppeteer from "puppeteer";

const browser = await puppeteer.launch({
  args: ["--proxy-server=http://gw.crawlrelay.com:7777"],
});
try {
  const page = await browser.newPage();
  await page.authenticate({ username: "USERNAME-country-us", password: "PASSWORD" });
  await page.setRequestInterception(true);
  page.on("request", (req) =>
    ["image", "font", "media"].includes(req.resourceType()) ? req.abort() : req.continue()
  );
  const res = await page.goto("https://example.com/", { waitUntil: "domcontentloaded", timeout: 60000 });
  console.log(res.status(), await page.title());
} finally {
  await browser.close();
}

Comment exécuter plusieurs sessions ou pays dans un seul navigateur ?

Créez un contexte navigateur par session. Un contexte est un profil isolé avec ses cookies, cache et état réseau, ainsi les identifiants d’un contexte ne fuient pas vers un autre. Donnez à chaque contexte un nom d'utilisateur avec son pays ou ID de session propre.

Node.js : un contexte par session sticky
import puppeteer from "puppeteer";
import { randomUUID } from "node:crypto";

const GATEWAY = "http://gw.crawlrelay.com:7777";
const browser = await puppeteer.launch();

async function visit(country, url) {
  const session = randomUUID().replaceAll("-", "").slice(0, 10);
  const context = await browser.createBrowserContext({ proxyServer: GATEWAY });
  try {
    const page = await context.newPage();
    await page.authenticate({
      username: `USERNAME-country-${country}-session-${session}-ttl-20`,
      password: "PASSWORD",
    });
    await page.goto(url, { waitUntil: "domcontentloaded", timeout: 60000 });
    return { country, session, ip: await page.evaluate(() => document.body.innerText.trim()) };
  } finally {
    await context.close();
  }
}

try {
  const results = await Promise.all([
    visit("us", "https://api.ipify.org"),
    visit("gb", "https://api.ipify.org"),
  ]);
  console.table(results);
} finally {
  await browser.close();
}

Pourquoi Puppeteer affiche-t-il 407 ou ERR_TUNNEL_CONNECTION_FAILED ?

Parce que Chrome n’a pas envoyé les bons identifiants ou aucun. Vérifiez trois points :

  1. page.authenticate() s’exécute avant la première goto sur la page.
  2. Le flag --proxy-server ou proxyServer ne contient que le schéma, l’hôte et le port, sans partie user:pass@.
  3. Le nom d’utilisateur est sans erreur dans sa partie ciblée : testez-le avec curl d’abord, comme indiqué sur la page 407.

Si curl fonctionne avec le même nom et mot de passe mais que Puppeteer échoue, consultez ERR_TUNNEL_CONNECTION_FAILED.

Combien coûte en trafic une page Puppeteer ?

Tout ce que Chrome télécharge est facturé : HTML, scripts, styles, images, polices et appels API de la page. Le HTTP Archive Web Almanac 2025 a mesuré un poids médian de 2 164 KB sur mobile et 2 412 KB sur desktop. Bloquer images, polices et médias via interception réduit souvent à quelques centaines de kilo-octets, et retourner les réponses en cache pour scripts répétés réduit encore. Utilisez des IPs mobiles 4G rotatives seulement pour les pages qui en ont besoin : le trafic mobile coûte 1,50 $US/GB dès 5 GB, résidentiel 0,50 $US/GB dès 50 GB.

Puppeteer et proxies : questions

Puis-je mettre le nom d’utilisateur et mot de passe dans --proxy-server ?

Non. Chrome ignore les identifiants dans le flag --proxy-server, la première requête HTTPS échoue alors en 407 caché derrière ERR_TUNNEL_CONNECTION_FAILED. Mettez seulement http://host:port dans le flag et transmettez les identifiants avec page.authenticate() à chaque nouvelle page.

Comment changer l’IP entre pages dans Puppeteer ?

Ouvrez chaque page dans un contexte navigateur distinct, ou donnez à chaque page un nom d’utilisateur sans ID de session. Un nouveau contexte ouvre de nouvelles connexions, et chaque connexion obtient généralement un exit proxy résidentiel différent. Dans une même page, Chrome réutilise les connexions, donc les requêtes au même site partagent une sortie jusqu’à fermeture de la connexion.

page.authenticate() marche-t-il avec interception des requêtes ?

Oui. Puppeteer gère lui-même le challenge d’authentification proxy, votre gestionnaire d’interception doit juste appeler continue() ou abort() sur chaque requête. Configurez d’abord authenticate(), puis activez l’interception, comme dans le premier exemple.

Faut-il utiliser les plugins puppeteer-extra stealth avec les proxies ?

Nous ne documentons ni ne supportons les outils visant à cacher l’automatisation ou contourner la détection de bots. Leur but est de passer outre la décision d’un site de filtrer les visiteurs automatisés, ce qui est interdit par notre Politique d’Utilisation Acceptable. Consultez les pages publiques à rythme raisonnable et utilisez les API officielles quand les sites les proposent.

Quel Chrome Puppeteer utilise-t-il avec le proxy ?

Les versions récentes de Puppeteer téléchargent une version Chrome pour Testing correspondante et l’utilisent par défaut. Les flags proxy et page.authenticate() fonctionnent pareil que dans Chrome classique. Si vous pointez Puppeteer vers votre propre Chrome via executablePath, assurez-vous de maintenir ce navigateur à jour.

Faire tourner Puppeteer via des IPs proxy résidentiels

5,94 $US pour 10 GB, 0,50 $US/GB depuis 50 GB.

À partir de 0,50 $US/GB · sans KYC

Commencez