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 的 Chrome 驱动程序

seleniium模块的基本使用

seleniium模块的基本使用

chromedriver路径和环境变量配置问题

如何绕过 Selenium 中的 Cloudflare bot 保护

(续篇)Selenium 安装配置以及如何解决('chromedriver' executable needs to be in PATH. Please see https://s