Bump SMGL entities for 3.0.33 stable
[privoxy.git] / doc / source / user-manual.sgml
index 0cb4a26..3927c4b 100644 (file)
 <!entity copyright SYSTEM "copyright.sgml">
 <!entity license SYSTEM "license.sgml">
 <!entity GPLv2 SYSTEM "../../LICENSE">
 <!entity copyright SYSTEM "copyright.sgml">
 <!entity license SYSTEM "license.sgml">
 <!entity GPLv2 SYSTEM "../../LICENSE">
+<!entity GPLv3 SYSTEM "../../LICENSE.GPLv3">
 <!entity p-authors SYSTEM "p-authors.sgml">
 <!entity config SYSTEM "p-config.sgml">
 <!entity changelog SYSTEM "changelog.sgml">
 <!entity p-authors SYSTEM "p-authors.sgml">
 <!entity config SYSTEM "p-config.sgml">
 <!entity changelog SYSTEM "changelog.sgml">
-<!entity p-version "3.0.29">
-<!entity p-status "UNRELEASED">
+<!entity p-version "3.0.33">
+<!entity p-status "stable">
 <!entity % p-authors-formal "INCLUDE"> <!-- include additional text, etc  -->
 <!entity % p-authors-formal "INCLUDE"> <!-- include additional text, etc  -->
-<!entity % p-not-stable "INCLUDE">
-<!entity % p-stable "IGNORE">
+<!entity % p-not-stable "IGNORE">
+<!entity % p-stable "INCLUDE">
 <!entity % p-text "IGNORE">        <!-- define we are not a text only doc -->
 <!entity % p-doc "INCLUDE">        <!-- and we are a formal doc           -->
 <!entity % p-readme "IGNORE">
 <!entity % p-text "IGNORE">        <!-- define we are not a text only doc -->
 <!entity % p-doc "INCLUDE">        <!-- and we are a formal doc           -->
 <!entity % p-readme "IGNORE">
@@ -34,7 +35,7 @@
 
  Purpose     :  user manual
 
 
  Purpose     :  user manual
 
- Copyright (C) 2001-2019 Privoxy Developers https://www.privoxy.org/
+ Copyright (C) 2001-2021 Privoxy Developers https://www.privoxy.org/
  See LICENSE.
 
  ========================================================================
  See LICENSE.
 
  ========================================================================
@@ -53,7 +54,7 @@
  <subscript>
 <!-- Completely the wrong markup, but very little is allowed  -->
 <!-- in this part of an article. FIXME -->
  <subscript>
 <!-- Completely the wrong markup, but very little is allowed  -->
 <!-- in this part of an article. FIXME -->
- <link linkend="copyright">Copyright</link> &my-copy; 2001-2019 by
+ <link linkend="copyright">Copyright</link> &my-copy; 2001-2021 by
  <ulink url="https://www.privoxy.org/">Privoxy Developers</ulink>
  </subscript>
 </pubdate>
  <ulink url="https://www.privoxy.org/">Privoxy Developers</ulink>
  </subscript>
 </pubdate>
@@ -132,7 +133,7 @@ Hal.
 <para>
  In addition to the core
  features of ad blocking and
 <para>
  In addition to the core
  features of ad blocking and
- <ulink url="http://en.wikipedia.org/wiki/Browser_cookie">cookie</ulink> management,
+ <ulink url="https://en.wikipedia.org/wiki/Browser_cookie">cookie</ulink> management,
  <application>Privoxy</application> provides many supplemental
  features<![%p-not-stable;[, some of them currently under development]]>,
  that give the end-user more control, more privacy and more freedom:
  <application>Privoxy</application> provides many supplemental
  features<![%p-not-stable;[, some of them currently under development]]>,
  that give the end-user more control, more privacy and more freedom:
@@ -226,31 +227,6 @@ How to install the binary packages depends on your operating system:
 
 </sect3>
 
 
 </sect3>
 
-<!--   ~~~~~       New section      ~~~~~     -->
-<sect3 id="installation-os2"><title>OS/2</title>
-
-<para>
- First, make sure that no previous installations of
- <application>Junkbuster</application> and / or
- <application>Privoxy</application> are left on your
- system. Check that no <application>Junkbuster</application>
- or <application>Privoxy</application> objects are in
- your startup folder.
-</para>
-
-<para>
- Then, just double-click the WarpIN self-installing archive, which will
- guide you through the installation process. A shadow of the
- <application>Privoxy</application> executable will be placed in your
- startup folder so it will start automatically whenever OS/2 starts.
-</para>
-
-<para>
- The directory you choose to install <application>Privoxy</application>
- into will contain all of the configuration files.
-</para>
-</sect3>
-
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 id="installation-mac"><title>Mac OS X</title>
 <para>
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 id="installation-mac"><title>Mac OS X</title>
 <para>
@@ -366,42 +342,42 @@ How to install the binary packages depends on your operating system:
         Run the setup program and from View / Category select:
       </para>
       <screen>
         Run the setup program and from View / Category select:
       </para>
       <screen>
-  Devel
-    autoconf 2.5
-    automake 1.15
-    binutils
-    cmake
-    gcc-core
-    gcc-g++
-    git
-    make
-    mingw64-i686-gcc-core
-    mingw64-i686-zlib
-  Editors
-    vim
-  Libs
-    libxslt: GNOME XSLT library (runtime)
-  Net
-    curl
-    openssh
-  Text
-    docbook-dssl
-    docbook-sgml31
-    docbook-utils
-    openjade
-  Utils
-    gnupg
-  Web
-    w3m
+Devel
+  autoconf 2.5
+  automake 1.15
+  binutils
+  cmake
+  gcc-core
+  gcc-g++
+  git
+  make
+  mingw64-i686-gcc-core
+  mingw64-i686-zlib
+Editors
+  vim
+Libs
+  libxslt: GNOME XSLT library (runtime)
+Net
+  curl
+  openssh
+Text
+  docbook-dssl
+  docbook-sgml31
+  docbook-utils
+  openjade
+Utils
+  gnupg
+Web
+  w3m
 </screen>
 
       <para>
         If you haven't already downloaded the Privoxy source code, get it now:
       </para>
       <screen>
 </screen>
 
       <para>
         If you haven't already downloaded the Privoxy source code, get it now:
       </para>
       <screen>
-  mkdir &lt;root-dir>
-  cd &lt;root-dir>
-  git clone https://www.privoxy.org/git/privoxy.git
+mkdir &lt;root-dir>
+cd &lt;root-dir>
+git clone https://www.privoxy.org/git/privoxy.git
 </screen>
 
       <para>
 </screen>
 
       <para>
@@ -411,10 +387,10 @@ How to install the binary packages depends on your operating system:
         unzip into &lt;root-dir> and build the software:
       </para>
       <screen>
         unzip into &lt;root-dir> and build the software:
       </para>
       <screen>
-  cd &lt;root-dir>
-  cd tidy-html5-x.y.z/build/cmake
-  cmake ../.. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIB:BOOL=OFF -DCMAKE_INSTALL_PREFIX=/usr/local
-  make && make install
+cd &lt;root-dir>
+cd tidy-html5-x.y.z/build/cmake
+cmake ../.. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIB:BOOL=OFF -DCMAKE_INSTALL_PREFIX=/usr/local
+make && make install
 </screen>
 
       <para>
 </screen>
 
       <para>
@@ -422,14 +398,93 @@ How to install the binary packages depends on your operating system:
             <!-- FIXME:  which version(s) are known to work? -->
         <ulink url="https://sourceforge.net/projects/nsis/files/NSIS%203/">
                     https://sourceforge.net/projects/nsis/files/NSIS%203/</ulink>
             <!-- FIXME:  which version(s) are known to work? -->
         <ulink url="https://sourceforge.net/projects/nsis/files/NSIS%203/">
                     https://sourceforge.net/projects/nsis/files/NSIS%203/</ulink>
-        and extract the NSIS directory to <literal>privoxy/windows</literal>.
-        Then edit the windows/GNUmakefile to set the location of the NSIS executable - eg:
+        and extract the NSIS directory to <literal>/&lt;root-dir>/nsis/</literal>.
+        Then edit the <filename>windows/GNUmakefile</filename> to set the location
+        of the NSIS executable - eg:
       </para>
       <screen>
 # Path to NSIS
       </para>
       <screen>
 # Path to NSIS
-MAKENSIS = ./nsis/makensis.exe
+MAKENSIS = /&lt;root-dir>/nsis/makensis.exe
 </screen>
 
 </screen>
 
