- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 BMP 的 RequestFilter 和 ResponseFilter 获取响应和请求。但是,当网页加载时,控制台中不会打印任何内容。
其他一切似乎都有效。也许 BMP 没有在看 GeckoDriver?
我使用的是 Firefox 50.0、BrowserMobProxy 2.1.2、Selenium 3.0.1 和 GeckoDriver 0.11.1
测试代码如下。有人可以帮我吗?
非常感谢!
BrowserMobProxy server = new BrowserMobProxyServer();
server.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
server.start();
int port = server.getPort();
server.addRequestFilter((request, content, info) -> {
String q = URLDecoder.decode(info.getOriginalUrl(), "UTF-8");
System.out.println("Request: "+q);
return null;
});
server.addResponseFilter((response, content, info) -> {
String type = response.headers().get("Content-Type");
System.out.println("Response: "+info.getOriginalRequest());
System.out.println(type);
});
Proxy proxy = ClientUtil.createSeleniumProxy(server);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(CapabilityType.PROXY, proxy);
capabilities.setCapability("marionette", true);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
FirefoxProfile fp = new FirefoxProfile();
capabilities.setCapability(FirefoxDriver.PROFILE, fp);
String gecko = "d:/Programming/java/geckodriver.exe";
System.setProperty("webdriver.gecko.driver", gecko);
driver = new FirefoxDriver(capabilities);
driver.get("https://google.com");;
最佳答案
在 Firefox 51 及更低版本中,Selenium 3 的 GeckoDriver 中存在错误/缺失功能,该功能会阻止 Firefox 在 DesiredCapabilities
上设置 CapabilityType.PROXY
时获取代理设置> 对象。
但是,您仍然可以直接在 FirefoxProfile
上设置代理设置。 one of BMP's tests 中有一个这样的例子.由于您已经在使用 FirefoxProfile
对象,这对您来说可能是一个明智的解决方案。它看起来像这样(根据需要用主机名/IP 地址替换 localhost):
FirefoxProfile fp = new FirefoxProfile();
fp.setPreference("network.proxy.http", "localhost");
fp.setPreference("network.proxy.http_port", server.getPort());
fp.setPreference("network.proxy.ssl", "localhost");
fp.setPreference("network.proxy.ssl_port", server.getPort());
fp.setPreference("network.proxy.type", 1);
fp.setPreference("network.proxy.no_proxies_on", "");
This geckodriver issue还讨论了在 DesiredCapabilities
对象上使用 CapabilityType.PROXY
的其他一些替代方法。
更新
根据mozilla bug report ,此问题已在 Firefox 52 中修复,即 scheduled to be released 2017 年 3 月 7 日。与此同时,FirefoxProfile
的解决方案应该适用于 51(及更低版本),并且还应该继续适用于 52+。
关于java - 使用 BrowserMobProxy、Selenium、Firefox、marionette/gecko 获取请求和响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41089511/
我正在尝试设置 BrowserMobProxy 来捕获性能数据。不过,我目前还没有取得多大成功。我能找到的大多数(如果不是全部)文档似乎都使用现已弃用的 ProxyServer。以及 BrowserM
谁能提供一个正确的例子来说明如何在 C# 中使用 Selenium Webdriver 配置 BrowserMobProxy?在我搜索的所有地方,它主要提供使用 Java 的示例,而我们的框架是在 C
尝试在某些测试页面 localhost:8000 上捕获 http header ,而 HAR 文件在 entry 部分中似乎不包含任何内容。 我的代码: BrowserMob
有没有人有关于如何配置 BrowserMobProxy 的正确示例?与 WebDriverIO ?这样我就可以捕获网络流量。我以前用它工作过 WebDriverJS ,这实际上是 WebDriverI
我正在尝试使用 Selenium Java UI 脚本将 JAR 内容保存到我的本地驱动器中。当我尝试这样做时,我收到了一些错误。我经历了几个块,我已经将 Guava JAR 文件更新到最新版本,但仍
我正在尝试使用 BMP 的 RequestFilter 和 ResponseFilter 获取响应和请求。但是,当网页加载时,控制台中不会打印任何内容。 其他一切似乎都有效。也许 BMP 没有在看 G
我创建了从 Chrome 获取网络流量的简单方法: public void saveNetworkTraffic() { System.setProperty("webdriver.chro
from selenium import web driver from browsermobproxy import Server from selenium.webdriver.common.by
我到处寻找,但没有找到任何关于如何正确设置代理以在 Sauce labs 上运行脚本并提取 HAR 文件的好文档。我在嵌入模式下使用 BMP https://github.com/lightbody/
一些服务器可以响应 Via header 。为了实验的纯洁性,我想去掉它。如何使用 python 上的包装器为 Browsermob-proxy 制作它?为了更好地理解,我将生成代码:对不起我的英语!
我是一名优秀的程序员,十分优秀!