@Override public boolean isEnabled(byte[] content, boolean isRequest) { if (!isRequest && tab.getBeautifierEnabled()) { IResponseInfo respinfo = callbacks.getHelpers().analyzeResponse(content); return ("script".equals(respinfo.getStatedMimeType()) || "script".equals(respinfo.getInferredMimeType())); } else { return false; } }
static byte[] filterResponse(byte[] response) { if (response == null) { return new byte[]{'n','u','l','l'}; } byte[] filteredResponse; IResponseInfo details = helpers.analyzeResponse(response); String inferredMimeType = details.getInferredMimeType(); if(inferredMimeType.isEmpty()) { inferredMimeType = details.getStatedMimeType(); } inferredMimeType = inferredMimeType.toLowerCase(); if(inferredMimeType.contains("text") || inferredMimeType.equals("html") || inferredMimeType.contains("xml") || inferredMimeType.contains("script") || inferredMimeType.contains("css") || inferredMimeType.contains("json")) { filteredResponse = helpers.stringToBytes(helpers.bytesToString(response).toLowerCase()); } else { String headers = helpers.bytesToString(Arrays.copyOfRange(response, 0, details.getBodyOffset())) + details.getInferredMimeType(); filteredResponse = helpers.stringToBytes(headers.toLowerCase()); } if(details.getStatedMimeType().toLowerCase().contains("json") && (inferredMimeType.contains("json") || inferredMimeType.contains("javascript"))) { String headers = helpers.bytesToString(Arrays.copyOfRange(response, 0, details.getBodyOffset())); String body = helpers.bytesToString(Arrays.copyOfRange(response, details.getBodyOffset(), response.length)); filteredResponse = helpers.stringToBytes(headers + StringEscapeUtils.unescapeJson(body)); } return filteredResponse; }
static byte[] filterResponse(byte[] response) { if (response == null) { return new byte[]{'n','u','l','l'}; } byte[] filteredResponse; IResponseInfo details = helpers.analyzeResponse(response); String inferredMimeType = details.getInferredMimeType(); if(inferredMimeType.isEmpty()) { inferredMimeType = details.getStatedMimeType(); } inferredMimeType = inferredMimeType.toLowerCase(); if(inferredMimeType.contains("text") || inferredMimeType.equals("html") || inferredMimeType.contains("xml") || inferredMimeType.contains("script") || inferredMimeType.contains("css") || inferredMimeType.contains("json")) { filteredResponse = helpers.stringToBytes(helpers.bytesToString(response).toLowerCase()); } else { String headers = helpers.bytesToString(Arrays.copyOfRange(response, 0, details.getBodyOffset())) + details.getInferredMimeType(); filteredResponse = helpers.stringToBytes(headers.toLowerCase()); } if(details.getStatedMimeType().toLowerCase().contains("json") && (inferredMimeType.contains("json") || inferredMimeType.contains("javascript"))) { String headers = helpers.bytesToString(Arrays.copyOfRange(response, 0, details.getBodyOffset())); String body = helpers.bytesToString(Arrays.copyOfRange(response, details.getBodyOffset(), response.length)); filteredResponse = helpers.stringToBytes(headers + StringEscapeUtils.unescapeJson(body)); } return filteredResponse; }
IResponseInfo respInfo = helpers.analyzeResponse(reqResp.getResponse()); String mimeType = respInfo.getInferredMimeType().toUpperCase(); //Uppercase is applied because to make the content-type uniform
key = key + info.getStatusCode() + info.getInferredMimeType();