webmetrics / browsermob-proxy

NOTICE: this project has been forked and is being maintained at https://github.com/lightbody/browsermob-proxy
https://github.com/lightbody/browsermob-proxy
Apache License 2.0
234 stars 773 forks source link

setCaptureContent should make the proxy capture response bodies to the HAR log #20

Closed benjaminhawkeslewis closed 11 years ago

benjaminhawkeslewis commented 12 years ago

I want to be able to make assertions against the raw responses sent over the wire when performing web testing.

ProxyServer has a setCaptureContent that should capture response bodies to the "text" and "encoding" fields of the HAR content entry, but in fact nothing is captured.

d-jubeau commented 11 years ago

I have the same problem. Do you know how to solve it ?

roydekleijn commented 11 years ago

cool, but how to do that when you use the browsermob Rest API?

lightbody commented 11 years ago

FYI - 2.0 beta 7 (released a few days ago) now supports properly capturing the body. It'll present the text as is if the content type starts with "text/", otherwise it'll base64 encode the binary content. Please be aware that there was a bug with gzipped content in the release, but that if you build from source it's been fixed. I'll do a follow up release soon.

artikhadse commented 7 years ago

@lightbody , I am facing the same problem, is this issue resolved? I am using browsermob-core 2.1.4 My response body (chrome-developer tool) contains html in json. I am not able to capture this response body (note :this is the reponse for https request) I am able to see response body for other requests properly.

sample response body (from chrome-Developer-tools)

