使用Chrome浏览器运行WebDriver时,即使浏览器正常启动,也会收到"仅允许本地连接"的消息

use*_*403 76 google-chrome webdriver selenium-chromedriver

当我使用WebDriver运行Chrome浏览器时,我在控制台上收到以下消息.请让我知道如何解决它.

"在端口22582上启动ChromeDriver(v2.10.267521)""仅允许本地连接."

这是我的示例代码:

public class Browserlaunch {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32   \\chromedriver.exe");
        WebDriver driver = new ChromeDriver() ;
        driver.get("http://webdunia.com");
        driver.close();
        driver.quit();
    }
}
Run Code Online (Sandbox Code Playgroud)

Jim*_*ans 88

这仅是一条信息性消息.消息告诉您的是,chromedriver可执行文件只接受来自本地计算机的连接.

大多数驱动程序实现(确定Chrome驱动程序和IE驱动程序)创建HTTP服务器.语言绑定(Java,Python,Ruby,.NET等)都使用JSON-over-HTTP协议与驱动程序通信并自动化浏览器.由于HTTP服务器只是在开放端口上侦听由语言绑定生成的HTTP请求,因此只允许来自语言绑定的HTTP服务器连接来自同一主机上的其他进程.请注意,此限制不适用于浏览器可以与外部网站建立的连接 ; 相反,它只是阻止来自其他网站的传入连接.


小智 12

我得到了完全相同的错误.我今天和这个问题争了几个小时.它似乎是由chromedriver和selenium-server-standalone版本之间的不匹配引起的.config.js文件引用了一个具有chromedriver 2.9和selenium-server-standalone 2.35.0的目录.一旦我确定我们引用了2.10和2.42.2,就可以了.


Pog*_*dis 10

不一定是最好的做法,但我的环境是一个本地网络,有几台机器需要访问硒.

运行chromedriver时,你可以像这样通过一个参数:

chromedriver --whitelisted-ips=""

这基本上会将所有IP列入白名单,当然并不总是理想的解决方案,并且对于生产环境要小心,但是你应该看到一个详细的警告:

在端口9515上启动ChromeDriver 2.16.333244(15fb740a49ab3660b8f8d496cfab2e4d37c7e6ca)允许所有远程连接.请改用白名单!

最好的解决方案,但它的工作原理.

相对办理登机手续


Get*_*toX 8

经过几个小时的分析,阅读了大量的日志和源代码,终于发现了问题。而且解决起来也很容易。

单行:您需要将 --whitelisted-ips= 传递到chrome 驱动程序(不是 chrome!)可执行文件中

您可以通过以下几种方式来做到这一点:

如果您在本地/直接从代码使用 ChromeDriver,只需在 ChromeDriver init 之前插入以下行

    System.setProperty("webdriver.chrome.whitelistedIps", "");
Run Code Online (Sandbox Code Playgroud)

如果您远程使用它(例如 selenium hub/grid),您需要在节点启动时设置系统属性,如命令所示:

java -Dwebdriver.chrome.whitelistedIps= testClass etc...
Run Code Online (Sandbox Code Playgroud)

或通过传递JAVA_OPTSenv进行 docker

java -Dwebdriver.chrome.whitelistedIps= testClass etc...
Run Code Online (Sandbox Code Playgroud)


Kee*_*asa 7

Chromedriver 是一个 WebDriver。WebDriver 是一种开源工具,用于跨多种浏览器自动测试 Web 应用程序。它提供了导航网页、用户输入、JavaScript 执行等功能。当您运行此驱动程序时,它将使您的脚本能够访问此驱动程序并在 Google Chrome 上运行命令。

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

要回答这个问题,这只是一条信息性消息。你不必担心它。

下面给出了这两个选项。

$ chromedriver

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.
Run Code Online (Sandbox Code Playgroud)

这是通过将所有 IP 列入白名单来实现的。

$ chromedriver --whitelisted-ips=""

Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}) on port 9515
All remote connections are allowed. Use a whitelist instead!
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Run Code Online (Sandbox Code Playgroud)


小智 5

当我不得不修复一个有一段时间没有被查看的旧项目时,这发生在我身上。与项目关联的 chromedriver 与我的 chrome 版本不兼容,所以当我更新 chromedriver 时它工作正常。