远程浏览器有两条网络路径: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 连接。

相关文章