{ "/4312434/profpromo/medscpnewsdesktop": { "type": "html", "expandable": true, "_afcexpandable": false, "html": "\x3cscript\x3e(function(){var g\x3dthis,l\x3dfunction(a,b){var c\x3da.split(\x22.\x22),d\x3dg;c[0]in d||!d.execScript||d.execScript(\x22var \x22+c[0]);for(var e;c.length\x26\x26(e\x3dc.shift());)c.length||void 0\x3d\x3d\x3db?d\x3dd[e]?d[e]:d[e]\x3d{}:d[e]\x3db},m\x3dfunction(a,b,c){return a.call.apply(a.bind,arguments)},n\x3dfunction(a,b,c){if(!a)throw Error();if(2\x3carguments.length){var d\x3dArray.prototype.slice.call(arguments,2);return function(){var c\x3dArray.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}},p\x3dfunction(a,b,c){p\x3dFunction.prototype.bind\x26\x26-1!\x3dFunction.prototype.bind.toString().indexOf(\x22native code\x22)?m:n;return p.apply(null,arguments)},q\x3dDate.now||function(){return+new Date};var r\x3ddocument,s\x3dwindow;var t\x3dfunction(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)\x26\x26b.call(null,a[c],c,a)},w\x3dfunction(a,b){a.google_image_requests||(a.google_image_requests\x3d[]);var c\x3da.document.createElement(\x22img\x22);c.src\x3db;a.google_image_requests.push(c)};var x\x3dfunction(a){return{visible:1,hidden:2,prerender:3,preview:4}[a.webkitVisibilityState||a.mozVisibilityState||a.visibilityState||\x22\x22]||0},y\x3dfunction(a){var b;a.mozVisibilityState?b\x3d\x22mozvisibilitychange\x22:a.webkitVisibilityState?b\x3d\x22webkitvisibilitychange\x22:a.visibilityState\x26\x26(b\x3d\x22visibilitychange\x22);return b};var C\x3dfunction(){this.g\x3dr;this.k\x3ds;this.j\x3d!1;this.i\x3dnull;this.h\x3d[];this.o\x3d{};if(z)this.i\x3dq();else if(3\x3d\x3dx(this.g)){this.i\x3dq();var a\x3dp(this.q,this);A\x26\x26(a\x3dA(\x22di::vch\x22,a));this.p\x3da;var b\x3dthis.g,c\x3dy(this.g);b.addEventListener?b.addEventListener(c,a,!1):b.attachEvent\x26\x26b.attachEvent(\x22on\x22+c,a)}else B(this)},A;C.m\x3dfunction(){return C.n?C.n:C.n\x3dnew C};var D\x3d/^([^:]+:\/\/[^/]+)/m,G\x3d/^\d,(.+)$/m,z\x3d!1,B\x3dfunction(a){if(!a.j){a.j\x3d!0;for(var b\x3d0;b\x3ca.h.length;++b)a.l.apply(a,a.h[b]);a.h\x3d[]}};C.prototype.s\x3dfunction(a,b){var c\x3db.target.u();(c\x3dG.exec(c))\x26\x26(this.o[a]\x3dc[1])};C.prototype.l\x3dfunction(a,b){this.k.rvdt\x3dthis.i?q()-this.i:0;var c;if(c\x3dthis.t)t:{try{var d\x3dD.exec(this.k.location.href),e\x3dD.exec(a);if(d\x26\x26e\x26\x26d[1]\x3d\x3de[1]\x26\x26b){var f\x3dp(this.s,this,b);this.t(a,f);c\x3d!0;break t}}catch(u){}c\x3d!1}c||w(this.k,a)};C.prototype.q\x3dfunction(){if(3!\x3dx(this.g)){B(this);var a\x3dthis.g,b\x3dy(this.g),c\x3dthis.p;a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent\x26\x26a.detachEvent(\x22on\x22+b,c)}};var H\x3d/^true$/.test(\x22\x22)?!0:!1;var I\x3d{},J\x3dfunction(a){var b\x3da.toString();a.name\x26\x26-1\x3d\x3db.indexOf(a.name)\x26\x26(b+\x3d\x22: \x22+a.name);a.message\x26\x26-1\x3d\x3db.indexOf(a.message)\x26\x26(b+\x3d\x22: \x22+a.message);if(a.stack){a\x3da.stack;var c\x3db;try{-1\x3d\x3da.indexOf(c)\x26\x26(a\x3dc+\x22\n\x22+a);for(var d;a!\x3dd;)d\x3da,a\x3da.replace(/((https?:\/..\/)[^\/:]:\d+(?:.|\n))\2/,\x22$1\x22);b\x3da.replace(/\n /g,\x22\n\x22)}catch(e){b\x3dc}}return b},M\x3dfunction(a,b,c,d){var e\x3dK,f,u\x3d!0;try{f\x3db()}catch(h){try{var N\x3dJ(h);b\x3d\x22\x22;h.fileName\x26\x26(b\x3dh.fileName);var E\x3d-1;h.lineNumber\x26\x26(E\x3dh.lineNumber);var v;t:{try{v\x3dc?c():\x22\x22;break t}catch(S){}v\x3d\x22\x22}u\x3de(a,N,b,E,v)}catch(k){try{var O\x3dJ(k);a\x3d\x22\x22;k.fileName\x26\x26(a\x3dk.fileName);c\x3d-1;k.lineNumber\x26\x26(c\x3dk.lineNumber);K(\x22pAR\x22,O,a,c,void 0,void 0)}catch(F){L({context:\x22mRE\x22,msg:F.toString()+\x22\n\x22+(F.stack||\x22\x22)},void 0)}}if(!u)throw h;}finally{if(d)try{d()}catch(T){}}return f},K\x3dfunction(a,b,c,d,e,f){a\x3d{context:a,msg:b.substring(0,512),eid:e\x26\x26e.substring(0,40),file:c,line:d.toString(),url:r.URL.substring(0,512),ref:r.referrer.substring(0,512)};P(a);L(a,f);return!0},L\x3dfunction(a,b){try{if(Math.random()\x3c(b||.01)){var c\x3d\x22/pagead/gen_204?id\x3djserror\x22+Q(a),d\x3d\x22http\x22+(\x22https:\x22\x3d\x3ds.location.protocol?\x22s\x22:\x22\x22)+\x22://pagead2.googlesyndication.com\x22+c,d\x3dd.substring(0,2E3);w(s,d)}}catch(e){}},P\x3dfunction(a){var b\x3da||{};t(I,function(a,d){b[d]\x3ds[a]})},R\x3dfunction(a,b,c,d,e){return function(){var f\x3darguments;return M(a,function(){return b.apply(c,f)},d,e)}},Q\x3dfunction(a){var b\x3d\x22\x22;t(a,function(a,d){if(0\x3d\x3d\x3da||a)b+\x3d\x22\x26\x22+d+\x22\x3d\x22+(\x22function\x22\x3d\x3dtypeof encodeURIComponent?encodeURIComponent(a):escape(a))});return b};A\x3dfunction(a,b,c,d){return R(a,b,void 0,c,d)};z\x3dH;l(\x22vu\x22,R(\x22vu\x22,function(a,b){var c\x3da.replace(\x22\x26amp;\x22,\x22\x26\x22),d\x3d/(google|doubleclick).\/pagead\/adview/.test(c),e\x3dC.m();if(d){d\x3d\x22\x26vis\x3d\x22+x(e.g);b\x26\x26(d+\x3d\x22\x26ve\x3d1\x22);var f\x3dc.indexOf(\x22\x26adurl\x22),c\x3d-1\x3d\x3df?c+d:c.substring(0,f)+d+c.substring(f)}e.j?e.l(c,b):e.h.push([c,b])}));l(\x22vv\x22,R(\x22vv\x22,function(){z\x26\x26B(C.m())}));})();\x3c/script\x3e\x3cscript\x3evu(\x22https://securepubads.g.doubleclick.net/pcs/view?xai\x3dAKAOjstWFNENqIWwioT8GTTpSkuvFdTVKeD_6sQYgi7NYvyIpJiQPT918HAV5BdSqfIb5q_UUUlB2aS8FUmvNmvmCSYf5Jx__N3PSi7zuMIpjnPYlwzK47BgPSngAqAPTbyLeiV7Y6P09ieTDTgYcHCLmMEdT7cTEE-JjMaF1Bhvl2MMz2wegCG24mRRf8koiQebxDKaKvflvE5QjTo2BF1yWNZt6KXsO_wfZp7QyI7MEfr09WO7LGJDP-qzBWtmXwToI50lyXdZV9G6qqvuEAGSvRcG\x26sig\x3dCg0ArKJSzFoR8RDvw3XEEAE\x26urlfix\x3d1\x26adurl\x3d\x22)\x3c/script\x3e\x3cscript type\x3d\x22text/javascript\x22\x3evar adlabel \x3d \x22\x22;\x3c/script\x3e\x3cscript src\x3d\x22https://img.medscape.com/pi/scripts/ads/dfp/ad-label-switch.js\x22 type\x3d\x22text/javascript\x22\x3e\x3c/script\x3e\x3cscript src\x3d\x22https://bs.serving-sys.com/BurstingPipe/adServer.bs?cn\x3drsb\x26c\x3d28\x26pli\x3d21780285\x26PluID\x3d0\x26w\x3d728\x26h\x3d90\x26ncu\x3d$$https://adclick.g.doubleclick.net/pcs/click?xai\x3dAKAOjst7Xs75f5Soiki6Jm7FLfeZMi-TvqFOHzdlJUUjmCMrpO3IR4Ky5rxQo6JAdNKIcZStjjIJy470D2Jv1OKTds7NyBIH1llxnruaYmw0irQS7ecLvnDp67brxEEnBjTo9DK8t4hru3SxasYL2p2OsAkZIjuZUZQCtVPF0cf1oxmXNQJqUPQS35xG8dlEoVbC4O2Dr0eJCIXuzecSv1T8CsH88_ugcUxg-Er3zAmeK5mO4A5qBa3HZJ0lli5VDlxBFbF5BLUyzQ\x26sig\x3dCg0ArKJSzMQTCiKYMitYEAE\x26urlfix\x3d1\x26adurl\x3d$$\x26ord\x3d1563238112\x26ifrm\x3d-1\x26ucm\x3dtrue\x26pcp\x3d$$4348010766\x26\x26138203877075\x26\x26150055597969959439$$\x22\x3e\x3c/script\x3e\n\x3cnoscript\x3e\n\x3ca href\x3d\x22https://adclick.g.doubleclick.net/pcs/click?xai\x3dAKAOjst7Xs75f5Soiki6Jm7FLfeZMi-TvqFOHzdlJUUjmCMrpO3IR4Ky5rxQo6JAdNKIcZStjjIJy470D2Jv1OKTds7NyBIH1llxnruaYmw0irQS7ecLvnDp67brxEEnBjTo9DK8t4hru3SxasYL2p2OsAkZIjuZUZQCtVPF0cf1oxmXNQJqUPQS35xG8dlEoVbC4O2Dr0eJCIXuzecSv1T8CsH88_ugcUxg-Er3zAmeK5mO4A5qBa3HZJ0lli5VDlxBFbF5BLUyzQ\x26sig\x3dCg0ArKJSzMQTCiKYMitYEAE\x26urlfix\x3d1\x26adurl\x3dhttps://bs.serving-sys.com/BurstingPipe/adServer.bs?cn\x3dbrd\x26FlightID\x3d21780285\x26Page\x3d\x26PluID\x3d0\x26Pos\x3d1603685930\x26pcp\x3d$$4348010766\x26\x26138203877075\x26\x26150055597969959439$$\x22 target\x3d\x22_blank\x22\x3e\x3cimg src\x3d\x22https://bs.serving-sys.com/BurstingPipe/adServer.bs?cn\x3dbsr\x26FlightID\x3d21780285\x26Page\x3d\x26PluID\x3d0\x26Pos\x3d1603685930\x26pcp\x3d$$4348010766\x26\x26138203877075\x26\x26150055597969959439$$\x22 border\x3d0 width\x3d728 height\x3d90\x3e\x3c/a\x3e\n\x3c/noscript\x3e\x3cdiv style\x3d\x22position:absolute;top:0px;right:0px;width:1px;height:1px;visibility:hidden;border:none;\x22\x3e\x3cscript type\x3d\x22text/javascript\x22\x3e\nvar trackingPixel\x3d\x22\x22;if(trackingPixel.indexOf(\x22http\x22)\x3d\x3d0)document.write(\x27\x3ciframe src\x3d\x22\x27+trackingPixel+\x27\x22 height\x3d\x221\x22 width\x3d\x221\x22 style\x3d\x22width:1px !important;height 1px !important\x22\x3e\x3c/iframe\x3e\x27);\nvar trackingPixel\x3d\x22\x22;if(trackingPixel.indexOf(\x22http\x22)\x3d\x3d0)document.write(\x27\x3ciframe src\x3d\x22\x27+trackingPixel+\x27\x22 height\x3d\x221\x22 width\x3d\x221\x22 style\x3d\x22width:1px !important;height 1px !important\x22\x3e\x3c/iframe\x3e\x27);\nif(\x22\x22.indexOf(\x22http\x22)\x3d\x3d0)document.write(\x27\x3cscript type\x3d\x22text/javascript\x22 src\x3d\x22\x22\x3e\x3c/scr\x27+\x27ipt\x3e\x27);\n\x3c/script\x3e\x3cnoscript class\x3d\x22MOAT-medscapedfp285029738901?moatClientLevel1\x3d17534954\x26amp;moatClientLevel2\x3d2097354120\x26amp;moatClientLevel3\x3d4348010766\x26amp;moatClientLevel4\x3d138203877075\x26amp;moatClientSlicer1\x3d3312554\x26amp;moatClientSlicer2\x3d25312994\x26amp;zMoatPS\x3d101\x26amp;zMoatSSP\x3d7\x26amp;zMoatCG\x3d3\x26amp;zMoatPF\x3d10\x26amp;zMoatSCG\x3d3029326\x26amp;zMoatUSP\x3d40\x26amp;zMoatOCC\x3d0\x26amp;zMoatPC\x3dcontent\x22\x3e\x3c/noscript\x3e\n\x3cscript src\x3d\x22https://z.moatads.com/medscapedfp285029738901/moatad.js#moatClientLevel1\x3d17534954\x26moatClientLevel2\x3d2097354120\x26moatClientLevel3\x3d4348010766\x26moatClientLevel4\x3d138203877075\x26moatClientSlicer1\x3d3312554\x26moatClientSlicer2\x3d25312994\x26zMoatPS\x3d101\x26zMoatSSP\x3d7\x26zMoatCG\x3d3\x26zMoatPF\x3d10\x26zMoatSCG\x3d3029326\x26zMoatUSP\x3d40\x26zMoatOCC\x3d0\x26zMoatPC\x3dcontent\x22 type\x3d\x22text/javascript\x22\x3e\x3c/script\x3e\n\x3c/div\x3e\n\n\x3cscript\x3e\nvar adOverride\x3d\x22\x22;\nvar expDay\x3d\x2221\x22; // days (optional)\nvar js\x3ddocument.createElement(\x22script\x22);js.type\x3d\x22text/javascript\x22;js.src\x3d\x22\x22;document.body.appendChild(js);\n\x3c/script\x3e\n\x3c!-- eaid\x3d4348010766 eadv\x3d17534954 ebuy\x3d2097354120 ecid\x3d138203877075 pos\x3d101 pvid\x3d150055597969959439 --\x3e\n\x3cscript src\x3d\x22https://tpc.googlesyndication.com/pagead/js/r20170717/r20110914/activeview/osd_listener.js\x22\x3e\x3c/script\x3e\x3cscript type\x3d\x22text/javascript\x22\x3eosdlfm(-1,\x27\x27,\x27BYy36y6pwWYv_ONKbhASdwaboAQAAAAAQATgByAEJwAIC4AIA4AQBoAYf0ggFCIBhEAE\x27,\x27\x27,3594004601,true,\x27dm\x3d1\x26ud\x3d1\x26la\x3d0\x26alp\x3dxai\x26alh\x3d2491789571\x26\x27,3,\x27CAASEuRoX0GqNz3blYeDqRdobHcfaA\x27,\x27//pagead2.googlesyndication.com/activeview?avi\x3dBYy36y6pwWYv_ONKbhASdwaboAQAAAAAQATgByAEJwAIC4AIA4AQBoAYf0ggFCIBhEAE\x26cid\x3dCAASEuRoX0GqNz3blYeDqRdobHcfaA\x27);\x3c/script\x3e\x3cscript\x3eif (window.top \x26\x26 window.top.postMessage) {window.top.postMessage(\x27{\x22googMsgType\x22:\x22adpnt\x22}\x27,\x27*\x27);}\x3c/script\x3e\x3cdiv style\x3d\x22top:0;left:0;width:728px;height:90px;position:absolute;max-width:100%;max-height:100%;pointer-events:none;image-rendering:pixelated;z-index:2147483647;background-image:url(\x27data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAWBAMAAACrl3iAAAAABlBMVEUAAAD+AciWmZzWAAAAAnRSTlMAApidrBQAAAB7SURBVBjTbZCJDcAgDAMvG3j/aavmMaFqoJUiHHMY/iuqCPLfHShP9W7JXaty4a5EKilyZ/W+YXvX5HgfEjaJS/pwYy2bZLCHJ+cOC6mmvGVrebQEeV6i6O8DoqxF2satXQm2mJ1ZnGvuBKXhX9R+Knd2aTovdoJxfOEBIEQFkR0skrMAAAAASUVORK5CYII\x3d\x27);\x22\x3e\x3c/div\x3e", "snippet": true, "height": 90, "width": 728, "empty": false, "_isafc": false, "_creativeids": [138203877075], "_adgroup2ids": [4348010766], "_advertiserids": [17534954], "_campaignids": [2097354120], "_labelids": [566354], "_ispsa": false, "_is3pas": false, "cids": ["IC2XztM"], "a2ids": ["QMpYQ4"], "pstok": "", "qqid": "CMuQmdH2l9UCFdINgQodnaAJHQ" }

Response.content.text from captured har file is null. Any help will be appreciated.