chromedp.ProxyServer é uma opção de lançamento do navegador. Aplique-a ao allocator que cria o processo do 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/"),
)

O código pertence à função existente da aplicação, com o tratamento de erros habitual para err. NewContext herda o allocator de allocCtx. Um contexto criado a partir de outro pai pode criar um navegador diferente sem essa opção.

O URL do proxy identifica um listener HTTP; candidatos públicos estão disponíveis na lista de proxies HTTP; a página continua a ser um destino HTTPS. ProxyServer corresponde à flag --proxy-server do Chromium, não à configuração de proxy net/http do Go.

O Chromium não aceita credenciais de utilizador e palavra-passe incorporadas num URL de proxy manual. Um endpoint autenticado precisa de autenticação de navegador suportada ou de um esquema intermediário; acrescentar user:password a esta flag não equivale à autenticação por URL num cliente HTTP. O fluxo de eventos de autenticação CDP do Chrome é uma via suportada para tratar o desafio de proxy pretendido.

Mantenha o allocator vivo até o trabalho do navegador terminar. O seu cancelamento também faz parte da limpeza do processo, enquanto o cancelamento do separador delimita o contexto de navegador associado.

Artigos relacionados