通常,当我运行chromedriver时,我总是得到此输出,我确信每个人在运行chromedriver时都会得到。这不是全部输出,而是关于一个特定语句。
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
正如标题所说,我总是得到输出。如何确保端口ChromeDriver仅使用受保护的端口?
答案 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
中找到由于@barancev mentions ChromeDriver 尝试使用与系统有关的临时端口范围检测器来寻找免费的Ephemeral port,因此我们对端口的使用无能为力。 ephemeral port是一个短暂的端点,当程序请求任何可用的用户端口时,该端点由操作系统创建。操作系统从预定义的范围内选择端口号,通常在1024到65535之间,并在相关的TCP连接终止后释放端口。
默认情况下,系统最多可以创建大约4,000个临时端口,这些端口在Windows Server 2003上同时运行,在Windows Server 2008上大约16,000。
升级到 ChromeDriver 73.x 将解决此问题。
这些日志消息是ChromeDriver - Security Considerations的反映。
ChromeDriver是一个功能强大的工具,它可能在错误的手中造成伤害。使用ChromeDriver时,请遵循以下建议以确保其安全:
--whitelisted-ips
开关来指定允许连接到ChromeDriver的IP地址列表。您可以在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服务提供商或操作系统使用防火墙规则来保护端口。