rebuilt .html docs for privoxy version 3.0.26
[privoxy.git] / doc / webserver / user-manual / actions-file.html
index 38deb3e..f78109e 100644 (file)
@@ -6,36 +6,22 @@
   <title>Actions Files</title>
   <meta name="GENERATOR" content=
   "Modular DocBook HTML Stylesheet Version 1.79">
-  <link rel="HOME" title="Privoxy 3.0.20 User Manual" href="index.html">
+  <link rel="HOME" title="Privoxy 3.0.26 User Manual" href="index.html">
   <link rel="PREVIOUS" title="The Main Configuration File" href=
   "config.html">
   <link rel="NEXT" title="Filter Files" href="filter-file.html">
   <link rel="STYLESHEET" type="text/css" href="../p_doc.css">
   <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
   <link rel="STYLESHEET" type="text/css" href="p_doc.css">
-  <style type="text/css">
-body {
-  background-color: #EEEEEE;
-  color: #000000;
-  }
-  :link { color: #0000FF }
-  :visited { color: #840084 }
-  :active { color: #0000FF }
-  td.c6 {font-weight: bold}
-  tt.c5 {font-style: italic}
-  table.c4 {background-color: #E0E0E0}
-  p.c3 {font-weight: bold}
-  span.c2 {font-style: italic}
-  hr.c1 {text-align: left}
-  </style>
 </head>
 
-<body class="SECT1">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
+"#840084" alink="#0000FF">
   <div class="NAVHEADER">
     <table summary="Header navigation table" width="100%" border="0"
     cellpadding="0" cellspacing="0">
       <tr>
-        <th colspan="3" align="center">Privoxy 3.0.20 User Manual</th>
+        <th colspan="3" align="center">Privoxy 3.0.26 User Manual</th>
       </tr>
 
       <tr>
@@ -48,7 +34,7 @@ body {
         "filter-file.html" accesskey="N">Next</a></td>
       </tr>
     </table>
-    <hr class="c1" width="100%">
+    <hr align="left" width="100%">
   </div>
 
   <div class="SECT1">
@@ -56,7 +42,7 @@ body {
     Files</a></h1>
 
     <p>The actions files are used to define what <span class=
-    "emphasis EMPHASIS c2">actions</span> <span class=
+    "emphasis"><i class="EMPHASIS">actions</i></span> <span class=
     "APPLICATION">Privoxy</span> takes for which URLs, and thus determines
     how ad images, cookies and various other aspects of HTTP content and
     transactions are handled, and on which sites (or even parts thereof).
@@ -100,8 +86,8 @@ body {
         <span class="GUIBUTTON">Set to Advanced</span></p>
 
         <p>These have increasing levels of aggressiveness <span class=
-        "emphasis EMPHASIS c2">and have no influence on your browsing unless
-        you select them explicitly in the editor</span>. A default
+        "emphasis"><i class="EMPHASIS">and have no influence on your browsing
+        unless you select them explicitly in the editor</i></span>. A default
         installation should be pre-set to <tt class="LITERAL">Cautious</tt>.
         New users should try this for a while before adjusting the settings
         to more aggressive levels. The more aggressive the settings, then the
@@ -131,9 +117,9 @@ body {
         in <tt class="FILENAME">default.action</tt> are:</p>
 
         <div class="TABLE">
-          <a name="AEN2799" id="AEN2799"></a>
+          <a name="AEN2793" id="AEN2793"></a>
 
-          <p class="c3">Table 1. Default Configurations</p>
+          <p><b>Table 1. Default Configurations</b></p>
 
           <table border="1" frame="border" rules="all" class="CALSTABLE">
             <col width="1*" title="C1">
@@ -300,20 +286,21 @@ body {
     <tt class="FILENAME">default.action</tt>), followed by any exceptions
     (typically also in <tt class="FILENAME">default.action</tt>), which are
     then followed lastly by any local preferences (typically in <span class=
-    "emphasis EMPHASIS c2">user</span><tt class="FILENAME">.action</tt>).
-    Generally, <tt class="FILENAME">user.action</tt> has the last word.</p>
+    "emphasis"><i class="EMPHASIS">user</i></span><tt class=
+    "FILENAME">.action</tt>). Generally, <tt class=
+    "FILENAME">user.action</tt> has the last word.</p>
 
     <p>An actions file typically has multiple sections. If you want to use
     <span class="QUOTE">"aliases"</span> in an actions file, you have to
     place the (optional) <a href="actions-file.html#ALIASES">alias
     section</a> at the top of that file. Then comes the default set of rules
     which will apply universally to all sites and pages (be <span class=
-    "emphasis EMPHASIS c2">very careful</span> with using such a universal
-    set in <tt class="FILENAME">user.action</tt> or any other actions file
-    after <tt class="FILENAME">default.action</tt>, because it will override
-    the result from consulting any previous file). And then below that,
-    exceptions to the defined universal policies. You can regard <tt class=
-    "FILENAME">user.action</tt> as an appendix to <tt class=
+    "emphasis"><i class="EMPHASIS">very careful</i></span> with using such a
+    universal set in <tt class="FILENAME">user.action</tt> or any other
+    actions file after <tt class="FILENAME">default.action</tt>, because it
+    will override the result from consulting any previous file). And then
+    below that, exceptions to the defined universal policies. You can regard
+    <tt class="FILENAME">user.action</tt> as an appendix to <tt class=
     "FILENAME">default.action</tt>, with the advantage that it is a separate
     file, which makes preserving your personal settings across <span class=
     "APPLICATION">Privoxy</span> upgrades easier.</p>
@@ -327,8 +314,8 @@ body {
     actions</a>.</p>
 
     <div class="SECT2">
-      <h2 class="SECT2"><a name="AEN2898" id="AEN2898">8.1. Finding the Right
-      Mix</a></h2>
+      <h2 class="SECT2"><a name="RIGHT-MIX" id="RIGHT-MIX">8.1. Finding the
+      Right Mix</a></h2>
 
       <p>Note that some <a href="actions-file.html#ACTIONS">actions</a>, like
       cookie suppression or script disabling, may render some sites unusable
@@ -352,7 +339,7 @@ body {
     </div>
 
     <div class="SECT2">
-      <h2 class="SECT2"><a name="AEN2905" id="AEN2905">8.2. How to
+      <h2 class="SECT2"><a name="HOW-TO-EDIT" id="HOW-TO-EDIT">8.2. How to
       Edit</a></h2>
 
       <p>The easiest way to edit the actions files is with a browser by using
@@ -401,11 +388,11 @@ body {
       +<a href="actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a>
       }</tt>, then later another one with just <tt class="LITERAL">{
       +<a href="actions-file.html#BLOCK">block</a> }</tt>, resulting in
-      <span class="emphasis EMPHASIS c2">both</span> actions to apply. And
-      there may well be cases where you will want to combine actions
-      together. Such a section then might look like:</p>
+      <span class="emphasis"><i class="EMPHASIS">both</i></span> actions to
+      apply. And there may well be cases where you will want to combine
+      actions together. Such a section then might look like:</p>
 
-      <table class="c4" border="0" width="100%">
+      <table border="0" bgcolor="#E0E0E0" width="100%">
         <tr>
           <td>
             <pre class="SCREEN">
@@ -435,33 +422,33 @@ body {
 
       <p>As mentioned, <span class="APPLICATION">Privoxy</span> uses
       <span class="QUOTE">"patterns"</span> to determine what <span class=
-      "emphasis EMPHASIS c2">actions</span> might apply to which sites and
-      pages your browser attempts to access. These <span class=
+      "emphasis"><i class="EMPHASIS">actions</i></span> might apply to which
+      sites and pages your browser attempts to access. These <span class=
       "QUOTE">"patterns"</span> use wild card type <span class=
-      "emphasis EMPHASIS c2">pattern</span> matching to achieve a high degree
-      of flexibility. This allows one expression to be expanded and
-      potentially match against many similar patterns.</p>
+      "emphasis"><i class="EMPHASIS">pattern</i></span> matching to achieve a
+      high degree of flexibility. This allows one expression to be expanded
+      and potentially match against many similar patterns.</p>
 
       <p>Generally, an URL pattern has the form <tt class=
-      "LITERAL">&lt;domain&gt;&lt;port&gt;/&lt;path&gt;</tt>, where the
-      <tt class="LITERAL">&lt;domain&gt;</tt>, the <tt class=
+      "LITERAL">&lt;host&gt;&lt;port&gt;/&lt;path&gt;</tt>, where the
+      <tt class="LITERAL">&lt;host&gt;</tt>, the <tt class=
       "LITERAL">&lt;port&gt;</tt> and the <tt class=
       "LITERAL">&lt;path&gt;</tt> are optional. (This is why the special
       <tt class="LITERAL">/</tt> pattern matches all URLs). Note that the
       protocol portion of the URL pattern (e.g. <tt class=
-      "LITERAL">http://</tt>) should <span class=
-      "emphasis EMPHASIS c2">not</span> be included in the pattern. This is
-      assumed already!</p>
+      "LITERAL">http://</tt>) should <span class="emphasis"><i class=
+      "EMPHASIS">not</i></span> be included in the pattern. This is assumed
+      already!</p>
 
-      <p>The pattern matching syntax is different for the domain and path
-      parts of the URL. The domain part uses a simple globbing type matching
+      <p>The pattern matching syntax is different for the host and path parts
+      of the URL. The host part uses a simple globbing type matching
       technique, while the path part uses more flexible <a href=
       "http://en.wikipedia.org/wiki/Regular_expressions" target=
       "_top"><span class="QUOTE">"Regular Expressions"</span></a> (POSIX
       1003.2).</p>
 
       <p>The port part of a pattern is a decimal port number preceded by a
-      colon (<tt class="LITERAL">:</tt>). If the domain part contains a
+      colon (<tt class="LITERAL">:</tt>). If the host part contains a
       numerical IPv6 address, it has to be put into angle brackets
       (<tt class="LITERAL">&lt;</tt>, <tt class="LITERAL">&gt;</tt>).</p>
 
@@ -470,7 +457,7 @@ body {
           <dt><tt class="LITERAL">www.example.com/</tt></dt>
 
           <dd>
-            <p>is a domain-only pattern and will match any request to
+            <p>is a host-only pattern and will match any request to
             <tt class="LITERAL">www.example.com</tt>, regardless of which
             document on that server is requested. So ALL pages in this domain
             would be covered by the scope of this action. Note that a simple
@@ -481,7 +468,7 @@ body {
           <dt><tt class="LITERAL">www.example.com</tt></dt>
 
           <dd>
-            <p>means exactly the same. For domain-only patterns, the trailing
+            <p>means exactly the same. For host-only patterns, the trailing
             <tt class="LITERAL">/</tt> may be omitted.</p>
           </dd>
 
@@ -506,7 +493,8 @@ body {
           <dd>
             <p>matches the document <tt class="LITERAL">/index.html</tt>,
             regardless of the domain, i.e. on <span class=
-            "emphasis EMPHASIS c2">any</span> web server anywhere.</p>
+            "emphasis"><i class="EMPHASIS">any</i></span> web server
+            anywhere.</p>
           </dd>
 
           <dt><tt class="LITERAL">/</tt></dt>
@@ -522,6 +510,14 @@ body {
             <p>Matches any URL pointing to TCP port 8000.</p>
           </dd>
 
+          <dt><tt class="LITERAL">10.0.0.1/</tt></dt>
+
+          <dd>
+            <p>Matches any URL with the host address <tt class=
+            "LITERAL">10.0.0.1</tt>. (Note that the real URL uses plain
+            brackets, not angle brackets.)</p>
+          </dd>
+
           <dt><tt class="LITERAL">&lt;2001:db8::1&gt;/</tt></dt>
 
           <dd>
@@ -541,12 +537,14 @@ body {
       </div>
 
       <div class="SECT3">
-        <h3 class="SECT3"><a name="AEN3017" id="AEN3017">8.4.1. The Domain
-        Pattern</a></h3>
+        <h3 class="SECT3"><a name="HOST-PATTERN" id="HOST-PATTERN">8.4.1. The
+        Host Pattern</a></h3>
 
-        <p>The matching of the domain part offers some flexible options: if
-        the domain starts or ends with a dot, it becomes unanchored at that
-        end. For example:</p>
+        <p>The matching of the host part offers some flexible options: if the
+        host pattern starts or ends with a dot, it becomes unanchored at that
+        end. The host pattern is often referred to as domain pattern as it is
+        usually used to match domain names and not IP addresses. For
+        example:</p>
 
         <div class="VARIABLELIST">
           <dl>
@@ -566,18 +564,17 @@ body {
             <dt><tt class="LITERAL">www.</tt></dt>
 
             <dd>
-              <p>matches any domain that <span class=
-              "emphasis EMPHASIS c2">STARTS</span> with <tt class=
-              "LITERAL">www.</tt> (It also matches the domain <tt class=
-              "LITERAL">www</tt> but most of the time that doesn't
-              matter.)</p>
+              <p>matches any domain that <span class="emphasis"><i class=
+              "EMPHASIS">STARTS</i></span> with <tt class="LITERAL">www.</tt>
+              (It also matches the domain <tt class="LITERAL">www</tt> but
+              most of the time that doesn't matter.)</p>
             </dd>
 
             <dt><tt class="LITERAL">.example.</tt></dt>
 
             <dd>
-              <p>matches any domain that <span class=
-              "emphasis EMPHASIS c2">CONTAINS</span> <tt class=
+              <p>matches any domain that <span class="emphasis"><i class=
+              "EMPHASIS">CONTAINS</i></span> <tt class=
               "LITERAL">.example.</tt>. And, by the way, also included would
               be any files or documents that exist within that domain since
               no path limitations are specified. (Correctly speaking: It
@@ -636,7 +633,7 @@ body {
               <tt class="LITERAL">www4.example.cc</tt>, <tt class=
               "LITERAL">wwwd.example.cy</tt>, <tt class=
               "LITERAL">wwwz.example.com</tt> etc., but <span class=
-              "emphasis EMPHASIS c2">not</span> <tt class=
+              "emphasis"><i class="EMPHASIS">not</i></span> <tt class=
               "LITERAL">wwww.example.com</tt>.</p>
             </dd>
           </dl>
@@ -647,8 +644,8 @@ body {
       </div>
 
       <div class="SECT3">
-        <h3 class="SECT3"><a name="AEN3093" id="AEN3093">8.4.2. The Path
-        Pattern</a></h3>
+        <h3 class="SECT3"><a name="PATH-PATTERN" id="PATH-PATTERN">8.4.2. The
+        Path Pattern</a></h3>
 
         <p><span class="APPLICATION">Privoxy</span> uses <span class=
         "QUOTE">"modern"</span> POSIX 1003.2 <a href=
@@ -668,13 +665,13 @@ body {
         the beginning of a line).</p>
 
         <p>Please also note that matching in the path is <span class=
-        "emphasis EMPHASIS c2">CASE INSENSITIVE</span> by default, but you
-        can switch to case sensitive at any point in the pattern by using the
-        <span class="QUOTE">"(?-i)"</span> switch: <tt class=
-        "LITERAL">www.example.com/(?-i)PaTtErN.*</tt> will match only
-        documents whose path starts with <tt class="LITERAL">PaTtErN</tt> in
-        <span class="emphasis EMPHASIS c2">exactly</span> this
-        capitalization.</p>
+        "emphasis"><i class="EMPHASIS">CASE INSENSITIVE</i></span> by
+        default, but you can switch to case sensitive at any point in the
+        pattern by using the <span class="QUOTE">"(?-i)"</span> switch:
+        <tt class="LITERAL">www.example.com/(?-i)PaTtErN.*</tt> will match
+        only documents whose path starts with <tt class=
+        "LITERAL">PaTtErN</tt> in <span class="emphasis"><i class=
+        "EMPHASIS">exactly</i></span> this capitalization.</p>
 
         <div class="VARIABLELIST">
           <dl>
@@ -747,22 +744,24 @@ body {
 
       <div class="SECT3">
         <h3 class="SECT3"><a name="TAG-PATTERN" id="TAG-PATTERN">8.4.3. The
-        Tag Pattern</a></h3>
+        Request Tag Pattern</a></h3>
 
-        <p>Tag patterns are used to change the applying actions based on the
-        request's tags. Tags can be created with either the <a href=
+        <p>Request tag patterns are used to change the applying actions based
+        on the request's tags. Tags can be created based on HTTP headers with
+        either the <a href=
         "actions-file.html#CLIENT-HEADER-TAGGER">client-header-tagger</a> or
         the <a href=
         "actions-file.html#SERVER-HEADER-TAGGER">server-header-tagger</a>
         action.</p>
 
-        <p>Tag patterns have to start with <span class="QUOTE">"TAG:"</span>,
-        so <span class="APPLICATION">Privoxy</span> can tell them apart from
-        URL patterns. Everything after the colon including white space, is
-        interpreted as a regular expression with path pattern syntax, except
-        that tag patterns aren't left-anchored automatically (<span class=
-        "APPLICATION">Privoxy</span> doesn't silently add a <span class=
-        "QUOTE">"^"</span>, you have to do it yourself if you need it).</p>
+        <p>Request tag patterns have to start with <span class=
+        "QUOTE">"TAG:"</span>, so <span class="APPLICATION">Privoxy</span>
+        can tell them apart from other patterns. Everything after the colon
+        including white space, is interpreted as a regular expression with
+        path pattern syntax, except that tag patterns aren't left-anchored
+        automatically (<span class="APPLICATION">Privoxy</span> doesn't
+        silently add a <span class="QUOTE">"^"</span>, you have to do it
+        yourself if you need it).</p>
 
         <p>To match all requests that are tagged with <span class=
         "QUOTE">"foo"</span> your pattern line should be <span class=
@@ -772,15 +771,16 @@ body {
         "QUOTE">"TAG: foo"</span> wouldn't work as it requires white
         space.</p>
 
-        <p>Sections can contain URL and tag patterns at the same time, but
-        tag patterns are checked after the URL patterns and thus always
-        overrule them, even if they are located before the URL patterns.</p>
+        <p>Sections can contain URL and request tag patterns at the same
+        time, but request tag patterns are checked after the URL patterns and
+        thus always overrule them, even if they are located before the URL
+        patterns.</p>
 
-        <p>Once a new tag is added, Privoxy checks right away if it's matched
-        by one of the tag patterns and updates the action settings
-        accordingly. As a result tags can be used to activate other tagger
-        actions, as long as these other taggers look for headers that haven't
-        already be parsed.</p>
+        <p>Once a new request tag is added, Privoxy checks right away if it's
+        matched by one of the request tag patterns and updates the action
+        settings accordingly. As a result request tags can be used to
+        activate other tagger actions, as long as these other taggers look
+        for headers that haven't already be parsed.</p>
 
         <p>For example you could tag client requests which use the <tt class=
         "LITERAL">POST</tt> method, then use this tag to activate another
@@ -797,6 +797,89 @@ body {
         indirection is seldom needed anyway and even the example doesn't make
         too much sense.</p>
       </div>
+
+      <div class="SECT3">
+        <h3 class="SECT3"><a name="NEGATIVE-TAG-PATTERNS" id=
+        "NEGATIVE-TAG-PATTERNS">8.4.4. The Negative Request Tag
+        Patterns</a></h3>
+
+        <p>To match requests that do not have a certain request tag, specify
+        a negative tag pattern by prefixing the tag pattern line with either
+        <span class="QUOTE">"NO-REQUEST-TAG:"</span> or <span class=
+        "QUOTE">"NO-RESPONSE-TAG:"</span> instead of <span class=
+        "QUOTE">"TAG:"</span>.</p>
+
+        <p>Negative request tag patterns created with <span class=
+        "QUOTE">"NO-REQUEST-TAG:"</span> are checked after all client headers
+        are scanned, the ones created with <span class=
+        "QUOTE">"NO-RESPONSE-TAG:"</span> are checked after all server
+        headers are scanned. In both cases all the created tags are
+        considered.</p>
+      </div>
+
+      <div class="SECT3">
+        <h3 class="SECT3"><a name="CLIENT-TAG-PATTERN" id=
+        "CLIENT-TAG-PATTERN">8.4.5. The Client Tag Pattern</a></h3>
+
+        <div class="WARNING">
+          <table class="WARNING" border="1" width="100%">
+            <tr>
+              <td align="center"><b>Warning</b></td>
+            </tr>
+
+            <tr>
+              <td align="left">
+                <p>This is an experimental feature. The syntax is likely to
+                change in future versions.</p>
+              </td>
+            </tr>
+          </table>
+        </div>
+
+        <p>Client tag patterns are not set based on HTTP headers but based on
+        the client's IP address. Users can enable them themselves, but the
+        Privoxy admin controls which tags are available and what their effect
+        is.</p>
+
+        <p>After a client-specific tag has been defined with the <a href=
+        "config.html#CLIENT-SPECIFIC-TAG">client-specific-tag</a>, directive,
+        action sections can be activated based on the tag by using a
+        CLIENT-TAG pattern. The CLIENT-TAG pattern is evaluated at the same
+        priority as URL patterns, as a result the last matching pattern wins.
+        Tags that are created based on client or server headers are evaluated
+        later on and can overrule CLIENT-TAG and URL patterns!</p>
+
+        <p>The tag is set for all requests that come from clients that
+        requested it to be set. Note that "clients" are differentiated by IP
+        address, if the IP address changes the tag has to be requested
+        again.</p>
+
+        <p>Clients can request tags to be set by using the CGI interface
+        <a href="http://config.privoxy.org/client-tags" target=
+        "_top">http://config.privoxy.org/client-tags</a>.</p>
+
+        <p>Example:</p>
+
+        <table border="0" bgcolor="#E0E0E0" width="100%">
+          <tr>
+            <td>
+              <pre class="SCREEN">
+# If the admin defined the client-specific-tag circumvent-blocks,
+# and the request comes from a client that previously requested
+# the tag to be set, overrule all previous +block actions that
+# are enabled based on URL to CLIENT-TAG patterns.
+{-block}
+CLIENT-TAG:^circumvent-blocks$
+
+# This section is not overruled because it's located after
+# the previous one.
+{+block{Nobody is supposed to request this.}}
+example.org/blocked-example-page
+</pre>
+            </td>
+          </tr>
+        </table>
+      </div>
     </div>
 
     <div class="SECT2">
@@ -828,14 +911,14 @@ body {
           "QUOTE">"enabled"</span> or <span class="QUOTE">"disabled"</span>.
           Syntax:</p>
 
-          <table class="c4" border="0" width="90%">
+          <table border="0" bgcolor="#E0E0E0" width="90%">
             <tr>
               <td>
                 <pre class="SCREEN">
-  +<tt class="REPLACEABLE c5">name</tt>        # enable action <tt class=
-"REPLACEABLE c5">name</tt>
-  -<tt class="REPLACEABLE c5">name</tt>        # disable action <tt class=
-"REPLACEABLE c5">name</tt>
+  +<tt class="REPLACEABLE"><i>name</i></tt>        # enable action <tt class=
+"REPLACEABLE"><i>name</i></tt>
+  -<tt class=
+"REPLACEABLE"><i>name</i></tt>        # disable action <tt class="REPLACEABLE"><i>name</i></tt>
 </pre>
               </td>
             </tr>
@@ -848,16 +931,15 @@ body {
           <p>Parameterized, where some value is required in order to enable
           this type of action. Syntax:</p>
 
-          <table class="c4" border="0" width="90%">
+          <table border="0" bgcolor="#E0E0E0" width="90%">
             <tr>
               <td>
                 <pre class="SCREEN">
-  +<tt class="REPLACEABLE c5">name</tt>{<tt class=
-"REPLACEABLE c5">param</tt>}  # enable action and set parameter to <tt class=
-"REPLACEABLE c5">param</tt>,
+  +<tt class="REPLACEABLE"><i>name</i></tt>{<tt class=
+"REPLACEABLE"><i>param</i></tt>}  # enable action and set parameter to <tt class="REPLACEABLE"><i>param</i></tt>,
                # overwriting parameter from previous match if necessary
   -<tt class=
-"REPLACEABLE c5">name</tt>         # disable action. The parameter can be omitted
+"REPLACEABLE"><i>name</i></tt>         # disable action. The parameter can be omitted
 </pre>
               </td>
             </tr>
@@ -876,25 +958,25 @@ body {
           <p>Multi-value. These look exactly like parameterized actions, but
           they behave differently: If the action applies multiple times to
           the same URL, but with different parameters, <span class=
-          "emphasis EMPHASIS c2">all</span> the parameters from <span class=
-          "emphasis EMPHASIS c2">all</span> matches are remembered. This is
-          used for actions that can be executed for the same request
-          repeatedly, like adding multiple headers, or filtering through
-          multiple filters. Syntax:</p>
+          "emphasis"><i class="EMPHASIS">all</i></span> the parameters from
+          <span class="emphasis"><i class="EMPHASIS">all</i></span> matches
+          are remembered. This is used for actions that can be executed for
+          the same request repeatedly, like adding multiple headers, or
+          filtering through multiple filters. Syntax:</p>
 
-          <table class="c4" border="0" width="90%">
+          <table border="0" bgcolor="#E0E0E0" width="90%">
             <tr>
               <td>
                 <pre class="SCREEN">
-  +<tt class="REPLACEABLE c5">name</tt>{<tt class=
-"REPLACEABLE c5">param</tt>}   # enable action and add <tt class=
-"REPLACEABLE c5">param</tt> to the list of parameters
-  -<tt class="REPLACEABLE c5">name</tt>{<tt class=
-"REPLACEABLE c5">param</tt>}   # remove the parameter <tt class=
-"REPLACEABLE c5">param</tt> from the list of parameters
+  +<tt class="REPLACEABLE"><i>name</i></tt>{<tt class=
+"REPLACEABLE"><i>param</i></tt>}   # enable action and add <tt class=
+"REPLACEABLE"><i>param</i></tt> to the list of parameters
+  -<tt class="REPLACEABLE"><i>name</i></tt>{<tt class=
+"REPLACEABLE"><i>param</i></tt>}   # remove the parameter <tt class=
+"REPLACEABLE"><i>param</i></tt> from the list of parameters
                 # If it was the last one left, disable the action.
   <tt class=
-"REPLACEABLE c5">-name</tt>          # disable this action completely and remove all parameters from the list
+"REPLACEABLE"><i>-name</i></tt>          # disable this action completely and remove all parameters from the list
 </pre>
               </td>
             </tr>
@@ -978,11 +1060,20 @@ body {
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
-+add-header{X-User-Tracking: sucks}
+# Add a DNT ("Do not track") header to all requests,
+# event to those that already have one.
+#
+# This is just an example, not a recommendation.
+#
+# There is no reason to believe that user-tracking websites care
+# about the DNT header and depending on the User-Agent, adding the
+# header may make user-tracking easier.
+{+add-header{DNT: 1}}
+/
 </pre>
                   </td>
                 </tr>
@@ -1042,7 +1133,7 @@ body {
               force feature is available and enabled).</p>
 
               <p>A very important exception occurs if <span class=
-              "emphasis EMPHASIS c2">both</span> <tt class=
+              "emphasis"><i class="EMPHASIS">both</i></span> <tt class=
               "LITERAL">block</tt> and <tt class="LITERAL"><a href=
               "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>,
               apply to the same request: it will then be replaced by an
@@ -1069,7 +1160,7 @@ body {
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1150,7 +1241,7 @@ body {
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1187,7 +1278,7 @@ body {
             <dt>Type:</dt>
 
             <dd>
-              <p>Parameterized.</p>
+              <p>Multi-value.</p>
             </dd>
 
             <dt>Parameter:</dt>
@@ -1209,7 +1300,7 @@ body {
               <p>Client-header filters are executed after the other header
               actions have finished and use their output as input.</p>
 
-              <p>If the request URL gets changed, <span class=
+              <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
@@ -1223,7 +1314,7 @@ body {
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1263,7 +1354,7 @@ body {
             <dt>Type:</dt>
 
             <dd>
-              <p>Parameterized.</p>
+              <p>Multi-value.</p>
             </dd>
 
             <dt>Parameter:</dt>
@@ -1288,7 +1379,7 @@ body {
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1315,6 +1406,28 @@ TAG:^User-Agent: fetch libfetch/
 TAG:^User-Agent: Ubuntu APT-HTTP/
 TAG:^User-Agent: MPlayer/
 
+</pre>
+                  </td>
+                </tr>
+              </table>
+
+              <table border="0" bgcolor="#E0E0E0" width="90%">
+                <tr>
+                  <td>
+                    <pre class="SCREEN">
+# Tag all requests with the Range header set
+{+client-header-tagger{range-requests}}
+/
+
+# Disable filtering for the tagged requests.
+#
+# With filtering enabled Privoxy would remove the Range headers
+# to be able to filter the whole response. The downside is that
+# it prevents clients from resuming downloads or skipping over
+# parts of multimedia files.
+{-filter -deanimate-gifs}
+TAG:^RANGE-REQUEST$
+
 </pre>
                   </td>
                 </tr>
@@ -1412,7 +1525,7 @@ TAG:^User-Agent: MPlayer/
             <dt>Example usage (sections):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1474,10 +1587,10 @@ www.example.net/.*style
               every client header that contains the string you supplied as
               parameter.</p>
 
-              <p>Regular expressions are <span class=
-              "emphasis EMPHASIS c2">not supported</span> and you can't use
-              this action to block different headers in the same request,
-              unless they contain the same string.</p>
+              <p>Regular expressions are <span class="emphasis"><i class=
+              "EMPHASIS">not supported</i></span> and you can't use this
+              action to block different headers in the same request, unless
+              they contain the same string.</p>
 
               <p><tt class="LITERAL">crunch-client-header</tt> is only meant
               for quick tests. If you have to block several different
@@ -1489,7 +1602,7 @@ www.example.net/.*style
               <div class="WARNING">
                 <table class="WARNING" border="1" width="90%">
                   <tr>
-                    <td class="c6" align="center">Warning</td>
+                    <td align="center"><b>Warning</b></td>
                   </tr>
 
                   <tr>
@@ -1505,7 +1618,7 @@ www.example.net/.*style
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1581,7 +1694,7 @@ www.example.net/.*style
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1636,15 +1749,16 @@ www.example.net/.*style
 
             <dd>
               <p>This action is only concerned with <span class=
-              "emphasis EMPHASIS c2">incoming</span> HTTP cookies. For
-              <span class="emphasis EMPHASIS c2">outgoing</span> HTTP
-              cookies, use <tt class="LITERAL"><a href=
+              "emphasis"><i class="EMPHASIS">incoming</i></span> HTTP
+              cookies. For <span class="emphasis"><i class=
+              "EMPHASIS">outgoing</i></span> HTTP cookies, use <tt class=
+              "LITERAL"><a href=
               "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>.
-              Use <span class="emphasis EMPHASIS c2">both</span> to disable
-              HTTP cookies completely.</p>
+              Use <span class="emphasis"><i class="EMPHASIS">both</i></span>
+              to disable HTTP cookies completely.</p>
 
-              <p>It makes <span class="emphasis EMPHASIS c2">no sense at
-              all</span> to use this action in conjunction with the
+              <p>It makes <span class="emphasis"><i class="EMPHASIS">no sense
+              at all</i></span> to use this action in conjunction with the
               <tt class="LITERAL"><a href=
               "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt>
               action, since it would prevent the session cookies from being
@@ -1655,7 +1769,7 @@ www.example.net/.*style
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1710,10 +1824,10 @@ www.example.net/.*style
               every server header that contains the string you supplied as
               parameter.</p>
 
-              <p>Regular expressions are <span class=
-              "emphasis EMPHASIS c2">not supported</span> and you can't use
-              this action to block different headers in the same request,
-              unless they contain the same string.</p>
+              <p>Regular expressions are <span class="emphasis"><i class=
+              "EMPHASIS">not supported</i></span> and you can't use this
+              action to block different headers in the same request, unless
+              they contain the same string.</p>
 
               <p><tt class="LITERAL">crunch-server-header</tt> is only meant
               for quick tests. If you have to block several different
@@ -1725,7 +1839,7 @@ www.example.net/.*style
               <div class="WARNING">
                 <table class="WARNING" border="1" width="90%">
                   <tr>
-                    <td class="c6" align="center">Warning</td>
+                    <td align="center"><b>Warning</b></td>
                   </tr>
 
                   <tr>
@@ -1741,7 +1855,7 @@ www.example.net/.*style
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1793,15 +1907,16 @@ www.example.net/.*style
 
             <dd>
               <p>This action is only concerned with <span class=
-              "emphasis EMPHASIS c2">outgoing</span> HTTP cookies. For
-              <span class="emphasis EMPHASIS c2">incoming</span> HTTP
-              cookies, use <tt class="LITERAL"><a href=
+              "emphasis"><i class="EMPHASIS">outgoing</i></span> HTTP
+              cookies. For <span class="emphasis"><i class=
+              "EMPHASIS">incoming</i></span> HTTP cookies, use <tt class=
+              "LITERAL"><a href=
               "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt>.
-              Use <span class="emphasis EMPHASIS c2">both</span> to disable
-              HTTP cookies completely.</p>
+              Use <span class="emphasis"><i class="EMPHASIS">both</i></span>
+              to disable HTTP cookies completely.</p>
 
-              <p>It makes <span class="emphasis EMPHASIS c2">no sense at
-              all</span> to use this action in conjunction with the
+              <p>It makes <span class="emphasis"><i class="EMPHASIS">no sense
+              at all</i></span> to use this action in conjunction with the
               <tt class="LITERAL"><a href=
               "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt>
               action, since it would prevent the session cookies from being
@@ -1811,7 +1926,7 @@ www.example.net/.*style
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1877,7 +1992,7 @@ www.example.net/.*style
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1946,7 +2061,7 @@ www.example.net/.*style
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -1961,9 +2076,104 @@ problem-host.example.com
         </div>
       </div>
 
+      <div class="SECT3">
+        <h4 class="SECT3"><a name="EXTERNAL-FILTER" id=
+        "EXTERNAL-FILTER">8.5.14. external-filter</a></h4>
+
+        <div class="VARIABLELIST">
+          <dl>
+            <dt>Typical use:</dt>
+
+            <dd>
+              <p>Modify content using a programming language of your
+              choice.</p>
+            </dd>
+
+            <dt>Effect:</dt>
+
+            <dd>
+              <p>All instances of text-based type, most notably HTML and
+              JavaScript, to which this action applies, can be filtered
+              on-the-fly through the specified external filter. By default
+              plain text documents are exempted from filtering, because web
+              servers often use the <tt class="LITERAL">text/plain</tt> MIME
+              type for all files whose type they don't know.)</p>
+            </dd>
+
+            <dt>Type:</dt>
+
+            <dd>
+              <p>Multi-value.</p>
+            </dd>
+
+            <dt>Parameter:</dt>
+
+            <dd>
+              <p>The name of an external content filter, as defined in the
+              <a href="filter-file.html">filter file</a>. External filters
+              can be defined in one or more files as defined by the
+              <tt class="LITERAL"><a href=
+              "config.html#FILTERFILE">filterfile</a></tt> option in the
+              <a href="config.html">config file</a>.</p>
+
+              <p>When used in its negative form, and without parameters,
+              <span class="emphasis"><i class="EMPHASIS">all</i></span>
+              filtering with external filters is completely disabled.</p>
+            </dd>
+
+            <dt>Notes:</dt>
+
+            <dd>
+              <p>External filters are scripts or programs that can modify the
+              content in case common <tt class="LITERAL"><a href=
+              "actions-file.html#FILTER">filters</a></tt> aren't powerful
+              enough. With the exception that this action doesn't use
+              pcrs-based filters, the notes in the <tt class=
+              "LITERAL"><a href="actions-file.html#FILTER">filter</a></tt>
+              section apply.</p>
+
+              <div class="WARNING">
+                <table class="WARNING" border="1" width="90%">
+                  <tr>
+                    <td align="center"><b>Warning</b></td>
+                  </tr>
+
+                  <tr>
+                    <td align="left">
+                      <p>Currently external filters are executed with
+                      <span class="APPLICATION">Privoxy</span>'s privileges.
+                      Only use external filters you understand and trust.</p>
+                    </td>
+                  </tr>
+                </table>
+              </div>
+
+              <p>This feature is experimental, the <tt class=
+              "LITERAL"><a href=
+              "filter-file.html#EXTERNAL-FILTER-SYNTAX">syntax</a></tt> may
+              change in the future.</p>
+            </dd>
+
+            <dt>Example usage:</dt>
+
+            <dd>
+              <table border="0" bgcolor="#E0E0E0" width="90%">
+                <tr>
+                  <td>
+                    <pre class="SCREEN">
++external-filter{fancy-filter}
+</pre>
+                  </td>
+                </tr>
+              </table>
+            </dd>
+          </dl>
+        </div>
+      </div>
+
       <div class="SECT3">
         <h4 class="SECT3"><a name="FAST-REDIRECTS" id=
-        "FAST-REDIRECTS">8.5.14. fast-redirects</a></h4>
+        "FAST-REDIRECTS">8.5.15. fast-redirects</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -2066,7 +2276,7 @@ problem-host.example.com
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2085,7 +2295,7 @@ problem-host.example.com
       </div>
 
       <div class="SECT3">
-        <h4 class="SECT3"><a name="FILTER" id="FILTER">8.5.15.
+        <h4 class="SECT3"><a name="FILTER" id="FILTER">8.5.16.
         filter</a></h4>
 
         <div class="VARIABLELIST">
@@ -2113,7 +2323,7 @@ problem-host.example.com
             <dt>Type:</dt>
 
             <dd>
-              <p>Parameterized.</p>
+              <p>Multi-value.</p>
             </dd>
 
             <dt>Parameter:</dt>
@@ -2130,8 +2340,8 @@ problem-host.example.com
               "FILENAME">user.filter</tt>.</p>
 
               <p>When used in its negative form, and without parameters,
-              <span class="emphasis EMPHASIS c2">all</span> filtering is
-              completely disabled.</p>
+              <span class="emphasis"><i class="EMPHASIS">all</i></span>
+              filtering is completely disabled.</p>
             </dd>
 
             <dt>Notes:</dt>
@@ -2215,7 +2425,7 @@ problem-host.example.com
               <p><a name="FILTER-JS-ANNOYANCES" id=
               "FILTER-JS-ANNOYANCES"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2227,11 +2437,11 @@ problem-host.example.com
 
               <p><a name="FILTER-JS-EVENTS" id="FILTER-JS-EVENTS"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
-+filter{js-events}           # Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites).
++filter{js-events}           # Kill JavaScript event bindings and timers (Radically destructive! Only for extra nasty sites).
 </pre>
                   </td>
                 </tr>
@@ -2240,7 +2450,7 @@ problem-host.example.com
               <p><a name="FILTER-HTML-ANNOYANCES" id=
               "FILTER-HTML-ANNOYANCES"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2253,7 +2463,7 @@ problem-host.example.com
               <p><a name="FILTER-CONTENT-COOKIES" id=
               "FILTER-CONTENT-COOKIES"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2266,11 +2476,11 @@ problem-host.example.com
               <p><a name="FILTER-REFRESH-TAGS" id=
               "FILTER-REFRESH-TAGS"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
-+filter{refresh-tags}        # Kill automatic refresh tags (for dial-on-demand setups).
++filter{refresh-tags}        # Kill automatic refresh tags if refresh time is larger than 9 seconds.
 </pre>
                   </td>
                 </tr>
@@ -2279,11 +2489,11 @@ problem-host.example.com
               <p><a name="FILTER-UNSOLICITED-POPUPS" id=
               "FILTER-UNSOLICITED-POPUPS"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
-+filter{unsolicited-popups}  # Disable only unsolicited pop-up windows. Useful if your browser lacks this ability.
++filter{unsolicited-popups}  # Disable only unsolicited pop-up windows.
 </pre>
                   </td>
                 </tr>
@@ -2291,11 +2501,11 @@ problem-host.example.com
 
               <p><a name="FILTER-ALL-POPUPS" id="FILTER-ALL-POPUPS"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
-+filter{all-popups}          # Kill all popups in JavaScript and HTML. Useful if your browser lacks this ability.
++filter{all-popups}          # Kill all popups in JavaScript and HTML.
 </pre>
                   </td>
                 </tr>
@@ -2304,7 +2514,7 @@ problem-host.example.com
               <p><a name="FILTER-IMG-REORDER" id=
               "FILTER-IMG-REORDER"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2317,7 +2527,7 @@ problem-host.example.com
               <p><a name="FILTER-BANNERS-BY-SIZE" id=
               "FILTER-BANNERS-BY-SIZE"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2330,7 +2540,7 @@ problem-host.example.com
               <p><a name="FILTER-BANNERS-BY-LINK" id=
               "FILTER-BANNERS-BY-LINK"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2342,7 +2552,7 @@ problem-host.example.com
 
               <p><a name="FILTER-WEBBUGS" id="FILTER-WEBBUGS"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2355,7 +2565,7 @@ problem-host.example.com
               <p><a name="FILTER-TINY-TEXTFORMS" id=
               "FILTER-TINY-TEXTFORMS"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2368,7 +2578,7 @@ problem-host.example.com
               <p><a name="FILTER-JUMPING-WINDOWS" id=
               "FILTER-JUMPING-WINDOWS"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2381,7 +2591,7 @@ problem-host.example.com
               <p><a name="FILTER-FRAMESET-BORDERS" id=
               "FILTER-FRAMESET-BORDERS"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2391,10 +2601,22 @@ problem-host.example.com
                 </tr>
               </table>
 
+              <p><a name="FILTER-IFRAMES" id="FILTER-IFRAMES"></a></p>
+
+              <table border="0" bgcolor="#E0E0E0" width="90%">
+                <tr>
+                  <td>
+                    <pre class="SCREEN">
++filter{iframes}             # Removes all detected iframes. Should only be enabled for individual sites.
+</pre>
+                  </td>
+                </tr>
+              </table>
+
               <p><a name="FILTER-DEMORONIZER" id=
               "FILTER-DEMORONIZER"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2407,7 +2629,7 @@ problem-host.example.com
               <p><a name="FILTER-SHOCKWAVE-FLASH" id=
               "FILTER-SHOCKWAVE-FLASH"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2420,7 +2642,7 @@ problem-host.example.com
               <p><a name="FILTER-QUICKTIME-KIOSKMODE" id=
               "FILTER-QUICKTIME-KIOSKMODE"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2432,7 +2654,7 @@ problem-host.example.com
 
               <p><a name="FILTER-FUN" id="FILTER-FUN"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2445,7 +2667,7 @@ problem-host.example.com
               <p><a name="FILTER-CRUDE-PARENTAL" id=
               "FILTER-CRUDE-PARENTAL"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2458,7 +2680,7 @@ problem-host.example.com
               <p><a name="FILTER-IE-EXPLOITS" id=
               "FILTER-IE-EXPLOITS"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2471,7 +2693,7 @@ problem-host.example.com
               <p><a name="FILTER-SITE-SPECIFICS" id=
               "FILTER-SITE-SPECIFICS"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2483,7 +2705,7 @@ problem-host.example.com
 
               <p><a name="FILTER-NO-PING" id="FILTER-NO-PING"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2495,7 +2717,7 @@ problem-host.example.com
 
               <p><a name="FILTER-GOOGLE" id="FILTER-GOOGLE"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2507,7 +2729,7 @@ problem-host.example.com
 
               <p><a name="FILTER-YAHOO" id="FILTER-YAHOO"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2519,7 +2741,7 @@ problem-host.example.com
 
               <p><a name="FILTER-MSN" id="FILTER-MSN"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2531,7 +2753,7 @@ problem-host.example.com
 
               <p><a name="FILTER-BLOGSPOT" id="FILTER-BLOGSPOT"></a></p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2547,7 +2769,7 @@ problem-host.example.com
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="FORCE-TEXT-MODE" id=
-        "FORCE-TEXT-MODE">8.5.16. force-text-mode</a></h4>
+        "FORCE-TEXT-MODE">8.5.17. force-text-mode</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -2556,7 +2778,7 @@ problem-host.example.com
             <dd>
               <p>Force <span class="APPLICATION">Privoxy</span> to treat a
               document as if it was in some kind of <span class=
-              "emphasis EMPHASIS c2">text</span> format.</p>
+              "emphasis"><i class="EMPHASIS">text</i></span> format.</p>
             </dd>
 
             <dt>Effect:</dt>
@@ -2594,7 +2816,7 @@ problem-host.example.com
               <div class="WARNING">
                 <table class="WARNING" border="1" width="90%">
                   <tr>
-                    <td class="c6" align="center">Warning</td>
+                    <td align="center"><b>Warning</b></td>
                   </tr>
 
                   <tr>
@@ -2611,7 +2833,7 @@ problem-host.example.com
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2628,7 +2850,7 @@ problem-host.example.com
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="FORWARD-OVERRIDE" id=
-        "FORWARD-OVERRIDE">8.5.17. forward-override</a></h4>
+        "FORWARD-OVERRIDE">8.5.18. forward-override</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -2649,7 +2871,7 @@ problem-host.example.com
             <dt>Type:</dt>
 
             <dd>
-              <p>Multi-value.</p>
+              <p>Parameterized.</p>
             </dd>
 
             <dt>Parameter:</dt>
@@ -2688,6 +2910,30 @@ problem-host.example.com
                   <span class="QUOTE">"forward-socks5"</span> for socks5
                   connections (with remote DNS resolution).</p>
                 </li>
+
+                <li>
+                  <p><span class="QUOTE">"forward-webserver
+                  127.0.0.1:80"</span> to use the HTTP server listening at
+                  127.0.0.1 port 80 without adjusting the request
+                  headers.</p>
+
+                  <p>This makes it more convenient to use Privoxy to make
+                  existing websites available as onion services as well.</p>
+
+                  <p>Many websites serve content with hardcoded URLs and
+                  can't be easily adjusted to change the domain based on the
+                  one used by the client.</p>
+
+                  <p>Putting Privoxy between Tor and the webserver (or an
+                  stunnel that forwards to the webserver) allows to rewrite
+                  headers and content to make client and server happy at the
+                  same time.</p>
+
+                  <p>Using Privoxy for webservers that are only reachable
+                  through onion addresses and whose location is supposed to
+                  be secret is not recommended and should not be necessary
+                  anyway.</p>
+                </li>
               </ul>
             </dd>
 
@@ -2703,7 +2949,7 @@ problem-host.example.com
               <div class="WARNING">
                 <table class="WARNING" border="1" width="90%">
                   <tr>
-                    <td class="c6" align="center">Warning</td>
+                    <td align="center"><b>Warning</b></td>
                   </tr>
 
                   <tr>
@@ -2717,7 +2963,9 @@ problem-host.example.com
                       <p>If the ports are missing or invalid, default values
                       will be used. This might change in the future and you
                       shouldn't rely on it. Otherwise incorrect syntax causes
-                      Privoxy to exit.</p>
+                      Privoxy to exit. Due to design limitations, invalid
+                      parameter syntax isn't detected until the action is
+                      used the first time.</p>
 
                       <p>Use the <a href=
                       "http://config.privoxy.org/show-url-info" target=
@@ -2732,19 +2980,21 @@ problem-host.example.com
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
-# Always use direct connections for requests previously tagged as
+# Use an ssh tunnel for requests previously tagged as
 # <span class="QUOTE">"User-Agent: fetch libfetch/2.0"</span> and make sure
 # resuming downloads continues to work.
+#
 # This way you can continue to use Tor for your normal browsing,
 # without overloading the Tor network with your FreeBSD ports updates
 # or downloads of bigger files like ISOs.
+#
 # Note that HTTP headers are easy to fake and therefore their
 # values are as (un)trustworthy as your clients and users.
-{+forward-override{forward .} \
+{+forward-override{forward-socks5 10.0.0.2:2222 .} \
  -hide-if-modified-since      \
  -overwrite-last-modified     \
 }
@@ -2761,7 +3011,7 @@ TAG:^User-Agent: fetch libfetch/2\.0$
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="HANDLE-AS-EMPTY-DOCUMENT" id=
-        "HANDLE-AS-EMPTY-DOCUMENT">8.5.18. handle-as-empty-document</a></h4>
+        "HANDLE-AS-EMPTY-DOCUMENT">8.5.19. handle-as-empty-document</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -2769,8 +3019,8 @@ TAG:^User-Agent: fetch libfetch/2\.0$
 
             <dd>
               <p>Mark URLs that should be replaced by empty documents
-              <span class="emphasis EMPHASIS c2">if they get
-              blocked</span></p>
+              <span class="emphasis"><i class="EMPHASIS">if they get
+              blocked</i></span></p>
             </dd>
 
             <dt>Effect:</dt>
@@ -2779,12 +3029,13 @@ TAG:^User-Agent: fetch libfetch/2\.0$
               <p>This action alone doesn't do anything noticeable. It just
               marks URLs. If the <tt class="LITERAL"><a href=
               "actions-file.html#BLOCK">block</a></tt> action <span class=
-              "emphasis EMPHASIS c2">also applies</span>, the presence or
-              absence of this mark decides whether an HTML <span class=
-              "QUOTE">"BLOCKED"</span> page, or an empty document will be
-              sent to the client as a substitute for the blocked content. The
-              <span class="emphasis EMPHASIS c2">empty</span> document isn't
-              literally empty, but actually contains a single space.</p>
+              "emphasis"><i class="EMPHASIS">also applies</i></span>, the
+              presence or absence of this mark decides whether an HTML
+              <span class="QUOTE">"BLOCKED"</span> page, or an empty document
+              will be sent to the client as a substitute for the blocked
+              content. The <span class="emphasis"><i class=
+              "EMPHASIS">empty</i></span> document isn't literally empty, but
+              actually contains a single space.</p>
             </dd>
 
             <dt>Type:</dt>
@@ -2818,7 +3069,7 @@ TAG:^User-Agent: fetch libfetch/2\.0$
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2838,7 +3089,7 @@ example.org/.*\.js$
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="HANDLE-AS-IMAGE" id=
-        "HANDLE-AS-IMAGE">8.5.19. handle-as-image</a></h4>
+        "HANDLE-AS-IMAGE">8.5.20. handle-as-image</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -2846,8 +3097,8 @@ example.org/.*\.js$
 
             <dd>
               <p>Mark URLs as belonging to images (so they'll be replaced by
-              images <span class="emphasis EMPHASIS c2">if they do get
-              blocked</span>, rather than HTML pages)</p>
+              images <span class="emphasis"><i class="EMPHASIS">if they do
+              get blocked</i></span>, rather than HTML pages)</p>
             </dd>
 
             <dt>Effect:</dt>
@@ -2856,10 +3107,10 @@ example.org/.*\.js$
               <p>This action alone doesn't do anything noticeable. It just
               marks URLs as images. If the <tt class="LITERAL"><a href=
               "actions-file.html#BLOCK">block</a></tt> action <span class=
-              "emphasis EMPHASIS c2">also applies</span>, the presence or
-              absence of this mark decides whether an HTML <span class=
-              "QUOTE">"blocked"</span> page, or a replacement image (as
-              determined by the <tt class="LITERAL"><a href=
+              "emphasis"><i class="EMPHASIS">also applies</i></span>, the
+              presence or absence of this mark decides whether an HTML
+              <span class="QUOTE">"blocked"</span> page, or a replacement
+              image (as determined by the <tt class="LITERAL"><a href=
               "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt>
               action) will be sent to the client as a substitute for the
               blocked content.</p>
@@ -2902,7 +3153,7 @@ example.org/.*\.js$
             <dt>Example usage (sections):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -2927,7 +3178,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="HIDE-ACCEPT-LANGUAGE" id=
-        "HIDE-ACCEPT-LANGUAGE">8.5.20. hide-accept-language</a></h4>
+        "HIDE-ACCEPT-LANGUAGE">8.5.21. hide-accept-language</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -2987,7 +3238,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3007,7 +3258,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="HIDE-CONTENT-DISPOSITION" id=
-        "HIDE-CONTENT-DISPOSITION">8.5.21. hide-content-disposition</a></h4>
+        "HIDE-CONTENT-DISPOSITION">8.5.22. hide-content-disposition</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -3050,9 +3301,9 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
               default.</p>
 
               <p>In most browsers that understand this header, it makes it
-              impossible to <span class="emphasis EMPHASIS c2">just
-              view</span> the document, without downloading it first, even if
-              it's just a simple text file or an image.</p>
+              impossible to <span class="emphasis"><i class="EMPHASIS">just
+              view</i></span> the document, without downloading it first,
+              even if it's just a simple text file or an image.</p>
 
               <p>Removing the <span class=
               "QUOTE">"Content-Disposition:"</span> header helps to prevent
@@ -3073,7 +3324,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3093,7 +3344,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="HIDE-IF-MODIFIED-SINCE" id=
-        "HIDE-IF-MODIFIED-SINCE">8.5.22. hide-if-modified-since</a></h4>
+        "HIDE-IF-MODIFIED-SINCE">8.5.23. hide-if-modified-since</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -3160,7 +3411,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3180,7 +3431,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="HIDE-FROM-HEADER" id=
-        "HIDE-FROM-HEADER">8.5.23. hide-from-header</a></h4>
+        "HIDE-FROM-HEADER">8.5.24. hide-from-header</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -3230,7 +3481,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3240,7 +3491,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
                 </tr>
               </table>or
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3255,7 +3506,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
       </div>
 
       <div class="SECT3">
-        <h4 class="SECT3"><a name="HIDE-REFERRER" id="HIDE-REFERRER">8.5.24.
+        <h4 class="SECT3"><a name="HIDE-REFERRER" id="HIDE-REFERRER">8.5.25.
         hide-referrer</a></h4><a name="HIDE-REFERER" id="HIDE-REFERER"></a>
 
         <div class="VARIABLELIST">
@@ -3349,7 +3600,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3359,7 +3610,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
                 </tr>
               </table>or
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3375,7 +3626,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="HIDE-USER-AGENT" id=
-        "HIDE-USER-AGENT">8.5.25. hide-user-agent</a></h4>
+        "HIDE-USER-AGENT">8.5.26. hide-user-agent</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -3412,7 +3663,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
               <div class="WARNING">
                 <table class="WARNING" border="1" width="90%">
                   <tr>
-                    <td class="c6" align="center">Warning</td>
+                    <td align="center"><b>Warning</b></td>
                   </tr>
 
                   <tr>
@@ -3420,9 +3671,9 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
                       <p>This can lead to problems on web sites that depend
                       on looking at this header in order to customize their
                       content for different browsers (which, by the way, is
-                      <span class="emphasis EMPHASIS c2">NOT</span> the right
-                      thing to do: good web sites work
-                      browser-independently).</p>
+                      <span class="emphasis"><i class=
+                      "EMPHASIS">NOT</i></span> the right thing to do: good
+                      web sites work browser-independently).</p>
                     </td>
                   </tr>
                 </table>
@@ -3431,9 +3682,9 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
               <p>Using this action in multi-user setups or wherever different
               types of browsers will access the same <span class=
               "APPLICATION">Privoxy</span> is <span class=
-              "emphasis EMPHASIS c2">not recommended</span>. In single-user,
-              single-browser setups, you might use it to delete your OS
-              version information from the headers, because it is an
+              "emphasis"><i class="EMPHASIS">not recommended</i></span>. In
+              single-user, single-browser setups, you might use it to delete
+              your OS version information from the headers, because it is an
               invitation to exploit known bugs for your OS. It is also
               occasionally useful to forge this in order to access sites that
               won't let you in otherwise (though there may be a good reason
@@ -3449,7 +3700,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3464,7 +3715,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
       </div>
 
       <div class="SECT3">
-        <h4 class="SECT3"><a name="LIMIT-CONNECT" id="LIMIT-CONNECT">8.5.26.
+        <h4 class="SECT3"><a name="LIMIT-CONNECT" id="LIMIT-CONNECT">8.5.27.
         limit-connect</a></h4>
 
         <div class="VARIABLELIST">
@@ -3525,7 +3776,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
             <dt>Example usages:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3534,6 +3785,88 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
 +limit-connect{-3, 7, 20-100, 500-}   # Ports less than 3, 7, 20 to 100 and above 500 are OK.
 +limit-connect{-}                     # All ports are OK
 +limit-connect{,}                     # No HTTPS/SSL traffic is allowed
+</pre>
+                  </td>
+                </tr>
+              </table>
+            </dd>
+          </dl>
+        </div>
+      </div>
+
+      <div class="SECT3">
+        <h4 class="SECT3"><a name="LIMIT-COOKIE-LIFETIME" id=
+        "LIMIT-COOKIE-LIFETIME">8.5.28. limit-cookie-lifetime</a></h4>
+
+        <div class="VARIABLELIST">
+          <dl>
+            <dt>Typical use:</dt>
+
+            <dd>
+              <p>Limit the lifetime of HTTP cookies to a couple of minutes or
+              hours.</p>
+            </dd>
+
+            <dt>Effect:</dt>
+
+            <dd>
+              <p>Overwrites the expires field in Set-Cookie server headers if
+              it's above the specified limit.</p>
+            </dd>
+
+            <dt>Type:</dt>
+
+            <dd>
+              <p>Parameterized.</p>
+            </dd>
+
+            <dt>Parameter:</dt>
+
+            <dd>
+              <p>The lifetime limit in minutes, or 0.</p>
+            </dd>
+
+            <dt>Notes:</dt>
+
+            <dd>
+              <p>This action reduces the lifetime of HTTP cookies coming from
+              the server to the specified number of minutes, starting from
+              the time the cookie passes Privoxy.</p>
+
+              <p>Cookies with a lifetime below the limit are not modified.
+              The lifetime of session cookies is set to the specified
+              limit.</p>
+
+              <p>The effect of this action depends on the server.</p>
+
+              <p>In case of servers which refresh their cookies with each
+              response (or at least frequently), the lifetime limit set by
+              this action is updated as well. Thus, a session associated with
+              the cookie continues to work with this action enabled, as long
+              as a new request is made before the last limit set is
+              reached.</p>
+
+              <p>However, some servers send their cookies once, with a
+              lifetime of several years (the year 2037 is a popular choice),
+              and do not refresh them until a certain event in the future,
+              for example the user logging out. In this case this action may
+              limit the absolute lifetime of the session, even if requests
+              are made frequently.</p>
+
+              <p>If the parameter is <span class="QUOTE">"0"</span>, this
+              action behaves like <tt class="LITERAL"><a href=
+              "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt>.</p>
+            </dd>
+
+            <dt>Example usages:</dt>
+
+            <dd>
+              <table border="0" bgcolor="#E0E0E0" width="90%">
+                <tr>
+                  <td>
+                    <pre class="SCREEN">
++limit-cookie-lifetime{60}
+
 </pre>
                   </td>
                 </tr>
@@ -3545,7 +3878,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="PREVENT-COMPRESSION" id=
-        "PREVENT-COMPRESSION">8.5.27. prevent-compression</a></h4>
+        "PREVENT-COMPRESSION">8.5.29. prevent-compression</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -3617,7 +3950,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
             <dt>Example usage (sections):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3649,7 +3982,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="OVERWRITE-LAST-MODIFIED" id=
-        "OVERWRITE-LAST-MODIFIED">8.5.28. overwrite-last-modified</a></h4>
+        "OVERWRITE-LAST-MODIFIED">8.5.30. overwrite-last-modified</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -3726,7 +4059,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3745,7 +4078,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
       </div>
 
       <div class="SECT3">
-        <h4 class="SECT3"><a name="REDIRECT" id="REDIRECT">8.5.29.
+        <h4 class="SECT3"><a name="REDIRECT" id="REDIRECT">8.5.31.
         redirect</a></h4>
 
         <div class="VARIABLELIST">
@@ -3784,11 +4117,18 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
               provided as parameter, or derived by applying a single pcrs
               command to the original URL.</p>
 
-              <p>This action will be ignored if you use it together with
-              <tt class="LITERAL"><a href=
-              "actions-file.html#BLOCK">block</a></tt>. It can be combined
-              with <tt class="LITERAL"><a href=
-              "actions-file.html#FAST-REDIRECTS">fast-redirects{check-decoded-url}</a></tt>
+              <p>The syntax for pcrs commands is documented in the <a href=
+              "filter-file.html">filter file</a> section.</p>
+
+              <p>Requests can't be blocked and redirected at the same time,
+              applying this action together with <tt class="LITERAL"><a href=
+              "actions-file.html#BLOCK">block</a></tt> is a configuration
+              error. Currently the request is blocked and an error message
+              logged, the behavior may change in the future and result in
+              Privoxy rejecting the action file.</p>
+
+              <p>This action can be combined with <tt class=
+              "LITERAL"><a href="actions-file.html#FAST-REDIRECTS">fast-redirects{check-decoded-url}</a></tt>
               to redirect to a decoded version of a rewritten URL.</p>
 
               <p>Use this action carefully, make sure not to create
@@ -3803,7 +4143,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
             <dt>Example usages:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3812,9 +4152,9 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
  example.com/stylesheet\.css
 
 # Create a short, easy to remember nickname for a favorite site
-# (relies on the browser accept and forward invalid URLs to <span class=
+# (relies on the browser to accept and forward invalid URLs to <span class=
 "APPLICATION">Privoxy</span>)
-{ +redirect{http://www.privoxy.org/user-manual/actions-file.html} }
+{ +redirect{https://www.privoxy.org/user-manual/actions-file.html} }
  a
 
 # Always use the expanded view for Undeadly.org articles
@@ -3831,6 +4171,19 @@ undeadly.org/cgi\?action=article&amp;sid=\d*$
 {+redirect{s@^http://[^/]*/results\.aspx\?q=([^&amp;]*).*@http://search.yahoo.com/search?p=$1@}}
 search.msn.com//results\.aspx\?q=
 
+# Redirect http://example.com/&amp;bla=fasel&amp;toChange=foo (and any other value but "bar")
+# to       http://example.com/&amp;bla=fasel&amp;toChange=bar
+#
+# The URL pattern makes sure that the following request isn't redirected again.
+{+redirect{s@toChange=[^&amp;]+@toChange=bar@}}
+example.com/.*toChange=(?!bar)
+
+# Add a shortcut to look up illumos bugs
+{+redirect{s@^http://i([0-9]+)/.*@https://www.illumos.org/issues/$1@}}
+# Redirected URL = http://i4974/
+# Redirect Destination = https://www.illumos.org/issues/4974
+i[0-9][0-9][0-9][0-9]*/
+
 # Redirect remote requests for this manual
 # to the local version delivered by Privoxy
 {+redirect{s@^http://www@http://config@}}
@@ -3846,7 +4199,7 @@ www.privoxy.org/user-manual/
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="SERVER-HEADER-FILTER" id=
-        "SERVER-HEADER-FILTER">8.5.30. server-header-filter</a></h4>
+        "SERVER-HEADER-FILTER">8.5.32. server-header-filter</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -3867,7 +4220,7 @@ www.privoxy.org/user-manual/
             <dt>Type:</dt>
 
             <dd>
-              <p>Parameterized.</p>
+              <p>Multi-value.</p>
             </dd>
 
             <dt>Parameter:</dt>
@@ -3897,7 +4250,7 @@ www.privoxy.org/user-manual/
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3918,7 +4271,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="SERVER-HEADER-TAGGER" id=
-        "SERVER-HEADER-TAGGER">8.5.31. server-header-tagger</a></h4>
+        "SERVER-HEADER-TAGGER">8.5.33. server-header-tagger</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -3940,7 +4293,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
             <dt>Type:</dt>
 
             <dd>
-              <p>Parameterized.</p>
+              <p>Multi-value.</p>
             </dd>
 
             <dt>Parameter:</dt>
@@ -3972,7 +4325,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
             <dt>Example usage (section):</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -3980,6 +4333,15 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
 {+server-header-tagger{content-type}}
 /
 
+# If the response has a tag starting with 'image/' enable an external
+# filter that only applies to images.
+#
+# Note that the filter is not available by default, it's just a
+# <tt class="LITERAL"><a href=
+"filter-file.html#EXTERNAL-FILTER-SYNTAX">silly example</a></tt>.
+{+external-filter{rotate-image} +force-text-mode}
+TAG:^image/
+
 </pre>
                   </td>
                 </tr>
@@ -3991,7 +4353,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="SESSION-COOKIES-ONLY" id=
-        "SESSION-COOKIES-ONLY">8.5.32. session-cookies-only</a></h4>
+        "SESSION-COOKIES-ONLY">8.5.34. session-cookies-only</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -4000,7 +4362,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
             <dd>
               <p>Allow only temporary <span class="QUOTE">"session"</span>
               cookies (for the current browser session <span class=
-              "emphasis EMPHASIS c2">only</span>).</p>
+              "emphasis"><i class="EMPHASIS">only</i></span>).</p>
             </dd>
 
             <dt>Effect:</dt>
@@ -4043,9 +4405,10 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
               generally turned on for all sites, and is the recommended
               setting.</p>
 
-              <p>It makes <span class="emphasis EMPHASIS c2">no sense at
-              all</span> to use <tt class="LITERAL">session-cookies-only</tt>
-              together with <tt class="LITERAL"><a href=
+              <p>It makes <span class="emphasis"><i class="EMPHASIS">no sense
+              at all</i></span> to use <tt class=
+              "LITERAL">session-cookies-only</tt> together with <tt class=
+              "LITERAL"><a href=
               "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt>
               or <tt class="LITERAL"><a href=
               "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>.
@@ -4072,7 +4435,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
             <dt>Example usage:</dt>
 
             <dd>
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -4088,7 +4451,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
 
       <div class="SECT3">
         <h4 class="SECT3"><a name="SET-IMAGE-BLOCKER" id=
-        "SET-IMAGE-BLOCKER">8.5.33. set-image-blocker</a></h4>
+        "SET-IMAGE-BLOCKER">8.5.35. set-image-blocker</a></h4>
 
         <div class="VARIABLELIST">
           <dl>
@@ -4102,15 +4465,17 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
 
             <dd>
               <p>This action alone doesn't do anything noticeable. If
-              <span class="emphasis EMPHASIS c2">both</span> <tt class=
-              "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt>
-              <span class="emphasis EMPHASIS c2">and</span> <tt class=
+              <span class="emphasis"><i class="EMPHASIS">both</i></span>
+              <tt class="LITERAL"><a href=
+              "actions-file.html#BLOCK">block</a></tt> <span class=
+              "emphasis"><i class="EMPHASIS">and</i></span> <tt class=
               "LITERAL"><a href=
               "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>
-              <span class="emphasis EMPHASIS c2">also</span> apply, i.e. if
-              the request is to be blocked as an image, <span class=
-              "emphasis EMPHASIS c2">then</span> the parameter of this action
-              decides what will be sent as a replacement.</p>
+              <span class="emphasis"><i class="EMPHASIS">also</i></span>
+              apply, i.e. if the request is to be blocked as an image,
+              <span class="emphasis"><i class="EMPHASIS">then</i></span> the
+              parameter of this action decides what will be sent as a
+              replacement.</p>
             </dd>
 
             <dt>Type:</dt>
@@ -4142,9 +4507,9 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
 
                 <li>
                   <p><span class="QUOTE">"<tt class=
-                  "REPLACEABLE c5">target-url</tt>"</span> to send a redirect
-                  to <tt class="REPLACEABLE c5">target-url</tt>. You can
-                  redirect to any image anywhere, even in your local
+                  "REPLACEABLE"><i>target-url</i></tt>"</span> to send a
+                  redirect to <tt class="REPLACEABLE"><i>target-url</i></tt>.
+                  You can redirect to any image anywhere, even in your local
                   filesystem via <span class="QUOTE">"file:///"</span> URL.
                   (But note that not all browsers support redirecting to a
                   local file system).</p>
@@ -4152,11 +4517,12 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
                   <p>A good application of redirects is to use special
                   <span class="APPLICATION">Privoxy</span>-built-in URLs,
                   which send the built-in images, as <tt class=
-                  "REPLACEABLE c5">target-url</tt>. This has the same visual
-                  effect as specifying <span class="QUOTE">"blank"</span> or
-                  <span class="QUOTE">"pattern"</span> in the first place,
-                  but enables your browser to cache the replacement image,
-                  instead of requesting it over and over again.</p>
+                  "REPLACEABLE"><i>target-url</i></tt>. This has the same
+                  visual effect as specifying <span class=
+                  "QUOTE">"blank"</span> or <span class=
+                  "QUOTE">"pattern"</span> in the first place, but enables
+                  your browser to cache the replacement image, instead of
+                  requesting it over and over again.</p>
                 </li>
               </ul>
             </dd>
@@ -4166,14 +4532,14 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
             <dd>
               <p>The URLs for the built-in images are <span class=
               "QUOTE">"http://config.privoxy.org/send-banner?type=<tt class=
-              "REPLACEABLE c5">type</tt>"</span>, where <tt class=
-              "REPLACEABLE c5">type</tt> is either <span class=
+              "REPLACEABLE"><i>type</i></tt>"</span>, where <tt class=
+              "REPLACEABLE"><i>type</i></tt> is either <span class=
               "QUOTE">"blank"</span> or <span class=
               "QUOTE">"pattern"</span>.</p>
 
               <p>There is a third (advanced) type, called <span class=
-              "QUOTE">"auto"</span>. It is <span class=
-              "emphasis EMPHASIS c2">NOT</span> to be used in <tt class=
+              "QUOTE">"auto"</span>. It is <span class="emphasis"><i class=
+              "EMPHASIS">NOT</i></span> to be used in <tt class=
               "LITERAL">set-image-blocker</tt>, but meant for use from
               <a href="filter-file.html">filters</a>. Auto will select the
               type of image that would have applied to the referring page,
@@ -4185,7 +4551,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
             <dd>
               <p>Built-in pattern:</p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -4197,7 +4563,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
 
               <p>Redirect to the BSD daemon:</p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -4209,7 +4575,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
 
               <p>Redirect to the built-in pattern for better caching:</p>
 
-              <table class="c4" border="0" width="90%">
+              <table border="0" bgcolor="#E0E0E0" width="90%">
                 <tr>
                   <td>
                     <pre class="SCREEN">
@@ -4224,7 +4590,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
       </div>
 
       <div class="SECT3">
-        <h3 class="SECT3"><a name="AEN4725" id="AEN4725">8.5.34.
+        <h3 class="SECT3"><a name="SUMMARY" id="SUMMARY">8.5.36.
         Summary</a></h3>
 
         <p>Note that many of these actions have the potential to cause a page
@@ -4246,27 +4612,29 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
       just like the built-in actions. Currently, an alias name can contain
       any character except space, tab, <span class="QUOTE">"="</span>,
       <span class="QUOTE">"{"</span> and <span class="QUOTE">"}"</span>, but
-      we <span class="emphasis EMPHASIS c2">strongly recommend</span> that
-      you only use <span class="QUOTE">"a"</span> to <span class=
-      "QUOTE">"z"</span>, <span class="QUOTE">"0"</span> to <span class=
-      "QUOTE">"9"</span>, <span class="QUOTE">"+"</span>, and <span class=
-      "QUOTE">"-"</span>. Alias names are not case sensitive, and are not
-      required to start with a <span class="QUOTE">"+"</span> or <span class=
-      "QUOTE">"-"</span> sign, since they are merely textually expanded.</p>
+      we <span class="emphasis"><i class="EMPHASIS">strongly
+      recommend</i></span> that you only use <span class="QUOTE">"a"</span>
+      to <span class="QUOTE">"z"</span>, <span class="QUOTE">"0"</span> to
+      <span class="QUOTE">"9"</span>, <span class="QUOTE">"+"</span>, and
+      <span class="QUOTE">"-"</span>. Alias names are not case sensitive, and
+      are not required to start with a <span class="QUOTE">"+"</span> or
+      <span class="QUOTE">"-"</span> sign, since they are merely textually
+      expanded.</p>
 
       <p>Aliases can be used throughout the actions file, but they
-      <span class="emphasis EMPHASIS c2">must be defined in a special section
-      at the top of the file!</span> And there can only be one such section
-      per actions file. Each actions file may have its own alias section, and
-      the aliases defined in it are only visible within that file.</p>
+      <span class="emphasis"><i class="EMPHASIS">must be defined in a special
+      section at the top of the file!</i></span> And there can only be one
+      such section per actions file. Each actions file may have its own alias
+      section, and the aliases defined in it are only visible within that
+      file.</p>
 
       <p>There are two main reasons to use aliases: One is to save typing for
       frequently used combinations of actions, the other one is a gain in
       flexibility: If you decide once how you want to handle shops by
       defining an alias called <span class="QUOTE">"shop"</span>, you can
-      later change your policy on shops in <span class=
-      "emphasis EMPHASIS c2">one</span> place, and your changes will take
-      effect everywhere in the actions file where the <span class=
+      later change your policy on shops in <span class="emphasis"><i class=
+      "EMPHASIS">one</i></span> place, and your changes will take effect
+      everywhere in the actions file where the <span class=
       "QUOTE">"shop"</span> alias is used. Calling aliases by their purpose
       also makes your actions files more readable.</p>
 
@@ -4279,7 +4647,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
 
       <p>Now let's define some aliases...</p>
 
-      <table class="c4" border="0" width="100%">
+      <table border="0" bgcolor="#E0E0E0" width="100%">
         <tr>
           <td>
             <pre class="SCREEN">
@@ -4328,7 +4696,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
       (as specified further up for the <span class="QUOTE">"/"</span>
       pattern):</p>
 
-      <table class="c4" border="0" width="100%">
+      <table border="0" bgcolor="#E0E0E0" width="100%">
         <tr>
           <td>
             <pre class="SCREEN">
@@ -4381,12 +4749,12 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
       together:</p>
 
       <div class="SECT3">
-        <h3 class="SECT3"><a name="AEN4789" id="AEN4789">8.7.1.
+        <h3 class="SECT3"><a name="MATCH-ALL" id="MATCH-ALL">8.7.1.
         match-all.action</a></h3>
 
-        <p>Remember <span class="emphasis EMPHASIS c2">all actions are
-        disabled when matching starts</span>, so we have to explicitly enable
-        the ones we want.</p>
+        <p>Remember <span class="emphasis"><i class="EMPHASIS">all actions
+        are disabled when matching starts</i></span>, so we have to
+        explicitly enable the ones we want.</p>
 
         <p>While the <tt class="FILENAME">match-all.action</tt> file only
         contains a single section, it is probably the most important one. It
@@ -4394,11 +4762,12 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
         "LITERAL">/</tt>"</span>, but this pattern <a href=
         "actions-file.html#AF-PATTERNS">matches all URLs</a>. Therefore, the
         set of actions used in this <span class="QUOTE">"default"</span>
-        section <span class="emphasis EMPHASIS c2">will be applied to all
-        requests as a start</span>. It can be partly or wholly overridden by
-        other actions files like <tt class="FILENAME">default.action</tt> and
-        <tt class="FILENAME">user.action</tt>, but it will still be largely
-        responsible for your overall browsing experience.</p>
+        section <span class="emphasis"><i class="EMPHASIS">will be applied to
+        all requests as a start</i></span>. It can be partly or wholly
+        overridden by other actions files like <tt class=
+        "FILENAME">default.action</tt> and <tt class=
+        "FILENAME">user.action</tt>, but it will still be largely responsible
+        for your overall browsing experience.</p>
 
         <p>Again, at the start of matching, all actions are disabled, so
         there is no need to disable any actions here. (Remember: a
@@ -4407,7 +4776,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
         this long line has been made more readable by splitting it into
         multiple lines with line continuation.</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4429,7 +4798,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
       </div>
 
       <div class="SECT3">
-        <h3 class="SECT3"><a name="AEN4811" id="AEN4811">8.7.2.
+        <h3 class="SECT3"><a name="DEFAULT-ACTION" id="DEFAULT-ACTION">8.7.2.
         default.action</a></h3>
 
         <p>If you aren't a developer, there's no need for you to edit the
@@ -4446,7 +4815,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
         use that prevents older <span class="APPLICATION">Privoxy</span>
         versions from reading the file:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4465,7 +4834,7 @@ for-privoxy-version=3.0.11
         "actions-file.html#ALIASES">chapter on aliases</a>, that also
         explains why and how aliases are used:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4508,7 +4877,7 @@ for-privoxy-version=3.0.11
         pre-defined <tt class="LITERAL">fragile</tt> alias instead of stating
         the list of actions explicitly:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4531,7 +4900,7 @@ mail.google.com
         cookies to log in, and pop-up windows for shopping carts or item
         details. Again, we'll use a pre-defined alias:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4553,7 +4922,7 @@ mail.google.com
         "FILENAME">match-all.action</tt>, breaks some sites. So disable it
         for popular sites where we know it misbehaves:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4571,17 +4940,17 @@ edit.*.yahoo.com
 
         <p>It is important that <span class="APPLICATION">Privoxy</span>
         knows which URLs belong to images, so that <span class=
-        "emphasis EMPHASIS c2">if</span> they are to be blocked, a substitute
-        image can be sent, rather than an HTML page. Contacting the remote
-        site to find out is not an option, since it would destroy the loading
-        time advantage of banner blocking, and it would feed the advertisers
-        information about you. We can mark any URL as an image with the
-        <tt class="LITERAL"><a href=
+        "emphasis"><i class="EMPHASIS">if</i></span> they are to be blocked,
+        a substitute image can be sent, rather than an HTML page. Contacting
+        the remote site to find out is not an option, since it would destroy
+        the loading time advantage of banner blocking, and it would feed the
+        advertisers information about you. We can mark any URL as an image
+        with the <tt class="LITERAL"><a href=
         "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> action,
         and marking all URLs that end in a known image file extension is a
         good start:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4602,9 +4971,9 @@ edit.*.yahoo.com
         <p>And then there are known banner sources. They often use scripts to
         generate the banners, so it won't be visible from the URL that the
         request is for an image. Hence we block them <span class=
-        "emphasis EMPHASIS c2">and</span> mark them as images in one go, with
-        the help of our <tt class="LITERAL">+block-as-image</tt> alias
-        defined above. (We could of course just as well use <tt class=
+        "emphasis"><i class="EMPHASIS">and</i></span> mark them as images in
+        one go, with the help of our <tt class="LITERAL">+block-as-image</tt>
+        alias defined above. (We could of course just as well use <tt class=
         "LITERAL">+<a href="actions-file.html#BLOCK">block</a> +<a href=
         "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> here.)
         Remember that the type of the replacement image is chosen by the
@@ -4615,7 +4984,7 @@ edit.*.yahoo.com
         "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a>{pattern}</tt>
         action before, it still applies and needn't be repeated:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4652,7 +5021,7 @@ bs*.gsanet.com
         comes a list of individual patterns for specific sites, which is
         omitted here to keep the example short:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4679,20 +5048,20 @@ count*.
         </table>
 
         <p>It's quite remarkable how many advertisers actually call their
-        banner servers ads.<tt class="REPLACEABLE c5">company</tt>.com, or
-        call the directory in which the banners are stored simply
+        banner servers ads.<tt class="REPLACEABLE"><i>company</i></tt>.com,
+        or call the directory in which the banners are stored simply
         <span class="QUOTE">"banners"</span>. So the above generic patterns
         are surprisingly effective.</p>
 
         <p>But being very generic, they necessarily also catch URLs that we
         don't want to block. The pattern <tt class="LITERAL">.*ads.</tt> e.g.
-        catches <span class="QUOTE">"nasty-<span class=
-        "emphasis EMPHASIS c2">ads</span>.nasty-corp.com"</span> as intended,
-        but also <span class="QUOTE">"downlo<span class=
-        "emphasis EMPHASIS c2">ads</span>.sourcefroge.net"</span> or
-        <span class="QUOTE">"<span class=
-        "emphasis EMPHASIS c2">ads</span>l.some-provider.net."</span> So here
-        come some well-known exceptions to the <tt class="LITERAL">+<a href=
+        catches <span class="QUOTE">"nasty-<span class="emphasis"><i class=
+        "EMPHASIS">ads</i></span>.nasty-corp.com"</span> as intended, but
+        also <span class="QUOTE">"downlo<span class="emphasis"><i class=
+        "EMPHASIS">ads</i></span>.sourcefroge.net"</span> or <span class=
+        "QUOTE">"<span class="emphasis"><i class=
+        "EMPHASIS">ads</i></span>l.some-provider.net."</span> So here come
+        some well-known exceptions to the <tt class="LITERAL">+<a href=
         "actions-file.html#BLOCK">block</a></tt> section above.</p>
 
         <p>Note that these are exceptions to exceptions from the default!
@@ -4706,12 +5075,12 @@ count*.
         "LITERAL"><a href="actions-file.html#BLOCK">+block</a></tt> applies.
         And now, it'll match <tt class="LITERAL">.*loads.</tt>, where
         <tt class="LITERAL"><a href="actions-file.html#BLOCK">-block</a></tt>
-        applies, so (unless it matches <span class=
-        "emphasis EMPHASIS c2">again</span> further down) it ends up with no
+        applies, so (unless it matches <span class="emphasis"><i class=
+        "EMPHASIS">again</i></span> further down) it ends up with no
         <tt class="LITERAL"><a href="actions-file.html#BLOCK">block</a></tt>
         action applying.</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4746,10 +5115,10 @@ www.ugu.com/sui/ugu/adv
         exception for our friends at sourceforge.net, and all paths with
         <span class="QUOTE">"cvs"</span> in them. Note that <tt class=
         "LITERAL">-<a href="actions-file.html#FILTER">filter</a></tt>
-        disables <span class="emphasis EMPHASIS c2">all</span> filters in one
-        fell swoop!</p>
+        disables <span class="emphasis"><i class="EMPHASIS">all</i></span>
+        filters in one fell swoop!</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4772,7 +5141,7 @@ wiki.
       </div>
 
       <div class="SECT3">
-        <h3 class="SECT3"><a name="AEN4924" id="AEN4924">8.7.3.
+        <h3 class="SECT3"><a name="USER-ACTION" id="USER-ACTION">8.7.3.
         user.action</a></h3>
 
         <p>So far we are painting with a broad brush by setting general
@@ -4784,15 +5153,16 @@ wiki.
         is parsed after all other actions files and hence has the last word,
         over-riding any previously defined actions. <tt class=
         "FILENAME">user.action</tt> is also a <span class=
-        "emphasis EMPHASIS c2">safe</span> place for your personal settings,
-        since <tt class="FILENAME">default.action</tt> is actively maintained
-        by the <span class="APPLICATION">Privoxy</span> developers and you'll
-        probably want to install updated versions from time to time.</p>
+        "emphasis"><i class="EMPHASIS">safe</i></span> place for your
+        personal settings, since <tt class="FILENAME">default.action</tt> is
+        actively maintained by the <span class="APPLICATION">Privoxy</span>
+        developers and you'll probably want to install updated versions from
+        time to time.</p>
 
         <p>So let's look at a few examples of things that one might typically
         do in <tt class="FILENAME">user.action</tt>:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4807,7 +5177,7 @@ wiki.
         from <tt class="FILENAME">default.action</tt>, unless you repeat them
         here:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4852,7 +5222,7 @@ handle-as-text = -<a href="actions-file.html#FILTER">filter</a> +-<a href=
         that, i.e. it disables crunching of cookies in any direction, and the
         processing of cookies to make them only temporary.</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4869,7 +5239,7 @@ handle-as-text = -<a href="actions-file.html#FILTER">filter</a> +-<a href=
         <p>Your bank is allergic to some filter, but you don't know which, so
         you disable them all:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4883,7 +5253,7 @@ handle-as-text = -<a href="actions-file.html#FILTER">filter</a> +-<a href=
         <p>Some file types you may not want to filter for various
         reasons:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4912,7 +5282,7 @@ stupid-server.example.com/
         in <tt class="LITERAL">.gif</tt> will be tagged as images by the
         general rules as set in default.action anyway:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4934,7 +5304,7 @@ stupid-server.example.com/
         as a <span class="QUOTE">"broken image"</span> icon by the browser.
         Use cautiously.</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4953,14 +5323,14 @@ stupid-server.example.com/
         culprit, and you were again too lazy to give <a href=
         "contact.html">feedback</a>, so you just used the <tt class=
         "LITERAL">fragile</tt> alias on the site, and -- <span class=
-        "emphasis EMPHASIS c2">whoa!</span> -- it worked. The <tt class=
-        "LITERAL">fragile</tt> aliases disables those actions that are most
-        likely to break a site. Also, good for testing purposes to see if it
-        is <span class="APPLICATION">Privoxy</span> that is causing the
-        problem or not. We later find other regular sites that misbehave, and
-        add those to our personalized list of troublemakers:</p>
-
-        <table class="c4" border="0" width="100%">
+        "emphasis"><i class="EMPHASIS">whoa!</i></span> -- it worked. The
+        <tt class="LITERAL">fragile</tt> aliases disables those actions that
+        are most likely to break a site. Also, good for testing purposes to
+        see if it is <span class="APPLICATION">Privoxy</span> that is causing
+        the problem or not. We later find other regular sites that misbehave,
+        and add those to our personalized list of troublemakers:</p>
+
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -4978,7 +5348,7 @@ stupid-server.example.com/
         distributed actions file. So you'd like to turn it on in your
         private, update-safe config, once and for all:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -5001,7 +5371,7 @@ stupid-server.example.com/
         to survive. So you might want to specifically allow banners for those
         sites that you feel provide value to you:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -5028,7 +5398,7 @@ stupid-server.example.com/
         a download type dialog. In my case, I want to look at the shell
         script, and then I can save it should I choose to.</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -5044,11 +5414,11 @@ stupid-server.example.com/
         <tt class="FILENAME">default.action</tt>. Some actions are safe to
         have their default policies set here though. So let's set a default
         policy to have a <span class="QUOTE">"blank"</span> image as opposed
-        to the checkerboard pattern for <span class=
-        "emphasis EMPHASIS c2">ALL</span> sites. <span class=
-        "QUOTE">"/"</span> of course matches all URL paths and patterns:</p>
+        to the checkerboard pattern for <span class="emphasis"><i class=
+        "EMPHASIS">ALL</i></span> sites. <span class="QUOTE">"/"</span> of
+        course matches all URL paths and patterns:</p>
 
-        <table class="c4" border="0" width="100%">
+        <table border="0" bgcolor="#E0E0E0" width="100%">
           <tr>
             <td>
               <pre class="SCREEN">
@@ -5064,7 +5434,7 @@ stupid-server.example.com/
   </div>
 
   <div class="NAVFOOTER">
-    <hr class="c1" width="100%">
+    <hr align="left" width="100%">
 
     <table summary="Footer navigation table" width="100%" border="0"
     cellpadding="0" cellspacing="0">