通过 BrowserMobProxy 和 Selenium 重写 HAR 内容

Rewrite HAR content via BrowserMobProxy and Selenium

是否可以更改来自 https 站点的 har(其中包含 json)响应?我通过 getText() 看到初始 json,然后使用 setText(),并通过 setSizesetBodySize 更改其大小。内容已更改,如我在调试中看到的那样。但似乎没有效果,chrome 收到相同的旧 json。有办法吗?

    public static class ResponseModifier implements ResponseInterceptor {

    @Override
    public void process(BrowserMobHttpResponse response, Har har) {

        String contentType = response.getHeader("Content-Type");

        if (contentType!=null && contentType.startsWith("application/json")){
            response.getEntry().getResponse().getContent().setText(respond);
            response.getEntry().getResponse().getContent().setSize(respond.length());
            response.getEntry().getResponse().setBodySize(respond.length());
            response.getRawResponse().removeHeaders("Content-Length");
            response.getRawResponse().addHeader("Content-Length", ""+respond.length());
        }
    }

我想也许重点是 response.getRawResponse().getEntity().getContentLength() 不知何故具有旧值,但我无法重写它。还是原因不同?

事实证明比我想象的要容易得多。 我必须使用 BMP 的 core-littleproxy 版本,BrowserMobProxy class 并创建 BrowserMobProxyServer 的实例。我只使用过滤器:

 proxy.addResponseFilter((response, contents, messageInfo) -> {
        if ((contents.getContentType().startsWith("application/json"))) {
            contents.setTextContents(respond);
        }
    }); 

感谢阅读:)