ProxyServer von chromedp auf dem ExecAllocator setzen
Erzeugen Sie den Browserkontext aus dem ExecAllocator, der ProxyServer trägt, damit der vorgesehene Chromium-Prozess sein Proxy-Flag erhält.
chromedp.ProxyServer ist eine Startoption des Browsers. Wenden Sie sie auf den Allocator an, der den Chromium-Prozess erzeugt:
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/"),
)
Der Code gehört in die vorhandene Funktion der Anwendung, mit der üblichen Fehlerbehandlung für err. NewContext erbt den Allocator von allocCtx. Ein Kontext, der von einem anderen Parent erzeugt wird, kann ohne diese Option einen anderen Browser erzeugen.
Die Proxy-URL bezeichnet einen HTTP-Listener; öffentliche Kandidaten finden sich in der HTTP-Proxy-Liste; die Seite bleibt ein HTTPS-Ziel. ProxyServer entspricht dem Flag --proxy-server von Chromium, nicht der Proxy-Konfiguration von net/http in Go.
Chromium akzeptiert keine Benutzernamen und Passwörter, die in eine manuell gesetzte Proxy-URL eingebettet sind. Ein authentifizierter Endpunkt benötigt eine unterstützte Browser-Authentifizierung oder eine Zwischenlösung; user:password zu diesem Flag hinzuzufügen ist nicht gleichbedeutend mit URL-Authentifizierung im HTTP-Client. Chromes CDP-Authentifizierungsereignisablauf ist ein unterstützter Weg, die beabsichtigte Proxy-Aufforderung zu behandeln.
Halten Sie den Allocator am Leben, bis die Browserarbeit abgeschlossen ist. Auch seine Beendigung gehört zur Prozessbereinigung, während das Abbrechen des Tabs den zugehörigen Browserkontext begrenzt.