【问题标题】:Python/Selenium: How can I emulate extensions such as uBlock or AdBlock using a headless Chrome driver?Python/Selenium:如何使用无头 Chrome 驱动程序模拟 uBlock 或 AdBlock 等扩展程序?
【发布时间】:2017-06-24 10:48:28
【问题描述】:

我在 Python 中使用 Selenium/ChromeDriver。在我的代码中使用 ChromeDriver 选项:

options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('load-extension=' +uBlockExtensionPATH)
browser = webdriver.Chrome(chrome_options=options)

但是,headless Chrome 不支持使用扩展程序,如 answer 所述。我能够让无头 Chrome 与我当前的 Python 脚本一起工作,一切正常,但由于第三方广告/分析/请求,访问网站需要很长时间。

在实现无头 ChromeDriver 之前,我使用了标准的非无头 ChromeDriver 并导入了 uBlock 扩展程序,以消除第三方网站减慢我的测试速度。

例如,没有 -headless 选项和 uBlock 扩展完成我的测试大约需要20 秒左右。但是,使用 -headless 选项和没有 uBlock 完成我的测试,我的测试大约需要一分钟才能完成。这违背了我最初减少测试时间的目标,这就是我想使用无头 Chrome 驱动程序的原因。

由于我无法在 headless 模式下导入 Chrome 扩展程序,我该如何阻止第三方广告/分析/请求(又名 uBlock 的目的)?

我对代理或任何与网络相关的东西都不太了解。我知道一个选项是 黑名单 任何导致连接缓慢的主机,但是这些主机不断变化,并且单独将每个主机都列入黑名单太多了。

【问题讨论】:

  • 进一步澄清:当您加载网站时,您知道 Chrome 左下角的那些小消息吗?这些基本上是让我慢下来的原因。例如,我会看到:“Performing TLS handshake with:”或“Waiting for amazon.ds.analytics.com”等。uBlock 消除了这些,但显然无头 Chrome 无法进行扩展。

标签: python google-chrome selenium google-chrome-extension


【解决方案1】:

由于无头模式不支持扩展,代理服务器似乎是这里最好的做法。

您可以尝试使用https://github.com/epitron/mitm-adblock 设置本地代理服务器(用python 编写且易于设置)并在启动chrome 时添加--proxy-server=localhost:8118。它支持AdblockPlus easylist,应该相当全面。

您也可以尝试https://github.com/Artificial-University/adblock-proxy,它是用 node 编写的,但似乎更成熟且最近更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2023-02-10
    • 2016-06-21
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    相关资源
    最近更新 更多