Selenium : 请保护 ChromeDriver 和相关测试框架使用的端口,防止恶意代码访问
Posted
技术标签:
【中文标题】Selenium : 请保护 ChromeDriver 和相关测试框架使用的端口,防止恶意代码访问【英文标题】:Selenium : Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code 【发布时间】:2019-08-21 05:34:30 【问题描述】:我通过本地机器连接到 *** 并尝试在 chrome 浏览器上执行 selenium 脚本,然后我收到以下错误:
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1553947986.711][WARNING]: Timed out connecting to Chrome, retrying...
[1553947990.713][WARNING]: Timed out connecting to Chrome, retrying...
[1553947998.713][WARNING]: Timed out connecting to Chrome, retrying...
[1553948014.713][WARNING]: Timed out connecting to Chrome, giving up.
[1553948016.724][WARNING]: Timed out connecting to Chrome, retrying...
[1553948020.724][WARNING]: Timed out connecting to Chrome, retrying...
[1553948028.727][WARNING]: Timed out connecting to Chrome, retrying...
[1553948044.730][WARNING]: Timed out connecting to Chrome, giving up.
只有当我想通过 *** 执行脚本时才会发生这种情况, 没有 ***,脚本工作正常。对于火狐浏览器不是 遇到上述问题
【问题讨论】:
你在使用网格来执行吗? @supputuri:不,我们没有使用网格 似乎是某些安全应用程序/防火墙设置在您使用 *** 时阻止了连接。检查连接***时是否有任何安全应用程序运行,尝试禁用它并查看。如果可行,请联系 *** 组并请他们帮助打开 selenium 连接。 没有它的***,我已经尝试降级、升级、匹配已安装的google-chrome 版本但没有工作。如果它为您解决,请分享。 @paul : 当然,会通知你 【参考方案1】:自上周以来,我也遇到了这个问题。我搜索了很多并尝试了不同的方法来解决这个问题。下面的代码(伪代码)帮助我解决了这个问题。 我的方法:
-
运行 chromedriver.exe 服务器并检查端口号(我在代码中使用了 Process 类)
首先通过以下步骤手动检查:
打开命令提示符
导航到您拥有 chromedriver 的路径
运行 chromedriver(只需键入 >chromedriver )
chromedriver 服务器将开始运行,注意端口号(在我的情况下为 9515)
使用 url (http://localhost:portNumber) 初始化驱动程序
通常的东西(最大化、超时、导航到 url)
编写测试脚本
关闭驱动实例(driver.close())
关闭流程实例(process.destroy())
try
process = new ProcessBuilder("path of the chromedriver.exe").start();
catch (IOException e1)
e1.printStackTrace();
System.setProperty("webdriver.chrome.driver", "path of the chromedriver.exe");
ChromeOptions options = new ChromeOptions();
try
driver = new RemoteWebDriver(new URL("http://127.0.0.1:9515"), options);
catch (MalformedURLException e)
e.printStackTrace();
// maximize browser
// delete All Cookies
// page Load Timeout
// implicitly Wait
// navigating to the url
// run the test scripts
// close the driver
// close the process
希望它也能解决您的问题。如果您遇到任何问题,请告诉我。
【讨论】:
【参考方案2】:ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--whitelist-ip *");
chromeOptions.addArguments("--proxy-server='direct://'");
chromeOptions.addArguments("--proxy-bypass-list=*");
WebDriver driver = new ChromeDriver(chromeOptions);
您也可以在此处指定 IP 地址。
【讨论】:
感谢您的回答...会检查并通知您【参考方案3】:禁用 IPv6 为我解决了这个问题。
在 macOS 上:networksetup -setv6off Wi-Fi
我还必须从我的 hosts 文件中删除 ::1 localhost
。
【讨论】:
以上是关于Selenium : 请保护 ChromeDriver 和相关测试框架使用的端口,防止恶意代码访问的主要内容,如果未能解决你的问题,请参考以下文章
如何绕过 Selenium 中的 Cloudflare bot 保护
(续篇)Selenium 安装配置以及如何解决('chromedriver' executable needs to be in PATH. Please see https://s