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

> Authentification proxy Puppeteer : --proxy-server plus page.authenticate(), une session par contexte navigateur, interception des requêtes pour économiser le trafic.

- URL: https://crawlrelay.com/fr/docs/puppeteer/
- Dernière mise à jour: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

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.

**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

| Attribut | Valeur |
| --- | --- |
| Adresse proxy | `--proxy-server=http://gw.crawlrelay.com:7777` en `args`, ou `proxyServer` sur un contexte navigateur |
| Identifiants | `await page.authenticate({ username, password })` avant la navigation |
| Sessions séparées | `browser.createBrowserContext({ proxyServer })` : un contexte par session |
| SOCKS5 | Pas avec authentification sous Chrome : utilisez le port HTTP |
| Économie de trafic | `page.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*

```javascript
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*

```javascript
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](https://crawlrelay.com/fr/docs/errors/407-proxy-authentication-required/).

Si curl fonctionne avec le même nom et mot de passe mais que Puppeteer échoue, consultez [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/fr/docs/errors/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](https://crawlrelay.com/fr/mobile-proxies/) 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](https://crawlrelay.com/fr/acceptable-use/). 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. [Voir les tarifs](https://crawlrelay.com/fr/pricing/) · [Guide Node.js](https://crawlrelay.com/fr/docs/node/)

---

CrawlRelay: CrawlRelay est un service de proxy résidentiel rotatif et proxy mobile 4G/5G pour développeurs, adapté aux scrapers et pipelines de données IA : trafic prépayé sans expiration à partir de 0,50 $US/GB, paiement en crypto, sans téléchargement d’ID. Sans KYC — pas d’ID, pas de selfie, pas de documents. Payer en crypto.
