具有selenium的Browsermob代理生成空输出

时间:2016-12-01 19:43:15

标签: python selenium selenium-webdriver browsermob browsermob-proxy

我使用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&#39 ;:'',' pageTimings':   {'评论':'},' startedDateTime':' 2016-12-01T14:23:24.984-05:00',   '标题':' google'}],'条目':[],'版本':' 1.2' ,'创作者':   {'评论':'','名称':' BrowserMob代理','版本':&#39 ; 2.1.2'},   '评论':''}}

5 个答案:

答案 0 :(得分:0)

您是否尝试过更改

此:

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

To This:

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

您需要在BrowserMob服务器路径末尾包含文件扩展名(.bat)才能生效:)

答案 1 :(得分:0)

我怀疑这是由GeckoDriver bug/missing feature中的this question引起的: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有a test,显示了如何在Java中执行此操作。将它转换为Python等价物应该很容易,因为你已经有了一个firefox_profile对象。

答案 2 :(得分:0)

1.Browser mob 0.7.1没有SSL支持拦截https网站 2.根据您的问题,我发现您提供了https网址,请尝试使用browsermob 2.1.2及以上版本 3.在设备中安装SSL证书您要拦截网络(您下载的browsermob代理.zip文件中提供了SSL证书)。
4.如果问题没有解决,请告知我,我将深入研究导致问题的其他因素。

答案 3 :(得分:0)

最近更改代码时,我曾遇到过同样的问题。 尝试将代理添加到配置文件中,而不是将WebDriver本身添加到配置文件中。已弃用,但对我有用。

profile.set_proxy(proxy.selenium_proxy())
browser = webdriver.Firefox(firefox_profile=profile)

答案 4 :(得分:0)

尝试使用此cmd可能会解决您的问题:

yum install -y google-chrome-stable