【问题标题】:Headless Chrome - getting blank page source无头 Chrome - 获取空白页面源
【发布时间】:2026-01-08 16:55:01
【问题描述】:

我正在尝试使用 Selenium 网络驱动程序以无头模式加载带有 Chrome 浏览器的网站。我遇到了一些特定网站的问题。页面正在加载,在前 2-3 秒内,它显示一个带有“请启用 javascript...”的页面,3 秒后,页面源变为空白。

我长期使用 Selenium,尤其是 Chrome,并且我熟悉该平台。就本例而言,我在 Mac OS 上使用 Chrome 版本 73.0.3683.86 、ChromeDriver 2.46.628411(根据Which ChromeDriver version is compatible with which Chrome Browser version? 兼容)。 selenium java 版本是最新的 - 3.141.59

我怀疑无头 Chrome 无法处理特定的内容类型,例如“svg”和任何其他与 GUI 相关的 HTTP 响应。

    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.addArguments("--headless");
    WebDriver driver = new ChromeDriver(chromeOptions);

    driver.get("https://identity.tescobank.com/login");

    Thread.sleep(3000);

    System.out.println(driver.getPageSource());

    driver.quit();

预期结果是页面源与在非无头模式下显示的相同。

【问题讨论】:

  • Headless chrome 可以做任何普通 chrome 可以做的事情;它只是呈现到屏幕外缓冲区。 JS 警告很奇怪。当 JS 被禁用时,它怎么会消失?我的猜测是该页面(银行的登录页面)以某种方式检测到 Selenium 并出于安全原因而关闭。
  • 当我在非无头银行页面中使用 Selenium 时,页面加载完美
  • 这很奇怪。检查日志中的错误。您是否在某处看到无头模式下的 JavaScript 错误(即 JavaScript 控制台)?您是否尝试过其他网页,例如 google.com?
  • 我说的是特定网站,当然谷歌正在工作。 Chrome 驱动程序详细日志记录未显示任何错误。我看到的是一些 svg 和视频文件正在加载,我怀疑这就是原因。
  • 我不知道。我将从远程使用 DevTools 开始,如下所述:developers.google.com/web/updates/2017/04/headless-chrome 我这样做了,我在用户代理中看到了HeadlessChrome

标签: java selenium selenium-chromedriver


【解决方案1】:

登录后,我的脚本中遇到了类似的问题。不知何故刷新页面解决了这个问题。 driver.navigate().refresh();

【讨论】:

    【解决方案2】:

    Headless Chrome 应该能够处理普通 Chrome 可以做的所有事情:

    它将 Chromium 和 Blink 渲染引擎提供的所有现代 Web 平台功能引入命令行。

    (见https://developers.google.com/web/updates/2017/04/headless-chrome

    由于只有银行的登录页面给你带来麻烦,我猜测是页面的安全检测到异常并决定不为你服务。

    他们可以做到这一点的一种方法是查看包含HeadlessChrome 的用户代理字符串。

    也就是说,除非您正在为银行编写集成测试,否则您的行为至少是可疑的。如果您有合法且有效的疑虑,请先与银行协商。否则,他们可能会对您采取行动。阻止您的 IP 地址(这可能会影响很多人)或要求警方与您谈谈。

    【讨论】:

    • 谢谢!在用户代理中覆盖 HeadlessChrome 解决了这个问题
    • 你是怎么做到的? @AdiOhana
    • @NoelOmondi chromeOptions.addArguments("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36 ");
    • 感谢这为我解决了这个问题!虽然我需要在我的情况下做更多的事情,从这里的更多回复可以看出:*.com/a/69464060/1871891