Настроить ProxyServer из chromedp на ExecAllocator
Создайте контекст браузера из ExecAllocator, несущего ProxyServer, чтобы нужный процесс Chromium получил свой флаг прокси.
chromedp.ProxyServer — это параметр запуска браузера. Примените его к аллокатору, который создаёт процесс Chromium:
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. Контекст, созданный от другого родителя, может создать другой браузер без этого параметра.
URL прокси обозначает HTTP-слушатель; публичные варианты есть в списке HTTP-прокси; страница остаётся HTTPS-назначением. ProxyServer соответствует флагу --proxy-server Chromium, а не настройке прокси net/http в Go.
Chromium не принимает имя пользователя и пароль, встроенные в URL прокси, заданный вручную. Для аутентифицированной конечной точки нужна поддерживаемая аутентификация браузера или промежуточная схема; добавление user:password к этому флагу не равно аутентификации по URL в HTTP-клиенте. Поток событий аутентификации CDP в Chrome — один из поддерживаемых способов справиться с нужным прокси-вызовом.
Держите аллокатор живым, пока работа браузера не завершится. Его отмена тоже относится к очистке процесса, а отмена вкладки ограничивает связанный контекст браузера.