Python-使用代理(Browsermob)与远程Webdriver

时间:2014-06-03 00:13:12

标签: python proxy saucelabs remotewebdriver browsermob

我尝试使用Browsermob Proxy检查网站上的网络流量。通过运行以下内容:我发现代理服务器拒绝连接:

"代理服务器拒绝连接" " firefox配置为使用拒绝连接的代理。"

我还没有在python中找到一个使用远程webdriver设置代理的示例。

    server = Server("location/browsermob-proxy-2.0-beta-9/bin/browsermob-proxy")
    server.start()
    proxy = server.create_proxy()

    from selenium import webdriver
    profile  = webdriver.FirefoxProfile()
    profile.set_proxy(proxy.selenium_proxy())
    driver = webdriver.Firefox(firefox_profile=profile)
    proxy.new_har("impression")
    driver.get("https://www.google.com/")
    server.stop()
    driver.quit()
    #success


from browsermobproxy import Server
server = Server("location/browsermob-proxy-2.0-beta-9/bin/browsermob-proxy")
server.start()
our_proxy = server.create_proxy()

from selenium import webdriver
our_browser = browser.upper()
desired_capabilities = webdriver.DesiredCapabilities.FIREFOX # Default
desired_capabilities["version"] = configs[browser]["browser-version"]
desired_capabilities["platform"] = configs[browser]["os"]
desired_capabilities["idle-timeout"] = "25"
desired_capabilities["max-duration"] = "300"
desired_capabilities["command-timeout"] = "30"
desired_capabilities["name"] = test_name
desired_capabilities["browserName"] = browser
desired_capabilities['loggingPrefs'] = {"browser":"ALL"}
this_proxy = Proxy({
   "httpProxy":our_proxy.selenium_proxy().httpProxy,
   "sslProxy":our_proxy.selenium_proxy().sslProxy,
   "proxyType":"MANUAL",
  "autodetect":False
})
this_proxy.add_to_capabilities(desired_capabilities)

driver = webdriver.Remote(
    desired_capabilities = desired_capabilities
)

proxy.new_har("impression")
    driver.get("https://www.google.com/")
    #fails
    #urllib2.URLError: <urlopen error [Errno 61] Connection refused>

server.stop()
driver.quit()
分别为remote和firefoxprofile的

desired_capabilites:

{&#39; name&#39;:&#39; abdc&#39;,&#39; javascriptEnabled&#39;:是的,&#39; idle-timeout&#39;:&#39; 25&# 39;,&#39;命令超时&#39;:&#39; 30&#39;,&#39; max-duration&#39;:&#39; 300&#39;,&#39; platform&#39 ;:&#39; Windows 7&#39;,&#39; browserName&#39;:&#39; firefox&#39;,&#39;版本&#39;:&#39; 28&#39;,&# 39;代理&#39;:{&#39; proxyType&#39;:&#39; MANUAL&#39;,&#39; sslProxy&#39;:&#39; localhost:9117&#39;,&#39; httpProxy&#39;:&#39; localhost:9117&#39;},&#39; loggingPrefs&#39;:{&#39;浏览器&#39;:&#39;所有&#39;}}

{u&#39;可旋转&#39;:错误,你&#39;拍摄屏幕截图&#39;:是的,你接受SslCerts&#39;:是的,你&#39; cssSelectorsEnabled&#39;:是的,你&# 39; javascriptEnabled&#39;:是的,你&#39; databaseEnabled&#39;:是的,你的位置文字启用&#39;:是的,你平台&#39;:你&#39;达尔文&#39;,你& #39; browserName&#39;:你&#39; firefox&#39;,你&#39;版本&#39;:你&#39; 29.0.1&#39;,你&#39; nativeEvents&#39;:False,你&# 39; applicationCacheEnabled&#39;:是的,你&#39; webStorageEnabled&#39;:是的,你的浏览器连接启用&#39;:是的,你可以处理警报&#39;:真实}

我看过这张票说明问题已解决;但它似乎并非如此。

https://code.google.com/p/selenium/issues/detail?id=2051

1 个答案:

答案 0 :(得分:0)

我之前遇到了同样的错误。 这通常是由于在同一端口上运行的进程不允许启动browsermob代理。 通常Apache Tomcat使用相同的服务器。

更改Browsermob的端口。

server = Server(browsermob_location,options={'port':port_browsermob})

这里port_browsermob是您可以指定的端口。