+ <p>All client headers to which this action applies are filtered on-the-fly through the specified regular
+ expression based substitutions.</p>
+ </dd>
+ <dt>Type:</dt>
+ <dd>
+ <p>Multi-value.</p>
+ </dd>
+ <dt>Parameter:</dt>
+ <dd>
+ <p>The name of a client-header filter, as defined in one of the <a href="filter-file.html">filter
+ files</a>.</p>
+ </dd>
+ <dt>Notes:</dt>
+ <dd>
+ <p>Client-header filters are applied to each header on its own, not to all at once. This makes it easier
+ to diagnose problems, but on the downside you can't write filters that only change header x if header y's
+ value is z. You can do that by using tags though.</p>
+ <p>Client-header filters are executed after the other header actions have finished and use their output
+ as input.</p>
+ <p>If the request URI gets changed, <span class="APPLICATION">Privoxy</span> will detect that and use the
+ new one. This can be used to rewrite the request destination behind the client's back, for example to
+ specify a Tor exit relay for certain requests.</p>
+ <p>Note that to change the destination host for <a href=
+ "actions-file.html#HTTPS-INSPECTION">https-inspected</a> requests a protocol and host has to be added to
+ the URI.</p>
+ <p>If <a href="actions-file.html#HTTPS-INSPECTION">https inspection</a> is enabled, the protocol can be
+ downgraded from https to http but upgrading a request from http to https is currently not supported.</p>
+ <p>After detecting a rewrite, <span class="APPLICATION">Privoxy</span> does not update the actions used
+ for the request based on the new host.</p>
+ <p>Please refer to the <a href="filter-file.html">filter file chapter</a> to learn which client-header
+ filters are available by default, and how to create your own.</p>
+ </dd>
+ <dt>Example usage (section):</dt>
+ <dd>
+ <table border="0" bgcolor="#E0E0E0" width="90%">
+ <tr>
+ <td>
+ <pre class="SCREEN"> # Hide Tor exit notation in Host and Referer Headers
+ {+client-header-filter{hide-tor-exit-notation}}
+ /</pre>
+ </td>
+ </tr>
+ </table>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="SECT3">
+ <h4 class="SECT3"><a name="CLIENT-BODY-FILTER" id="CLIENT-BODY-FILTER">8.5.5. client-body-filter</a></h4>
+ <div class="VARIABLELIST">
+ <dl>
+ <dt>Typical use:</dt>
+ <dd>
+ <p>Rewrite or remove client request body.</p>
+ </dd>
+ <dt>Effect:</dt>
+ <dd>
+ <p>All request bodies to which this action applies are filtered on-the-fly through the specified regular
+ expression based substitutions.</p>
+ </dd>
+ <dt>Type:</dt>
+ <dd>
+ <p>Multi-value.</p>
+ </dd>
+ <dt>Parameter:</dt>
+ <dd>
+ <p>The name of a client-body filter, as defined in one of the <a href="filter-file.html">filter
+ files</a>.</p>
+ </dd>
+ <dt>Notes:</dt>
+ <dd>
+ <p>Please refer to the <a href="filter-file.html">filter file chapter</a> to learn how to create your own
+ client-body filters.</p>
+ <p>The distribution <tt class="FILENAME">default.filter</tt> file contains a selection of client-body
+ filters for example purposes.</p>
+ <p>The amount of data that can be filtered is limited by the <tt class="LITERAL"><a href=
+ "config.html#BUFFER-LIMIT">buffer-limit</a></tt> option in the main <a href="config.html">config
+ file</a>. The default is 4096 KB (4 Megs). Once this limit is exceeded, the whole request body is passed
+ through unfiltered.</p>
+ </dd>
+ <dt>Example usage (section):</dt>
+ <dd>
+ <table border="0" bgcolor="#E0E0E0" width="90%">
+ <tr>
+ <td>
+ <pre class="SCREEN"> # Remove "test" everywhere in the request body
+ {+client-body-filter{remove-test}}
+ /</pre>
+ </td>
+ </tr>
+ </table>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="SECT3">
+ <h4 class="SECT3"><a name="CLIENT-BODY-TAGGER" id="CLIENT-BODY-TAGGER">8.5.6. client-body-tagger</a></h4>
+ <div class="VARIABLELIST">
+ <dl>
+ <dt>Typical use:</dt>
+ <dd>
+ <p>Block requests based on the content of the body data.</p>
+ </dd>
+ <dt>Effect:</dt>
+ <dd>
+ <p>Client request bodies to which this action applies are filtered on-the-fly through the specified
+ regular expression based substitutions, the result is used as tag.</p>