+      <para>
+        Get the latest 8.x PCRE code from
+        <ulink url="https://ftp.pcre.org/pub/pcre/">PCRE
+                    https://ftp.pcre.org/pub/pcre/</ulink>
+        and build the static PCRE libraries with
+
+        <screen>
+export CFLAGS="-O2 -fstack-protector-strong -D_FORTIFY_SOURCE=2"
+export LDFLAGS="-fstack-protector-strong"
+export CPPFLAGS="-DPCRE_STATIC"
+
+./configure  --host=i686-w64-mingw32 \
+             --prefix=/usr/local/i686-w64-mingw32 \
+             --enable-utf  --enable-unicode-properties \
+             --enable-jit \
+             --enable-newline-is-anycrlf \
+             --enable-pcre16 \
+             --enable-pcre32 \
+             --disable-pcregrep-libbz2 \
+             --disable-pcregrep-libz \
+             --disable-pcretest-libreadline \
+             --disable-stack-for-recursion  \
+             --enable-static --disable-shared \
+  &&  make
+</screen>
+      </para>
+
+
+      <para>
+        If you want to be able to have Privoxy do TLS Inspection, get the latest
+        2.16.x MBED-TLS library source code from
+        <ulink url="https://github.com/ARMmbed/mbedtls/tags">
+                    https://github.com/ARMmbed/mbedtls/tags</ulink>,
+        extract the tar file into <literal>&lt;root-dir&gt;</literal>
+        and build the static libraries with
+        <programlisting>
+export WINDOWS_BUILD=1
+#  build for a Windows platform
+
+unset DEBUG
+
+export CC=i686-w64-mingw32-gcc
+export LD=i686-w64-mingw32-gcc
+export CFLAGS="-O2 -fstack-protector-strong -D_FORTIFY_SOURCE=2"
+export LDFLAGS="${LDFLAGS} -fstack-protector-strong"
+
+make lib
+#  build the libraries
+</programlisting>
+      </para>
+
+
+      <para>
+        Get the brotli library from
+        <ulink url="https://github.com/google/brotli/releases">
+                    https://github.com/google/brotli/releases</ulink>
+        and build the static libraries with
+        <programlisting>
+./bootstrap
+#  to create the GNU autotools files
+
+autoconf
+
+export CFLAGS="-O2 -fstack-protector-strong -D_FORTIFY_SOURCE=2"
+export LDFLAGS="${LDFLAGS} -fstack-protector-strong"
+
+./configure  --host=i686-w64-mingw32 \
+             --prefix=/usr/local/i686-w64-mingw32 \
+             --enable-static   \
+             --disable-shared  \
+             --with-gnu-ld     \
+             --disable-silent-rules \
+  && make
+</programlisting>
+      </para>
+
+
+
       </sect4>
 
       <sect4 id="WINBUILD-BUILD"><title>Build</title>
       </sect4>
 
       <sect4 id="WINBUILD-BUILD"><title>Build</title>
@@ -438,8 +493,8 @@ MAKENSIS = ./nsis/makensis.exe
         To build just the Privoxy executable and not the whole installation package, do:
       </para>
       <programlisting>
         To build just the Privoxy executable and not the whole installation package, do:
       </para>
       <programlisting>
-  cd &lt;root-dir>/privoxy
-  ./windows/MYconfigure && make
+cd &lt;root-dir>/privoxy
+./windows/MYconfigure && make
 </programlisting>
 
       <para>
 </programlisting>
 
       <para>
@@ -447,10 +502,10 @@ MAKENSIS = ./nsis/makensis.exe
         for building software, so the process is:
       </para>
       <programlisting>
         for building software, so the process is:
       </para>
       <programlisting>
-  $ autoheader              # creates config.h.in
-  $ autoconf                # uses config.h.in to create the configure shell script
-  $ ./configure [options]   # creates GNUmakefile
-  $ make        [options]   # builds the program
+autoheader              # creates config.h.in
+autoconf                # uses config.h.in to create the configure shell script
+./configure [options]   # creates GNUmakefile
+make        [options]   # builds the program
 </programlisting>
 
       <para>
 </programlisting>
 
       <para>
@@ -463,7 +518,8 @@ MAKENSIS = ./nsis/makensis.exe
   --enable-zlib
   --enable-static-linking
   --disable-pthread
   --enable-zlib
   --enable-static-linking
   --disable-pthread
-  --disable-dynamic-pcre
+  --with-brotli
+  --with-mbedtls
 </literallayout>
 
       <para>
 </literallayout>
 
       <para>
@@ -472,11 +528,11 @@ MAKENSIS = ./nsis/makensis.exe
       </para>
 
       <programlisting>
       </para>
 
       <programlisting>
-  $ export CFLAGS="-O2"              # set gcc optimization level
-  $ export LDFLAGS="-Wl,--nxcompat"  # Enable DEP
-  $ ./configure --host=i686-w64-mingw32 --enable-mingw32  --enable-zlib \
-  >             --enable-static-linking --disable-pthread --disable-dynamic-pcre
-  $ make                             # build Privoxy
+$ export CFLAGS="-O2"              # set gcc optimization level
+$ export LDFLAGS="-Wl,--nxcompat"  # Enable DEP
+$ ./configure --host=i686-w64-mingw32 --enable-mingw32  --enable-zlib \
+>             --enable-static-linking --disable-pthread
+$ make                             # build Privoxy
 </programlisting>
 
       <para>
 </programlisting>
 
       <para>
@@ -616,8 +672,9 @@ MAKENSIS = ./nsis/makensis.exe
     use, filtering, you will need to force compression off. Example:
    </para>
  <screen>
     use, filtering, you will need to force compression off. Example:
    </para>
  <screen>
-  { +<link linkend="filter">filter</link>{google}  +<link linkend="prevent-compression">prevent-compression</link> }
-   .google.</screen>
+{ +<link linkend="filter">filter</link>{google}  +<link linkend="prevent-compression">prevent-compression</link> }
+.google.
+</screen>
    <para>
     Or if you use a number of filters, or filter many sites, you may just want
     to turn off compression for all sites in
    <para>
     Or if you use a number of filters, or filter many sites, you may just want
     to turn off compression for all sites in
@@ -683,7 +740,7 @@ MAKENSIS = ./nsis/makensis.exe
  <listitem>
   <para>
    Set your browser to use <application>Privoxy</application> as HTTP and
  <listitem>
   <para>
    Set your browser to use <application>Privoxy</application> as HTTP and
-   HTTPS (SSL)  <ulink url="http://en.wikipedia.org/wiki/Proxy_server">proxy</ulink>
+   HTTPS (SSL)  <ulink url="https://en.wikipedia.org/wiki/Proxy_server">proxy</ulink>
    by setting the proxy configuration for address of
    <literal>127.0.0.1</literal> and port <literal>8118</literal>.
    <emphasis>DO NOT</emphasis> activate proxying for <literal>FTP</literal> or
    by setting the proxy configuration for address of
    <literal>127.0.0.1</literal> and port <literal>8118</literal>.
    <emphasis>DO NOT</emphasis> activate proxying for <literal>FTP</literal> or
@@ -696,7 +753,7 @@ MAKENSIS = ./nsis/makensis.exe
   <para>
     Flush your browser's disk and memory caches, to remove any cached ad images.
     If using <application>Privoxy</application> to manage
   <para>
     Flush your browser's disk and memory caches, to remove any cached ad images.
     If using <application>Privoxy</application> to manage
-    <ulink url="http://en.wikipedia.org/wiki/Browser_cookie">cookies</ulink>,
+    <ulink url="https://en.wikipedia.org/wiki/Browser_cookie">cookies</ulink>,
     you should remove any currently stored cookies too.
   </para>
  </listitem>
     you should remove any currently stored cookies too.
   </para>
  </listitem>
@@ -1049,7 +1106,7 @@ MAKENSIS = ./nsis/makensis.exe
  Before launching <application>Privoxy</application> for the first time, you
  will want to configure your browser(s) to use
  <application>Privoxy</application> as a HTTP and HTTPS (SSL)
  Before launching <application>Privoxy</application> for the first time, you
  will want to configure your browser(s) to use
  <application>Privoxy</application> as a HTTP and HTTPS (SSL)
- <ulink url="http://en.wikipedia.org/wiki/Proxy_server">proxy</ulink>. The default is
+ <ulink url="https://en.wikipedia.org/wiki/Proxy_server">proxy</ulink>. The default is
  127.0.0.1 (or localhost) for the proxy address, and port 8118 (earlier versions
  used port 8000). This is the one configuration step <emphasis>that must be done
 </emphasis>!
  127.0.0.1 (or localhost) for the proxy address, and port 8118 (earlier versions
  used port 8000). This is the one configuration step <emphasis>that must be done
 </emphasis>!
@@ -1061,13 +1118,13 @@ MAKENSIS = ./nsis/makensis.exe
 
  <!-- image of Mozilla Proxy configuration -->
   <figure pgwide="0" float="0"><title>Proxy Configuration Showing
 
  <!-- image of Mozilla Proxy configuration -->
   <figure pgwide="0" float="0"><title>Proxy Configuration Showing
-  Mozilla/Netscape HTTP and HTTPS (SSL) Settings</title>
+  Mozilla Firefox HTTP and HTTPS (SSL) Settings</title>
    <mediaobject>
      <imageobject>
       <imagedata  fileref="proxy_setup.jpg" format="jpg">
        </imageobject>
        <textobject>
    <mediaobject>
      <imageobject>
       <imagedata  fileref="proxy_setup.jpg" format="jpg">
        </imageobject>
        <textobject>
-        <phrase>[ Screenshot of Mozilla Proxy Configuration ]</phrase>
+        <phrase>[ Screenshot of Mozilla Firefox Proxy Configuration ]</phrase>
       </textobject>
    </mediaobject>
   </figure>
       </textobject>
    </mediaobject>
   </figure>
@@ -1078,7 +1135,7 @@ MAKENSIS = ./nsis/makensis.exe
 </para>
 
 <literallayout>
 </para>
 
 <literallayout>
- <guibutton>Tools</guibutton> -> <guibutton>Options</guibutton> ->  <guibutton>Advanced</guibutton> -> <guibutton>Network</guibutton> -><guibutton>Connection</guibutton> -> <guibutton>Settings</guibutton>
+ <guibutton>Edit</guibutton> -> <guibutton>Preferences</guibutton> ->  <guibutton>Network Settings</guibutton> -> <guibutton>Settings</guibutton>
 </literallayout>
 
 <para>
 </literallayout>
 
 <para>
@@ -1135,7 +1192,7 @@ MAKENSIS = ./nsis/makensis.exe
 <para>
  After doing this, flush your browser's disk and memory caches to force a
  re-reading of all pages and to get rid of any ads that may be cached. Remove
 <para>
  After doing this, flush your browser's disk and memory caches to force a
  re-reading of all pages and to get rid of any ads that may be cached. Remove
