Thursday, June 27, 2019

Large downloads via Fiddler proxy

https://stackoverflow.com/questions/25281708/is-it-possible-to-make-fiddler-not-buffer-large-requests

"FWIW, request streaming was added to a later version of Fiddler; see the BufferRequest property. – EricLaw Mar 1 '16 at 17:51"


https://groups.google.com/forum/m/#!msg/httpfiddler/LHaypbyWsKc/0cxvnVgVJgAJ


Yes, the problem you're encountering is that you're trying to emulate a WebSocket (bidirectional streaming) atop a technology (HTTP) that wasn't really designed for that purpose.

You can probably make this work by enabling Request Streaming AND Response Streaming on the connection. As explained in the Fiddler Book:

Request Buffering 
When a client connects to Fiddler, Fiddler will, by default, read the entire HTTP request from the client. If a breakpoint is set, the request is then paused to allow tampering using the Inspectors. After the request is resumed, the server connection is established and Fiddler transmits the entire request to the server. Fiddler offers a mechanism to stream a HTTP request body to the server as it is read from the client. This is primarily useful if you need to use Fiddler to transmit uploads larger than 2 gigabytes, because .NET is unable to buffer arrays of that size. 

To activate request streaming, you must set the BufferRequest property on the Session’s Request object to false before the request body is read. Inside FiddlerScript’s OnPeekAtRequestHeaders function (you may need to uncomment it), add code similar to the following: 

 // Code modified from the book example to be specific to your scenario
  if (oSession.host.Contains("whatever.com") && 
     oSession.oRequest.headers.ExistsAndContains("Transfer-Encoding", "chunked")) {  
         oSession["ui-backcolor"] = "orange";
         oSession.oRequest.BufferRequest = false;
         oSession.bBufferResponse = false;
 } 

Streamed requests cannot be modified using Fiddler’s Inspectors.

No comments:

Mimmo97 Blog Archive