mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-30 03:14:22 +00:00
docs++
This commit is contained in:
parent
5a808ca2a7
commit
7b2cfc831d
@ -1,52 +1,50 @@
|
||||
By using mitmproxy's streaming feature, response contents can be passed to the client incrementally before they have been fully received by the proxy.
|
||||
This is especially useful for large binary files such as videos, where buffering the whole file slows down the client's browser.
|
||||
|
||||
By default, mitmproxy will read the entire response, perform any indicated
|
||||
manipulations on it and then send the (possibly modified) response back to
|
||||
the client. In some cases this is undesirable and you may wish to "stream"
|
||||
the reponse back to the client. When streaming is enabled, the response is
|
||||
not buffered but is instead sent directly back to the client. (If HTTP
|
||||
chunked transfer encoding is enabled, the response will be streamed
|
||||
back one chunk at a time.) This is especially useful for large binary files,
|
||||
which are often not what you are trying to inspect, and while buffering
|
||||
cause browser slows.
|
||||
manipulations on it and then send the (possibly modified) response to
|
||||
the client. In some cases this is undesirable and you may wish to "stream"
|
||||
the reponse back to the client. When streaming is enabled, the response is
|
||||
not buffered on the proxy but directly sent back to the client instead.
|
||||
|
||||
Streaming can be enabled on the command line for all responses which are
|
||||
greater than a certain size. Note that the SIZE argument below can accept
|
||||
the usual prefixes (m, k, etc.)
|
||||
<h2>On the command-line</h2>
|
||||
|
||||
Streaming can be enabled on the command line for all response bodies exceeding a certain size. The SIZE argument understands
|
||||
k/m/g suffixes, e.g. 3m for 3 megabytes.
|
||||
|
||||
<table class="table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th width="20%">command-line</th>
|
||||
<td>
|
||||
<ul>
|
||||
<li>--stream SIZE</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th width="20%">command-line</th>
|
||||
<td>
|
||||
--stream SIZE
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Customizing Response Streaming</h1>
|
||||
</div>
|
||||
|
||||
You can also use an inline script hook to write code to customize exactly
|
||||
<h2>Caveats</h2>
|
||||
|
||||
When response streaming is enabled, <strong>streamed response contents will not be
|
||||
recorded or preserved in any way.</strong>
|
||||
|
||||
When response streaming is enabled, the response body cannot be modified.
|
||||
|
||||
<h2>Customizing Response Streaming</h2>
|
||||
|
||||
You can also use an <a href="@!urlTo("scripting/inlinescripts.html")!@">inline script</a> to customize exactly
|
||||
which responses are streamed.
|
||||
|
||||
The basic concept is simple:
|
||||
Responses that should be tagged for streaming by setting their respective .stream attribute to True:
|
||||
|
||||
$!example("examples/stream.py")!$
|
||||
|
||||
See [inline scripts](@!urlTo("scripting/inlinescripts.html")!@) for more
|
||||
info on how to make and use inline scripts in general.
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Things to Know</h1>
|
||||
</div>
|
||||
<h2>Implementation Details</h2>
|
||||
|
||||
When response streaming is enabled, streamed response content will not be
|
||||
recorded with the -w parameter.
|
||||
When response streaming is enabled, portions of the code which would have otherwise performed changes
|
||||
on the response body will see an empty response body instead (<code>libmproxy.protocol.http.CONTENT_MISSING</code>). Any modifications will be ignored.
|
||||
|
||||
Portions of the code which would have otherwise performed changes
|
||||
on the response body will instead see an empty response body
|
||||
and any attempts to modify it will be ignored.
|
||||
Streamed responses are usually sent in chunks of 4096 bytes. If the response is sent with a <code>Transfer-Encoding:
|
||||
chunked</code> header, the response will be streamed one chunk at a time.
|
Loading…
Reference in New Issue
Block a user