Puppeteer에서 인증 프록시를 설정하는 방법 (Node.js 가이드)
업데이트:
Puppeteer는 Chrome DevTools Protocol(CDP)을 통해 Chrome 및 Chromium을 제어하며, HTTP 407 프록시 인증을 위한 자체 API인 await page.authenticate({ username, password })를 기본 제공합니다. --proxy-server=http://ip:port와 page.authenticate()를 결합하면 별도의 브라우저 확장 프로그램 없이도 Node.js 스크래퍼를 VinaProxy 고정 프록시로 안전하게 라우팅할 수 있습니다.
--proxy-server=http://ip:port + page.authenticate({ username, password })- 1개 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
- 1개 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
Puppeteer 2단계 프록시 구성 절차
--proxy-server 실행 매개변수 안에 user:pass@를 직접 입력해서는 안 됩니다. 실행 시에는 호스트와 포트만 지정하고, 인증은 개별 Page 인스턴스에서 수행해야 합니다:
| 단계 | Puppeteer 구현 코드 | 핵심 원리 및 기술적 의미 |
|---|---|---|
| 1. Chromium 실행 | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | Chromium의 기본 네트워크 소켓을 VinaProxy 프록시 서버로 연결 |
| 2. 페이지 인증 | await page.authenticate({ username, password }) | CDP를 통해 HTTP 407 챌린지에 응답할 자격 증명을 전달 |
| 3. 페이지 탐색 | await page.goto(url, { waitUntil: 'domcontentloaded' }) | 인증이 완료된 보안 터널을 통해 대상 웹페이지를 로드 |
proxy-chain을 이용한 다중 탭 프록시 순환 기법
page.authenticate()의 인증 범위는 개별Page탭으로 한정되므로,browser.newPage()로 열린 새로운 탭마다 반드시 다시 호출해야 합니다- 단일 Chromium 프로세스 내의 시크릿 컨텍스트마다 서로 다른 프록시를 적용하려면
proxy-chainnpm 패키지의anonymizeProxy()로http://user:pass@ip:port를 래핑한 뒤browser.createBrowserContext({ proxyServer })에 전달하세요 puppeteer-extra및 봇 탐지 우회 라이브러리인puppeteer-extra-plugin-stealth와 완벽히 호환됩니다
단계별 안내
- 1
--proxy-server 옵션을 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에서 IP를 점검합니다. - 4
브라우저 프로세스 안전하게 종료
스크래핑 작업 완료 후
await browser.close();를 호출하여 시스템 리소스를 정리합니다.
자주 묻는 질문
Puppeteer에서 ERR_NO_SUPPORTED_PROXIES 오류가 발생하는 이유는 무엇인가요?
실행 옵션에 --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 })를 다시 호출해야 합니다.
헤드리스 Chrome으로 스크래핑할 때 VinaProxy 프록시는 대역폭 제한이 있나요?
없습니다. 모든 전용 IPv4 및 고정 ISP 플랜은 월간 무제한 트래픽을 제공합니다.
전용 고정 IP로 Node.js Puppeteer 스크래퍼 인프라를 가동하세요
글로벌 7개국 위치 지원, 무제한 트래픽의 전용 IPv4 및 고정 ISP 프록시를 즉시 제공합니다.
Puppeteer 프록시 구매