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 の範囲を定めます。