- any <ulink url="http://en.wikipedia.org/wiki/Browser_cookie">cookies</ulink>,
+ any <ulink url="https://en.wikipedia.org/wiki/Browser_cookie">cookies</ulink>,
  if you want <application>Privoxy</application> to manage that. You are now
  ready to start enjoying the benefits of using
  <application>Privoxy</application>!
  if you want <application>Privoxy</application> to manage that. You are now
  ready to start enjoying the benefits of using
  <application>Privoxy</application>!
@@ -1158,7 +1215,7 @@ MAKENSIS = ./nsis/makensis.exe
  file.
 </para>
  <screen>
  file.
 </para>
  <screen>
- # /etc/init.d/privoxy start
+# /etc/init.d/privoxy start
 </screen>
 </sect2>
 
 </screen>
 </sect2>
 
@@ -1179,7 +1236,7 @@ MAKENSIS = ./nsis/makensis.exe
  To start <application>Privoxy</application> manually, run:
 </para>
  <screen>
  To start <application>Privoxy</application> manually, run:
 </para>
  <screen>
- # service privoxy onestart
+# service privoxy onestart
 </screen>
 </sect2>
 
 </screen>
 </sect2>
 
@@ -1207,7 +1264,7 @@ Click on the &my-app; Icon to start <application>Privoxy</application>. If no co
 Example Unix startup command:
 </para>
  <screen>
 Example Unix startup command:
 </para>
  <screen>
- # /usr/sbin/privoxy --user privoxy /etc/privoxy/config
+# /usr/sbin/privoxy --user privoxy /etc/privoxy/config
 </screen>
 <para>
  Note that if you installed <application>Privoxy</application> through
 </screen>
 <para>
  Note that if you installed <application>Privoxy</application> through
@@ -1217,16 +1274,6 @@ Example Unix startup command:
 </para>
 </sect2>
 
 </para>
 </sect2>
 
-<sect2 id="start-os2">
-<title>OS/2</title>
-<para>
- During installation, <application>Privoxy</application> is configured to
- start automatically when the system restarts. You can start it manually by
- double-clicking on the <application>Privoxy</application> icon in the
- <application>Privoxy</application> folder.
-</para>
-</sect2>
-
 <sect2 id="start-macosx">
 <title>Mac OS X</title>
 <para>
 <sect2 id="start-macosx">
 <title>Mac OS X</title>
 <para>
@@ -1517,7 +1564,7 @@ for details.
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/show-status">View & change the current configuration</ulink>
  </member>
  <member>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/show-status">View & change the current configuration</ulink>
  </member>
  <member>
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/client-tags">View or toggle the tags that can be set based on the clients address</ulink>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/client-tags">View or toggle the tags that can be set based on the client's address</ulink>
  </member>
  <member>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/show-request">View the request headers.</ulink>
  </member>
  <member>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/show-request">View the request headers.</ulink>
@@ -1576,7 +1623,7 @@ for details.
 <title>Configuration Files Overview</title>
 <para>
  For Unix, *BSD and GNU/Linux, all configuration files are located in
 <title>Configuration Files Overview</title>
 <para>
  For Unix, *BSD and GNU/Linux, all configuration files are located in
