4

ネットワークデータをキャプチャするために、Selenium 3.0.2 と browsermob proxy 0.7.1 を使用しています。私が得ているのは空のJSONだけです。私のコードは次のとおりです。

server = Server("/Users/dev/Downloads/browsermob-proxy-2.1.2/bin/browsermob-proxy")
server.start()
proxy = server.create_proxy()

if browser is None:
    profile = webdriver.FirefoxProfile()
    profile.set_preference("browser.privatebrowsing.autostart", True)

browser = webdriver.Firefox(firefox_profile=profile, proxy=proxy.selenium_proxy())
proxy.new_har("google", options={'captureHeaders': True, 'captureContent': True})

browser.get("https://google.com/")

print(proxy.har)

私が得るのはこの空のJSONだけです

{'log': {'pages': [{'id': 'google', 'comment': '', 'pageTimings': {'comment': ''}, 'startedDateTime': '2016-12-01T14 :23:24.984-05:00', 'タイトル': 'google'}], 'エントリ': [], 'バージョン': '1.2', '作成者': {'コメント': '', '名前' : 'BrowserMob プロキシ', 'バージョン': '2.1.2'}, 'コメント': ''}}

4

5 に答える 5

0

これは、この質問と同じGeckoDriver のバグ/機能の欠落が原因であると思われます: GeckoDriver は現在、ChromeDriver と古い FirefoxDriver がサポートしていた「プロキシ」の必要な機能をサポートしていません。

GeckoDriver/Marionette が更新されるまでは、Firefox プロファイルでプロキシ値を直接設定することで、この問題を回避できます。プロファイルの関連するプロキシ フィールドは次のとおりです。

  • network.proxy.http
  • network.proxy.http_port
  • network.proxy.ssl
  • network.proxy.ssl_port
  • network.proxy.type (1 に設定、「手動」)

BrowserMob Proxy には、 Java でこれを行う方法を示すテストがあります。すでに firefox_profile オブジェクトがあるので、これを Python の同等のものに変換するのは簡単です。

于 2016-12-29T06:00:52.723 に答える
0

変えてみましたか

これ:

server = Server("/Users/dev/Downloads/browsermob-proxy-2.1.2/bin/browsermob-proxy") 

これに:

server = Server("/Users/dev/Downloads/browsermob-proxy-2.1.2/bin/browsermob-proxy.bat")

機能させるには、BrowserMob サーバー パスの末尾にファイル拡張子 (.bat) を含める必要があります:)

于 2016-12-12T15:40:14.060 に答える
0

1.Browser mob 0.7.1 には、https サイトを傍受するための SSL サポートがありません。
2. https URL を指定した質問から、browsermob 2.1.2 以降を使用してみてください
。 3. ネットワークをインターセプトするデバイスに SSL 証明書をインストールします (SSL 証明書は、ダウンロードした browsermob プロキシ .zip ファイルで利用できます)。
4. 問題が解決しない場合は、私に知らせてください。問題を引き起こしている他の原因を詳しく調べます。

于 2017-05-16T17:53:29.613 に答える