通过 CDP 使用 Playwright Java:在新的浏览器上下文中设置代理
先连接 Chromium 的 CDP 端点,再创建配置了代理的上下文;把控制连接与远程浏览器的出网路径区分开。
远程浏览器有两条网络路径: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 连接。