- <filename>/etc/privoxy/</filename> by default. For MS Windows and OS/2
+ <filename>/etc/privoxy/</filename> by default. For MS Windows
  these are all in the same directory as the
  <application>Privoxy</application> executable. <![%p-not-stable;[ The name
  and number of configuration files has changed from previous versions, and is
  these are all in the same directory as the
  <application>Privoxy</application> executable. <![%p-not-stable;[ The name
  and number of configuration files has changed from previous versions, and is
@@ -1594,7 +1641,7 @@ for details.
   <listitem>
    <para>
      The <link linkend="config">main configuration file</link> is named <filename>config</filename>
   <listitem>
    <para>
      The <link linkend="config">main configuration file</link> is named <filename>config</filename>
-     on GNU/Linux, Unix, BSD, and OS/2, and <filename>config.txt</filename>
+     on GNU/Linux, Unix, BSD, and <filename>config.txt</filename>
      on Windows. This is a required file.
    </para>
   </listitem>
      on Windows. This is a required file.
    </para>
   </listitem>
@@ -1793,7 +1840,7 @@ for details.
     The default profiles, and their associated actions, as pre-defined in
     <filename>default.action</filename> are:
    </para>
     The default profiles, and their associated actions, as pre-defined in
     <filename>default.action</filename> are:
    </para>
-    <table frame=all><title>Default Configurations</title>
+    <table frame=all id="default-configurations"><title>Default Configurations</title>
     <tgroup cols=4 align=left colsep=1 rowsep=1>
     <colspec colname=c1>
     <colspec colname=c2>
     <tgroup cols=4 align=left colsep=1 rowsep=1>
     <colspec colname=c1>
     <colspec colname=c2>
@@ -2036,12 +2083,13 @@ for details.
  might look like:
 </para>
 
  might look like:
 </para>
 
- <screen>
-  { +<literal>handle-as-image</literal>  +<literal>block{Banner ads.}</literal> }
-  # Block these as if they were images. Send no block page.
-   banners.example.com
-   media.example.com/.*banners
-   .example.com/images/ads/</screen>
+<screen>
+{ +<literal>handle-as-image</literal>  +<literal>block{Banner ads.}</literal> }
+# Block these as if they were images. Send no block page.
+banners.example.com
+media.example.com/.*banners
+.example.com/images/ads/
+</screen>
 
 <para>
  You can trace this process for URL patterns and any given URL by visiting <ulink
 
 <para>
  You can trace this process for URL patterns and any given URL by visiting <ulink
@@ -2079,7 +2127,7 @@ for details.
  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
  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
- <ulink url="http://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
+ <ulink url="https://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
   Expressions</quote></ulink> (POSIX 1003.2).
 </para>
 <para>
   Expressions</quote></ulink> (POSIX 1003.2).
 </para>
 <para>
@@ -2241,7 +2289,7 @@ for details.
  themselves. These work similarly to shell globbing type wild-cards:
  <quote>*</quote> represents zero or more arbitrary characters (this is
  equivalent to the
  themselves. These work similarly to shell globbing type wild-cards:
  <quote>*</quote> represents zero or more arbitrary characters (this is
  equivalent to the
- <ulink url="http://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
+ <ulink url="https://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
  Expression</quote></ulink> based syntax of <quote>.*</quote>),
  <quote>?</quote>  represents any single character (this is equivalent to the
  regular expression syntax of a simple <quote>.</quote>), and you can define
  Expression</quote></ulink> based syntax of <quote>.*</quote>),
  <quote>?</quote>  represents any single character (this is equivalent to the
  regular expression syntax of a simple <quote>.</quote>), and you can define
@@ -2293,6 +2341,12 @@ for details.
  While flexible, this is not the sophistication of full regular expression based syntax.
 </para>
 
  While flexible, this is not the sophistication of full regular expression based syntax.
 </para>
 
+<para>
+ When compiled with FEATURE_PCRE_HOST_PATTERNS patterns can be prefixed with
+ <quote>PCRE-HOST-PATTERN:</quote> in which case full regular expression
+ (PCRE) can be used for the host pattern as well.
+</para>
+
 </sect3>
 
 <!--  ~  End section  ~  -->
 </sect3>
 
 <!--  ~  End section  ~  -->
@@ -2303,7 +2357,7 @@ for details.
 
 <para>
  <application>Privoxy</application> uses <quote>modern</quote> POSIX 1003.2
 
 <para>
  <application>Privoxy</application> uses <quote>modern</quote> POSIX 1003.2
-  <ulink url="http://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
+  <ulink url="https://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
   Expressions</quote></ulink> for matching the path portion (after the slash),
   and is thus more flexible.
 </para>
   Expressions</quote></ulink> for matching the path portion (after the slash),
   and is thus more flexible.
 </para>
@@ -2573,8 +2627,9 @@ example.org/blocked-example-page</screen>
    <quote>disabled</quote>. Syntax:
   </para>
    <screen>
    <quote>disabled</quote>. Syntax:
   </para>
    <screen>
-  +<replaceable class="function">name</replaceable>        # enable action <replaceable class="parameter">name</replaceable>
-  -<replaceable class="function">name</replaceable>        # disable action <replaceable class="parameter">name</replaceable></screen>
++<replaceable class="function">name</replaceable>        # enable action <replaceable class="parameter">name</replaceable>
+-<replaceable class="function">name</replaceable>        # disable action <replaceable class="parameter">name</replaceable>
+</screen>
   <para>
    Example: <literal>+handle-as-image</literal>
   </para>
   <para>
    Example: <literal>+handle-as-image</literal>
   </para>
@@ -2586,10 +2641,11 @@ example.org/blocked-example-page</screen>
    Parameterized, where some value is required in order to enable this type of action.
    Syntax:
   </para>
    Parameterized, where some value is required in order to enable this type of action.
    Syntax:
   </para>
-   <screen>
-  +<replaceable class="function">name</replaceable>{<replaceable class="parameter">param</replaceable>}  # enable action and set parameter to <replaceable class="parameter">param</replaceable>,
-               # overwriting parameter from previous match if necessary
-  -<replaceable class="function">name</replaceable>         # disable action. The parameter can be omitted</screen>
+  <screen>
++<replaceable class="function">name</replaceable>{<replaceable class="parameter">param</replaceable>}  # enable action and set parameter to <replaceable class="parameter">param</replaceable>,
+             # overwriting parameter from previous match if necessary
+-<replaceable class="function">name</replaceable>         # disable action. The parameter can be omitted
+</screen>
   <para>
    Note that if the URL matches multiple positive forms of a parameterized action,
    the last match wins, i.e. the params from earlier matches are simply ignored.
   <para>
    Note that if the URL matches multiple positive forms of a parameterized action,
    the last match wins, i.e. the params from earlier matches are simply ignored.
@@ -2608,11 +2664,12 @@ example.org/blocked-example-page</screen>
    that can be executed for the same request repeatedly, like adding multiple
    headers, or filtering through multiple filters. Syntax:
   </para>
    that can be executed for the same request repeatedly, like adding multiple
    headers, or filtering through multiple filters. Syntax:
   </para>
-   <screen>
-  +<replaceable class="function">name</replaceable>{<replaceable class="parameter">param</replaceable>}   # enable action and add <replaceable class="parameter">param</replaceable> to the list of parameters
-  -<replaceable class="function">name</replaceable>{<replaceable class="parameter">param</replaceable>}   # remove the parameter <replaceable class="parameter">param</replaceable> from the list of parameters
-                # If it was the last one left, disable the action.
-  <replaceable class="parameter">-name</replaceable>          # disable this action completely and remove all parameters from the list</screen>
+  <screen>
++<replaceable class="function">name</replaceable>{<replaceable class="parameter">param</replaceable>}   # enable action and add <replaceable class="parameter">param</replaceable> to the list of parameters
+-<replaceable class="function">name</replaceable>{<replaceable class="parameter">param</replaceable>}   # remove the parameter <replaceable class="parameter">param</replaceable> from the list of parameters
+               # If it was the last one left, disable the action.
+<replaceable class="parameter">-name</replaceable>          # disable this action completely and remove all parameters from the list
+</screen>
   <para>
    Examples: <literal>+add-header{X-Fun-Header: Some text}</literal> and
    <literal>+filter{html-annoyances}</literal>
   <para>
    Examples: <literal>+add-header{X-Fun-Header: Some text}</literal> and
    <literal>+filter{html-annoyances}</literal>
@@ -2812,18 +2869,20 @@ example.org/blocked-example-page</screen>
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-     <screen>{+block{No nasty stuff for you.}}
+     <screen>
+{+block{No nasty stuff for you.}}
 # Block and replace with "blocked" page
 # Block and replace with "blocked" page
- .nasty-stuff.example.com
+.nasty-stuff.example.com
 
 {+block{Doubleclick banners.} +handle-as-image}
 # Block and replace with image
 
 {+block{Doubleclick banners.} +handle-as-image}
 # Block and replace with image
- .ad.doubleclick.net
- .ads.r.us/banners/
+.ad.doubleclick.net
+.ads.r.us/banners/
 
 {+block{Layered ads.} +handle-as-empty-document}
 # Block and then ignore
 
 {+block{Layered ads.} +handle-as-empty-document}
 # Block and then ignore
- adserver.example.net/.*\.js$</screen>
+adserver.example.net/.*\.js$
+</screen>
   </listitem>
  </varlistentry>
 
   </listitem>
  </varlistentry>
 
@@ -2960,6 +3019,21 @@ example.org/blocked-example-page</screen>
     one. This can be used to rewrite the request destination behind the client's
     back, for example to specify a Tor exit relay for certain requests.
    </para>
     one. This can be used to rewrite the request destination behind the client's
     back, for example to specify a Tor exit relay for certain requests.
    </para>
+   <para>
+    Note that to change the destination host for
+    <link linkend="HTTPS-INSPECTION">https-inspected</link>
+    requests a protocol and host has to be added to the URI.
+   </para>
+   <para>
+    If <link linkend="HTTPS-INSPECTION">https inspection</link>
+    is enabled, the protocol can be downgraded from https to http
+    but upgrading a request from http to https is currently not
+    supported.
+   </para>
+   <para>
+    After detecting a rewrite, &my-app; does not update the actions
+    used for the request based on the new host.
+   </para>
    <para>
     Please refer to the <link linkend="filter-file">filter file chapter</link>
     to learn which client-header filters are available by default, and how to
    <para>
     Please refer to the <link linkend="filter-file">filter file chapter</link>
     to learn which client-header filters are available by default, and how to
@@ -2983,6 +3057,83 @@ example.org/blocked-example-page</screen>
 </variablelist>
 </sect3>
 
 </variablelist>
 </sect3>
 
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect3 renderas="sect4" id="client-body-filter">
+<title>client-body-filter</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Typical use:</term>
+  <listitem>
+   <para>
+   Rewrite or remove client request body.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Effect:</term>
+  <listitem>
+   <para>
+    All request bodies to which this action applies are filtered on-the-fly through
+    the specified regular expression based substitutions.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Type:</term>
+  <!-- boolean, parameterized, Multi-value -->
+  <listitem>
+   <para>Multi-value.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Parameter:</term>
+  <listitem>
+   <para>
+    The name of a client-body filter, as defined in one of the
+    <link linkend="filter-file">filter files</link>.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    Please refer to the <link linkend="filter-file">filter file chapter</link>
+    to learn how to create your own client-body filters.
+   </para>
+   <para>
+    The distribution <filename>default.filter</filename> file contains a selection of
+    client-body filters for example purposes.
+   </para>
+   <para>
+    The amount of data that can be filtered is limited by the
+    <literal><link linkend="buffer-limit">buffer-limit</link></literal>
+    option in the main <link linkend="config">config file</link>. The
+    default is 4096 KB (4 Megs). Once this limit is exceeded, the whole
+    request body is passed through unfiltered.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Example usage (section):</term>
+  <listitem>
+     <screen>
+# Remove "test" everywhere in the request body
+{+client-body-filter{remove-test}}
+/
+</screen>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect3>
+
 
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 renderas="sect4" id="client-header-tagger">
 
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 renderas="sect4" id="client-header-tagger">
@@ -3802,71 +3953,6 @@ problem-host.example.com</screen>
 </sect3>
 
 
 </sect3>
 
 
-<!--   ~~~~~       New section      ~~~~~     -->
-<sect3 renderas="sect4" id="enable-https-filtering">
-<title>enable-https-filtering</title>
-
-<variablelist>
- <varlistentry>
-  <term>Typical use:</term>
-  <listitem>
-   <para>Filter encrypted requests and responses</para>
-  </listitem>
- </varlistentry>
-
- <varlistentry>
-  <term>Effect:</term>
-  <listitem>
-   <para>
-    Encrypted requests are decrypted, filtered and forwarded encrypted.
-   </para>
-  </listitem>
- </varlistentry>
-
- <varlistentry>
-  <term>Type:</term>
-  <!-- boolean, parameterized, Multi-value -->
-  <listitem>
-   <para>Boolean.</para>
-  </listitem>
- </varlistentry>
-
- <varlistentry>
-  <term>Parameter:</term>
-  <listitem>
-   <para>
-    N/A
-   </para>
-  </listitem>
- </varlistentry>
-
-<varlistentry>
-  <term>Notes:</term>
-  <listitem>
-   <para>
-    This action allows &my-app; to filter encrypted requests and responses.
-    For this to work &my-app; has to generate a certificate and send it
-    to the client which has to accept it.
-   </para>
-   <para>
-    Before this works the directives in the
-    <literal><ulink url="config.html#TLS">TLS section</ulink></literal>
-    of the config file have to be configured.
-   </para>
-  </listitem>
- </varlistentry>
-
- <varlistentry>
-  <term>Example usage (section):</term>
-  <listitem>
-     <screen>{+enable-https-filtering}
-www.example.com</screen>
-  </listitem>
- </varlistentry>
-
-</variablelist>
-</sect3>
-
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 renderas="sect4" id="external-filter">
 <title>external-filter</title>
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 renderas="sect4" id="external-filter">
 <title>external-filter</title>
@@ -4052,7 +4138,7 @@ www.example.com</screen>
     looks for the string <quote>http://</quote>, either in plain text
     (invalid but often used) or encoded as <quote>http%3a//</quote>.
     Some sites use their own URL encoding scheme, encrypt the address
     looks for the string <quote>http://</quote>, either in plain text
     (invalid but often used) or encoded as <quote>http%3a//</quote>.
     Some sites use their own URL encoding scheme, encrypt the address
-    of the target server or replace it with a database id. In theses cases
+    of the target server or replace it with a database id. In these cases
     <literal>fast-redirects</literal> is fooled and the request reaches the
     redirection server where it probably gets logged.
    </para>
     <literal>fast-redirects</literal> is fooled and the request reaches the
     redirection server where it probably gets logged.
    </para>
@@ -4063,11 +4149,12 @@ www.example.com</screen>
   <term>Example usage:</term>
   <listitem>
      <screen>
   <term>Example usage:</term>
   <listitem>
      <screen>
- { +fast-redirects{simple-check} }
-   one.example.com
+{ +fast-redirects{simple-check} }
+one.example.com
 
 
- { +fast-redirects{check-decoded-url} }
-   another.example.com/testing</screen>
+{ +fast-redirects{check-decoded-url} }
+another.example.com/testing
+</screen>
   </listitem>
  </varlistentry>
 
   </listitem>
  </varlistentry>
 
@@ -4147,15 +4234,15 @@ www.example.com</screen>
    <para>
    <quote>Rolling your own</quote>
     filters requires a knowledge of
    <para>
    <quote>Rolling your own</quote>
     filters requires a knowledge of
-     <ulink url="http://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
+     <ulink url="https://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
      Expressions</quote></ulink> and
      Expressions</quote></ulink> and
-      <ulink url="http://en.wikipedia.org/wiki/Html"><quote>HTML</quote></ulink>.
+      <ulink url="https://en.wikipedia.org/wiki/Html"><quote>HTML</quote></ulink>.
     This is very powerful feature, and potentially very intrusive.
     Filters should be used with caution, and where an equivalent
     <quote>action</quote> is not available.
    </para>
    <para>
     This is very powerful feature, and potentially very intrusive.
     Filters should be used with caution, and where an equivalent
     <quote>action</quote> is not available.
    </para>
    <para>
-    The amount of data that can be filtered is limited to the
+    The amount of data that can be filtered is limited by the
     <literal><link linkend="buffer-limit">buffer-limit</link></literal>
     option in the main <link linkend="config">config file</link>. The
     default is 4096 KB (4 Megs). Once this limit is exceeded, the buffered
     <literal><link linkend="buffer-limit">buffer-limit</link></literal>
     option in the main <link linkend="config">config file</link>. The
     default is 4096 KB (4 Megs). Once this limit is exceeded, the buffered
@@ -4299,10 +4386,18 @@ www.example.com</screen>
     <anchor id="filter-no-ping">
    </para>
     <screen>+filter{no-ping}             # Removes non-standard ping attributes in &lt;a&gt; and &lt;area&gt; tags.</screen>
     <anchor id="filter-no-ping">
    </para>
     <screen>+filter{no-ping}             # Removes non-standard ping attributes in &lt;a&gt; and &lt;area&gt; tags.</screen>
+   <para>
+    <anchor id="filter-github">
+   </para>
+    <screen>+filter{github}              # Removes the annoying "Sign-Up" banner and the Cookie disclaimer.</screen>
    <para>
     <anchor id="filter-google">
    </para>
     <screen>+filter{google}              # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement.</screen>
    <para>
     <anchor id="filter-google">
    </para>
     <screen>+filter{google}              # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement.</screen>
+   <para>
+    <anchor id="filter-imdb">
+   </para>
+    <screen>+filter{imdb}                # Removes some ads on IMDb.</screen>
    <para>
     <anchor id="filter-yahoo">
    </para>
    <para>
     <anchor id="filter-yahoo">
    </para>
@@ -4315,6 +4410,10 @@ www.example.com</screen>
     <anchor id="filter-blogspot">
    </para>
     <screen>+filter{blogspot}            # Cleans up some Blogspot blogs. Read the fine print before using this.</screen>
     <anchor id="filter-blogspot">
    </para>
     <screen>+filter{blogspot}            # Cleans up some Blogspot blogs. Read the fine print before using this.</screen>
+   <para>
+    <anchor id="filter-sourceforge">
+   </para>
+    <screen>+filter{sourceforge}         # Reduces the amount of ads for proprietary software on SourceForge.</screen>
   </listitem>
  </varlistentry>
 </variablelist>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -4861,11 +4960,14 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-     <screen># Disarm the download link in Sourceforge's patch tracker
+     <screen>
+# Disarm the download link in Sourceforge's patch tracker
 { -filter \
 { -filter \
- +content-type-overwrite{text/plain}\
- +hide-content-disposition{block} }
- .sourceforge.net/tracker/download\.php</screen>
+  +content-type-overwrite{text/plain} \
+  +hide-content-disposition{block} \
+}
+.sourceforge.net/tracker/download\.php
+</screen>
   </listitem>
  </varlistentry>
 </variablelist>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -5197,7 +5299,7 @@ new action
      More information on known user-agent strings can be found at
      <ulink url="http://www.user-agents.org/">http://www.user-agents.org/</ulink>
      and
      More information on known user-agent strings can be found at
      <ulink url="http://www.user-agents.org/">http://www.user-agents.org/</ulink>
      and
-     <ulink url="http://en.wikipedia.org/wiki/User_agent">http://en.wikipedia.org/wiki/User_agent</ulink>.
+     <ulink url="https://en.wikipedia.org/wiki/User_agent">http://en.wikipedia.org/wiki/User_agent</ulink>.
    </para>
    </listitem>
  </varlistentry>
    </para>
    </listitem>
  </varlistentry>
@@ -5205,9 +5307,84 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-     <screen>+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}</screen>
+     <screen>+hide-user-agent{Mozilla/5.0 (X11; ElectroBSD i386; rv:78.0) Gecko/20100101 Firefox/78.0}</screen>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect3>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect3 renderas="sect4" id="https-inspection">
+<title>https-inspection</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Typical use:</term>
+  <listitem>
+   <para>Filter encrypted requests and responses</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Effect:</term>
+  <listitem>
+   <para>
+    Encrypted requests are decrypted, filtered and forwarded encrypted.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Type:</term>
+  <!-- boolean, parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Parameter:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+
+<varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    This action allows &my-app; to filter encrypted requests and responses.
+    For this to work &my-app; has to generate a certificate for the web site
+    and send it to the client which has to accept it.
+   </para>
+   <para>
+    Before this works the directives in the
+    <literal><ulink url="config.html#HTTPS-INSPECTION-DIRECTIVES">HTTPS inspection section</ulink></literal>
+    of the config file have to be configured.
+   </para>
+   <para>
+    Note that the action has to be enabled based on the CONNECT
+    request which doesn't contain a path. Enabling it based on
+    a pattern with path doesn't work as the path is only seen
+    by &my-app; if the action is already enabled.
+   </para>
+   <para>
+    This is an experimental feature.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Example usage (section):</term>
+  <listitem>
+     <screen>{+https-inspection}
+www.example.com</screen>
   </listitem>
  </varlistentry>
   </listitem>
  </varlistentry>
+
 </variablelist>
 </sect3>
 
 </variablelist>
 </sect3>
 
@@ -5255,16 +5432,19 @@ new action
   <listitem>
    <para>
     When the
   <listitem>
    <para>
     When the
-    <link linkend="ENABLE-HTTPS-FILTERING"><quote>+enable-https-filtering</quote></link>
+    <link linkend="HTTPS-INSPECTION"><quote>+https-inspection</quote></link>
     action is used &my-app; by default verifies that the remote site uses a valid
     certificate.
    </para>
    <para>
     action is used &my-app; by default verifies that the remote site uses a valid
     certificate.
    </para>
    <para>
-    If the certificate is invalid the connection is aborted.
+    If the certificate can't be validated by &my-app; the connection is aborted.
+   </para>
+   <para>
+    This action disables the certificate check so requests to sites
+    with certificates that can't be validated are allowed.
    </para>
    <para>
    </para>
    <para>
-    This action disabled the certificate check allowing requests to sites
-    with invalid certificates.
+    Note that enabling this action allows Man-in-the-middle attacks.
    </para>
    </listitem>
  </varlistentry>
    </para>
    </listitem>
  </varlistentry>
@@ -5275,7 +5455,7 @@ new action
    <screen>
     {+ignore-certificate-errors}
     www.example.org
    <screen>
     {+ignore-certificate-errors}
     www.example.org
-   </screen>
+</screen>
   </listitem>
  </varlistentry>
 </variablelist>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -5516,9 +5696,10 @@ new action
    <para>
     Note that some (rare) ill-configured sites don't handle requests for uncompressed
     documents correctly. Broken PHP applications tend to send an empty document body,
    <para>
     Note that some (rare) ill-configured sites don't handle requests for uncompressed
     documents correctly. Broken PHP applications tend to send an empty document body,
-    some IIS versions only send the beginning of the content. If you enable
-    <literal>prevent-compression</literal> per default, you might want to add
-    exceptions for those sites. See the example for how to do that.
+    some IIS versions only send the beginning of the content and some content delivery
+    networks let the connection time out.
+    If you enable <literal>prevent-compression</literal> per default, you might
+    want to add exceptions for those sites. See the example for how to do that.
    </para>
   </listitem>
  </varlistentry>
    </para>
   </listitem>
  </varlistentry>
@@ -5531,19 +5712,20 @@ new action
 #
 { +filter{tiny-textforms} +prevent-compression }
 # Match only these sites
 #
 { +filter{tiny-textforms} +prevent-compression }
 # Match only these sites
- .google.
- sourceforge.net
- sf.net
+.google.
+sourceforge.net
+sf.net
 
 # Or instead, we could set a universal default:
 #
 { +prevent-compression }
 
 # Or instead, we could set a universal default:
 #
 { +prevent-compression }
- / # Match all sites
+/ # Match all sites
 
 # Then maybe make exceptions for broken sites:
 #
 { -prevent-compression }
 
 # Then maybe make exceptions for broken sites:
 #
 { -prevent-compression }
-.compusa.com/</screen>
+.compusa.com/
+</screen>
   </listitem>
  </varlistentry>
 
   </listitem>
  </varlistentry>
 
@@ -5635,11 +5817,14 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-     <screen># Let the browser revalidate without being tracked across sessions
+     <screen>
+# Let the browser revalidate without being tracked across sessions
 { +hide-if-modified-since{-60} \
 { +hide-if-modified-since{-60} \
- +overwrite-last-modified{randomize} \
- +crunch-if-none-match}
-/</screen>
+  +overwrite-last-modified{randomize} \
+  +crunch-if-none-match \
+}
+/
+</screen>
   </listitem>
  </varlistentry>
 </variablelist>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -5730,14 +5915,15 @@ new action
  <varlistentry>
   <term>Example usages:</term>
   <listitem>
  <varlistentry>
   <term>Example usages:</term>
   <listitem>
-    <screen># Replace example.com's style sheet with another one
+    <screen>
+# Replace example.com's style sheet with another one
 { +redirect{http://localhost/css-replacements/example.com.css} }
 { +redirect{http://localhost/css-replacements/example.com.css} }
- example.com/stylesheet\.css
+example.com/stylesheet\.css
 
 # Create a short, easy to remember nickname for a favorite site
 # (relies on the browser to accept and forward invalid URLs to &my-app;)
 { +redirect{https://www.privoxy.org/user-manual/actions-file.html} }
 
 # Create a short, easy to remember nickname for a favorite site
 # (relies on the browser to accept and forward invalid URLs to &my-app;)
 { +redirect{https://www.privoxy.org/user-manual/actions-file.html} }
- a
+a
 
 # Always use the expanded view for Undeadly.org articles
 # (Note the $ at the end of the URL pattern to make sure
 
 # Always use the expanded view for Undeadly.org articles
 # (Note the $ at the end of the URL pattern to make sure
@@ -5766,6 +5952,10 @@ example.com/.*toChange=(?!bar)
 # Redirect Destination = https://www.illumos.org/issues/4974
 i[0-9][0-9][0-9][0-9]*/
 
 # Redirect Destination = https://www.illumos.org/issues/4974
 i[0-9][0-9][0-9][0-9]*/
 
+# Redirect requests for the old Tor Hidden Service of the Privoxy website to the new one
+{+redirect{s@^http://jvauzb4sb3bwlsnc.onion/@http://l3tczdiiwoo63iwxty4lhs6p7eaxop5micbn7vbliydgv63x5zrrrfyd.onion/@}}
+jvauzb4sb3bwlsnc.onion/
+
 # Redirect remote requests for this manual
 # to the local version delivered by Privoxy
 {+redirect{s@^http://www@http://config@}}
 # Redirect remote requests for this manual
 # to the local version delivered by Privoxy
 {+redirect{s@^http://www@http://config@}}
@@ -5946,6 +6136,63 @@ TAG:^image/
 </sect3>
 
 
 </sect3>
 
 
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect3 renderas="sect4" id="suppress-tag">
+<title>suppress-tag</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Typical use:</term>
+  <listitem>
+   <para>
+   Suppress client or server tag.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Effect:</term>
+  <listitem>
+   <para>
+    Server or client tags to which this action applies are not added to the request,
+    thus making all actions that are specific to these request tags inactive.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Type:</term>
+  <!-- boolean, parameterized, Multi-value -->
+  <listitem>
+   <para>Multi-value.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Parameter:</term>
+  <listitem>
+   <para>
+    The result tag of a server-header or client-header tagger, as defined in one of the
+    <link linkend="filter-file">filter files</link>.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Example usage (section):</term>
+  <listitem>
+     <screen>
+# Suppress tag produced by range-requests client-header tagger for requests coming from address 10.0.0.1
+{+suppress-tag{RANGE-REQUEST}}
+TAG:^IP-ADDRESS: 10\.0\.0\.1$
+</screen>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect3>
+
+
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 renderas="sect4" id="session-cookies-only">
 <title>session-cookies-only</title>
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 renderas="sect4" id="session-cookies-only">
 <title>session-cookies-only</title>
@@ -6207,32 +6454,33 @@ TAG:^image/
 </para>
 
  <screen>
 </para>
 
  <screen>
- # Useful custom aliases we can use later.
- #
- # Note the (required!) section header line and that this section
- # must be at the top of the actions file!
- #
- {{alias}}
+# Useful custom aliases we can use later.
+#
+# Note the (required!) section header line and that this section
+# must be at the top of the actions file!
+#
+{{alias}}
 
 
- # These aliases just save typing later:
- # (Note that some already use other aliases!)
- #
- +crunch-all-cookies = +<link linkend="CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</link> +<link linkend="CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</link>
- -crunch-all-cookies = -<link linkend="CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</link> -<link linkend="CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</link>
- +block-as-image      = +block{Blocked image.} +handle-as-image
- allow-all-cookies   = -crunch-all-cookies -<link linkend="SESSION-COOKIES-ONLY">session-cookies-only</link> -<link linkend="FILTER-CONTENT-COOKIES">filter{content-cookies}</link>
+# These aliases just save typing later:
+# (Note that some already use other aliases!)
+#
++crunch-all-cookies = +<link linkend="CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</link> +<link linkend="CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</link>
+-crunch-all-cookies = -<link linkend="CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</link> -<link linkend="CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</link>
++block-as-image     = +block{Blocked image.} +handle-as-image
+allow-all-cookies   = -crunch-all-cookies -<link linkend="SESSION-COOKIES-ONLY">session-cookies-only</link> -<link linkend="FILTER-CONTENT-COOKIES">filter{content-cookies}</link>
 
 
- # These aliases define combinations of actions
- # that are useful for certain types of sites:
- #
- fragile     = -<link linkend="BLOCK">block</link> -<link linkend="FILTER">filter</link> -crunch-all-cookies -<link linkend="FAST-REDIRECTS">fast-redirects</link> -<link linkend="HIDE-REFERER">hide-referrer</link> -<link linkend="PREVENT-COMPRESSION">prevent-compression</link>
+# These aliases define combinations of actions
+# that are useful for certain types of sites:
+#
+fragile     = -<link linkend="BLOCK">block</link> -<link linkend="FILTER">filter</link> -crunch-all-cookies -<link linkend="FAST-REDIRECTS">fast-redirects</link> -<link linkend="HIDE-REFERER">hide-referrer</link> -<link linkend="PREVENT-COMPRESSION">prevent-compression</link>
 
 
- shop        = -crunch-all-cookies -<link linkend="FILTER-ALL-POPUPS">filter{all-popups}</link>
+shop        = -crunch-all-cookies -<link linkend="FILTER-ALL-POPUPS">filter{all-popups}</link>
 
 
- # Short names for other aliases, for really lazy people ;-)
- #
- c0 = +crunch-all-cookies
- c1 = -crunch-all-cookies</screen>
+# Short names for other aliases, for really lazy people ;-)
+#
+c0 = +crunch-all-cookies
+c1 = -crunch-all-cookies
+</screen>
 
 <para>
  ...and put them to use. These sections would appear in the lower part of an
 
 <para>
  ...and put them to use. These sections would appear in the lower part of an
@@ -6241,28 +6489,29 @@ TAG:^image/
 </para>
 
  <screen>
 </para>
 
  <screen>
- # These sites are either very complex or very keen on
- # user data and require minimal interference to work:
- #
- {fragile}
- .office.microsoft.com
- .windowsupdate.microsoft.com
- # Gmail is really mail.google.com, not gmail.com
- mail.google.com
-
- # Shopping sites:
- # Allow cookies (for setting and retrieving your customer data)
- #
- {shop}
- .quietpc.com
- .worldpay.com   # for quietpc.com
- mybank.example.com
+# These sites are either very complex or very keen on
+# user data and require minimal interference to work:
+#
+{fragile}
+.office.microsoft.com
+.windowsupdate.microsoft.com
+# Gmail is really mail.google.com, not gmail.com
+mail.google.com
 
 
- # These shops require pop-ups:
- #
- {-filter{all-popups} -filter{unsolicited-popups}}
-  .dabs.com
-  .overclockers.co.uk</screen>
+# Shopping sites:
+# Allow cookies (for setting and retrieving your customer data)
+#
+{shop}
+.quietpc.com
+.worldpay.com   # for quietpc.com
+mybank.example.com
+
+# These shops require pop-ups:
+#
+{-filter{all-popups} -filter{unsolicited-popups}}
+.dabs.com
+.overclockers.co.uk
+</screen>
 
 <para>
  Aliases like <quote>shop</quote> and <quote>fragile</quote> are typically used for
 
 <para>
  Aliases like <quote>shop</quote> and <quote>fragile</quote> are typically used for
@@ -6371,7 +6620,7 @@ for-privoxy-version=3.0.11</screen>
  #
  +crunch-all-cookies = +<link linkend="CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</link> +<link linkend="CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</link>
  -crunch-all-cookies = -<link linkend="CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</link> -<link linkend="CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</link>
  #
  +crunch-all-cookies = +<link linkend="CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</link> +<link linkend="CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</link>
  -crunch-all-cookies = -<link linkend="CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</link> -<link linkend="CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</link>
- +block-as-image      = +block{Blocked image.} +handle-as-image
+ +block-as-image     = +block{Blocked image.} +handle-as-image
  mercy-for-cookies   = -crunch-all-cookies -<link linkend="SESSION-COOKIES-ONLY">session-cookies-only</link> -<link linkend="FILTER-CONTENT-COOKIES">filter{content-cookies}</link>
 
  # These aliases define combinations of actions
  mercy-for-cookies   = -crunch-all-cookies -<link linkend="SESSION-COOKIES-ONLY">session-cookies-only</link> -<link linkend="FILTER-CONTENT-COOKIES">filter{content-cookies}</link>
 
  # These aliases define combinations of actions
@@ -6671,10 +6920,11 @@ handle-as-text = -<link linkend="FILTER">filter</link> +-<link linkend="content-
 
  <screen>
 { allow-all-cookies }
 
  <screen>
 { allow-all-cookies }
- sourceforge.net
- .yahoo.com
- .msdn.microsoft.com
- .redhat.com</screen>
+sourceforge.net
+.yahoo.com
+.msdn.microsoft.com
+.redhat.com
+</screen>
 
 <para>
  Your bank is allergic to some filter, but you don't know which, so you disable them all:
 
 <para>
  Your bank is allergic to some filter, but you don't know which, so you disable them all:
@@ -6682,7 +6932,8 @@ handle-as-text = -<link linkend="FILTER">filter</link> +-<link linkend="content-
 
  <screen>
 { -<link linkend="FILTER">filter</link> }
 
  <screen>
 { -<link linkend="FILTER">filter</link> }
- .your-home-banking-site.com</screen>
+.your-home-banking-site.com
+</screen>
 
 <para>
  Some file types you may not want to filter for various reasons:
 
 <para>
  Some file types you may not want to filter for various reasons:
@@ -6713,8 +6964,9 @@ stupid-server.example.com/</screen>
 
  <screen>
 { +<link linkend="BLOCK">block</link>{Nasty ads.} }
 
  <screen>
 { +<link linkend="BLOCK">block</link>{Nasty ads.} }
- www.example.com/nasty-ads/sponsor\.gif
- another.example.net/more/junk/here/</screen>
+www.example.com/nasty-ads/sponsor\.gif
+another.example.net/more/junk/here/
+</screen>
 
 <para>
  The URLs of dynamically generated banners, especially from large banner
 
 <para>
  The URLs of dynamically generated banners, especially from large banner
@@ -6730,10 +6982,11 @@ stupid-server.example.com/</screen>
 
  <screen>
 { +block-as-image }
 
  <screen>
 { +block-as-image }
- .doubleclick.net
- .fastclick.net
- /Realmedia/ads/
- ar.atwola.com/</screen>
+.doubleclick.net
+.fastclick.net
+/Realmedia/ads/
+ar.atwola.com/
+</screen>
 
 <para>
  Now you noticed that the default configuration breaks Forbes Magazine,
 
 <para>
  Now you noticed that the default configuration breaks Forbes Magazine,
@@ -6749,9 +7002,10 @@ stupid-server.example.com/</screen>
 
 <screen>
 { fragile }
 
 <screen>
 { fragile }
- .forbes.com
- webmail.example.com
- .mybank.com</screen>
+.forbes.com
+webmail.example.com
+.mybank.com
+</screen>
 
 <para>
  You like the <quote>fun</quote> text replacements in <filename>default.filter</filename>,
 
 <para>
  You like the <quote>fun</quote> text replacements in <filename>default.filter</filename>,
@@ -6762,7 +7016,8 @@ stupid-server.example.com/</screen>
 
 <screen>
 { +<link linkend="filter-fun">filter{fun}</link> }
 
 <screen>
 { +<link linkend="filter-fun">filter{fun}</link> }
- / # For ALL sites!</screen>
+/ # For ALL sites!
+</screen>
 
 <para>
  Note that the above is not really a good idea: There are exceptions
 
 <para>
  Note that the above is not really a good idea: There are exceptions
@@ -6781,9 +7036,10 @@ stupid-server.example.com/</screen>
 
 <screen>
 { allow-ads }
 
 <screen>
 { allow-ads }
- .sourceforge.net
- .slashdot.org
- .osdn.net</screen>
+.sourceforge.net
+.slashdot.org
+.osdn.net
+</screen>
 
 <para>
  Note that <literal>allow-ads</literal> has been aliased to
 
 <para>
  Note that <literal>allow-ads</literal> has been aliased to
@@ -6801,7 +7057,8 @@ stupid-server.example.com/</screen>
 
 <screen>
 { handle-as-text }
 
 <screen>
 { handle-as-text }
- /.*\.sh$</screen>
+/.*\.sh$
+</screen>
 
 <para>
  <filename>user.action</filename> is generally the best place to define
 
 <para>
  <filename>user.action</filename> is generally the best place to define
@@ -6838,13 +7095,15 @@ stupid-server.example.com/</screen>
 </para>
 
 <para>
 </para>
 
 <para>
- &my-app; supports three different pcrs-based filter actions:
+ &my-app; supports four different pcrs-based filter actions:
  <literal><link linkend="filter">filter</link></literal> to
  rewrite the content that is send to the client,
  <literal><link linkend="client-header-filter">client-header-filter</link></literal>
  <literal><link linkend="filter">filter</link></literal> to
  rewrite the content that is send to the client,
  <literal><link linkend="client-header-filter">client-header-filter</link></literal>
- to rewrite headers that are send by the client, and
+ to rewrite headers that are send by the client,
  <literal><link linkend="server-header-filter">server-header-filter</link></literal>
  <literal><link linkend="server-header-filter">server-header-filter</link></literal>
- to rewrite headers that are send by the server.
+ to rewrite headers that are send by the server, and
+ <literal><link linkend="client-body-filter">client-body-filter</link></literal>
+ to rewrite client request body.
 </para>
 
 <para>
 </para>
 
 <para>
@@ -6903,7 +7162,8 @@ stupid-server.example.com/</screen>
  filter file is organized in sections, which are called <emphasis>filters</emphasis>
  here. Each filter consists of a heading line, that starts with one of the
  <emphasis>keywords</emphasis> <literal>FILTER:</literal>,
  filter file is organized in sections, which are called <emphasis>filters</emphasis>
  here. Each filter consists of a heading line, that starts with one of the
  <emphasis>keywords</emphasis> <literal>FILTER:</literal>,
- <literal>CLIENT-HEADER-FILTER:</literal> or <literal>SERVER-HEADER-FILTER:</literal>
+ <literal>CLIENT-HEADER-FILTER:</literal>, <literal>SERVER-HEADER-FILTER:</literal> or
+ <literal>CLIENT-BODY-FILTER:</literal>
  followed by the filter's <emphasis>name</emphasis>, and a short (one line)
  <emphasis>description</emphasis> of what it does. Below that line
  come the <emphasis>jobs</emphasis>, i.e. lines that define the actual
  followed by the filter's <emphasis>name</emphasis>, and a short (one line)
  <emphasis>description</emphasis> of what it does. Below that line
  come the <emphasis>jobs</emphasis>, i.e. lines that define the actual
@@ -6970,7 +7230,7 @@ stupid-server.example.com/</screen>
 
 <para>
  If you are new to
 
 <para>
  If you are new to
-  <ulink url="http://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
+  <ulink url="https://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
   Expressions</quote></ulink>, you might want to take a look at
  the <link linkend="regex">Appendix on regular expressions</link>, and
  see the <ulink url="http://perldoc.perl.org/perlre.html">Perl
   Expressions</quote></ulink>, you might want to take a look at
  the <link linkend="regex">Appendix on regular expressions</link>, and
  see the <ulink url="http://perldoc.perl.org/perlre.html">Perl
@@ -7466,7 +7726,7 @@ pre-defined filters for your convenience:
     sometimes appear on some pages, or user agents that don't correct for this on
     the fly.
 <!--
     sometimes appear on some pages, or user agents that don't correct for this on
     the fly.
 <!--
-    My version of Mozilla (ancient) shows litte square boxes for quote
+    My version of Mozilla (ancient) shows little square boxes for quote
     characters, and apostrophes on moronized pages. So many pages have this, I
     can read them fine now. HB 08/27/06
 -->
     characters, and apostrophes on moronized pages. So many pages have this, I
     can read them fine now. HB 08/27/06
 -->
@@ -7857,16 +8117,63 @@ Requests</title>
 
 <para>
  <application>Privoxy</application> is free software; you can
 
 <para>
  <application>Privoxy</application> is free software; you can
- redistribute it and/or modify it under the terms of the
- <citetitle>GNU General Public License</citetitle>, version 2,
- as published by the Free Software Foundation and included in
- the next section.
+ redistribute and/or modify its source code under the terms
+ of the <citetitle>GNU General Public License</citetitle>
+ as published by the Free Software Foundation, either version 2
+ of the license, or (at your option) any later version.
+</para>
+
+<para>
+ The same is true for <application>Privoxy</application> binaries
+ unless they are linked with a
+ <ulink url="https://tls.mbed.org/">mbed TLS</ulink> version
+ that is licensed under the Apache 2.0 license in which
+ case you can redistribute and/or modify the <application>Privoxy</application>
+ binaries under the terms of the <citetitle>GNU General Public License</citetitle>
+ as published by the Free Software Foundation, either version 3
+ of the license, or (at your option) any later version.
+</para>
+
+<para>
+ Both licenses are included in the next section.
 </para>
 
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect2 id="license"><title>License</title>
 
 </para>
 
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect2 id="license"><title>License</title>
 
- <screen><![ RCDATA [ &GPLv2; ]]></screen>
+<sect3 id="gplv2"><title>GNU General Public License version 2</title>
+ <literallayout class="Monospaced"><![ RCDATA [ &GPLv2; ]]></literallayout>
+</sect3>
+
+<sect3 id="gplv3"><title>GNU General Public License version 3</title>
+ <literallayout class="Monospaced"><![ RCDATA [ &GPLv3; ]]></literallayout>
+</sect3>
+
+<sect3 id="third-party-licenses"><title>Third-party licenses and copyrights</title>
+<para>
+ Privoxy depends on a couple of third-party libraries which have seperate licenses.
+ Please refer to the third-party websites for up-to-date license and copyright
+ information.
+</para>
+<para>
+ Privoxy depends on <ulink url="https://pcre.org/">pcre</ulink>.
+</para>
+<para>
+ When compiled with FEATURE_BROTLI (optional), Privoxy depends on
+ <ulink url="https://www.brotli.org/">brotli</ulink>.
+</para>
+<para>
+ When compiled with FEATURE_HTTPS_INSPECTION (optional),
+ Privoxy depends on a TLS library. The supported libraries are
+ <ulink url="https://www.openssl.org/">LibreSSL</ulink>,
+ <ulink url="https://tls.mbed.org/">mbed TLS</ulink> and
+ <ulink url="https://www.openssl.org/">OpenSSL</ulink>.
+</para>
+<para>
+ When compiled with FEATURE_ZLIB (optional),
+ Privoxy depends on <ulink url="https://zlib.net/">zlib</ulink>.
+</para>
+</sect3>
 
 </sect2>
 <!--  ~  End section  ~  -->
 
 </sect2>
 <!--  ~  End section  ~  -->
@@ -8443,11 +8750,11 @@ Requests</title>
 </para>
 
  <screen>
 </para>
 
  <screen>
- Matches for http://www.google.com:
+Matches for http://www.google.com:
 
 
- In file: default.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
+In file: default.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
 
 
- {+change-x-forwarded-for{block}
+{+change-x-forwarded-for{block}
  +deanimate-gifs {last}
  +fast-redirects {check-decoded-url}
  +filter {refresh-tags}
  +deanimate-gifs {last}
  +fast-redirects {check-decoded-url}
  +filter {refresh-tags}
@@ -8459,14 +8766,14 @@ Requests</title>
  +hide-from-header {block}
  +hide-referrer {forge}
  +session-cookies-only
  +hide-from-header {block}
  +hide-referrer {forge}
  +session-cookies-only
- +set-image-blocker {pattern}
+ +set-image-blocker {pattern} }
 /
 
 /
 
- { -session-cookies-only }
- .google.com
+{ -session-cookies-only }
+.google.com
 
 
- { -fast-redirects }
- .google.com
+{ -fast-redirects }
+.google.com
 
 In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
 (no matches in this file)
 
 In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
 (no matches in this file)
@@ -8529,64 +8836,64 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
 </para>
 
  <screen>
 </para>
 
  <screen>
- Final results:
-
- -add-header
- -block
- +change-x-forwarded-for{block}
- -client-header-filter{hide-tor-exit-notation}
- -content-type-overwrite
- -crunch-client-header
- -crunch-if-none-match
- -crunch-incoming-cookies
- -crunch-outgoing-cookies
- -crunch-server-header
- +deanimate-gifs {last}
- -downgrade-http-version
- -fast-redirects
- -filter {js-events}
- -filter {content-cookies}
- -filter {all-popups}
- -filter {banners-by-link}
- -filter {tiny-textforms}
- -filter {frameset-borders}
- -filter {demoronizer}
- -filter {shockwave-flash}
- -filter {quicktime-kioskmode}
- -filter {fun}
- -filter {crude-parental}
- -filter {site-specifics}
- -filter {js-annoyances}
- -filter {html-annoyances}
- +filter {refresh-tags}
- -filter {unsolicited-popups}
- +filter {img-reorder}
- +filter {banners-by-size}
- +filter {webbugs}
- +filter {jumping-windows}
- +filter {ie-exploits}
- -filter {google}
- -filter {yahoo}
- -filter {msn}
- -filter {blogspot}
- -filter {no-ping}
- -force-text-mode
- -handle-as-empty-document
- -handle-as-image
- -hide-accept-language
- -hide-content-disposition
- +hide-from-header {block}
- -hide-if-modified-since
- +hide-referrer {forge}
- -hide-user-agent
- -limit-connect
- -overwrite-last-modified
- -prevent-compression
- -redirect
- -server-header-filter{xml-to-html}
- -server-header-filter{html-to-xml}
- -session-cookies-only
- +set-image-blocker {pattern}
+Final results:
+
+-add-header
+-block
++change-x-forwarded-for{block}
+-client-header-filter{hide-tor-exit-notation}
+-content-type-overwrite
+-crunch-client-header
+-crunch-if-none-match
+-crunch-incoming-cookies
+-crunch-outgoing-cookies
+-crunch-server-header
++deanimate-gifs {last}
+-downgrade-http-version
+-fast-redirects
+-filter {js-events}
+-filter {content-cookies}
+-filter {all-popups}
+-filter {banners-by-link}
+-filter {tiny-textforms}
+-filter {frameset-borders}
+-filter {demoronizer}
+-filter {shockwave-flash}
+-filter {quicktime-kioskmode}
+-filter {fun}
+-filter {crude-parental}
+-filter {site-specifics}
+-filter {js-annoyances}
+-filter {html-annoyances}
++filter {refresh-tags}
+-filter {unsolicited-popups}
++filter {img-reorder}
++filter {banners-by-size}
++filter {webbugs}
++filter {jumping-windows}
++filter {ie-exploits}
+-filter {google}
+-filter {yahoo}
+-filter {msn}
+-filter {blogspot}
+-filter {no-ping}
+-force-text-mode
+-handle-as-empty-document
+-handle-as-image
+-hide-accept-language
+-hide-content-disposition
++hide-from-header {block}
+-hide-if-modified-since
++hide-referrer {forge}
+-hide-user-agent
+-limit-connect
+-overwrite-last-modified
+-prevent-compression
+-redirect
+-server-header-filter{xml-to-html}
+-server-header-filter{html-to-xml}
+-session-cookies-only
++set-image-blocker {pattern}
 </screen>
 
 <para>
 </screen>
 
 <para>
@@ -8601,14 +8908,14 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
 </para>
 
  <screen>
 </para>
 
  <screen>
- { +block{Domains starts with "ad"} }
-  ad*.
+{ +block{Domains starts with "ad"} }
+ad*.
 
 
- { +block{Domain contains "ad"} }
-  .ad.
+{ +block{Domain contains "ad"} }
+.ad.
 
 
- { +block{Doubleclick banner server} +handle-as-image }
-  .[a-vx-z]*.doubleclick.net
+{ +block{Doubleclick banner server} +handle-as-image }
+.[a-vx-z]*.doubleclick.net
 </screen>
 
 <para>
 </screen>
 
 <para>
@@ -8642,68 +8949,68 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
 </para>
 
  <screen>
 </para>
 
  <screen>
- Matches for http://www.example.net/adsl/HOWTO/:
-
- In file: default.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
-
- {-add-header
 -block
 +change-x-forwarded-for{block}
 -client-header-filter{hide-tor-exit-notation}
 -content-type-overwrite
 -crunch-client-header
 -crunch-if-none-match
 -crunch-incoming-cookies
 -crunch-outgoing-cookies
 -crunch-server-header
 +deanimate-gifs
 -downgrade-http-version
 +fast-redirects {check-decoded-url}
 -filter {js-events}
 -filter {content-cookies}
 -filter {all-popups}
 -filter {banners-by-link}
 -filter {tiny-textforms}
 -filter {frameset-borders}
 -filter {demoronizer}
 -filter {shockwave-flash}
 -filter {quicktime-kioskmode}
 -filter {fun}
 -filter {crude-parental}
 -filter {site-specifics}
 -filter {js-annoyances}
 -filter {html-annoyances}
 +filter {refresh-tags}
 -filter {unsolicited-popups}
 +filter {img-reorder}
 +filter {banners-by-size}
 +filter {webbugs}
 +filter {jumping-windows}
 +filter {ie-exploits}
 -filter {google}
 -filter {yahoo}
 -filter {msn}
 -filter {blogspot}
 -filter {no-ping}
 -force-text-mode
 -handle-as-empty-document
 -handle-as-image
 -hide-accept-language
 -hide-content-disposition
 +hide-from-header{block}
 +hide-referer{forge}
 -hide-user-agent
 -overwrite-last-modified
 +prevent-compression
 -redirect
 -server-header-filter{xml-to-html}
 -server-header-filter{html-to-xml}
 +session-cookies-only
 +set-image-blocker{blank} }
-   /
-
- { +block{Path contains "ads".} +handle-as-image }
-  /ads
+Matches for http://www.example.net/adsl/HOWTO/:
+
+In file: default.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
+
+{-add-header
+ -block
+ +change-x-forwarded-for{block}
+ -client-header-filter{hide-tor-exit-notation}
+ -content-type-overwrite
+ -crunch-client-header
+ -crunch-if-none-match
+ -crunch-incoming-cookies
+ -crunch-outgoing-cookies
+ -crunch-server-header
+ +deanimate-gifs
+ -downgrade-http-version
+ +fast-redirects {check-decoded-url}
+ -filter {js-events}
+ -filter {content-cookies}
+ -filter {all-popups}
+ -filter {banners-by-link}
+ -filter {tiny-textforms}
+ -filter {frameset-borders}
+ -filter {demoronizer}
+ -filter {shockwave-flash}
+ -filter {quicktime-kioskmode}
+ -filter {fun}
+ -filter {crude-parental}
+ -filter {site-specifics}
+ -filter {js-annoyances}
+ -filter {html-annoyances}
+ +filter {refresh-tags}
+ -filter {unsolicited-popups}
+ +filter {img-reorder}
+ +filter {banners-by-size}
+ +filter {webbugs}
+ +filter {jumping-windows}
+ +filter {ie-exploits}
+ -filter {google}
+ -filter {yahoo}
+ -filter {msn}
+ -filter {blogspot}
+ -filter {no-ping}
+ -force-text-mode
+ -handle-as-empty-document
+ -handle-as-image
+ -hide-accept-language
+ -hide-content-disposition
+ +hide-from-header{block}
+ +hide-referer{forge}
+ -hide-user-agent
+ -overwrite-last-modified
+ +prevent-compression
+ -redirect
+ -server-header-filter{xml-to-html}
+ -server-header-filter{html-to-xml}
+ +session-cookies-only
+ +set-image-blocker{blank} }
+/
+
+{ +block{Path contains "ads".} +handle-as-image }
+/ads
 </screen>
 
 <para>
 </screen>
 
 <para>
@@ -8721,8 +9028,8 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
 </para>
 
  <screen>
 </para>
 
  <screen>
- { -block }
-  /adsl
+{ -block }
+/adsl
 </screen>
 
 <para>
 </screen>
 
 <para>
@@ -8738,8 +9045,8 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
 </para>
 
  <screen>
 </para>
 
  <screen>
- { +block{Path starts with "ads".} +handle-as-image }
- /ads
+{ +block{Path starts with "ads".} +handle-as-image }
+/ads
 </screen>
 
 <para>
 </screen>
 
 <para>
@@ -8755,12 +9062,12 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
 </para>
 
  <screen>
 </para>
 
  <screen>
- { shop }
- .quietpc.com
- .worldpay.com   # for quietpc.com
- .jungle.com
- .scan.co.uk
- .forbes.com
+{ shop }
+.quietpc.com
+.worldpay.com   # for quietpc.com
+.jungle.com
+.scan.co.uk
+.forbes.com
 </screen>
 
 <para>
 </screen>
 
 <para>
@@ -8770,11 +9077,11 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
 </para>
 
  <screen>
 </para>
 
  <screen>
- { -filter }
- # Disable ALL filter actions for sites in this section
- .forbes.com
- developer.ibm.com
- localhost
+{ -filter }
+# Disable ALL filter actions for sites in this section
+.forbes.com
+developer.ibm.com
+localhost
 </screen>
 
 <para>
 </screen>
 
 <para>
@@ -8800,10 +9107,11 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
 </para>
 
  <screen>
 </para>
 
  <screen>
- { fragile }
- # Handle with care: easy to break
- mail.google.
- mybank.example.com</screen>
+{ fragile }
+# Handle with care: easy to break
+mail.google.
+mybank.example.com
+</screen>
 
 
 <para>
 
 
 <para>