Fiddler Script - SaveResponseBody()

2019-06-06 12:22发布

问题:

I want to save all png images that are loaded along with some webpage into a separate folder. I am using below code with in Fiddler Script [CustomRules.js].

static function OnBeforeResponse(oSession: Session)
{
if(oSession.url.EndsWith(".png"))    
{
oSession.SaveResponseBody();
}
//Actual content of  OnBeforeResponse function.
}

Problem here is, I was unable to find any image got saved within Program files/Documents.

Where do “SaveResponseBody()” will save the HTTP Response Body?

Can we give our own custom folder?

My Fiddler version is (v4.4.5.6)

回答1:

The default SaveResponseBody() method saves the files to your \Documents\Fiddler2\Captures\ folder. If you want to use a different name, use the overload that accepts a filename. You should check the Response's status code is 200 to ensure that you're not trying to save off HTTP/304 responses which won't contain a body. Also, rather than looking at the URL, you probably want to check the response's type.

So you end up with something like this:

if ((oSession.responseCode == 200) && 
   oSession.oResponse.headers.ExistsAndContains("Content-Type", "image/png")) 
{ 
  SaveResponseBody("C:\\temp\\" + oSession.SuggestedFilename);
}

Note: The manual way of doing this would be to go to the QuickExec box below the Web Sessions list, type select png and hit Enter, then click File > Export > Selected Sessions > Raw Files.



标签: Fiddler