2017-06-24 18 views
2

私はPythonでSelenium/ChromeDriverを使用しています。私のコードでChromeDriverオプションを使用すると:Python/Selenium:ヘッドレスChromeドライバを使用して、uBlockやAdBlockなどの拡張機能をエミュレートするにはどうすればよいですか?

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

はしかし、ヘッドレスChromeは拡張このanswerあたりとしての使用をサポートしていません。私は現在のPythonスクリプトを使ってヘッドレスChromeを動作させることができましたが、すべて正常に動作しますが、サードパーティの広告/分析/リクエストのためにサイトにアクセスするには時間がかかります。

私はヘッドレスChromeDriverを実装する前に、私は標準非ヘッドレス ChromeDriverを使用し、私のテストを減速から、サードパーティのサイトを排除するためにuBlock拡張を輸入しました。例えば

、 uBlock拡張子を持つなし-headlessオプションとを私のテストを完了すると、約20秒ほどかかります。しかし、私のテストと頭なしオプションと uBlockなしで、私のテストを完了するのに約1分かかります。これはテスト時間を短縮するという私の本来の目標の目的を破るものであり、そのため私はヘッドレスのChrome Driverを最初に使用したかったのです。私はヘッドレスモードでのChromeの拡張機能をインポートすることはできませんので

、どのように私は(uBlockの目的別称、)は、サードパーティの広告/分析/要求をブロックすることができますか?

私はプロキシやネットワーク関連の知識があまりよくありません。私はオプションがブラックリストになることを知っていますが、遅い接続を引き起こしているホストは常に変化しており、それぞれを個別にブラックリストに載せるのは難しいでしょう。

+0

詳細を確認する:サイトを読み込んでいるときにChromeの左下に表示される小さなメッセージを知っていますか?それらは基本的に何が私を遅くしています。たとえば、「TLSハンドシェイクを実行する」または「amazon.ds.analytics.comを待っています」などと表示されます。これらはuBlockで排除されますが、明らかにヘッドレスChromeでは拡張機能が使用できません。 – LeHamRoyale

答えて

0

ヘッドレスモードでは拡張機能がサポートされていないため、ここではプロキシサーバが最善の方法で動作しているようです。

https://github.com/epitron/mitm-adblockを使用して、ローカルプロキシサーバー(Pythonで書かれ、セットアップが容易)を試してみて、Chromeを起動するときに--proxy-server=localhost:8118を追加してみてください。 AdblockPlus easylistをサポートしています。これはかなり包括的です。

ノードに書かれているが、最近更新されたhttps://github.com/Artificial-University/adblock-proxyでも試すことができます。

関連する問題