我在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的目的)?在
我对代理或任何与网络相关的东西都不太了解。我知道一个选择是将所有导致连接缓慢的主机都列入黑名单,但是这些主机总是在不断地变化,因此无法将每个主机单独列入黑名单。在
由于在无头模式下不支持扩展,代理服务器似乎是这里最好的做法。在
您可以尝试使用https://github.com/epitron/mitm-adblock来设置本地代理服务器(用python编写,易于设置),并在启动chrome时添加
proxy-server=localhost:8118
。它支持AdblockPlus easylist,这应该是相当全面的。在您也可以尝试使用node编写的https://github.com/Artificial-University/adblock-proxy,但它似乎更成熟,而且最近更新了。在
相关问题 更多 >
编程相关推荐