如何保护chromedriver使用的端口?

时间:2019-03-31 15:52:07

标签: java google-chrome selenium-webdriver webdriver selenium-chromedriver

通常,当我运行chromedriver时,我总是得到此输出,我确信每个人在运行chromedriver时都会得到。这不是全部输出,而是关于一个特定语句。

Only local connections are allowed. 
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

正如标题所说,我总是得到输出。如何确保端口ChromeDriver仅使用受保护的端口?

3 个答案:

答案 0 :(得分:3)

此INFO消息...

Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

...是 ChromeDriver v2.46

引起的一个错误的结果。

分析

根据讨论2.46 produces unexpected debug.log file if verbose logging is enabled,在InitLogging()logging.cc函数中,甚至在调用logging::InitLogging之前,某些日志消息的编写还为时过早(在最后一行功能)。事实证明,在 Linux Mac 操作系统上,这是确定。但是在Windows上,默认日志目标是名为debug.log的文件。

因此 ChromeDriver 小组需要在调用VLOG之后将两个logging::InitLogging调用移至方法末尾。

此问题已通过commit解决,并且该修复程序可在 ChromeDriver 73.x

中找到

保护chromedriver使用的端口

由于@barancev mentions ChromeDriver 尝试使用与系统有关的临时端口范围检测器来寻找免费的Ephemeral port,因此我们对端口的使用无能为力。 ephemeral port是一个短暂的端点,当程序请求任何可用的用户端口时,该端点由操作系统创建。操作系统从预定义的范围内选择端口号,通常在1024到65535之间,并在相关的TCP连接终止后释放端口。

默认情况下,系统最多可以创建大约4,000个临时端口,这些端口在Windows Server 2003上同时运行,在Windows Server 2008上大约16,000。


解决方案

升级到 ChromeDriver 73.x 将解决此问题。


Outro

这些日志消息是ChromeDriver - Security Considerations的反映。

ChromeDriver是一个功能强大的工具,它可能在错误的手中造成伤害。使用ChromeDriver时,请遵循以下建议以确保其安全:

  • 默认情况下,ChromeDriver仅允许本地连接。如果需要从远程主机连接到它,请在命令行上使用--whitelisted-ips开关来指定允许连接到ChromeDriver的IP地址列表。
  • 如果可能,请使用无法访问敏感的本地或网络数据的测试帐户运行ChromeDriver。 ChromeDriver绝对不能使用特权帐户运行。
  • 如果可能,请在受保护的环境(例如Docker或虚拟机)中运行ChromeDriver。
  • 使用防火墙来防止未经授权的远程连接到ChromeDriver。
  • 如果您通过Selenium Server等第三方工具使用ChromeDriver,请确保也保护这些工具的网络端口。
  • 使用最新版本的ChromeDriver和Chrome。
  

您可以在Chrome here上找到受限端口的列表。

答案 1 :(得分:2)

我也有同样的问题,我所做的就是在链接中添加https。例如: driver.get(“ https://www.yahoo.com”);

这解决了问题,我的脚本正在运行。

答案 2 :(得分:0)

这只是参考消息。不用担心。甚至我也收到以下消息。

Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

让我细分消息并进行解释。

第1部分:Please protect ports used by ChromeDriver

这适用于任何程序。端口需要受到保护,而外部人员则不能访问。由于您使用的是Chromedriver中的默认白名单,因此您会收到消息Only local connections are allowed

运行该驱动程序时,它将使您的脚本能够访问该驱动程序并在Google Chrome上运行命令。

这可以通过在本地网络中运行的脚本(Only local connections are allowed.)或通过在外部网络中运行的脚本(All remote connections are allowed.)来完成。使用“本地连接”选项总是更安全。默认情况下,您可以通过端口9515访问Chromedriver。

如果您希望允许所有连接而不只是本地连接,请参见this answer

第2部分:prevent access by malicious code

有不同种类的脚本检查这些端口是否打开。由于您仅允许local connections打开了Chromedriver,所以这样做更加安全,而且您只需要担心计算机中的脚本,这可能会尝试访问Chromedriver的端口。

但是,如果您将IP列入白名单,而不是local connections,则必须通过Cloud服务提供商或操作系统使用防火墙规则来保护端口。

有关更多信息,请参见Security Configurations given be ChromeDriver