我在Python中使用Selenium / ChromeDriver。在我的代码中使用ChromeDriver选项:
options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('load-extension=' +uBlockExtensionPATH)
browser = webdriver.Chrome(chrome_options=options)
但是,根据此answer,无头Chrome不支持使用扩展程序。我能够让无头的Chrome使用我当前的Python脚本,一切正常,但由于第三方广告/分析/请求,它需要很长时间才能到达网站。
在我实施无头ChromeDriver之前,我使用了标准的非无头 ChromeDriver并导入了uBlock扩展程序,以消除第三方网站减慢测试速度。
例如,完成我的测试没有 -headless选项和带 uBlock扩展名大约需要20秒左右。但是,完成我的测试 - -headless选项和没有 uBlock,我的测试大约需要一分钟才能完成。这违背了我最初缩短测试时间的目标,这就是为什么我想首先使用无头Chrome驱动程序。
由于我无法在无头模式下导入Chrome扩展程序,如何屏蔽第三方广告/分析/请求( a.k.a.uBlock的目的)?
我对代理或网络相关的知识不太了解。我知道一个选项是黑名单导致连接速度慢的所有主机,但是这些主机不断变化,并且过多地将每个主机单独列入黑名单。
答案 0 :(得分:2)
由于无头模式不支持扩展,因此代理服务器似乎是最好的操作方法。
您可以尝试使用https://github.com/epitron/mitm-adblock设置本地代理服务器(用python编写并易于设置),并在启动chrome时添加--proxy-server=localhost:8118
。它支持AdblockPlus easylist,它应该相当全面。
您也可以尝试使用节点编写的https://github.com/Artificial-University/adblock-proxy,但它看起来更完整,最近更新。