Як наладзіць проксі з аўтэнтыфікацыяй у Puppeteer (Node.js)
Updated:
Puppeteer кіруе Chrome і Chromium праз DevTools Protocol (CDP), забяспечваючы ўбудаваны API await page.authenticate({ username, password }) для аўтэнтыфікацыі проксі праз HTTP 407. Спалучэнне --proxy-server=http://ip:port з page.authenticate() дазваляе вашым скраперам на Node.js накіроўваць трафік праз статычныя проксі VinaProxy без вонкавых пашырэнняў браўзера.
--proxy-server=http://ip:port + page.authenticate({ username, password })- 1 IP40 000 ₫
- Ад 5 IP35 000 ₫
- Ад 10 IP25 000 ₫
- Ад 20 IP25 000 ₫
- Ад 50 IP25 000 ₫
- Ад 100 IP25 000 ₫
- Ад 200 IP25 000 ₫
- Ад 500 IP25 000 ₫
- Ад 1000 IP22 000 ₫
- Ад 2000 IP20 000 ₫
- 1 IP40 000 ₫
- Ад 5 IP35 000 ₫
- Ад 10 IP25 000 ₫
- Ад 20 IP25 000 ₫
- Ад 50 IP25 000 ₫
- Ад 100 IP25 000 ₫
- Ад 200 IP25 000 ₫
- Ад 500 IP25 000 ₫
- Ад 1000 IP22 000 ₫
- Ад 2000 IP20 000 ₫
Двухэтапная налада проксі ў Puppeteer
Ніколі не ўбудоўвайце user:pass@ у аргумент запуску --proxy-server. Замест гэтага перадавайце хост і порт пры запуску і аўтэнтыфікуйцеся на асобніку Page:
| Крок | Код Puppeteer | Чаму гэта важна |
|---|---|---|
| 1. Запуск Chromium | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | Накіроўвае сеткавы сокет Chromium на ваш проксі VinaProxy |
| 2. Аўтэнтыфікацыя Page | await page.authenticate({ username, password }) | Перадае ўліковыя даныя праз CDP у адказ на запыты HTTP 407 |
| 3. Пераход | await page.goto(url, { waitUntil: 'domcontentloaded' }) | Загружае мэтавы URL праз тунэль з аўтэнтыфікацыяй |
Ратацыя некалькіх проксі паміж укладкамі з proxy-chain
- Памятайце, што дзеянне
page.authenticate()абмежавана адной укладкайPage— выклікайце яго для кожнай новай укладкі, створанай празbrowser.newPage() - Каб выкарыстоўваць розныя проксі ў розных рэжымах інкогніта ўнутры аднаго працэсу Chromium, абгарніце кожны URL
http://user:pass@ip:portз дапамогай npm-пакетаproxy-chain(anonymizeProxy()) і перадайцеproxyServerуbrowser.createBrowserContext({ proxyServer }) - Сумяшчальна з
puppeteer-extraіpuppeteer-extra-plugin-stealth
Крок за крокам
- 1
Перадайце --proxy-server=http://ip:port у puppeteer.launch()
Запусціце браўзер з
const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] });. - 2
Выклічце await page.authenticate() на новай старонцы
Адкрыйце ўкладку з
const page = await browser.newPage();і выклічцеawait page.authenticate({ username: 'USER', password: 'PASS' });. - 3
Праверце выходны IP-адрас
Выканайце
await page.goto('https://vinaproxy.com/api/my-ip');і праверце атрыманы JSON. - 4
Завяршыце працэсы браўзера
Выклічце
await browser.close();пасля завяршэння працы.
Частыя пытанні
Чаму Puppeteer выдае памылку `ERR_NO_SUPPORTED_PROXIES`?
Гэтая памылка ўзнікае, калі пазначыць user:pass@ усярэдзіне --proxy-server=http://user:pass@ip:port. Пакідайце --proxy-server=http://ip:port без дадатковых даных і перадавайце ўліковыя даныя праз await page.authenticate({ username, password }).
Чаму на другой укладцы, адкрытай праз `browser.newPage()`, узнікае памылка HTTP 407?
page.authenticate() дзейнічае толькі для адной укладкі. Выклікайце await secondPage.authenticate({ username, password }) перад пераходам па спасылцы на любой новай укладцы.
Ці з'яўляюцца проксі VinaProxy бязлімітнымі для скрапінгу праз headless Chrome?
Так. Усе тарыфы Dedicated IPv4 і Static ISP уключаюць неабмежаваны штомесячны трафік.
Павялічце эфектыўнасць інфраструктуры на Node.js Puppeteer са статычнымі IP
Імгненныя бязлімітныя проксі Dedicated IPv4 і Static ISP у 7 краінах.
Купіць проксі для Puppeteer