java - 如何保护 chromedriver 使用的端口?

标签 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 仅使用 protected 端口?

最佳答案

此信息消息...

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 之前写得太早了被调用(在函数的最后一行)。结果证明这在 LinuxMac OS 上是OK,默认日志目标是预期的位置。但在 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 将解决此问题。


结尾

这些日志消息反射(reflect)了 ChromeDriver - Security Considerations .

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

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

You can find the list of restricted ports on Chrome here.

关于java - 如何保护 chromedriver 使用的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55442679/

相关文章:

java - 应用程序未在 64 位计算机上运行

java - Java 中的文件流

javascript - 基于 Chromium 的浏览器中奇怪的 JavaScript 错误

java - 如何使用 selenium 网络驱动程序从跨度文本中提取不是正则表达式格式的电子邮件地址?

java - org.openqa.selenium.NoSuchWindowException : Unable to get browser

java - Android - 删除主页和导航按钮

java - crate.io jdbc 连接失败

css - @font-face 在 Chrome (Windows) 中不显示

javascript - 如何为 Google Chrome 扩展程序动态更改 popup.html 的大小

selenium-webdriver - Selenium 独立服务器 2.45 ;火狐版本 36