Cum să configurezi un proxy autentificat în Puppeteer (Node.js)
Updated:
Puppeteer controlează Chrome și Chromium prin DevTools Protocol (CDP), oferind un API nativ await page.authenticate({ username, password }) pentru autentificarea proxy HTTP 407. Asocierea --proxy-server=http://ip:port cu page.authenticate() permite scraperelor tale Node.js să direcționeze traficul prin proxy-urile statice VinaProxy fără extensii externe de browser.
--proxy-server=http://ip:port + page.authenticate({ username, password })- 1 IP40.000 VND
- 5+ IP-uri35.000 VND
- 10+ IP-uri25.000 VND
- 20+ IP-uri25.000 VND
- 50+ IP-uri25.000 VND
- 100+ IP-uri25.000 VND
- 200+ IP-uri25.000 VND
- 500+ IP-uri25.000 VND
- 1000+ IP-uri22.000 VND
- 2000+ IP-uri20.000 VND
- 1 IP40.000 VND
- 5+ IP-uri35.000 VND
- 10+ IP-uri25.000 VND
- 20+ IP-uri25.000 VND
- 50+ IP-uri25.000 VND
- 100+ IP-uri25.000 VND
- 200+ IP-uri25.000 VND
- 500+ IP-uri25.000 VND
- 1000+ IP-uri22.000 VND
- 2000+ IP-uri20.000 VND
Configurarea proxy-ului în doi pași în Puppeteer
Nu include niciodată user:pass@ în argumentul de lansare --proxy-server. În schimb, transmite host-ul și portul la lansare și autentifică-te pe instanța Page:
| Pas | Cod Puppeteer | De ce contează |
|---|---|---|
| 1. Lansează Chromium | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | Direcționează socketul de rețea al Chromium către proxy-ul tău VinaProxy |
| 2. Autentifică pagina | await page.authenticate({ username, password }) | Furnizează credențialele CDP pentru solicitările HTTP 407 |
| 3. Navighează | await page.goto(url, { waitUntil: 'domcontentloaded' }) | Încarcă URL-ul țintă prin tunelul autentificat |
Rotirea mai multor proxy-uri între taburi cu proxy-chain
- Reține că
page.authenticate()este limitat la nivelul fiecărui tabPage— apelează-l pe fiecare tab nou returnat debrowser.newPage() - Pentru a utiliza proxy-uri diferite în contexte incognito într-un singur proces Chromium, împachetează fiecare URL
http://user:pass@ip:portcu pachetul npmproxy-chain(anonymizeProxy()) și transmiteproxyServercătrebrowser.createBrowserContext({ proxyServer }) - Compatibil cu
puppeteer-extrașipuppeteer-extra-plugin-stealth
Pas cu pas
- 1
Transmite --proxy-server=http://ip:port către puppeteer.launch()
Lansează browserul cu
const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] });. - 2
Apelează await page.authenticate() pe pagina nouă
Deschide un tab cu
const page = await browser.newPage();și apeleazăawait page.authenticate({ username: 'USER', password: 'PASS' });. - 3
Testează adresa IP de ieșire
Execută
await page.goto('https://vinaproxy.com/api/my-ip');și inspectează răspunsul JSON returnat. - 4
Închide procesele browserului
Apelează
await browser.close();când sarcina este finalizată.
Întrebări frecvente
De ce generează Puppeteer eroarea `ERR_NO_SUPPORTED_PROXIES`?
Această eroare apare dacă incluzi user:pass@ în --proxy-server=http://user:pass@ip:port. Păstrează --proxy-server=http://ip:port curat și transmite credențialele prin await page.authenticate({ username, password }).
De ce a eșuat un al doilea tab deschis cu `browser.newPage()` cu eroarea HTTP 407?
page.authenticate() se aplică pentru fiecare tab în parte. Apelează await secondPage.authenticate({ username, password }) înainte de a naviga pe orice tab nou deschis.
Sunt proxy-urile VinaProxy fără limită de trafic pentru scraping cu headless Chrome?
Da. Toate planurile Dedicated IPv4 și Static ISP includ lățime de bandă lunară nelimitată.
Alimentează-ți flota Node.js Puppeteer cu IP-uri statice
Proxy-uri Dedicated IPv4 și Static ISP instantanee, fără limită de trafic, în 7 țări.
Cumpără proxy-uri Puppeteer