You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Selenium与ChromeDriver中配置HTTPS代理?

解决Selenium ChromeDriver的HTTPS代理配置问题

我看你已经搞定了HTTP代理的配置,但在HTTPS代理上踩了坑——其实你现有的代码里已经包含了HTTPS代理的对应配置项,只是对Selenium的Proxy类用法理解有点偏差,我来帮你理清楚:

你的两种尝试为啥失败?

  • 123.123.123.123:443无法连接:大概率是你用的代理服务器的HTTPS监听端口根本不是443。很多代理服务商的HTTP和HTTPS端口是分开的,你之前用的31288是HTTP端口,HTTPS可能是另一个专属端口,直接硬套443当然连不上。
  • 123.123.123.123:443@HTTPS代理无效:这种格式是错的,Selenium的Proxy类的各种set方法只认ip:port的纯字符串格式,不需要额外加@HTTPS这种协议标识。

正确的HTTPS代理配置姿势

其实很简单,只要确认你的代理服务器的HTTPS端口,然后对应设置到setSslProxy()方法里就行:

情况1:HTTP和HTTPS代理端口相同

如果你的代理服务器同一个端口同时支持HTTP和HTTPS请求(比如31288),那你原来的代码其实已经生效了,可能是其他问题让你误以为HTTPS代理没起作用。可以访问一个HTTPS站点(比如https://example.com),再查看Chrome的代理设置(chrome://settings/system)确认是否正确应用。

情况2:HTTP和HTTPS代理端口不同

如果代理服务器的HTTP和HTTPS端口分开,那就单独指定:

// 注意:路径里的反斜杠要转义,否则会报错
System.setProperty("webdriver.chrome.driver", "C:\\Users\\lll\\Desktop\\chromedriver.exe");
DesiredCapabilities cap = new DesiredCapabilities();
Proxy proxy = new Proxy();

// 替换成你实际的代理地址和端口
String httpProxy = "123.123.123.123:31288";
String httpsProxy = "123.123.123.123:XXXX"; // 这里填HTTPS代理的实际端口

proxy.setHttpProxy(httpProxy)
    .setFtpProxy(httpProxy)
    .setSslProxy(httpsProxy); // 专门设置HTTPS代理

cap.setCapability(CapabilityType.ForSeleniumServer.AVOIDING_PROXY, true);
cap.setCapability(CapabilityType.ForSeleniumServer.ONLY_PROXYING_SELENIUM_TRAFFIC, true);
cap.setCapability(CapabilityType.PROXY, proxy);

driver = new ChromeDriver(cap);

额外注意事项

  • 路径转义:原代码里的C:\Users\lll\Desktop\chromedriver.exe要改成C:\\Users\\lll\\Desktop\\chromedriver.exe,不然Java会把单个反斜杠当成转义字符,导致找不到驱动文件。
  • 代理认证:如果你的代理需要用户名密码,记得加上proxy.setProxyAuthenticate("你的用户名:你的密码")
  • 验证方式:可以通过访问HTTPS站点后查看浏览器的网络请求(F12开发者工具的Network面板),确认请求是否走了代理。

内容的提问来源于stack exchange,提问作者hyuk

火山引擎 最新活动