BrowserMobが記録するのは、実際に自身のリスナーを通過したトラフィックだけです。Seleniumブラウザの隣でプロキシを起動しても、そのブラウザが経路に置かれるわけではありません。

BrowserMobが文書化している2.1.5の組み込みAPIでは、既存のJava Selenium構成で次の順序を使えます。

BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.start(0);
try {
    ChromeOptions options = new ChromeOptions();
    options.setProxy(ClientUtil.createSeleniumProxy(proxy));
    WebDriver driver = new ChromeDriver(options);
    try {
        proxy.newHar("example-page");
        driver.get("http://www.example.com/");
        Har capture = proxy.getHar();
        capture.writeTo(new java.io.File("page.har"));
    } finally {
        driver.quit();
    }
} finally {
    proxy.stop();
}

ポート0は空きポートを要求します。ClientUtilはそのリスナーからSeleniumのプロキシ設定を構築します。キャプチャはナビゲーション前に始まり、プロキシがまだ利用できるうちに取得します。

この断片は、プロジェクトのBrowserMob、HAR、Seleniumの型がすでに利用可能であることを前提としています。リクエスト本文やレスポンス本文の詳細なキャプチャは追加のCaptureType選択です。HTTPSの傍受には、意図した証明書信頼の取り決めも必要です。

リモートのGridブラウザでは、そのブラウザのマシンから到達できるアドレスを通知します。テストランナー上のloopbackアドレスは、そこでは別マシンのloopbackを指します。

これは設定済みのブラウザHTTP経路をキャプチャします。他のすべての外向き接続を遮断するオペレーティングシステムの規則を確立するものではありません。

関連記事