リモートブラウザーにはネットワーク経路が二つあります。Java からブラウザーサービスへの制御接続と、ブラウザーからウェブサイトへのリクエストです。後者は作成するコンテキストに設定します。

CDP エンドポイントを公開し、新しいコンテキストを許可する Chromium サービスの場合:

import com.microsoft.playwright.*;
import com.microsoft.playwright.options.Proxy;

try (Playwright playwright = Playwright.create()) {
    Browser browser = playwright.chromium().connectOverCDP(cdpEndpoint);
    try {
        var options = new Browser.NewContextOptions().setProxy(
            new Proxy("http://proxy.example:8080")
                .setUsername(proxyUser)
                .setPassword(proxyPassword));
        try (BrowserContext context = browser.newContext(options)) {
            context.newPage().navigate("https://www.example.org/");
        }
    } finally {
        browser.close();
    }
}

cdpEndpoint はブラウザーサービスが提供する現在のエンドポイントです。その認証トークンとプロトコルは、フォワードプロキシのアカウントとは独立しています。

CDP 接続は Chromium 専用です。Playwright プロトコルのエンドポイントは代わりに connect を使います。サービスのプロトコルを確認せず URL の接尾辞を変えても、確実な変換にはなりません。

プロキシはリモートブラウザーのホストから到達可能でなければなりません。Java マシン上のループバックリスナーは、そこから自動的に使えるわけではありません。新しいコンテキストの設定は、既存のデフォルトコンテキストや Java の WebSocket 接続を再設定するものでもありません。

関連記事