是否可以在无头模式下使用扩展程序运行Google Chrome?

pau*_*eno 36 google-chrome google-chrome-extension google-chrome-headless

我无法使用无头模式在Google Chrome中使用我当前安装的扩展程序.有没有办法启用它们?

检查扩展是否有效的简单方法是添加,例如," Comic Sans Everything "扩展.

谷歌看起来像这样:

谷歌看起来很漂亮

但是,如果我使用无头模式(google-chrome --headless --disable-gpu --screenshot https://www.google.com)拍摄页面的屏幕截图,结果是:

谷歌处于无头模式

Xan*_*Xan 27

不,这是不可能的,由于任务的复杂性,Chrome开发人员决定不再在不久的将来实施它.

如果你看一下这个问题,你可能会认为他们仍然在考虑ChromeDriver的要求 - 但他们决定让ChromeDriver在没有扩展的情况下工作(通过DevTools).

  • 这个答案不再有效:``--headless=chrome`` 于 2021 年添加,作为在无头模式下运行 Chrome 而不丢失功能的一种方式。请参阅此处的评论:https://bugs.chromium.org/p/chromium/issues/detail?id=706008#c36 (4认同)
  • 是的,火狐浏览器支持它们。这是一个蹩脚的缺失功能。 (3认同)

Gra*_*ing 27

您可以使用Xvfb以无头扩展方式运行Chrome .

  1. 安装Xvfb.在Fedora上sudo dnf install xorg-x11-server-Xvfb
  2. xvfb-run google-chrome --remote-debugging-port=9222 --disable-gpu https://www.google.com
  3. 使用chrome-remote-interface(或其他Chrome Debug Protocol客户端)来触发屏幕截图.

更复杂,但确实有效.这就是我们用于无头镀铬扩展测试的内容.

  • 只是为了澄清:此解决方案不使用Chrome内置的"无头"模式,而是在虚拟显示器上呈现Chrome. (13认同)

MrK*_*vic 19

由于最近无头模式的变化,如果您遇到问题,您可能需要--headless=new使用--headless=chrome

options.add_argument("--headless=new")
Run Code Online (Sandbox Code Playgroud)

编辑: https: //www.selenium.dev/blog/2023/headless-is-going-away/

  • @manuell我四处挖掘并发现了这个错误问题https://bugs.chromium.org/p/chromium/issues/detail?id=1380881现在它也被添加到selenium网站https://www.selenium.dev/blog /2023/无头即将离去/ (2认同)

小智 15

事实上现在它可以工作了,他们修复了它。您可以使用

options.add_argument("--headless=chrome")
Run Code Online (Sandbox Code Playgroud)

奇迹般有效。 https://bugs.chromium.org/p/chromium/issues/detail?id=706008#c36


joh*_*ohn 9

您可以使用pyvirtualdisplay在服务器上以零显示运行 chrome。最好的事情是你可以使用这个技巧来运行扩展。

这是我的实现:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from pyvirtualdisplay import Display

display = Display(visible=0, size=(800, 600))
display.start()

chrome_options = Options()

chrome_options.add_extension("proxy.zip")

driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', chrome_options=chrome_options)
time.sleep(3)
driver.get("https://ipinfo.io/json")
print(driver.page_source)
driver.close()

display.stop()
Run Code Online (Sandbox Code Playgroud)

您需要xvfb在您的服务器/机器上安装:

sudo apt install -y xvfb
pip install pyvirtualdisplay
Run Code Online (Sandbox Code Playgroud)

在我的 AWS 服务器上运行它

aws 服务器