Playwright Java via CDP: definir um proxy num novo contexto do navegador
Ligue-se a um endpoint CDP do Chromium e crie um contexto com proxy; mantenha separados a ligação de controlo e a rota de saída do navegador remoto.
Um navegador remoto tem dois caminhos de rede: a ligação de controlo do Java ao serviço do navegador e os pedidos do navegador aos sites. Configure o segundo no contexto que cria.
Para um serviço Chromium que expõe um endpoint CDP e permite novos contextos:
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 é o endpoint atual fornecido pelo serviço do navegador. O respetivo token de autenticação e protocolo são independentes da conta do proxy de encaminhamento.
As ligações CDP funcionam apenas com Chromium. Um endpoint com protocolo Playwright usa connect em vez disso; alterar um sufixo de URL sem verificar o protocolo do serviço não é uma conversão fiável.
O proxy tem de ser alcançável a partir do anfitrião do navegador remoto. Um ouvinte de loopback na máquina Java não está disponível ali automaticamente. A definição do novo contexto também não reconfigura um contexto predefinido já existente nem a ligação WebSocket do Java.