У удалённого браузера два сетевых пути: управляющее соединение Java со службой браузера и запросы браузера к сайтам. Второй настраивается в создаваемом контексте.

Для службы Chromium, которая предоставляет конечную точку CDP и разрешает новые контексты:

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, не проверив протокол службы, — ненадёжное преобразование.

Прокси должен быть доступен с хоста удалённого браузера. Loopback-слушатель на машине с Java не доступен там автоматически. Настройка нового контекста также не перенастраивает уже существующий контекст по умолчанию или WebSocket-соединение Java.

Похожие статьи