Python/Selenium:如何使用无头Chrome驱动程序模拟uBlock或AdBlock之类的扩展?

2024-09-30 02:35:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

但是,headless Chrome不支持使用扩展名,正如这个answer。我可以让headless Chrome使用我当前的Python脚本,一切都很好,但是由于第三方广告/分析/请求,访问站点需要很长时间。在

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

例如,在不使用-headless选项的情况下,和使用uBlock扩展来完成我的测试需要大约20秒左右。但是,使用headless选项和不使用uBlock的完成测试,我的测试大约需要一分钟才能完成。这违背了我最初的目标,即缩短测试时间,这就是为什么我想首先使用无头Chrome驱动程序。在

既然我不能在无头模式下导入Chrome扩展,我如何阻止第三方广告/分析/请求(a.k.a.uBlock的目的)?在

我对代理或任何与网络相关的东西都不太了解。我知道一个选择是将所有导致连接缓慢的主机都列入黑名单,但是这些主机总是在不断地变化,因此无法将每个主机单独列入黑名单。在


Tags: 代码add站点选项seleniumchromeargumentchromedriver
1条回答
网友
1楼 · 发布于 2024-09-30 02:35:15

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

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

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

相关问题 更多 >

    热门问题