我使用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'}, '评论':''}}
答案 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配置文件上设置代理值来解决此问题。配置文件中的相关代理字段为:
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