通过BrowserMobProxy和Selenium重写HAR内容

时间:2016-02-12 12:24:15

标签: json http har browsermob-proxy

是否可以更改来自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()以某种方式具有旧值,但我不能重写它。或者原因是不同的?

1 个答案:

答案 0 :(得分:0)

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

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

感谢阅读:)