Comment configurer un proxy avec authentification dans Puppeteer (Node.js)
Mis à jour:
Puppeteer pilote Chrome et Chromium via le DevTools Protocol (CDP) et dispose d'une API native await page.authenticate({ username, password }) pour résoudre l'authentification proxy HTTP 407. L'association de --proxy-server=http://ip:port et de page.authenticate() permet à vos scrapers Node.js d'acheminer leur trafic via les proxys statiques de VinaProxy sans aucune extension de navigateur tierce.
--proxy-server=http://ip:port + page.authenticate({ username, password })- 1 IP40 000 ₫
- 5+ IPs35 000 ₫
- 10+ IPs25 000 ₫
- 20+ IPs25 000 ₫
- 50+ IPs25 000 ₫
- 100+ IPs25 000 ₫
- 200+ IPs25 000 ₫
- 500+ IPs25 000 ₫
- 1000+ IPs22 000 ₫
- 2000+ IPs20 000 ₫
- 1 IP40 000 ₫
- 5+ IPs35 000 ₫
- 10+ IPs25 000 ₫
- 20+ IPs25 000 ₫
- 50+ IPs25 000 ₫
- 100+ IPs25 000 ₫
- 200+ IPs25 000 ₫
- 500+ IPs25 000 ₫
- 1000+ IPs22 000 ₫
- 2000+ IPs20 000 ₫
Configuration du proxy en deux étapes dans Puppeteer
N'intégrez jamais user:pass@ dans l'argument de lancement --proxy-server. Indiquez simplement l'hôte et le port au démarrage, puis authentifiez-vous sur l'instance Page :
| Étape | Code Puppeteer | Rôle technique |
|---|---|---|
| 1. Lancer Chromium | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | Connecte le socket réseau de Chromium à votre proxy VinaProxy |
| 2. Authentifier la page | await page.authenticate({ username, password }) | Fournit les identifiants via CDP en réponse au challenge HTTP 407 |
| 3. Naviguer | await page.goto(url, { waitUntil: 'domcontentloaded' }) | Charge la page cible à travers le tunnel proxy sécurisé et authentifié |
Rotation de plusieurs proxys entre onglets grâce à proxy-chain
- Rappelez-vous que
page.authenticate()est restreint à chaque ongletPage; vous devez l'appeler sur chaque nouvel onglet issu debrowser.newPage() - Pour répartir plusieurs proxys entre des contextes de navigation privée au sein d'un même processus Chromium, convertissez chaque URL
http://user:pass@ip:portavecproxy-chain(anonymizeProxy()) et transmettez le résultat àbrowser.createBrowserContext({ proxyServer }) - Entièrement compatible avec
puppeteer-extraet le plugin d'évasionpuppeteer-extra-plugin-stealth
Étape par étape
- 1
Passer --proxy-server=http://ip:port à puppeteer.launch()
Démarrez le navigateur avec
const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] });. - 2
Appeler await page.authenticate() sur le nouvel onglet
Ouvrez un onglet avec
const page = await browser.newPage();puis exécutezawait page.authenticate({ username: 'USER', password: 'PASS' });. - 3
Tester l'adresse IP de sortie
Lancez
await page.goto('https://vinaproxy.com/api/my-ip');et examinez le document JSON retourné. - 4
Fermer proprement le navigateur
Une fois l'opération terminée, exécutez
await browser.close();pour libérer la mémoire.
Questions fréquentes
Pourquoi Puppeteer lève-t-il l'erreur ERR_NO_SUPPORTED_PROXIES ?
Cette erreur survient lorsque des identifiants sont insérés directement dans l'argument : --proxy-server=http://user:pass@ip:port. Conservez uniquement --proxy-server=http://ip:port et transmettez le mot de passe via await page.authenticate({ username, password }).
Pourquoi un deuxième onglet ouvert avec browser.newPage() échoue-t-il avec une erreur HTTP 407 ?
L'authentification page.authenticate() s'applique par onglet. Vous devez exécuter await secondPage.authenticate({ username, password }) sur tout nouvel onglet avant de débuter la navigation.
Les proxys VinaProxy sont-ils illimités en bande passante pour le scraping headless avec Chrome ?
Oui. Toutes les offres IPv4 dédiée et ISP statique de VinaProxy bénéficient d'un trafic mensuel illimité.
Accélérez vos scrapers Puppeteer en Node.js avec des IP statiques dédiées
Proxies IPv4 Dédiés et ISP Statiques sans quota avec mise à disposition instantanée dans 7 pays.
Acheter des proxys Puppeteer