如何模仿或设置 Chrome Headless 插件

Posted

技术标签:

【中文标题】如何模仿或设置 Chrome Headless 插件【英文标题】:How do I mimic or set plugin for Chrome Headless 【发布时间】:2018-05-02 15:54:24 【问题描述】:

如何模拟或设置 Selenium chrome headless 的插件长度?我正在关注这个guide

我找不到通过 Chrome 选项执行此操作的任何内容。

我想要这个的原因是我想让 chrome headless 尽可能地不可检测。

试试下面的。插件长度仍然是个问题。

from selenium.webdriver.chrome.options import Options
from selenium import webdriver
options = Options()
options.add_argument("--headless");
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/64.0.3240.0 Safari/537.36'
options.add_argument(f'user-agent=user_agent')
options.add_argument("--lang=en-US,en");

driver = webdriver.Chrome(chrome_options=options)

driver.get('https://intoli.com/blog/making-chrome-headless-undetectable/chrome-headless-test.html')
driver.save_screenshot("screenshot5.png")

driver.close()

正如您在下面看到的,插件长度仍然可以检测到。

这是可能的还是仅仅是 selenium python 的限制?

【问题讨论】:

Chrome headless 不允许扩展,这就是您在这里看到的。这是chrome headless本身的限制。 Selenium 对此无能为力 @TarunLalwani 我明白了。我相信有一种方法可以通过文件注入 javascript 来改变这一点,但不太确定我该怎么做。 如果您尝试注入 Js,请在此处查看我在不同内容中的操作方式:[此链接][1] [1]:***.com/a/45194334/8179099 @MosheSlavin 很有趣,虽然没有说明如何用 JS 实现。 Tarun 是对的,这是 chrome headless 的限制 【参考方案1】:
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', 
  "source": "
     Object.defineProperty(navigator, 'plugins', 
       get: () => [1, 2, 3, 4, 5]
     );
")

这是 plugins.length 的解决方案

author 在帖子中提到了解决方案。 我确认它工作正常。

【讨论】:

以上是关于如何模仿或设置 Chrome Headless 插件的主要内容,如果未能解决你的问题,请参考以下文章

headless chrome设置最大窗口模式

Selenium Headless Chrome 和语言设置

TestCafe & chrome:headless : 如何强制浏览器语言(语言环境)

python selenium chrome headless中的文件下载路径设置不适用

如何在 Jenkins env 变量中为 Headless Chrome 配置 CHROME_BIN 路径

如何在chrome headless + puppeteer评估()中使用xpath?