3

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

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

请告诉我一个站点,您可以在其中找到与 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);
4

1 回答 1

2

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/

于 2020-12-02T09:27:37.153 回答