我试图以无头模式使用Chrome获取页面的内容,但是某些页面仅返回空HTML。我的设置:
代码:
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: "
当我不使用无头模式时,它会起作用。
如果我以无头模式使用Firefox,它也可以工作。
是否存在我可能缺少的设置?为什么在无头模式下不起作用?
谢谢您的帮助。
答案 0 :(得分:1)
该网页显然通过用户代理运行Chrome Headless时会检测到(无头运行时会有所不同,并且实际上包含alter table bplateinfo2018
add [New O Swing Percentage] as decimal(5,4)
update bplateinfo2018
Set [New O Swing Percentage] = [Original O Swing Percentage] / 100
)。简单的解决方案:例如,在HeadlessChrome
中指定一个Chrome非无头用户代理,例如
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
指定它的方法:
ChromeOptions
答案 1 :(得分:0)
我在 .NET 中遇到了完全相同的问题,这是因为我在 IIS 中使用了本地不安全证书。
为了解决这个问题,我添加了以下内容...
ChromeOptions options = new ChromeOptions();
ChromeOptions.AcceptInsecureCertificates = true;
基本上,它告诉 ChromeDriver 选项在检测到不安全证书时不要停止浏览器执行,并照常进行。
我还发现在关闭无头选项的情况下运行 Chrome 时遇到问题时,查看浏览器的实际操作很有帮助。