Definir o ProxyServer do chromedp no ExecAllocator
Crie o contexto do navegador a partir do ExecAllocator que transporta o ProxyServer, para que o processo Chromium pretendido receba a sua flag de proxy.
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.