chromedp의 ProxyServer를 ExecAllocator에 설정하기
ProxyServer를 담은 ExecAllocator에서 브라우저 context를 만들어 의도한 Chromium 프로세스가 proxy 플래그를 받도록 합니다.
chromedp.ProxyServer는 브라우저 실행 옵션입니다. Chromium 프로세스를 만드는 allocator에 적용하세요:
opts := append(chromedp.DefaultExecAllocatorOptions[:],
chromedp.ProxyServer("http://proxy.example:8080"),
)
allocCtx, cancelAllocator := chromedp.NewExecAllocator(
context.Background(), opts...,
)
defer cancelAllocator()
tabCtx, cancelTab := chromedp.NewContext(allocCtx)
defer cancelTab()
err := chromedp.Run(tabCtx,
chromedp.Navigate("https://www.example.com/"),
)
코드는 애플리케이션의 기존 함수에 두고 err에 대한 일반적인 오류 처리를 합니다. NewContext는 allocCtx에서 allocator를 상속합니다. 다른 부모에서 만든 context는 그 옵션 없이 다른 브라우저를 만들 수 있습니다.
proxy URL은 HTTP 리스너를 가리키며, 공개 후보는 HTTP 프록시 목록에서 확인할 수 있습니다. 페이지는 여전히 HTTPS 대상입니다. ProxyServer는 Chromium의 --proxy-server 플래그에 대응하며 Go의 net/http 프록시 설정과는 다릅니다.
Chromium은 수동 proxy URL에 포함된 사용자 이름과 비밀번호를 받지 않습니다. 인증이 필요한 엔드포인트에는 지원되는 브라우저 인증이나 중계 방식이 필요합니다. 이 플래그에 user:password를 추가하는 것은 HTTP 클라이언트의 URL 인증과 같지 않습니다. Chrome의 CDP 인증 이벤트 흐름은 의도한 proxy 챌린지를 처리하는 지원 경로 중 하나입니다.
브라우저 작업이 끝날 때까지 allocator를 살려 두세요. 그 취소도 프로세스 정리의 일부이며, 탭 취소는 관련 브라우저 context의 범위를 정합니다.