【问题标题】:What does selenium chromeDriver's port mean? [duplicate]selenium chromeDriver 的端口是什么意思? [复制]
【发布时间】:2021-03-14 05:52:48
【问题描述】:

当所有端口都打开时,您可以使用 Selenium ChromeDriver 来收集端口。 但是,根据公司政策,只有端口 53,443,80 是开放的。 使用 Selenium ChromeDriver 进行网络收集时无法运行它。 检查执行日志,使用了某个随机端口。 我找到了一种手动配置该端口的方法。 手动将端口设置为4444后,我将4444添加到防火墙端口,它在启动时不运行。 这个端口的目的是什么?

是否可以使用 Selenium ChromeDriver 通过仅打开专用网络上的端口 53、443、80 来收集网络?

请告诉我一个站点,您可以在其中找到与 Selenium 和 ChromeDriver 执行、进程、结构等相关的选项列表。

以下是我的 ChromeDriver 选项。

ChromeOptions options = new ChromeOptions();
            options.addArguments("--headless");
            options.setHeadless( _configInfo._driverHeadLess );
            options.addArguments("--disable-notifications");
            options.addArguments("--disable-push_messaging");
            options.addArguments("--disable-extensions");
            options.addArguments("--disable-cookies");
            options.addArguments("--disable-plugins");
            options.addArguments("--disable-mouselock");
            
            options.addArguments("--disable-media_stream");
            options.addArguments("--disable-media_stream_mic");
            options.addArguments("--disable-media_stream_camera");
            
            options.addArguments("--disable-ppapi_broker");
            options.addArguments("--disable-automatic_downloads");
            options.addArguments("--disable-midi_sysex");
            options.addArguments("--disable-metro_switch_to_desktop");
            options.addArguments("--disable-protected_media_identifier");
            options.addArguments("--disable-app_banner");
            options.addArguments("--disable-site_engagement");
            options.addArguments("--disable-durable_storage");
            options.addArguments("--whitelisted-ips");
            //options.addArguments("--single-process");
            //options.addArguments("--disable-dev-shm-usage");
            //options.addArguments("--no-sandbox");
ChromeDriverService service = new ChromeDriverService.Builder().usingDriverExecutable(new 
                                   File("/lib/chromedriver")).usingPort(4444).build();
service.start();
WebDriver _driver = new RemoteWebDriver(service.getUrl(),options);

【问题讨论】:

  • 你是在远程机器上运行还是在本地运行
  • 根据 service.geturl() 看来您正在 localhost 运行 chromedriver 服务器。所以不应该有防火墙限制
  • 您可以为 localhost 使用任何端口,防火墙策略不适用于 localhost,因为它不能从外部获得
  • 这个问题怎么重复

标签: java selenium selenium-chromedriver web-crawler private-network


【解决方案1】:

Chrome 驱动程序启动一个服务器并在指定的端口上公开该服务器。

因此,当您开始测试时,您通过与公开的 API 交谈(这就是 API 的用途)与服务器交谈

驱动服务器依次通过其他协议(以前是 JSON 有线协议,现在使用 W3 协议)与浏览器对话,并按照我们的要求进行操作

https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/remote/service/DriverService.Builder.html#usingPort(int)

https://www.selenium.dev/documentation/en/webdriver/understanding_the_components/

【讨论】:

  • 端口是否与外界通信?我检查了结构,但它是一个在内部工作的函数。我在主机 PC 上使用它,而不是遥控器。 WebDriver 和 ChromeDriver 相互通信时是否存在端口问题?您可以打开和使用任何端口,但如果您只打开端口 80,443,53 则无法运行它。
  • @JeongWon_Lee 没有外部调用,在端口 4444 上启动 ChromeDriver 87.0.4280.20 (c99e81631faa0b2a448e658c0dbd8311fb04ddbd-ref s/branch-heads/4280@{#355}) 只允许本地连接。这是仅在 localhost IP 绑定而不是 Internet 地址 0.0.0.0 上打印的消息
  • 是的,我想我明白了但是我有一个奇怪的问题。在 iptables 中,除了 80,443,53 之外的所有外部端口都关闭时,它不会运行。在本地运行。 WebDriver/ChromeDriver 在内部本地运行。为什么关闭外部端口有问题?
  • 什么操作系统 windows 或 linux ?
  • iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT iptables -A INPUT -p tcp --dport $APP_PORT -j DROP
猜你喜欢
  • 1970-01-01
  • 2019-09-12
  • 2015-01-22
  • 2020-10-27
  • 2015-07-15
  • 2018-07-17
  • 2012-08-13
  • 2011-12-23
  • 2013-10-27
相关资源
最近更新 更多