1

我正在使用 browsermob 代理来通过 webdriver(主要是chrome)捕获流量。这是我遇到的问题:只要我使用单页一切都可以,但是当 URL 更改时(由于导航到其他页面或重定向),代理不再捕获任何事件(我无法看到那些HAR 文件中的事件)

这是我启动代理的方式:

BrowserMobProxyServer proxy = new BrowserMobProxyServer();
        try {
            proxy.start(Integer.valueOf(proxyPool.borrowProxyPort()), InetAddress.getLocalHost());
        } catch (NumberFormatException | UnknownHostException e) {
            Logger.error(e.getLocalizedMessage());
        }
        proxy.waitForQuiescence(30, 3, TimeUnit.SECONDS);
        proxy.setHarCaptureTypes(CaptureType.REQUEST_HEADERS);
        Logger.info("Proxy start status: " + proxy.isStarted());

这就是我得到 har 的方式:

proxy.waitForQuiescence(10, 10, TimeUnit.SECONDS);
return proxy.getHar();

我是否需要以某种方式处理 URL 更改或我在这里丢失 smthn 的情况?

4

1 回答 1

0

这就是它对我有用的方式!

BrowserMobProxyServer proxyBrowserMob = new BrowserMobProxyServer();
proxy.start();
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxyBrowserMob)
    DesiredCapabilities caps = DesiredCapabilities.firefox();
 caps.setCapability("marionette", true);
    caps.setCapability(CapabilityType.PROXY, seleniumProxy);
RemoteWebDriver webDriver = new FirefoxDriver(caps);
proxyBrowserMob .enableHarCaptureTypes(CaptureType.REQUEST_CONTENT,CaptureType.REQUEST_HEADERS,CaptureType.REQUEST_COOKIES);
        proxyBrowserMob .newHar();

为了检索 HAR 文件,我遍历 HarEntry 以获取 HAR。

List<HarEntry> entries = browserMobProxy.getHar().getLog().getEntries();
    for (HarEntry entry : entries) {
   // get HarRequest
   /get HarResponse
     }
于 2018-04-08T17:14:18.343 回答