Selenium 中的无头 Chrome 检索空页面(尽管没有无头标志可以工作)

dsk*_*sky 2 java selenium google-chrome selenium-chromedriver google-chrome-headless

我正在尝试在无头模式下使用 Chrome 获取页面内容,但某些页面仅返回空 HTML。我的设置:

  • 爪哇 8
  • 硒版本 3.14.0
  • Selenium Chrome 驱动程序版本 3.141.59
  • 在 Windows 10 上测试

编码:

ChromeOptions options = new ChromeOptions();
options.setHeadless(true);
RemoteWebDriver driver = new ChromeDriver(options);

driver.get("https://www.patagonia.com/home/");

System.out.println("Title: " + driver.getTitle()); // prints out "Title: "
Run Code Online (Sandbox Code Playgroud)

当我不使用无头模式时,它可以工作。

如果我在无头模式下使用 Firefox,它也可以工作。

是否有我可能缺少的设置,或者为什么在无头模式下不起作用?

感谢您的帮助。

qqi*_*ihq 5

当通过用户代理运行 Chrome Headless 时,该网页显然会检测到(这与运行 Headless 时不同,实际上将包含HeadlessChrome)。简单的解决方案:在您的ChromeOptions,例如

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Run Code Online (Sandbox Code Playgroud)

以下是通过 指定它的方法ChromeOptions

ChromeOptions options = new ChromeOptions()
                            .addArguments("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36")
                            .setHeadless(true);
Run Code Online (Sandbox Code Playgroud)