generated
authoroes <oes@users.sourceforge.net>
Fri, 17 May 2002 14:08:27 +0000 (14:08 +0000)
committeroes <oes@users.sourceforge.net>
Fri, 17 May 2002 14:08:27 +0000 (14:08 +0000)
15 files changed:
doc/webserver/user-manual/actions-file.html
doc/webserver/user-manual/appendix.html
doc/webserver/user-manual/config.html
doc/webserver/user-manual/configuration.html
doc/webserver/user-manual/contact.html
doc/webserver/user-manual/copyright.html
doc/webserver/user-manual/filter-file.html
doc/webserver/user-manual/index.html
doc/webserver/user-manual/installation.html
doc/webserver/user-manual/introduction.html
doc/webserver/user-manual/quickstart.html
doc/webserver/user-manual/seealso.html
doc/webserver/user-manual/startup.html
doc/webserver/user-manual/templates.html
doc/webserver/user-manual/upgradersnote.html

index 9998abf..fb9d76b 100644 (file)
@@ -4,8 +4,7 @@
 >Actions Files</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -93,25 +92,6 @@ CLASS="APPLICATION"
 ><UL
 ><LI
 ><P
->      <TT
-CLASS="FILENAME"
->standard.action</TT
-> - is used by the web based editor, 
-      to set various pre-defined sets of rules for the default actions section
-      in <TT
-CLASS="FILENAME"
->default.action</TT
->. These have increasing levels of
-      aggressiveness <I
-CLASS="EMPHASIS"
->and have no influence on your browsing unless
-      you select them explicitly in the editor</I
->. It is not recommend
-      to edit this file.
-    </P
-></LI
-><LI
-><P
 >     <TT
 CLASS="FILENAME"
 >default.action</TT
@@ -138,6 +118,25 @@ CLASS="FILENAME"
      thing should go here. This file will not be upgraded.
     </P
 ></LI
+><LI
+><P
+>     <TT
+CLASS="FILENAME"
+>standard.action</TT
+> - is used by the web based editor, 
+     to set various pre-defined sets of rules for the default actions section
+     in <TT
+CLASS="FILENAME"
+>default.action</TT
+>. These have increasing levels of
+     aggressiveness <I
+CLASS="EMPHASIS"
+>and have no influence on your browsing unless
+     you select them explicitly in the editor</I
+>. It is not recommend
+     to edit this file.
+    </P
+></LI
 ></UL
 >
  </P
@@ -202,7 +201,7 @@ CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN1378"
+NAME="AEN1403"
 >8.1. Finding the Right Mix</A
 ></H2
 ><P
@@ -236,7 +235,7 @@ CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN1385"
+NAME="AEN1410"
 >8.2. How to Edit</A
 ></H2
 ><P
@@ -271,7 +270,7 @@ CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN1394"
+NAME="ACTIONS-APPLY"
 >8.3. How Actions are Applied to URLs</A
 ></H2
 ><P
@@ -328,7 +327,7 @@ CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN1408"
+NAME="AF-PATTERNS"
 >8.4. Patterns</A
 ></H2
 ><P
@@ -435,7 +434,7 @@ CLASS="SECT3"
 ><H3
 CLASS="SECT3"
 ><A
-NAME="AEN1448"
+NAME="AEN1473"
 >8.4.1. The Domain Pattern</A
 ></H3
 ><P
@@ -609,7 +608,7 @@ CLASS="SECT3"
 ><H3
 CLASS="SECT3"
 ><A
-NAME="AEN1510"
+NAME="AEN1535"
 >8.4.2. The Path Pattern</A
 ></H3
 ><P
@@ -971,7 +970,7 @@ CLASS="SECT3"
 NAME="ADD-HEADER"
 >8.5.1. <I
 CLASS="EMPHASIS"
->+add-header</I
+>add-header</I
 ></A
 ></H4
 ><P
@@ -980,23 +979,29 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Multi-value.</P
+>Confuse log analysis, custom applications</P
 ></DD
 ><DT
->Purpose and typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    Send a user defined HTTP header to the web server. Can be used to confuse log analysis.
+>    Sends a user defined HTTP header to the web server.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
+><DD
+><P
+>Multi-value.</P
+></DD
+><DT
+>Parameter:</DT
 ><DD
 ><P
->    Any value is possible. Validity of the defined HTTP headers is not checked.
+>    Any string value is possible. Validity of the defined HTTP headers is not checked.
     It is recommended that you use the <SPAN
 CLASS="QUOTE"
 >"<TT
@@ -1008,20 +1013,6 @@ CLASS="LITERAL"
    </P
 ></DD
 ><DT
->Example usage:</DT
-><DD
-><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+add-header{X-User-Tracking: sucks}}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.example.com</I
-></P
-></DD
-><DT
 >Notes:</DT
 ><DD
 ><P
@@ -1034,6 +1025,25 @@ CLASS="QUOTE"
     one.
    </P
 ></DD
+><DT
+>Example usage:</DT
+><DD
+><P
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+add-header{X-User-Tracking: sucks}</PRE
+></TD
+></TR
+></TABLE
+>
+   </P
+></DD
 ></DL
 ></DIV
 ></DIV
@@ -1045,7 +1055,7 @@ CLASS="SECT3"
 NAME="BLOCK"
 >8.5.2. <I
 CLASS="EMPHASIS"
->+block</I
+>block</I
 ></A
 ></H4
 ><P
@@ -1054,134 +1064,154 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Boolean.</P
+>Block ads or other obnoxious content</P
 ></DD
 ><DT
->Purpose and typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
 >    Requests for URLs to which this action applies are blocked, i.e. the requests are not
     forwarded to the remote server, but answered locally with a substitute page or image,
-    as determined by the <A
+    as determined by the <TT
+CLASS="LITERAL"
+><A
 HREF="actions-file.html#HANDLE-AS-IMAGE"
 >handle-as-image</A
-> and  
-    <A
+></TT
+>
+    and <TT
+CLASS="LITERAL"
+><A
 HREF="actions-file.html#SET-IMAGE-BLOCKER"
 >set-image-blocker</A
+></TT
 > actions.
-    It is typically used to block ads or other obnoxious content.    
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
 ><DD
 ><P
->N/A</P
+>Boolean.</P
 ></DD
 ><DT
->Example usage:</DT
+>Parameter:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+block}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.banners.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.ads.r.us</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>N/A</P
 ></DD
 ><DT
 >Notes:</DT
 ><DD
 ><P
->    If a URL matches one of the blocked patterns, <SPAN
+>    <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
->
-    will intercept the URL and display its special <SPAN
+> sends a special <SPAN
 CLASS="QUOTE"
 >"BLOCKED"</SPAN
 > page
-    instead. If there is sufficient space, a large red banner will appear with
-    a friendly message about why the page was blocked, and a way to go there
-    anyway. If there is insufficient space a smaller <SPAN
+    for requests to blocked pages. This page contains links to find out why the request
+    was blocked, and a click-through to the blocked content (the latter only if compiled with the
+    force feature enabled). The <SPAN
 CLASS="QUOTE"
 >"BLOCKED"</SPAN
+> page adapts to the available
+    screen space -- it displays full-blown if space allows, or miniaturized and text-only
+    if loaded into a small frame or window. If you are using <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
 >
-    page will appear without the red banner. 
+    right now, you can take a look at the 
     <A
 HREF="http://ads.bannerserver.example.com/nasty-ads/sponsor.html"
 TARGET="_top"
->Click here</A
+><SPAN
+CLASS="QUOTE"
+>"BLOCKED"</SPAN
 >
-    to view the default blocked HTML page (<SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> must be running 
-    for this to work as intended!).
+    page</A
+>.
    </P
 ><P
 > 
-    A very important exception is if the URL <I
+    A very important exception occurs if <I
 CLASS="EMPHASIS"
->matches both</I
->
-    <SPAN
-CLASS="QUOTE"
->"+block"</SPAN
-> and <A
+>both</I
+> 
+    <TT
+CLASS="LITERAL"
+>block</TT
+> and <TT
+CLASS="LITERAL"
+><A
 HREF="actions-file.html#HANDLE-AS-IMAGE"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+handle-as-image"</SPAN
-></A
+>handle-as-image</A
+></TT
 >,
-    then it will be handled by 
-    <A
+    apply to the same request: it will then be replaced by an image. If 
+    <TT
+CLASS="LITERAL"
+><A
 HREF="actions-file.html#SET-IMAGE-BLOCKER"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+set-image-blocker"</SPAN
-></A
+>set-image-blocker</A
+></TT
 >
-    (see below). It is important to understand this process, in order 
+    (see below) also applies, the type of image will be determined by its parameter,
+    if not, the standard checkerboard pattern is sent.
+   </P
+><P
+>    It is important to understand this process, in order 
     to understand how <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> is able to deal with 
-    ads and other objectionable content.
+> deals with 
+    ads and other unwanted content.
    </P
 ><P
->    The <A
+>    The <TT
+CLASS="LITERAL"
+><A
 HREF="actions-file.html#FILTER"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+filter"</SPAN
-></A
+>filter</A
+></TT
 >
-    action can also perform some of the 
-    same functionality as <SPAN
+    action can perform a very similar task, by <SPAN
 CLASS="QUOTE"
->"+block"</SPAN
->, but by virtue of very 
-    different programming techniques, and is most often used for different 
-    reasons.
+>"blocking"</SPAN
+>
+    banner images and other content through rewriting the relevant URLs in the
+    document's HTML source, so they don't get requested in the first place.
+    Note that this is a totally different technique, and it's easy to confuse the two.
    </P
 ></DD
+><DT
+>Example usage (section):</DT
+><DD
+><P
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{+block}      # Block and replace with "blocked" page
+.nasty-stuff.example.com
+
+{+block +handle-as-image} # Block and replace with image
+.ad.doubleclick.net
+.ads.r.us</PRE
+></TD
+></TR
+></TABLE
+>
+    </P
+></DD
 ></DL
 ></DIV
 ></DIV
@@ -1190,10 +1220,10 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="DEANIMATE-GIFS"
+NAME="CRUNCH-INCOMING-COOKIES"
 >8.5.3. <I
 CLASS="EMPHASIS"
->+deanimate-gifs</I
+>crunch-incoming-cookies</I
 ></A
 ></H4
 ><P
@@ -1202,63 +1232,91 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Parameterized.</P
+>    Prevent the web server from setting any cookies on your system
+   </P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    To stop those annoying, distracting animated GIF images.
+>    Deletes any <SPAN
+CLASS="QUOTE"
+>"Set-Cookie:"</SPAN
+> HTTP headers from server replies.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
 ><DD
 ><P
->    <SPAN
-CLASS="QUOTE"
->"last"</SPAN
-> or <SPAN
-CLASS="QUOTE"
->"first"</SPAN
->
+>Boolean.</P
+></DD
+><DT
+>Parameter:</DT
+><DD
+><P
+>    N/A
    </P
 ></DD
 ><DT
->Example usage:</DT
+>Notes:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
+>    This action is only concerned with <I
+CLASS="EMPHASIS"
+>incoming</I
+> cookies. For
+    <I
+CLASS="EMPHASIS"
+>outgoing</I
+> cookies, use
+    <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
+>crunch-outgoing-cookies</A
+></TT
+>.
+    Use <I
 CLASS="EMPHASIS"
->{+deanimate-gifs{last}}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
+>both</I
+> to disable cookies completely.
+   </P
+><P
+>    It makes <I
 CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>no sense at all</I
+> 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 set.
+   </P
 ></DD
 ><DT
->Notes:</DT
+>Example usage:</DT
 ><DD
 ><P
->    De-animate all animated GIF images, i.e. reduce them to their last frame.
-    This will also shrink the images considerably (in bytes, not pixels!). If
-    the option <SPAN
-CLASS="QUOTE"
->"first"</SPAN
-> is given, the first frame of the animation
-    is used as the replacement. If <SPAN
-CLASS="QUOTE"
->"last"</SPAN
-> is given, the last
-    frame of the animation is used instead, which probably makes more sense for
-    most banner animations, but also has the risk of not showing the entire
-    last frame (if it is only a delta to an earlier frame).
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+crunch-incoming-cookies</PRE
+></TD
+></TR
+></TABLE
+>
    </P
 ></DD
 ></DL
@@ -1269,10 +1327,10 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="DOWNGRADE-HTTP-VERSION"
+NAME="CRUNCH-OUTGOING-COOKIES"
 >8.5.4. <I
 CLASS="EMPHASIS"
->+downgrade-http-version</I
+>crunch-outgoing-cookies</I
 ></A
 ></H4
 ><P
@@ -1281,55 +1339,91 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Boolean.</P
+>    Prevent the web server from reading any cookies from your system
+   </P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    <SPAN
+>    Deletes any <SPAN
 CLASS="QUOTE"
->"+downgrade-http-version"</SPAN
-> will downgrade HTTP/1.1 client requests to
-    HTTP/1.0 and downgrade the responses as well.
+>"Cookie:"</SPAN
+> HTTP headers from client requests.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
+><DD
+><P
+>Boolean.</P
+></DD
+><DT
+>Parameter:</DT
 ><DD
 ><P
 >    N/A
    </P
 ></DD
 ><DT
->Example usage:</DT
+>Notes:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
+>    This action is only concerned with <I
+CLASS="EMPHASIS"
+>outgoing</I
+> cookies. For
+    <I
+CLASS="EMPHASIS"
+>incoming</I
+> cookies, use
+    <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
+>crunch-incoming-cookies</A
+></TT
+>.
+    Use <I
 CLASS="EMPHASIS"
->{+downgrade-http-version}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
+>both</I
+> to disable cookies completely.
+   </P
+><P
+>    It makes <I
 CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>no sense at all</I
+> 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 read.
+   </P
 ></DD
 ><DT
->Notes:</DT
+>Example usage:</DT
 ><DD
 ><P
->    Use this action for servers that use HTTP/1.1 protocol features that
-    <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> doesn't handle well yet. HTTP/1.1 is
-    only partially implemented. Default is not to downgrade requests. This is
-    an infrequently needed action, and is used to help with rare problem sites only.
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+crunch-outgoing-cookies</PRE
+></TD
+></TR
+></TABLE
+>
    </P
 ></DD
 ></DL
@@ -1340,10 +1434,10 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="FAST-REDIRECTS"
+NAME="DEANIMATE-GIFS"
 >8.5.5. <I
 CLASS="EMPHASIS"
->+fast-redirects</I
+>deanimate-gifs</I
 ></A
 ></H4
 ><P
@@ -1352,52 +1446,202 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Boolean.</P
+>Stop those annoying, distracting animated GIF images.</P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    The <SPAN
-CLASS="QUOTE"
->"+fast-redirects"</SPAN
-> action enables interception of 
-    <SPAN
+>    De-animate GIF animations, i.e. reduce them to their first or last image.
+   </P
+></DD
+><DT
+>Type:</DT
+><DD
+><P
+>Parameterized.</P
+></DD
+><DT
+>Parameter:</DT
+><DD
+><P
+>    <SPAN
 CLASS="QUOTE"
->"redirect"</SPAN
-> requests from one server to another, which 
-    are used to track users.<SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> can cut off
-    all but the last valid URL in a redirect request and send a local redirect
-    back to your browser without contacting the intermediate site(s).
+>"last"</SPAN
+> or <SPAN
+CLASS="QUOTE"
+>"first"</SPAN
+>
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Notes:</DT
 ><DD
 ><P
->    N/A
+>    This will also shrink the images considerably (in bytes, not pixels!). If
+    the option <SPAN
+CLASS="QUOTE"
+>"first"</SPAN
+> is given, the first frame of the animation
+    is used as the replacement. If <SPAN
+CLASS="QUOTE"
+>"last"</SPAN
+> is given, the last
+    frame of the animation is used instead, which probably makes more sense for
+    most banner animations, but also has the risk of not showing the entire
+    last frame (if it is only a delta to an earlier frame).
+   </P
+><P
+>    You can safely use this action with patterns that will also match non-GIF
+    objects, because no attempt will be made at anything that doesn't look like
+    a GIF.
    </P
 ></DD
 ><DT
 >Example usage:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
+>      <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+deanimate-gifs{last}</PRE
+></TD
+></TR
+></TABLE
+>
+    </P
+></DD
+></DL
+></DIV
+></DIV
+><DIV
+CLASS="SECT3"
+><H4
+CLASS="SECT3"
+><A
+NAME="DOWNGRADE-HTTP-VERSION"
+>8.5.6. <I
 CLASS="EMPHASIS"
->{+fast-redirects}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
+>downgrade-http-version</I
+></A
+></H4
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+>Typical use:</DT
+><DD
+><P
+>Work around (very rare) problems with HTTP/1.1</P
+></DD
+><DT
+>Effect:</DT
+><DD
+><P
+>    Downgrades HTTP/1.1 client requests and server replies to HTTP/1.0.
+   </P
+></DD
+><DT
+>Type:</DT
+><DD
+><P
+>Boolean.</P
+></DD
+><DT
+>Parameter:</DT
+><DD
+><P
+>    N/A
+   </P
+></DD
+><DT
+>Notes:</DT
+><DD
+><P
+>    This is a left-over from the time when <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+    didn't support important HTTP/1.1 features well. It is left here for the
+    unlikely case that you experience HTTP/1.1 related problems with some server
+    out there. Not all (optional) HTTP/1.1 features are supported yet, so there
+    is a chance you might need this action.
+   </P
+></DD
+><DT
+>Example usage (section):</DT
+><DD
+><P
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{+downgrade-http-version}
+problem-host.example.com</PRE
+></TD
+></TR
+></TABLE
+>
+    </P
+></DD
+></DL
+></DIV
+></DIV
+><DIV
+CLASS="SECT3"
+><H4
+CLASS="SECT3"
+><A
+NAME="FAST-REDIRECTS"
+>8.5.7. <I
 CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>fast-redirects</I
+></A
+></H4
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+>Typical use:</DT
+><DD
+><P
+>Fool some click-tracking scripts and speed up indirect links</P
+></DD
+><DT
+>Effect:</DT
+><DD
+><P
+>    Cut off all but the last valid URL from requests.
+   </P
+></DD
+><DT
+>Type:</DT
+><DD
+><P
+>Boolean.</P
+></DD
+><DT
+>Parameter:</DT
+><DD
+><P
+>    N/A
+   </P
 ></DD
 ><DT
 >Notes:</DT
@@ -1405,12 +1649,12 @@ CLASS="EMPHASIS"
 ><P
 >  
     Many sites, like yahoo.com, don't just link to other sites. Instead, they
-    will link to some script on their own server, giving the destination as a
+    will link to some script on their own servers, giving the destination as a
     parameter, which will then redirect you to the final target. URLs
     resulting from this scheme typically look like:
     <I
 CLASS="EMPHASIS"
->http://some.place/some_script?http://some.where-else</I
+>http://some.place/click-tracker.cgi?target=http://some.where.else</I
 >.
   </P
 ><P
@@ -1422,13 +1666,35 @@ CLASS="EMPHASIS"
     the advertisers.
    </P
 ><P
->    This is a normally <SPAN
-CLASS="QUOTE"
->"on"</SPAN
-> feature, and often requires exceptions
-    for sites that are sensitive to defeating this mechanism.
+>    This feature is currently not very smart and is scheduled for improvement.
+    It is likely to break some sites. You should expect to need possibly 
+    many exceptions to this action, if it is enabled by default in
+    <TT
+CLASS="FILENAME"
+>default.action</TT
+>. Some sites just don't work without 
+    it.
    </P
 ></DD
+><DT
+>Example usage:</DT
+><DD
+><P
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{+fast-redirects}</PRE
+></TD
+></TR
+></TABLE
+>
+    </P
+></DD
 ></DL
 ></DIV
 ></DIV
@@ -1438,9 +1704,9 @@ CLASS="SECT3"
 CLASS="SECT3"
 ><A
 NAME="FILTER"
->8.5.6. <I
+>8.5.8. <I
 CLASS="EMPHASIS"
->+filter</I
+>filter</I
 ></A
 ></H4
 ><P
@@ -1449,348 +1715,346 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
+>Typical use:</DT
+><DD
+><P
+>Get rid of HTML and JavaScript annoyances, banner advertisements (by size), do fun text replacements, etc.</P
+></DD
+><DT
+>Effect:</DT
+><DD
+><P
+>    Text documents, including HTML and JavaScript, to which this action applies, are filtered on-the-fly
+    through the specified regular expression based substitutions.    
+   </P
+></DD
+><DT
 >Type:</DT
 ><DD
 ><P
 >Parameterized.</P
 ></DD
 ><DT
->Typical uses:</DT
+>Parameter:</DT
 ><DD
 ><P
->    Apply page filtering as defined by named sections of the
-    <TT
+>    The name of a filter, as defined in the <A
+HREF="filter-file.html"
+>filter file</A
+>
+    (typically <TT
 CLASS="FILENAME"
 >default.filter</TT
-> file to the specified site(s). 
-    <SPAN
-CLASS="QUOTE"
->"Filtering"</SPAN
-> can be any modification of the raw 
-    page content, including re-writing or deletion of content.
+>, set by the
+    <TT
+CLASS="LITERAL"
+><A
+HREF="config.html#FILTERFILE"
+>filterfile</A
+></TT
+>
+    option in the <A
+HREF="config.html"
+>config file</A
+>)
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Notes:</DT
 ><DD
 ><P
->    <SPAN
+>    For your convenience, there are a bunch of pre-defined filters available 
+    in the distribution filter file that you can use. See the example below for
+    a list.
+   </P
+><P
+>    This is potentially a very powerful feature!  But <SPAN
 CLASS="QUOTE"
->"+filter"</SPAN
-> must include the name of one of the section identifiers
-    from <TT
-CLASS="FILENAME"
->default.filter</TT
-> (or whatever
-    <I
-CLASS="EMPHASIS"
->filterfile</I
-> is specified in <TT
-CLASS="FILENAME"
->config</TT
->).
+>"rolling your own"</SPAN
+>
+    filters requires a knowledge of regular expressions and HTML.
+   </P
+><P
+>    Filtering requires buffering the page content, which may appear to
+    slow down page rendering since nothing is displayed until all content has
+    passed the filters. (It does not really take longer, but seems that way
+    since the page is not incrementally displayed.) This effect will be more
+    noticeable on slower connections.
+   </P
+><P
+>    At this time, <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> cannot (yet!) uncompress compressed
+    documents. If you want filtering to work on all documents, even those that
+    would normally be sent compressed, use the
+    <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#PREVENT-COMPRESSION"
+>prevent-compression</A
+></TT
+>
+    action in conjunction with <TT
+CLASS="LITERAL"
+>filter</TT
+>.
+   </P
+><P
+>    Filtering can achieve some of the effects as the 
+    <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#BLOCK"
+>block</A
+></TT
+>
+    action, i.e. it can be used to block ads and banners. 
+   </P
+><P
+>    <A
+HREF="contact.html"
+>Feedback</A
+> with suggestions for new or improved filters is particularly
+    welcome!
    </P
 ></DD
 ><DT
->Example usage (from the current <TT
+>Example usage (with filters from the distribution <TT
 CLASS="FILENAME"
 >default.filter</TT
->):</DT
+> file):</DT
 ><DD
 ><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
 >    <A
 NAME="FILTER-HTML-ANNOYANCES"
 ></A
 >
-    <I
-CLASS="EMPHASIS"
->+filter{html-annoyances}</I
->:  Get rid of particularly annoying HTML abuse.
-   </TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-><P
-></P
-><TABLE
+    <TABLE
 BORDER="0"
-><TBODY
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
 ><TR
 ><TD
->    <A
-NAME="FILTER-JS-ANNOYANCES"
-></A
->
-    <I
-CLASS="EMPHASIS"
->+filter{js-annoyances}</I
->:    Get rid of particularly annoying JavaScript abuse
-   </TD
+><PRE
+CLASS="SCREEN"
+>+filter{html-annoyances}     # Get rid of particularly annoying HTML abuse.</PRE
+></TD
 ></TR
-></TBODY
 ></TABLE
+>
+   </P
 ><P
-></P
-><P
-></P
-><TABLE
+>    <A
+NAME="FILTER-JS-ANNOYANCES"
+></A
+>
+    <TABLE
 BORDER="0"
-><TBODY
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
 ><TR
 ><TD
+><PRE
+CLASS="SCREEN"
+>+filter{js-annoyances}       # Get rid of particularly annoying JavaScript abuse</PRE
+></TD
+></TR
+></TABLE
+>
+   </P
+><P
 >    <A
-NAME="FILTER-CONTENT-COOKIES"
+NAME="FILTER-BANNERS-BY-SIZE"
 ></A
 >
-    <I
+    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+filter{banners-by-size}     # Kill banners by size (<I
 CLASS="EMPHASIS"
->+filter{content-cookies}</I
->:   Kill cookies that come in the HTML or JS content 
-   </TD
+>very</I
+> efficient!)</PRE
+></TD
 ></TR
-></TBODY
 ></TABLE
+>
+   </P
 ><P
-></P
-><P
-></P
-><TABLE
+>    <A
+NAME="FILTER-CONTENT-COOKIES"
+></A
+>
+    <TABLE
 BORDER="0"
-><TBODY
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
 ><TR
 ><TD
+><PRE
+CLASS="SCREEN"
+>+filter{content-cookies}     # Kill cookies that come sneaking in the HTML or JS content</PRE
+></TD
+></TR
+></TABLE
+>
+   </P
+><P
 >    <A
 NAME="FILTER-POPUPS"
 ></A
 >
-    <I
-CLASS="EMPHASIS"
->+filter{popups}</I
->:         Kill all popups in JS and HTML
-   </TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-><P
-></P
-><TABLE
+    <TABLE
 BORDER="0"
-><TBODY
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
 ><TR
 ><TD
->    <A
-NAME="FILTER-FRAMESET-BORDERS"
-></A
->
-    <I
-CLASS="EMPHASIS"
->+filter{frameset-borders}</I
->: Give frames a border and make them resizable 
-   </TD
+><PRE
+CLASS="SCREEN"
+>+filter{popups}              # Kill all popups in JS and HTML</PRE
+></TD
 ></TR
-></TBODY
 ></TABLE
+>
+   </P
 ><P
-></P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
 >    <A
 NAME="FILTER-WEBBUGS"
 ></A
 >
-    <I
-CLASS="EMPHASIS"
->+filter{webbugs}</I
->:          Squish WebBugs (1x1 invisible GIFs used for user tracking)
-   </TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-><P
-></P
-><TABLE
+    <TABLE
 BORDER="0"
-><TBODY
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
 ><TR
 ><TD
->    <A
-NAME="FILTER-REFRESH-TAGS"
-></A
->
-    <I
-CLASS="EMPHASIS"
->+filter{refresh-tags}</I
->:     Kill automatic refresh tags (for dial-on-demand setups) 
-   </TD
+><PRE
+CLASS="SCREEN"
+>+filter{webbugs}             # Squish WebBugs (1x1 invisible GIFs used for user tracking)</PRE
+></TD
 ></TR
-></TBODY
 ></TABLE
+>
+   </P
 ><P
-></P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
 >    <A
 NAME="FILTER-FUN"
 ></A
 >
-    <I
-CLASS="EMPHASIS"
->+filter{fun}</I
->:              Text replacements  for subversive browsing fun!
-   </TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-><P
-></P
-><TABLE
+    <TABLE
 BORDER="0"
-><TBODY
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
 ><TR
 ><TD
->    <A
-NAME="FILTER-NIMDA"
-></A
->
-    <I
-CLASS="EMPHASIS"
->+filter{nimda}</I
->:            Remove Nimda (virus) code.
-   </TD
+><PRE
+CLASS="SCREEN"
+>+filter{fun}                 # Text replacements for subversive browsing fun!</PRE
+></TD
 ></TR
-></TBODY
 ></TABLE
+>
+   </P
 ><P
-></P
-><P
-></P
-><TABLE
+>    <A
+NAME="FILTER-FRAMESET-BORDERS"
+></A
+>
+    <TABLE
 BORDER="0"
-><TBODY
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
 ><TR
 ><TD
+><PRE
+CLASS="SCREEN"
+>+filter{frameset-borders}    # Give frames a border and make them resizeable</PRE
+></TD
+></TR
+></TABLE
+> 
+   </P
+><P
 >    <A
-NAME="FILTER-BANNERS-BY-SIZE"
+NAME="FILTER-REFRESH-TAGS"
 ></A
 >
-    <I
-CLASS="EMPHASIS"
->+filter{banners-by-size}</I
->:  Kill banners by size (<I
-CLASS="EMPHASIS"
->very</I
-> efficient!)
-   </TD
+    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+filter{refresh-tags}        # Kill automatic refresh tags (for dial-on-demand setups)</PRE
+></TD
 ></TR
-></TBODY
 ></TABLE
+>
+   </P
 ><P
-></P
-><P
-></P
-><TABLE
+>    <A
+NAME="FILTER-NIMDA"
+></A
+>
+    <TABLE
 BORDER="0"
-><TBODY
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
 ><TR
 ><TD
+><PRE
+CLASS="SCREEN"
+>+filter{nimda}               # Remove Nimda (virus) code.</PRE
+></TD
+></TR
+></TABLE
+>
+   </P
+><P
 >    <A
 NAME="FILTER-SHOCKWAVE-FLASH"
 ></A
 >
-    <I
-CLASS="EMPHASIS"
->+filter{shockwave-flash}</I
->:   Kill embedded Shockwave Flash objects
-   </TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-><P
-></P
-><TABLE
+    <TABLE
 BORDER="0"
-><TBODY
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
 ><TR
 ><TD
+><PRE
+CLASS="SCREEN"
+>+filter{shockwave-flash}     # Kill embedded Shockwave Flash objects</PRE
+></TD
+></TR
+></TABLE
+>
+   </P
+><P
 >    <A
 NAME="FILTER-CRUDE-PARENTAL"
 ></A
 >
-    <I
-CLASS="EMPHASIS"
->+filter{crude-parental}</I
->:   Kill all web pages that contain the words "sex" or "warez"
-   </TD
+    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+filter{crude-parental}      # Kill all web pages that contain the words "sex" or "warez"</PRE
+></TD
 ></TR
-></TBODY
 ></TABLE
-><P
-></P
-></DD
-><DT
->Notes:</DT
-><DD
-><P
->    This is potentially a very powerful feature! And requires a knowledge 
-    of regular expressions if you want to <SPAN
-CLASS="QUOTE"
->"roll your own"</SPAN
->.
-    Filtering operates on a line by line basis throughout the entire page.
-   </P
-><P
->    Filtering requires buffering the page content, which may appear to
-    slow down page rendering since nothing is displayed until all content has
-    passed the filters. (It does not really take longer, but seems that way
-    since the page is not incrementally displayed.) This effect will be more
-    noticeable on slower connections.
-   </P
-><P
->    Filtering can achieve some of the effects as the 
-    <A
-HREF="actions-file#BLOCK"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+block"</SPAN
-></A
 >
-    action, i.e. it can be used to block ads and banners. In the overall 
-    scheme of things, filtering is one of the first things <SPAN
-CLASS="QUOTE"
->"Privoxy"</SPAN
-> 
-    does with a web page. So other most other actions are applied to the 
-    already <SPAN
-CLASS="QUOTE"
->"filtered"</SPAN
-> page.
    </P
 ></DD
 ></DL
@@ -1801,10 +2065,10 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="HIDE-FORWARDED-FOR-HEADERS"
->8.5.7. <I
+NAME="HANDLE-AS-IMAGE"
+>8.5.9. <I
 CLASS="EMPHASIS"
->+hide-forwarded-for-headers</I
+>handle-as-image</I
 ></A
 ></H4
 ><P
@@ -1813,45 +2077,201 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
-><DD
-><P
->Boolean.</P
-></DD
-><DT
->Typical uses:</DT
+>Typical use:</DT
 ><DD
 ><P
->    Block any existing X-Forwarded-for HTTP header, and do not add a new one.
-   </P
+>Mark URLs as belonging to images (so they'll be replaced by images <I
+CLASS="EMPHASIS"
+>if they get blocked</I
+>)</P
 ></DD
 ><DT
->Possible values:</DT
+>Effect:</DT
+><DD
+><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 <I
+CLASS="EMPHASIS"
+>also applies</I
+>,
+    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
+></DD
+><DT
+>Type:</DT
+><DD
+><P
+>Boolean.</P
+></DD
+><DT
+>Parameter:</DT
 ><DD
 ><P
 >    N/A
    </P
 ></DD
 ><DT
->Example usage:</DT
+>Notes:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+hide-forwarded-for-headers}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
+>    The below generic example section is actually part of <TT
+CLASS="FILENAME"
+>default.action</TT
+>.
+    It marks all URLs with well-known image file name extensions as images and should
+    be left intact. 
+   </P
+><P
+>    Users will probably only want to use the handle-as-image action in conjunction with
+    <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#BLOCK"
+>block</A
+></TT
+>, to block sources of banners, whose URLs don't
+    reflect the file type, like in the second example section.
+   </P
+><P
+>    Note that you cannot treat HTML pages as images in most cases. For instance, (inline) ad
+    frames require an HTML page to be sent, or they won't display properly.
+    Forcing <TT
+CLASS="LITERAL"
+>handle-as-image</TT
+> in this situation will not replace the
+    ad frame with an image, but lead to error messages.
+   </P
+></DD
+><DT
+>Example usage (sections):</DT
+><DD
+><P
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># Generic image extensions:
+#
+{+handle-as-image}
+/.*\.(gif|jpg|jpeg|png|bmp|ico)$
+
+# These don't look like images, but they're banners and should be
+# blocked as images:
+#
+{+block +handle-as-image}
+some.nasty-banner-server.com/junk.cgi?output=trash
+
+# Banner source! Who cares if they also have non-image content?
+ad.doubleclick.net </PRE
+></TD
+></TR
+></TABLE
+>
+   </P
+></DD
+></DL
+></DIV
+></DIV
+><DIV
+CLASS="SECT3"
+><H4
+CLASS="SECT3"
+><A
+NAME="HIDE-FORWARDED-FOR-HEADERS"
+>8.5.10. <I
 CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>hide-forwarded-for-headers</I
+></A
+></H4
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+>Typical use:</DT
+><DD
+><P
+>Improve privacy by hiding the true source of the request</P
+></DD
+><DT
+>Effect:</DT
+><DD
+><P
+>    Deletes any existing <SPAN
+CLASS="QUOTE"
+>"X-Forwarded-for:"</SPAN
+> HTTP header from client requests,
+    and prevents adding a new one.
+   </P
+></DD
+><DT
+>Type:</DT
+><DD
+><P
+>Boolean.</P
+></DD
+><DT
+>Parameter:</DT
+><DD
+><P
+>    N/A
+   </P
 ></DD
 ><DT
 >Notes:</DT
 ><DD
 ><P
->    It is fairly safe to leave this on. It does not seem to break many sites.
+>    It is fairly safe to leave this on.
+   </P
+><P
+>    This action is scheduled for improvement: It should be able to generate forged 
+    <SPAN
+CLASS="QUOTE"
+>"X-Forwarded-for:"</SPAN
+> headers using random IP addresses from a specified network,
+    to make successive requests from the same client look like requests from a pool of different
+    users sharing the same proxy.
+   </P
+></DD
+><DT
+>Example usage:</DT
+><DD
+><P
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+hide-forwarded-for-headers</PRE
+></TD
+></TR
+></TABLE
+>
    </P
 ></DD
 ></DL
@@ -1863,9 +2283,9 @@ CLASS="SECT3"
 CLASS="SECT3"
 ><A
 NAME="HIDE-FROM-HEADER"
->8.5.8. <I
+>8.5.11. <I
 CLASS="EMPHASIS"
->+hide-from-header</I
+>hide-from-header</I
 ></A
 ></H4
 ><P
@@ -1874,24 +2294,30 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Parameterized.</P
+>Keep your (old and ill) browser from telling web servers your email address</P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    To block the browser from sending your email address in a <SPAN
+>    Deletes any existing <SPAN
 CLASS="QUOTE"
 >"From:"</SPAN
->
-    header.
+> HTTP header, or replaces it with the
+    specified string.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
+><DD
+><P
+>Parameterized.</P
+></DD
+><DT
+>Parameter:</DT
 ><DD
 ><P
 >    Keyword: <SPAN
@@ -1901,21 +2327,6 @@ CLASS="QUOTE"
    </P
 ></DD
 ><DT
->Example usage:</DT
-><DD
-><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+hide-from-header{block}}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
-></DD
-><DT
 >Notes:</DT
 ><DD
 ><P
@@ -1923,16 +2334,58 @@ CLASS="EMPHASIS"
 CLASS="QUOTE"
 >"block"</SPAN
 > will completely remove the header 
-    (not to be confused with the <A
+    (not to be confused with the <TT
+CLASS="LITERAL"
+><A
 HREF="actions-file.html#BLOCK"
-TARGET="_top"
-><SPAN
+>block</A
+></TT
+>
+    action).
+   </P
+><P
+>    Alternately, you can specify any value you prefer to be sent to the web
+    server. If you do, it is a matter of fairness not to use any address that
+    is actually used by a real person.
+   </P
+><P
+>    This action is rarely needed, as modern web browsers don't send
+    <SPAN
 CLASS="QUOTE"
->"+block"</SPAN
-></A
-> action).
-    Alternately, you can specify any value you prefer to send to the web
-    server.
+>"From:"</SPAN
+> headers anymore.
+   </P
+></DD
+><DT
+>Example usage:</DT
+><DD
+><P
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+hide-from-header{block}</PRE
+></TD
+></TR
+></TABLE
+> or
+    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+hide-from-header{spam-me-senseless@sittingduck.example.com}</PRE
+></TD
+></TR
+></TABLE
+>
    </P
 ></DD
 ></DL
@@ -1943,14 +2396,14 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="HIDE-REFERER"
->8.5.9. <I
+NAME="HIDE-REFERRER"
+>8.5.12. <I
 CLASS="EMPHASIS"
->+hide-referer</I
+>hide-referrer</I
 ></A
 ></H4
 ><A
-NAME="HIDE-REFERRER"
+NAME="HIDE-REFERER"
 ></A
 ><P
 ></P
@@ -1958,51 +2411,53 @@ NAME="HIDE-REFERRER"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Parameterized.</P
+>Conceal which link you followed to get to a particular site</P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->     Don't send the <SPAN
+>    Deletes the <SPAN
 CLASS="QUOTE"
 >"Referer:"</SPAN
-> (sic) HTTP header to the web site.
-     Or, alternately send a forged header instead.
+> (sic) HTTP header from the client request,
+    or replaces it with a forged one.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
+><DD
+><P
+>Parameterized.</P
+></DD
+><DT
+>Parameter:</DT
 ><DD
 ><P
->     Prevent the header from being sent with the keyword, <SPAN
+></P
+><UL
+><LI
+><P
+><SPAN
 CLASS="QUOTE"
 >"block"</SPAN
->.
-     Or, <SPAN
+> to delete the header completely.</P
+></LI
+><LI
+><P
+><SPAN
 CLASS="QUOTE"
 >"forge"</SPAN
-> a URL to one from the same server as the request.
-     Or, set to user defined value of your choice.
-   </P
-></DD
-><DT
->Example usage:</DT
-><DD
+> to pretend to be coming from the homepage of the server we are talking to.</P
+></LI
+><LI
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+hide-referer{forge}}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>Any other string to set a user defined referrer.</P
+></LI
+></UL
 ></DD
 ><DT
 >Notes:</DT
@@ -2012,22 +2467,24 @@ CLASS="EMPHASIS"
 CLASS="QUOTE"
 >"forge"</SPAN
 > is the preferred option here, since some servers will
-    not send images back otherwise.
+    not send images back otherwise, in an attempt to prevent their valuable
+    content from being embedded elsewhere (and hence, without being surrounded
+    by <I
+CLASS="EMPHASIS"
+>their</I
+> banners).
    </P
 ><P
 >  
-   <SPAN
-CLASS="QUOTE"
->"+hide-referrer"</SPAN
+   <TT
+CLASS="LITERAL"
+>hide-referer</TT
 > is an alternate spelling of
-   <SPAN
-CLASS="QUOTE"
->"+hide-referer"</SPAN
->. It has the exact same parameters, and can be freely
-   mixed with, <SPAN
-CLASS="QUOTE"
->"+hide-referer"</SPAN
->. (<SPAN
+   <TT
+CLASS="LITERAL"
+>hide-referrer</TT
+> and the two can be can be freely
+   substituted with each other. (<SPAN
 CLASS="QUOTE"
 >"referrer"</SPAN
 > is the
@@ -2038,6 +2495,38 @@ CLASS="QUOTE"
 >.) 
   </P
 ></DD
+><DT
+>Example usage:</DT
+><DD
+><P
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+hide-referrer{forge}</PRE
+></TD
+></TR
+></TABLE
+> or
+     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+hide-referrer{http://www.yahoo.com/}</PRE
+></TD
+></TR
+></TABLE
+>
+   </P
+></DD
 ></DL
 ></DIV
 ></DIV
@@ -2047,9 +2536,9 @@ CLASS="SECT3"
 CLASS="SECT3"
 ><A
 NAME="HIDE-USER-AGENT"
->8.5.10. <I
+>8.5.13. <I
 CLASS="EMPHASIS"
->+hide-user-agent</I
+>hide-user-agent</I
 ></A
 ></H4
 ><P
@@ -2058,51 +2547,119 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Parameterized.</P
+>Conceal your type of browser and client operating system</P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    To change the <SPAN
+>    Replaces the value of the <SPAN
 CLASS="QUOTE"
 >"User-Agent:"</SPAN
-> header so web servers can't tell
-    your browser type. Who's business is it anyway?
+> HTTP header
+    in client requests with the specified value.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
 ><DD
 ><P
->    Any user defined string.
+>Parameterized.</P
+></DD
+><DT
+>Parameter:</DT
+><DD
+><P
+>    Any user-defined string.
    </P
 ></DD
 ><DT
->Example usage:</DT
+>Notes:</DT
 ><DD
+><DIV
+CLASS="WARNING"
+><P
+></P
+><TABLE
+CLASS="WARNING"
+BORDER="1"
+WIDTH="90%"
+><TR
+><TD
+ALIGN="CENTER"
+><B
+>Warning</B
+></TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
+>     This breaks many web sites that depend on looking at this header in order
+     to customize their content for different browsers (which, by the
+     way, is <I
 CLASS="EMPHASIS"
->{+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
+>NOT</I
+> a <A
+HREF="http://www.javascriptkit.com/javaindex.shtml"
+TARGET="_top"
+>smart way to do
+     that</A
+>!).
+    </P
+></TD
+></TR
+></TABLE
+></DIV
+><P
+>    Using this action in multi-user setups or wherever different types of
+    browsers will access the same <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is
+    <I
 CLASS="EMPHASIS"
->.msn.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>not recommended</I
+>. 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 in some cases). Example of this: some MSN sites will not 
+    let <SPAN
+CLASS="APPLICATION"
+>Mozilla</SPAN
+> enter, yet forging to a 
+    <SPAN
+CLASS="APPLICATION"
+>Netscape 6.1</SPAN
+> user-agent works just fine.
+    (Must be just a silly MS goof, I'm sure :-).
+   </P
+><P
+>    This action is scheduled for improvement.
+   </P
 ></DD
 ><DT
->Notes:</DT
+>Example usage:</DT
 ><DD
 ><P
->     Warning! This breaks many web sites that depend on this in order 
-     to determine how the target browser will respond to various 
-     requests. Use with caution.
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}</PRE
+></TD
+></TR
+></TABLE
+>
    </P
 ></DD
 ></DL
@@ -2113,10 +2670,13 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="HANDLE-AS-IMAGE"
->8.5.11. <I
+NAME="KILL-POPUPS"
+>8.5.14. <I
 CLASS="EMPHASIS"
->+handle-as-image</I
+>kill-popups<A
+NAME="KILL-POPUP"
+></A
+></I
 ></A
 ></H4
 ><P
@@ -2125,86 +2685,134 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Boolean.</P
+>Eliminate those annoying pop-up windows</P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    To define what <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> should treat 
-    automatically as an image, and is an important ingredient of how 
-    ads are handled.
+>    While loading the document, replace JavaScript code that opens
+    pop-up windows with (syntactically neutral) dummy code on the fly.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
 ><DD
 ><P
->    N/A
-   </P
+>Boolean.</P
 ></DD
 ><DT
->Example usage:</DT
+>Parameter:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+handle-as-image}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->/.*\.(gif|jpg|jpeg|png|bmp|ico)</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>    N/A
+   </P
 ></DD
 ><DT
 >Notes:</DT
 ><DD
 ><P
->    This only has meaning if the URL (or pattern) also is
-    <SPAN
-CLASS="QUOTE"
->"+block"</SPAN
->ed, in which case a user definable image can
-    be sent rather than a HTML page. This is integral to the whole concept of
-    ad blocking: the URL must match <I
-CLASS="EMPHASIS"
->both</I
-> a <A
-HREF="actions-file.html#BLOCK"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+block"</SPAN
-></A
-> rule,
+>    This action is easily confused with the built-in, hardwired <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+></TT
+>
+    action, but there are important differences: For <TT
+CLASS="LITERAL"
+>kill-popups</TT
+>,
+    the document need not be buffered, so it can be incrementally rendered while
+    downloading. But <TT
+CLASS="LITERAL"
+>kill-popups</TT
+> doesn't catch as many pop-ups as
+    <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+>{<TT
+CLASS="REPLACEABLE"
+><I
+>popups</I
+></TT
+>}</TT
+>
+    does. 
+   </P
+><P
+>    Think of it as a fast and efficient replacement for a filter that you
+    can use if you don't want any filtering at all. Note that it doesn't make
+    sense to combine it with any <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+></TT
+> action,
+    since as soon as one <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+></TT
+> applies,
+    the whole document needs to be buffered anyway, which destroys the advantage of
+    the <TT
+CLASS="LITERAL"
+>kill-popups</TT
+> action over its filter equivalent.
+   </P
+><P
+>    Killing all pop-ups is a dangerous business. Many shops and banks rely on
+    pop-ups to display forms, shopping carts etc, and killing only the unwanted pop-ups 
+    would require artificial intelligence in <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.
+    If the only kind of pop-ups that you want to kill are exit consoles (those
     <I
 CLASS="EMPHASIS"
->and</I
-> <SPAN
-CLASS="QUOTE"
->"+handle-as-image"</SPAN
->.
-    (See <A
-HREF="actions-file.html#SET-IMAGE-BLOCKER"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+set-image-blocker"</SPAN
-></A
+>really nasty</I
+> windows that appear when you close an other
+    one), you might want to use
+    <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+>{<TT
+CLASS="REPLACEABLE"
+><I
+>js-annoyances</I
+></TT
+>}</TT
 >
-    below for control over what will actually be displayed by the browser.)
+    instead. 
    </P
+></DD
+><DT
+>Example usage:</DT
+><DD
 ><P
->    There is little reason to change the default definition for this action.
-   </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+kill-popups</PRE
+></TD
+></TR
+></TABLE
+></P
 ></DD
 ></DL
 ></DIV
@@ -2214,10 +2822,10 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="SET-IMAGE-BLOCKER"
->8.5.12. <I
+NAME="LIMIT-CONNECT"
+>8.5.15. <I
 CLASS="EMPHASIS"
->+set-image-blocker</I
+>limit-connect</I
 ></A
 ></H4
 ><P
@@ -2226,127 +2834,90 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Parameterized.</P
+>Prevent abuse of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> as a TCP proxy relay</P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    Decide what to do with URLs that end up tagged with <I
-CLASS="EMPHASIS"
->both</I
-> 
-    <A
-HREF="actions-file.html#BLOCK"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+block"</SPAN
-></A
->
-    and <A
-HREF="actions-file.html#HANDLE-AS-IMAGE"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+handle-as-image"</SPAN
-></A
->,
-    e.g an advertisement.
+>    Specifies to which ports HTTP CONNECT requests are allowable.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
 ><DD
 ><P
->    There are four available options: <SPAN
-CLASS="QUOTE"
->"-set-image-blocker"</SPAN
-> will send a HTML
-    <SPAN
-CLASS="QUOTE"
->"blocked"</SPAN
-> page, usually resulting in a <SPAN
-CLASS="QUOTE"
->"broken
-    image"</SPAN
-> icon.
-    <SPAN
-CLASS="QUOTE"
->"+set-image-blocker{<I
-CLASS="EMPHASIS"
->blank</I
->}"</SPAN
-> will send a
-    1x1 transparent GIF image.
-    <SPAN
-CLASS="QUOTE"
->"+set-image-blocker{<I
-CLASS="EMPHASIS"
->pattern</I
->}"</SPAN
-> will send a
-    checkerboard type pattern (the default). And finally,
-    <SPAN
-CLASS="QUOTE"
->"+set-image-blocker{<I
-CLASS="EMPHASIS"
->http://xyz.com</I
->}"</SPAN
-> will
-    send a HTTP temporary redirect to the specified image. This has the
-    advantage of the icon being being cached by the browser, which will speed
-    up the display.
-   </P
+>Parameterized.</P
 ></DD
 ><DT
->Example usage:</DT
+>Parameter:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+set-image-blocker{blank}}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>    A comma-separated list of ports or port ranges (the latter using dashes, with the minimum
+    defaulting to 0 and the maximum to 65K).
+   </P
 ></DD
 ><DT
 >Notes:</DT
 ><DD
 ><P
->    If you want <I
-CLASS="EMPHASIS"
->invisible</I
-> ads, they need to meet 
-    criteria as matching both <I
-CLASS="EMPHASIS"
->images</I
-> and <I
-CLASS="EMPHASIS"
->blocked</I
->
-    actions. And then, <SPAN
-CLASS="QUOTE"
->"image-blocker"</SPAN
-> should be set to
+>    By default, i.e. if no <TT
+CLASS="LITERAL"
+>limit-connect</TT
+> action applies,
     <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> only allows HTTP CONNECT
+    requests to port 443 (the standard, secure HTTPS port). Use 
+    <TT
+CLASS="LITERAL"
+>limit-connect</TT
+> if more fine-grained control is desired
+    for some or all destinations.
+   </P
+><P
+>    The CONNECT methods exists in HTTP to allow access to secure websites
+    (<SPAN
 CLASS="QUOTE"
->"blank"</SPAN
-> for invisibility. Note you cannot treat HTML pages as
-    images in most cases. For instance, frames require an HTML page to
-    display. So a frame that is an ad, typically cannot be treated as an image.
-    Forcing an <SPAN
-CLASS="QUOTE"
->"image"</SPAN
-> in this situation just will not work
-    reliably. 
+>"https://"</SPAN
+> URLs) through proxies. It works very simply:
+    the proxy connects to the server on the specified port, and then
+    short-circuits its connections to the client and to the remote server.
+    This can be a big security hole, since CONNECT-enabled proxies can be
+    abused as TCP relays very easily.
+  </P
+><P
+>   If you don't know what any of this means, there probably is no reason to 
+   change this one, since the default is already very restrictive.
+  </P
+></DD
+><DT
+>Example usages:</DT
+><DD
+><P
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+limit-connect{443}                   # This is the default and need not be specified.
++limit-connect{80,443}                # Ports 80 and 443 are OK.
++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 (gaping security hole!)</PRE
+></TD
+></TR
+></TABLE
+>
    </P
 ></DD
 ></DL
@@ -2357,10 +2928,10 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="LIMIT-CONNECT"
->8.5.13. <I
+NAME="PREVENT-COMPRESSION"
+>8.5.16. <I
 CLASS="EMPHASIS"
->+limit-connect</I
+>prevent-compression</I
 ></A
 ></H4
 ><P
@@ -2369,78 +2940,119 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Parameterized.</P
+>    Ensure that servers send the content uncompressed, so it can be
+    passed through <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+></TT
+>s
+   </P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    By default, <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> only allows HTTP CONNECT
-    requests to port 443 (the standard, secure HTTPS port). Use 
-    <SPAN
-CLASS="QUOTE"
->"+limit-connect"</SPAN
-> to disable this altogether, or to allow 
-    more ports.
+>    Adds a header to the request that asks for uncompressed transfer.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
 ><DD
 ><P
->    Any valid port number, or port number range.
-   </P
+>Boolean.</P
 ></DD
 ><DT
->Example usages:</DT
+>Parameter:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->+limit-connect{443}</I
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;This&nbsp;is&nbsp;the&nbsp;default&nbsp;and&nbsp;need&nbsp;not&nbsp;be&nbsp;specified.<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->+limit-connect{80,443}</I
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Ports&nbsp;80&nbsp;and&nbsp;443&nbsp;are&nbsp;OK.<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->+limit-connect{-3, 7, 20-100, 500-}</I
->&nbsp;&nbsp;&nbsp;#&nbsp;Port&nbsp;less&nbsp;than&nbsp;3,&nbsp;7,&nbsp;20&nbsp;to&nbsp;100&nbsp;and&nbsp;above&nbsp;500&nbsp;are&nbsp;OK.<br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>    N/A
+   </P
 ></DD
 ><DT
 >Notes:</DT
 ><DD
 ><P
->    The CONNECT methods exists in HTTP to allow access to secure websites
-    (https:// URLs) through proxies. It works very simply: the proxy connects
-    to the server on the specified port, and then short-circuits its
-    connections to the client <I
-CLASS="EMPHASIS"
->and</I
-> to the remote proxy.
-    This can be a big security hole, since CONNECT-enabled proxies can be
-    abused as TCP relays very easily.
-  </P
+>    More and more websites send their content compressed by default, which
+    is generally a good idea and saves bandwidth. But for the <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+></TT
+>, <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#DEANIMATE-GIFS"
+>deanimate-gifs</A
+></TT
+>
+    and <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#KILL-POPUPS"
+>kill-popups</A
+></TT
+> actions to work,
+    <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> needs access to the  uncompressed data.
+    Unfortunately, <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> can't yet(!)  uncompress, filter, and
+    re-compress the content on the fly. So if you want to ensure that all websites, including
+    those that normally compress, can be filtered, you need to use this action.
+   </P
 ><P
-> 
-   If you want to allow CONNECT for more ports than this, or want to forbid
-   CONNECT altogether, you can specify a comma separated list of ports and
-   port ranges (the latter using dashes, with the minimum defaulting to 0 and
-   max to 65K).
-  </P
+>    This will slow down transfers from those websites, though. If you use any of the above-mentioned
+    actions, you will typically want to use <TT
+CLASS="LITERAL"
+>prevent-compression</TT
+> in conjunction
+    with them.
+   </P
 ><P
->   If you don't know what any of this means, there probably is no reason to 
-   change this one.
-  </P
+>    Note that some (rare) ill-configured sites don't handle requests for uncompressed
+    documents correctly (they send an empty document body). If you use <TT
+CLASS="LITERAL"
+>prevent-compression</TT
+>
+    per default, you'll have to add exceptions for those sites. See the example for how to do that.
+   </P
+></DD
+><DT
+>Example usage (sections):</DT
+><DD
+><P
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># Set default:
+#
+{+prevent-compression}
+/ # Match all sites
+
+# Make exceptions for ill sites:
+#
+{-prevent-compression}
+www.debianhelp.org
+www.pclinuxonline.com</PRE
+></TD
+></TR
+></TABLE
+>
+   </P
 ></DD
 ></DL
 ></DIV
@@ -2450,10 +3062,10 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="PREVENT-COMPRESSION"
->8.5.14. <I
+NAME="SEND-VANILLA-WAFER"
+>8.5.17. <I
 CLASS="EMPHASIS"
->+prevent-compression</I
+>send-vanilla-wafer</I
 ></A
 ></H4
 ><P
@@ -2462,79 +3074,60 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Boolean.</P
+>    Feed log analysis scripts with useless data.
+   </P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    Prevent the specified websites from compressing HTTP data.
+>    Sends a cookie with each request stating that you do not accept any copyright
+    on cookies sent to you, and asking the site operator not to track you.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
+><DD
+><P
+>Boolean.</P
+></DD
+><DT
+>Parameter:</DT
 ><DD
 ><P
 >    N/A
    </P
 ></DD
 ><DT
->Example usage:</DT
+>Notes:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+prevent-compression}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>    The vanilla wafer is a (relatively) unique header and could conceivably be used to track you.
+   </P
+><P
+>    This action is rarely used and not enabled in the default configuration.
+   </P
 ></DD
 ><DT
->Notes:</DT
+>Example usage:</DT
 ><DD
 ><P
->    Some websites do this, which can be a problem for
-    <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
->, since 
-    <A
-HREF="actions-file.html#FILTER"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+filter"</SPAN
-></A
->,
-    <A
-HREF="actions-file.html#KILL-POPUPS"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+kill-popups"</SPAN
-></A
->
-    and <A
-HREF="actions-file.html#GIF-DEANIMATE"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+gif-deanimate"</SPAN
-></A
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+send-vanilla-wafer</PRE
+></TD
+></TR
+></TABLE
 >
-    will not work on compressed data. This will slow down connections to those
-    websites, though. Default typically is to turn
-    <SPAN
-CLASS="QUOTE"
->"prevent-compression"</SPAN
-> on.
    </P
 ></DD
 ></DL
@@ -2545,10 +3138,10 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="SESSION-COOKIES-ONLY"
->8.5.15. <I
+NAME="SEND-WAFER"
+>8.5.18. <I
 CLASS="EMPHASIS"
->+session-cookies-only</I
+>send-wafer</I
 ></A
 ></H4
 ><P
@@ -2557,70 +3150,74 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Boolean.</P
+>    Send custom cookies or feed log analysis scripts with even more useless data.
+   </P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    Allow cookies for the current browser session <I
-CLASS="EMPHASIS"
->only</I
->.
+>    Sends a custom, user-defined cookie with each request.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
 ><DD
 ><P
->    N/A
-   </P
+>Multi-value.</P
 ></DD
 ><DT
->Example usage (disabling):</DT
+>Parameter:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{-session-cookies-only}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>    A string of the form <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="REPLACEABLE"
+><I
+>name</I
+></TT
+>=<TT
+CLASS="REPLACEABLE"
+><I
+>value</I
+></TT
+>"</SPAN
+>.
+   </P
 ></DD
 ><DT
 >Notes:</DT
 ><DD
 ><P
->    If websites set cookies, <SPAN
-CLASS="QUOTE"
->"+session-cookies-only"</SPAN
-> will make sure
-    they are erased when you exit and restart your web browser. This makes
-    profiling cookies useless, but won't break sites which require cookies so
-    that you can log in for transactions. This is generally turned on for all 
-    sites, and is the recommended setting.
+>    Being multi-valued, multiple instances of this action can apply to the same request,
+    resulting in multiple cookies being sent.
    </P
 ><P
->    <SPAN
-CLASS="QUOTE"
->"+prevent-*-cookies"</SPAN
-> actions should be turned off as well (see
-    below), for <SPAN
-CLASS="QUOTE"
->"+session-cookies-only"</SPAN
-> to work. Or, else no cookies 
-    will get through at all. For, <SPAN
-CLASS="QUOTE"
->"persistent"</SPAN
-> cookies that survive 
-    across browser sessions, see below as well.
+>    This action is rarely used and not enabled in the default configuration.
+   </P
+></DD
+><DT
+>Example usage (section):</DT
+><DD
+><P
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{+send-wafer{UsingPrivoxy=true}}
+my-internal-testing-server.void</PRE
+></TD
+></TR
+></TABLE
+>
    </P
 ></DD
 ></DL
@@ -2631,10 +3228,10 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="PREVENT-READING-COOKIES"
->8.5.16. <I
+NAME="SESSION-COOKIES-ONLY"
+>8.5.19. <I
 CLASS="EMPHASIS"
->+prevent-reading-cookies</I
+>session-cookies-only</I
 ></A
 ></H4
 ><P
@@ -2643,70 +3240,124 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
+>Typical use:</DT
 ><DD
 ><P
->Boolean.</P
+>    Allow only temporary <SPAN
+CLASS="QUOTE"
+>"session"</SPAN
+> cookies (for the current browser session <I
+CLASS="EMPHASIS"
+>only</I
+>).
+   </P
 ></DD
 ><DT
->Typical uses:</DT
+>Effect:</DT
 ><DD
 ><P
->    Explicitly prevent the web server from reading any cookies on your 
-    system.
+>    Deletes the <SPAN
+CLASS="QUOTE"
+>"expires"</SPAN
+> field from <SPAN
+CLASS="QUOTE"
+>"Set-Cookie:"</SPAN
+> server headers.
+    Most browsers will not store such cookies permanently and forget them in between sessions.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
 ><DD
 ><P
->    N/A
-   </P
+>Boolean.</P
 ></DD
 ><DT
->Example usage:</DT
+>Parameter:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+prevent-reading-cookies}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
+>    N/A
+   </P
 ></DD
 ><DT
 >Notes:</DT
 ><DD
 ><P
->    Often used in conjunction with <SPAN
-CLASS="QUOTE"
->"+prevent-setting-cookies"</SPAN
-> to 
-    disable cookies completely. Note that 
-    <A
-HREF="actions-file.html#SESSION-COOKIES-ONLY"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+session-cookies-only"</SPAN
-></A
+>    This is less strict than <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
+>crunch-incoming-cookies</A
+></TT
+> / 
+    <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
+>crunch-outgoing-cookies</A
+></TT
+> and allows you to browse
+    websites that insist or rely on setting cookies, without compromising your privacy too badly.
+   </P
+><P
+>    Most browsers will not permanently store cookies that have been processed by
+    <TT
+CLASS="LITERAL"
+>session-cookies-only</TT
+> and will forget about them between sessions.
+    This makes profiling cookies useless, but won't break sites which require cookies so
+    that you can log in for transactions. This is generally turned on for all 
+    sites, and is the recommended setting.
+   </P
+><P
+>    It makes <I
+CLASS="EMPHASIS"
+>no sense at all</I
+> to use <TT
+CLASS="LITERAL"
+>session-cookies-only</TT
 >
-    requires these to both be disabled (or else it never gets any cookies to cache).
+    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
+>. If you do, cookies
+    will be plainly killed.
    </P
 ><P
->    For <SPAN
+>    Note that it is up to the browser how it handles such cookies without an <SPAN
 CLASS="QUOTE"
->"persistent"</SPAN
-> cookies to work (i.e. they survive across browser 
-    sessions and reboots), all three cookie settings should be <SPAN
-CLASS="QUOTE"
->"off"</SPAN
-> 
-    for the specified sites.
+>"expires"</SPAN
+>
+    field. If you use an exotic browser, you might want to try it out to be sure.
+   </P
+></DD
+><DT
+>Example usage:</DT
+><DD
+><P
+>     <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+session-cookies-only</PRE
+></TD
+></TR
+></TABLE
+>
    </P
 ></DD
 ></DL
@@ -2717,10 +3368,10 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="PREVENT-SETTING-COOKIES"
->8.5.17. <I
+NAME="SET-IMAGE-BLOCKER"
+>8.5.20. <I
 CLASS="EMPHASIS"
->+prevent-setting-cookies</I
+>set-image-blocker</I
 ></A
 ></H4
 ><P
@@ -2729,262 +3380,230 @@ CLASS="EMPHASIS"
 CLASS="VARIABLELIST"
 ><DL
 ><DT
->Type:</DT
-><DD
-><P
->Boolean.</P
-></DD
-><DT
->Typical uses:</DT
-><DD
-><P
->    Explicitly block the web server from storing cookies on your 
-    system.
-   </P
-></DD
-><DT
->Possible values:</DT
+>Typical use:</DT
 ><DD
 ><P
->    N/A
-   </P
+>Choose the replacement for blocked images</P
 ></DD
 ><DT
->Example usage:</DT
+>Effect:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+prevent-setting-cookies}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
+>     This action alone doesn't do anything noticeable. If <I
 CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
-></DD
-><DT
->Notes:</DT
-><DD
-><P
->    Often used in conjunction with <SPAN
-CLASS="QUOTE"
->"+prevent-reading-cookies"</SPAN
-> to 
-    disable cookies completely (see above).
-   </P
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><H4
-CLASS="SECT3"
+>both</I
+>
+     <TT
+CLASS="LITERAL"
 ><A
-NAME="KILL-POPUP"
->8.5.18. <I
+HREF="actions-file.html#BLOCK"
+>block</A
+></TT
+> <I
 CLASS="EMPHASIS"
->+kill-popups<A
-NAME="KILL-POPUPS"
-></A
-></I
-></A
-></H4
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->Type:</DT
-><DD
-><P
->Boolean.</P
-></DD
-><DT
->Typical uses:</DT
-><DD
-><P
->    Stop those annoying JavaScript pop-up windows! 
+>and</I
+> <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#HANDLE-AS-IMAGE"
+>handle-as-image</A
+></TT
+> <I
+CLASS="EMPHASIS"
+>also</I
+>
+     apply, i.e. if the request is to be blocked as an image,
+     <I
+CLASS="EMPHASIS"
+>then</I
+> the parameter of this action decides what will be
+     sent as a replacement.
    </P
 ></DD
 ><DT
->Possible values:</DT
+>Type:</DT
 ><DD
 ><P
->    N/A
-   </P
+>Parameterized.</P
 ></DD
 ><DT
->Example usage:</DT
+>Parameter:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+kill-popups}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
-></DD
-><DT
->Notes:</DT
-><DD
+></P
+><UL
+><LI
 ><P
->    <SPAN
+>      <SPAN
 CLASS="QUOTE"
->"+kill-popups"</SPAN
-> uses a built in filter to disable pop-ups
-    that use the <TT
-CLASS="LITERAL"
->window.open()</TT
-> function, etc. This is 
-    one of the first actions processed by <SPAN
+>"pattern"</SPAN
+> to send a built-in checkerboard pattern image. The image is visually
+      decent, scales very well, and makes it obvious where banners were busted.
+     </P
+></LI
+><LI
+><P
+>      <SPAN
+CLASS="QUOTE"
+>"blank"</SPAN
+> to send a built-in transparent image. This makes banners disappear
+      completely, but makes it hard to detect where <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> has blocked
+      images on a given page and complicates troubleshooting if <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 >
-    as it contacts the remote web server. This action is not always 100% reliable, 
-    and is supplemented by <SPAN
-CLASS="QUOTE"
->"+filter{<I
-CLASS="EMPHASIS"
->popups</I
->}"</SPAN
->.
-    </P
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><H4
-CLASS="SECT3"
-><A
-NAME="SEND-VANILLA-WAFER"
->8.5.19. <I
-CLASS="EMPHASIS"
->+send-vanilla-wafer</I
-></A
-></H4
+      has blocked innocent images, like navigation icons.
+     </P
+></LI
+><LI
 ><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->Type:</DT
-><DD
+>      <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="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).
+     </P
 ><P
->Boolean.</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"
+><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
 ><DT
->Typical uses:</DT
+>Notes:</DT
 ><DD
 ><P
->    Sends a cookie for every site stating that you do not accept any copyright
-    on cookies sent to you, and asking them not to track you.
+>    The URLs for the built-in images are <SPAN
+CLASS="QUOTE"
+>"http://config.privoxy.org/send-banner?type=<TT
+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
-></DD
-><DT
->Possible values:</DT
-><DD
 ><P
->    N/A
+>    There is a third (advanced) type, called <SPAN
+CLASS="QUOTE"
+>"auto"</SPAN
+>. It is <I
+CLASS="EMPHASIS"
+>NOT</I
+> 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, had it been an image.
    </P
 ></DD
 ><DT
 >Example usage:</DT
 ><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+send-vanilla-wafer}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
-></DD
-><DT
->Notes:</DT
-><DD
+>    Built-in pattern:
+   </P
 ><P
->    This action only applies if you are using a <TT
-CLASS="FILENAME"
->jarfile</TT
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+set-image-blocker{pattern}</PRE
+></TD
+></TR
+></TABLE
 >
-    for saving cookies. Of course, this is a (relatively) unique header and 
-    could conceivably be used to track you.
    </P
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><H4
-CLASS="SECT3"
-><A
-NAME="SEND-WAFER"
->8.5.20. <I
-CLASS="EMPHASIS"
->+send-wafer</I
-></A
-></H4
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->Type:</DT
-><DD
-><P
->Multi-value.</P
-></DD
-><DT
->Typical uses:</DT
-><DD
 ><P
->    This allows you to send an arbitrary, user definable cookie.
+>    Redirect to the BSD devil:
    </P
-></DD
-><DT
->Possible values:</DT
-><DD
 ><P
->    User specified cookie name and corresponding value.
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}</PRE
+></TD
+></TR
+></TABLE
+>
    </P
-></DD
-><DT
->Example usage:</DT
-><DD
 ><P
-CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->{+send-wafer{name=value}}</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
-CLASS="EMPHASIS"
->.example.com</I
-><br>
-&nbsp;&nbsp;&nbsp;&nbsp;</P
-></DD
-><DT
->Notes:</DT
-><DD
+>    Redirect to the built-in pattern for better caching:
+   </P
 ><P
->    This can be specified multiple times in order to add as many cookies as you
-    like.
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>+set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}</PRE
+></TD
+></TR
+></TABLE
+>
    </P
 ></DD
 ></DL
@@ -2995,7 +3614,7 @@ CLASS="SECT3"
 ><H3
 CLASS="SECT3"
 ><A
-NAME="AEN2289"
+NAME="AEN2469"
 >8.5.21. Summary</A
 ></H3
 ><P
@@ -3009,646 +3628,1333 @@ HREF="appendix.html#ACTIONSANAT"
 > for a brief example on troubleshooting
  actions.</P
 ></DIV
+></DIV
 ><DIV
-CLASS="SECT3"
+CLASS="SECT2"
 ><H2
-CLASS="SECT3"
+CLASS="SECT2"
 ><A
-NAME="ACT-EXAMPLES"
->8.5.22. Sample Actions Files</A
+NAME="ALIASES"
+>8.6. Aliases</A
 ></H2
 ><P
-> Remember that the meaning of any of the above references is reversed by preceding
- the action with a <SPAN
+> Custom <SPAN
 CLASS="QUOTE"
->"-"</SPAN
->, in place of the <SPAN
+>"actions"</SPAN
+>, known to <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ as <SPAN
 CLASS="QUOTE"
->"+"</SPAN
->. Also, 
- that some actions are turned on in the default section of the actions file, 
- and require little to no additional configuration. These are just <SPAN
+>"aliases"</SPAN
+>, can be defined by combining other actions.
+ These can in turn be invoked just like the built-in actions.
+ Currently, an alias name can contain any character except space, tab,
+ <SPAN
 CLASS="QUOTE"
->"on"</SPAN
->.</P
-><P
-> But, other actions that are turned on in the default section <I
-CLASS="EMPHASIS"
->do
- typically require</I
-> exceptions to be listed in the latter sections of 
- one of our actions file. For instance, by default no URLs are
+>"="</SPAN
+>,
  <SPAN
 CLASS="QUOTE"
->"blocked"</SPAN
-> (i.e. in the default definitions of
- <TT
-CLASS="FILENAME"
->default.action</TT
->). We need exceptions to this in order to
- <I
+>"{"</SPAN
+> and <SPAN
+CLASS="QUOTE"
+>"}"</SPAN
+>, but we <I
 CLASS="EMPHASIS"
->enable</I
-> ad blocking in the lower sections. But we need to
- be very selective about what we do block. Thus, the default is <SPAN
+>strongly 
+ recommend</I
+> 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"
->"off"</SPAN
+>"-"</SPAN
+> sign, since they are merely textually
+ expanded.</P
+><P
+> Aliases can be used throughout the actions file, but they <I
+CLASS="EMPHASIS"
+>must be
+ defined in a special section at the top of the file!</I
 >
- for blocking.</P
+ 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
+ <I
+CLASS="EMPHASIS"
+>one</I
+> 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
+><P
+> Currently, there is one big drawback to using aliases, though:
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>'s built-in web-based action file
+ editor honors aliases when reading the actions files, but it expands
+ them before writing. So the effects of your aliases are of course preserved,
+ but the aliases themselves are lost when you edit sections that use aliases
+ with it.
+ This is likely to change in future versions of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.</P
+><P
+> Now let's define some aliases...</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="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}}
+
+ # These aliases just save typing later:
+ # (Note that some already use other aliases!)
+ #
+ +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
+ -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
+ block-as-image      = +block +handle-as-image
+ mercy-for-cookies   = -crunch-all-cookies -session-cookies-only
+
+ # These aliases define combinations of actions
+ # that are useful for certain types of sites:
+ #
+ fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -kill-popups
+ shop        = -crunch-all-cookies -filter{popups} -kill-popups
+
+ # Short names for other aliases, for really lazy people ;-)
+ #
+ c0 = +crunch-all-cookies
+ c1 = -crunch-all-cookies</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> ...and put them to use. These sections would appear in the lower part of an 
+ actions file and define exceptions to the default actions (as specified further
+ up for the <SPAN
+CLASS="QUOTE"
+>"/"</SPAN
+> pattern):</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="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
+ .nytimes.com
+
+ # Shopping sites:
+ # Allow cookies (for setting and retrieving your customer data)
+ #           
+ {shop}
+ .quietpc.com
+ .worldpay.com   # for quietpc.com
+ .scan.co.uk
+
+ # These shops require pop-ups:
+ #
+ {shop -kill-popups -filter{popups}}
+  .dabs.com
+  .overclockers.co.uk</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Aliases like <SPAN
+CLASS="QUOTE"
+>"shop"</SPAN
+> and <SPAN
+CLASS="QUOTE"
+>"fragile"</SPAN
+> are often used for 
+ <SPAN
+CLASS="QUOTE"
+>"problem"</SPAN
+> sites that require some actions to be disabled 
+ in order to function properly.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="ACT-EXAMPLES"
+>8.7. Actions Files Tutorial</A
+></H2
 ><P
-> Below is a liberally commented sample <TT
+> The above chapters have shown <A
+HREF="actions-file.html"
+>which actions files
+ there are and how they are organized</A
+>, how actions are <A
+HREF="actions-file.html#ACTIONS"
+>specified</A
+> and <A
+HREF="actions-file.html#ACTIONS-APPLY"
+>applied
+ to URLs</A
+>, how <A
+HREF="actions-file.html#AF-PATTERNS"
+>patterns</A
+> work, and how to
+ define and use <A
+HREF="actions-file.html#ALIASES"
+>aliases</A
+>. Now, let's look at an
+ example <TT
 CLASS="FILENAME"
 >default.action</TT
-> file
- to demonstrate how all the pieces come together. And to show how exceptions
- to the default policies can be handled. This is followed by a brief 
- <TT
+> and <TT
 CLASS="FILENAME"
 >user.action</TT
-> with similar examples.</P
+>
+ file and see how all these pieces come together:</P
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="AEN2521"
+>8.7.1. default.action</A
+></H3
 ><P
-> <TT
-CLASS="LITERAL"
->  <P
-CLASS="LITERALLAYOUT"
->#&nbsp;Sample&nbsp;default.action&nbsp;file&nbsp;&#60;developers@privoxy.org&#62;<br>
-<br>
-#&nbsp;Settings&nbsp;--&nbsp;Don't&nbsp;change!&nbsp;For&nbsp;internal&nbsp;Privoxy&nbsp;use&nbsp;ONLY.<br>
-{{settings}}<br>
-for-privoxy-version=3.0<br>
-<br>
-<br>
-##########################################################################<br>
-#&nbsp;<A
+>Every config file should start with a short comment stating its purpose:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># Sample default.action file &#60;developers@privoxy.org&#62;</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+>Then, since this is the <TT
+CLASS="FILENAME"
+>default.action</TT
+> file, the
+first section is a special section for internal use that you needn't
+change or worry about:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>##########################################################################
+# Settings -- Don't change! For internal Privoxy use ONLY.
+##########################################################################
+
+{{settings}}
+for-privoxy-version=3.0</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+>After that comes the (optional) alias section. We'll use the example
+section from the above <A
 HREF="actions-file.html#ALIASES"
-TARGET="_top"
->Aliases</A
->&nbsp;must&nbsp;be&nbsp;defined&nbsp;*before*&nbsp;they&nbsp;are&nbsp;used.&nbsp;These&nbsp;are<br>
-#&nbsp;easier&nbsp;to&nbsp;remember,&nbsp;and&nbsp;can&nbsp;combine&nbsp;several&nbsp;actions&nbsp;into&nbsp;one.&nbsp;Once&nbsp;<br>
-#&nbsp;defined&nbsp;they&nbsp;can&nbsp;be&nbsp;used&nbsp;just&nbsp;like&nbsp;any&nbsp;built-in&nbsp;action&nbsp;--&nbsp;but&nbsp;within&nbsp;<br>
-#&nbsp;this&nbsp;file&nbsp;only!&nbsp;Aliases&nbsp;do&nbsp;not&nbsp;require&nbsp;a&nbsp;+&nbsp;or&nbsp;-&nbsp;sign.<br>
-##########################################################################<br>
-<br>
-#&nbsp;Some&nbsp;useful&nbsp;aliases.<br>
-#&nbsp;Alias&nbsp;to&nbsp;turn&nbsp;off&nbsp;cookie&nbsp;handling,&nbsp;ie&nbsp;allow&nbsp;all&nbsp;cookies&nbsp;unmolested.<br>
-&nbsp;-prevent-cookies&nbsp;=&nbsp;-prevent-setting-cookies&nbsp;-prevent-reading-cookies&nbsp;\<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-session-cookies-only<br>
-<br>
-#&nbsp;Alias&nbsp;to&nbsp;both&nbsp;block&nbsp;and&nbsp;treat&nbsp;as&nbsp;if&nbsp;an&nbsp;image&nbsp;for&nbsp;ad&nbsp;blocking<br>
-#&nbsp;purposes.<br>
-&nbsp;+imageblock&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;+block&nbsp;+handle-as-image<br>
-<br>
-#&nbsp;Fragile&nbsp;sites&nbsp;should&nbsp;have&nbsp;the&nbsp;minimum&nbsp;changes:<br>
-&nbsp;fragile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;-block&nbsp;-deanimate-gifs&nbsp;-fast-redirects&nbsp;-filter&nbsp;-hide-referer&nbsp;\<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-prevent-cookies&nbsp;-kill-popups<br>
-<br>
-#&nbsp;Shops&nbsp;should&nbsp;be&nbsp;allowed&nbsp;to&nbsp;set&nbsp;persistent&nbsp;cookies<br>
-&nbsp;shop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;-filter&nbsp;-prevent-cookies&nbsp;-session-cookies-only<br>
-<br>
-<br>
-##########################################################################<br>
-#&nbsp;Begin&nbsp;default&nbsp;action&nbsp;settings.&nbsp;Anything&nbsp;in&nbsp;this&nbsp;section&nbsp;will&nbsp;match&nbsp;<br>
-#&nbsp;all&nbsp;URLs&nbsp;--&nbsp;UNLESS&nbsp;we&nbsp;have&nbsp;exceptions&nbsp;that&nbsp;also&nbsp;match,&nbsp;defined&nbsp;below&nbsp;this&nbsp;<br>
-#&nbsp;section.&nbsp;We&nbsp;will&nbsp;show&nbsp;all&nbsp;potential&nbsp;actions&nbsp;here&nbsp;whether&nbsp;they&nbsp;are&nbsp;on&nbsp;<br>
-#&nbsp;or&nbsp;off.&nbsp;We&nbsp;could&nbsp;omit&nbsp;any&nbsp;disabled&nbsp;action&nbsp;if&nbsp;we&nbsp;wanted,&nbsp;since&nbsp;all&nbsp;<br>
-#&nbsp;actions&nbsp;are&nbsp;'off'&nbsp;by&nbsp;default&nbsp;anyway.&nbsp;Shown&nbsp;for&nbsp;completeness&nbsp;only.<br>
-#&nbsp;Actions&nbsp;are&nbsp;enabled&nbsp;if&nbsp;preceded&nbsp;by&nbsp;a&nbsp;'+',&nbsp;otherwise&nbsp;they&nbsp;are&nbsp;disabled&nbsp;<br>
-#&nbsp;(unless&nbsp;an&nbsp;alias&nbsp;has&nbsp;been&nbsp;defined&nbsp;without&nbsp;this).<br>
-##########################################################################<br>
-&nbsp;{&nbsp;\<br>
-&nbsp;<A
+>chapter on aliases</A
+>,
+that also explains why and how aliases are used:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>##########################################################################
+# Aliases
+##########################################################################
+{{alias}}
+
+# These aliases just save typing later:
+# (Note that some already use other aliases!)
+#
++crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
+-crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
+block-as-image      = +block +handle-as-image
+mercy-for-cookies   = -crunch-all-cookies -session-cookies-only
+
+# These aliases define combinations of actions
+# that are useful for certain types of sites:
+#
+fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -kill-popups
+shop        = mercy-for-cookies -filter{popups} -kill-popups</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Now come the regular sections, i.e. sets of actions, accompanied
+ by URL patterns to which they apply. Remember <I
+CLASS="EMPHASIS"
+>all actions
+ are disabled when matching starts</I
+>, so we have to explicitly
+ enable the ones we want.</P
+><P
+> The first regular section is probably the most important. It has only
+ one pattern, <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="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 <I
+CLASS="EMPHASIS"
+>will
+ be applied to all requests as a start</I
+>. It can  be partly or
+ wholly overridden by later matches further down this file, or in user.action,
+ 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 real need to disable any actions here, but we will do that nonetheless,
+ to have a complete listing for your reference. (Remember: A <SPAN
+CLASS="QUOTE"
+>"+"</SPAN
+>
+ preceding the action name enables the action, a <SPAN
+CLASS="QUOTE"
+>"-"</SPAN
+> disables!).
+ Also note how this long line has been made more readable by splitting it into
+ multiple lines with line continuation.</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>##########################################################################
+# "Defaults" section:
+##########################################################################
+ { \
+ -<A
 HREF="actions-file.html#ADD-HEADER"
-TARGET="_top"
->-add-header</A
->&nbsp;\<br>
-&nbsp;<A
+>add-header</A
+> \
+ -<A
 HREF="actions-file.html#BLOCK"
-TARGET="_top"
->-block</A
->&nbsp;\<br>
-&nbsp;<A
+>block</A
+> \
+ -<A
+HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
+>crunch-incoming-cookies</A
+> \
+ -<A
+HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
+>crunch-outgoing-cookies</A
+> \
+ +<A
 HREF="actions-file.html#DEANIMATE-GIFS"
-TARGET="_top"
->-deanimate-gifs</A
->&nbsp;\<br>
-&nbsp;<A
+>deanimate-gifs</A
+> \
+ -<A
 HREF="actions-file.html#DOWNGRADE-HTTP-VERSION"
-TARGET="_top"
->-downgrade-http-version</A
->&nbsp;\<br>
-&nbsp;<A
+>downgrade-http-version</A
+> \
+ +<A
 HREF="actions-file.html#FAST-REDIRECTS"
-TARGET="_top"
->+fast-redirects</A
->&nbsp;\<br>
-&nbsp;<A
+>fast-redirects</A
+> \
+ +<A
 HREF="actions-file.html#FILTER-HTML-ANNOYANCES"
-TARGET="_top"
->+filter{html-annoyances}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{html-annoyances}</A
+> \
+ +<A
 HREF="actions-file.html#FILTER-JS-ANNOYANCES"
-TARGET="_top"
->+filter{js-annoyances}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{js-annoyances}</A
+> \
+ -<A
 HREF="actions-file.html#FILTER-CONTENT-COOKIES"
-TARGET="_top"
->-filter{content-cookies}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{content-cookies}</A
+> \
+ +<A
 HREF="actions-file.html#FILTER-POPUPS"
-TARGET="_top"
->-filter{popups}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{popups}</A
+> \
+ +<A
 HREF="actions-file.html#FILTER-WEBBUGS"
-TARGET="_top"
->+filter{webbugs}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{webbugs}</A
+> \
+ -<A
 HREF="actions-file.html#FILTER-REFRESH-TAGS"
-TARGET="_top"
->-filter{refresh-tags}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{refresh-tags}</A
+> \
+ -<A
 HREF="actions-file.html#FILTER-FUN"
-TARGET="_top"
->-filter{fun}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{fun}</A
+> \
+ +<A
 HREF="actions-file.html#FILTER-NIMDA"
-TARGET="_top"
->+filter{nimda}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{nimda}</A
+> \
+ +<A
 HREF="actions-file.html#FILTER-BANNERS-BY-SIZE"
-TARGET="_top"
->+filter{banners-by-size}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{banners-by-size}</A
+> \
+ -<A
 HREF="actions-file.html#FILTER-SHOCKWAVE-FLASH"
-TARGET="_top"
->-filter{shockwave-flash}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{shockwave-flash}</A
+> \
+ -<A
 HREF="actions-file.html#FILTER-CRUDE-PARENTAL"
-TARGET="_top"
->-filter{crude-prental}</A
->&nbsp;\<br>
-&nbsp;<A
+>filter{crude-parental}</A
+> \
+ -<A
+HREF="actions-file.html#HANDLE-AS-IMAGE"
+>handle-as-image</A
+> \
+ +<A
 HREF="actions-file.html#HIDE-FORWARDED-FOR-HEADERS"
-TARGET="_top"
->+hide-forwarded-for-headers</A
->&nbsp;\<br>
-&nbsp;<A
+>hide-forwarded-for-headers</A
+> \
+ +<A
 HREF="actions-file.html#HIDE-FROM-HEADER"
-TARGET="_top"
->+hide-from-header{block}</A
->&nbsp;\<br>
-&nbsp;<A
+>hide-from-header{block}</A
+> \
+ +<A
 HREF="actions-file.html#HIDE-REFERER"
-TARGET="_top"
->-hide-referrer</A
->&nbsp;\<br>
-&nbsp;<A
+>hide-referrer{forge}</A
+> \
+ -<A
 HREF="actions-file.html#HIDE-USER-AGENT"
-TARGET="_top"
->-hide-user-agent</A
->&nbsp;\<br>
-&nbsp;<A
-HREF="actions-file.html#HANDLE-AS-IMAGE"
-TARGET="_top"
->-handle-as-image</A
->&nbsp;\<br>
-&nbsp;<A
-HREF="actions-file.html#SET-IMAGE-BLOCKER"
-TARGET="_top"
->+set-image-blocker{pattern}</A
->&nbsp;\<br>
-&nbsp;<A
+>hide-user-agent</A
+> \
+ -<A
+HREF="actions-file.html#KILL-POPUPS"
+>kill-popups</A
+> \
+ -<A
 HREF="actions-file.html#LIMIT-CONNECT"
-TARGET="_top"
->-limit-connect</A
->&nbsp;\<br>
-&nbsp;<A
+>limit-connect</A
+> \
+ +<A
 HREF="actions-file.html#PREVENT-COMPRESSION"
-TARGET="_top"
->+prevent-compression</A
->&nbsp;\<br>
-&nbsp;<A
-HREF="actions-file.html#SESSION-COOKIES-ONLY"
-TARGET="_top"
->-session-cookies-only</A
->&nbsp;\<br>
-&nbsp;<A
-HREF="actions-file.html#PREVENT-READING-COOKIES"
-TARGET="_top"
->-prevent-reading-cookies</A
->&nbsp;\<br>
-&nbsp;<A
-HREF="actions-file.html#PREVENT-SETTING-COOKIES"
-TARGET="_top"
->-prevent-setting-cookies</A
->&nbsp;\<br>
-&nbsp;<A
-HREF="actions-file.html#KILL-POPUPS"
-TARGET="_top"
->-kill-popups</A
->&nbsp;\<br>
-&nbsp;<A
+>prevent-compression</A
+> \
+ -<A
 HREF="actions-file.html#SEND-VANILLA-WAFER"
-TARGET="_top"
->-send-vanilla-wafer</A
->&nbsp;\<br>
-&nbsp;<A
+>send-vanilla-wafer</A
+> \
+ -<A
 HREF="actions-file.html#SEND-WAFER"
-TARGET="_top"
->-send-wafer</A
->&nbsp;\<br>
-&nbsp;}<br>
-&nbsp;/&nbsp;#&nbsp;forward&nbsp;slash&nbsp;will&nbsp;match&nbsp;*all*&nbsp;potential&nbsp;URL&nbsp;patterns.&nbsp;<br>
-<br>
-##########################################################################<br>
-#&nbsp;Default&nbsp;behavior&nbsp;is&nbsp;now&nbsp;set.&nbsp;Now&nbsp;we&nbsp;will&nbsp;define&nbsp;some&nbsp;exceptions&nbsp;to&nbsp;our&nbsp;<br>
-#&nbsp;default&nbsp;action&nbsp;policies.<br>
-##########################################################################<br>
-<br>
-#&nbsp;These&nbsp;sites&nbsp;are&nbsp;very&nbsp;complex&nbsp;and&nbsp;require&nbsp;very&nbsp;minimal&nbsp;interference.<br>
-#&nbsp;We'll&nbsp;disable&nbsp;most&nbsp;actions&nbsp;with&nbsp;our&nbsp;'fragile'&nbsp;alias:<br>
-&nbsp;{&nbsp;fragile&nbsp;}<br>
-&nbsp;.office.microsoft.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;surprise,&nbsp;surprise!<br>
-&nbsp;.windowsupdate.microsoft.com<br>
-<br>
-<br>
-#&nbsp;Shopping&nbsp;sites&nbsp;-&nbsp;not&nbsp;as&nbsp;fragile&nbsp;but&nbsp;require&nbsp;some&nbsp;special&nbsp;<br>
-#&nbsp;handling.&nbsp;We&nbsp;still&nbsp;want&nbsp;to&nbsp;block&nbsp;ads,&nbsp;and&nbsp;we&nbsp;will&nbsp;allow&nbsp;<br>
-#&nbsp;persistant&nbsp;cookies&nbsp;via&nbsp;the&nbsp;'shop'&nbsp;alias:<br>
-&nbsp;{&nbsp;shop&nbsp;}<br>
-&nbsp;.quietpc.com&nbsp;<br>
-&nbsp;.worldpay.com&nbsp;&nbsp;&nbsp;#&nbsp;for&nbsp;quietpc.com<br>
-&nbsp;.jungle.com<br>
-&nbsp;.scan.co.uk<br>
-<br>
-<br>
-#&nbsp;These&nbsp;sites&nbsp;require&nbsp;pop-ups&nbsp;too&nbsp;:(&nbsp;&nbsp;We'll&nbsp;combine&nbsp;our&nbsp;'shop'&nbsp;<br>
-#&nbsp;alias&nbsp;with&nbsp;two&nbsp;other&nbsp;actions&nbsp;into&nbsp;one&nbsp;rule&nbsp;to&nbsp;allow&nbsp;all&nbsp;popups.<br>
-&nbsp;{&nbsp;shop&nbsp;<A
-HREF="actions-file.html#KILL-POPUPS"
-TARGET="_top"
->-kill-popups</A
->&nbsp;<A
-HREF="actions-file.html#FILTER-POPUPS"
-TARGET="_top"
->-filter{popups}</A
->&nbsp;}<br>
-&nbsp;.dabs.com<br>
-&nbsp;.overclockers.co.uk<br>
-<br>
-<br>
-#&nbsp;The&nbsp;'Fast-redirects'&nbsp;action&nbsp;breaks&nbsp;some&nbsp;sites.&nbsp;Disable&nbsp;this&nbsp;action<br>
-#&nbsp;for&nbsp;these&nbsp;known&nbsp;sensitive&nbsp;sites:<br>
-&nbsp;{&nbsp;<A
-HREF="actions-file.html#FAST-REDIRECTS"
-TARGET="_top"
->-fast-redirects</A
->&nbsp;}<br>
-&nbsp;login.yahoo.com<br>
-&nbsp;edit.europe.yahoo.com<br>
-&nbsp;.google.com<br>
-&nbsp;.altavista.com/.*(like|url|link):http<br>
-&nbsp;.altavista.com/trans.*urltext=http<br>
-&nbsp;.nytimes.com<br>
-<br>
-<br>
-#&nbsp;Define&nbsp;which&nbsp;file&nbsp;types&nbsp;will&nbsp;be&nbsp;treated&nbsp;as&nbsp;images.&nbsp;Important<br>
-#&nbsp;for&nbsp;ad&nbsp;blocking.<br>
-&nbsp;{&nbsp;<A
-HREF="actions-file.html#HANDLE-AS-IMAGE"
-TARGET="_top"
->+handle-as-image</A
->&nbsp;}<br>
-&nbsp;/.*\.(gif|jpe?g|png|bmp|ico)<br>
-<br>
-<br>
-#&nbsp;Now&nbsp;lets&nbsp;list&nbsp;some&nbsp;domains&nbsp;that&nbsp;are&nbsp;known&nbsp;ad&nbsp;generators.&nbsp;And<br>
-#&nbsp;our&nbsp;alias&nbsp;that&nbsp;we&nbsp;use&nbsp;here&nbsp;will&nbsp;block&nbsp;these&nbsp;as&nbsp;well&nbsp;as&nbsp;force&nbsp;<br>
-#&nbsp;them&nbsp;to&nbsp;be&nbsp;treated&nbsp;as&nbsp;images.&nbsp;This&nbsp;combination&nbsp;of&nbsp;actions&nbsp;is&nbsp;<br>
-#&nbsp;important&nbsp;for&nbsp;ad&nbsp;blocking.&nbsp;What&nbsp;the&nbsp;browser&nbsp;will&nbsp;show&nbsp;instead&nbsp;is&nbsp;<br>
-#&nbsp;determined&nbsp;by&nbsp;the&nbsp;setting&nbsp;of&nbsp;<A
+>send-wafer</A
+> \
+ +<A
+HREF="actions-file.html#SESSION-COOKIES-ONLY"
+>session-cookies-only</A
+> \
+ +<A
 HREF="actions-file.html#SET-IMAGE-BLOCKER"
-TARGET="_top"
-><SPAN
+>set-image-blocker{pattern}</A
+> \
+ }
+ / # forward slash will match *all* potential URL patterns.</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> The default behavior is now set. Note that some actions, like not hiding
+ the user agent, are part of a <SPAN
 CLASS="QUOTE"
->"+set-image-blocker"</SPAN
-></A
-><br>
-&nbsp;{&nbsp;+imageblock&nbsp;}<br>
-&nbsp;ar.atwola.com&nbsp;<br>
-&nbsp;.ad.doubleclick.net<br>
-&nbsp;.a.yimg.com/(?:(?!/i/).)*$<br>
-&nbsp;.a[0-9].yimg.com/(?:(?!/i/).)*$<br>
-&nbsp;bs*.gsanet.com<br>
-&nbsp;bs*.einets.com<br>
-&nbsp;.qkimg.net<br>
-&nbsp;ad.*.doubleclick.net<br>
-<br>
-<br>
-#&nbsp;These&nbsp;will&nbsp;just&nbsp;simply&nbsp;be&nbsp;blocked.&nbsp;They&nbsp;will&nbsp;generate&nbsp;the&nbsp;BLOCKED<br>
-#&nbsp;banner&nbsp;page,&nbsp;if&nbsp;matched.&nbsp;Heavy&nbsp;use&nbsp;of&nbsp;wildcards&nbsp;and&nbsp;regular&nbsp;<br>
-#&nbsp;expressions&nbsp;in&nbsp;this&nbsp;example.&nbsp;Enable&nbsp;block&nbsp;action:<br>
-&nbsp;{&nbsp;<A
-HREF="actions-file.html#BLOCK"
-TARGET="_top"
->+block</A
->&nbsp;}<br>
-&nbsp;ad*.<br>
-&nbsp;.*ads.<br>
-&nbsp;banner?.<br>
-&nbsp;count*.<br>
-&nbsp;/.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)<br>
-&nbsp;/(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/<br>
-&nbsp;.hitbox.com&nbsp;<br>
-<br>
-<br>
-#&nbsp;The&nbsp;above&nbsp;block&nbsp;section&nbsp;will&nbsp;probably&nbsp;inadvertantly&nbsp;catch&nbsp;some&nbsp;<br>
-#&nbsp;sites&nbsp;we&nbsp;DO&nbsp;NOT&nbsp;want&nbsp;blocked&nbsp;via&nbsp;the&nbsp;wildcards&nbsp;and&nbsp;regular&nbsp;expressions.&nbsp;<br>
-#&nbsp;Now&nbsp;let's&nbsp;set&nbsp;exceptions&nbsp;to&nbsp;the&nbsp;exceptions&nbsp;so&nbsp;the&nbsp;good&nbsp;guys&nbsp;get&nbsp;better&nbsp;<br>
-#&nbsp;treatment.&nbsp;Disable&nbsp;block&nbsp;action:<br>
-&nbsp;{&nbsp;<A
-HREF="actions-file.html#BLOCK"
-TARGET="_top"
->-block</A
->&nbsp;}<br>
-&nbsp;advogato.org<br>
-&nbsp;adsl.<br>
-&nbsp;ad[ud]*.<br>
-&nbsp;advice.<br>
-#&nbsp;Let's&nbsp;just&nbsp;trust&nbsp;all&nbsp;.edu&nbsp;top&nbsp;level&nbsp;domains.<br>
-&nbsp;.edu<br>
-&nbsp;www.ugu.com/sui/ugu/adv<br>
-#&nbsp;We'll&nbsp;need&nbsp;to&nbsp;access&nbsp;to&nbsp;path&nbsp;names&nbsp;containing&nbsp;'download'&nbsp;<br>
-&nbsp;.*downloads.<br>
-&nbsp;/downloads/<br>
-#&nbsp;'adv'&nbsp;is&nbsp;for&nbsp;globalintersec&nbsp;and&nbsp;means&nbsp;advanced,&nbsp;not&nbsp;advertisement<br>
-&nbsp;www.globalintersec.com/adv<br>
-<br>
-<br>
-#&nbsp;Don't&nbsp;filter&nbsp;*anything*&nbsp;from&nbsp;our&nbsp;friends&nbsp;at&nbsp;sourceforge.<br>
-#&nbsp;Notice&nbsp;we&nbsp;don't&nbsp;have&nbsp;to&nbsp;name&nbsp;the&nbsp;individual&nbsp;filter&nbsp;<br>
-#&nbsp;identifiers&nbsp;--&nbsp;we&nbsp;just&nbsp;turn&nbsp;them&nbsp;all&nbsp;off&nbsp;in&nbsp;one&nbsp;fell&nbsp;swoop.<br>
-#&nbsp;Disable&nbsp;all&nbsp;filters&nbsp;for&nbsp;this&nbsp;one&nbsp;site:<br>
-&nbsp;{&nbsp;<A
-HREF="actions-file.html#FILTER"
-TARGET="_top"
->-filter</A
->&nbsp;}<br>
-&nbsp;.sourceforge.net<br>
-&nbsp;&nbsp;&nbsp;</P
-> 
- </TT
+>"general policy"</SPAN
+> that applies
+ universally and won't get any exceptions defined later. Other choices,
+ like not blocking (which is <I
+CLASS="EMPHASIS"
+>understandably</I
+> the
+ default!) need exceptions, i.e. we need to specify explicitly what we
+ want to block in later sections.
+ We will also want to make exceptions from our general pop-up-killing,
+ and use our defined aliases for that.</P
+><P
+> The first of our specialized sections is concerned with <SPAN
+CLASS="QUOTE"
+>"fragile"</SPAN
+>
+ sites, i.e. sites that require minimum interference, because they are either
+ very complex or very keen on tracking you (and have mechanisms in place that
+ make them unusable for people who avoid being tracked). We will simply use
+ our pre-defined <TT
+CLASS="LITERAL"
+>fragile</TT
+> alias instead of stating the list
+ of actions explicitly:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>##########################################################################
+# Exceptions for sites that'll break under the default action set:
+##########################################################################
+
+# "Fragile" Use a minimum set of actions for these sites (see alias above):
+#
+{ fragile }
+.office.microsoft.com           # surprise, surprise!
+.windowsupdate.microsoft.com</PRE
+></TD
+></TR
+></TABLE
 ></P
 ><P
-> So far we are painting with a broad brush by setting general policies. 
- The above would be a reasonable starting point for many situations. Now, 
- we want to be more specific and have customized rules that are more suitable
- to our personal habits and preferences. These would be for narrowly defined 
- situations like your ISP or your bank, and should be placed in 
- <TT
-CLASS="FILENAME"
->user.action</TT
->, which is parsed after all other 
- actions files and should not be clobbered by upgrades. So any settings here,
- will have the last word and over-ride any previously defined actions.</P
+> Shopping sites are not as fragile, but they typically
+ require cookies to log in, and pop-up windows for shopping
+ carts or item details. Again, we'll use a pre-defined alias:</P
 ><P
-> Now a few examples of some things that one might do with a
- <TT
-CLASS="FILENAME"
->user.action</TT
-> file. </P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># Shopping sites:
+#
+{ shop }
+.quietpc.com 
+.worldpay.com   # for quietpc.com
+.jungle.com
+.scan.co.uk</PRE
+></TD
+></TR
+></TABLE
+></P
 ><P
-> <TT
-CLASS="LITERAL"
->  <P
-CLASS="LITERALLAYOUT"
->#&nbsp;Sample&nbsp;user.action&nbsp;file.<br>
-<br>
-#&nbsp;Any&nbsp;aliases&nbsp;you&nbsp;want&nbsp;to&nbsp;use&nbsp;need&nbsp;to&nbsp;be&nbsp;re-defined&nbsp;here.<br>
-#&nbsp;Alias&nbsp;to&nbsp;turn&nbsp;off&nbsp;cookie&nbsp;handling,&nbsp;ie&nbsp;allow&nbsp;all&nbsp;cookies&nbsp;unmolested.<br>
-&nbsp;-prevent-cookies&nbsp;=&nbsp;-prevent-setting-cookies&nbsp;-prevent-reading-cookies&nbsp;\<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-session-cookies-only<br>
-<br>
-#&nbsp;Fragile&nbsp;sites&nbsp;should&nbsp;have&nbsp;the&nbsp;minimum&nbsp;changes:<br>
-&nbsp;fragile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;-block&nbsp;-deanimate-gifs&nbsp;-fast-redirects&nbsp;-filter&nbsp;-hide-referer&nbsp;\<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-prevent-cookies&nbsp;-kill-popups<br>
-<br>
-#&nbsp;Allow&nbsp;persistent&nbsp;cookies&nbsp;for&nbsp;a&nbsp;few&nbsp;regular&nbsp;sites&nbsp;that&nbsp;we&nbsp;<br>
-#&nbsp;trust&nbsp;via&nbsp;our&nbsp;above&nbsp;alias.&nbsp;These&nbsp;will&nbsp;be&nbsp;saved&nbsp;from&nbsp;one&nbsp;browser&nbsp;session&nbsp;<br>
-#&nbsp;to&nbsp;the&nbsp;next.&nbsp;We&nbsp;are&nbsp;explicity&nbsp;turning&nbsp;off&nbsp;any&nbsp;and&nbsp;all&nbsp;cookie&nbsp;handling,&nbsp;<br>
-#&nbsp;even&nbsp;though&nbsp;the&nbsp;prevent-*-cookie&nbsp;settings&nbsp;were&nbsp;disabled&nbsp;in&nbsp;our&nbsp;above&nbsp;<br>
-#&nbsp;default.action&nbsp;anyway.&nbsp;So&nbsp;cookies&nbsp;from&nbsp;these&nbsp;domains&nbsp;will&nbsp;come&nbsp;through&nbsp;<br>
-#&nbsp;unmolested.<br>
-&nbsp;{&nbsp;-prevent-cookies&nbsp;}<br>
-&nbsp;.sun.com<br>
-&nbsp;.yahoo.com<br>
-&nbsp;.msdn.microsoft.com<br>
-&nbsp;.redhat.com<br>
-<br>
-<br>
-#&nbsp;My&nbsp;ISP&nbsp;uses&nbsp;obnoxious&nbsp;self&nbsp;promoting&nbsp;images&nbsp;on&nbsp;many&nbsp;pages.<br>
-#&nbsp;Nuke&nbsp;them&nbsp;:)&nbsp;Note&nbsp;that&nbsp;<A
-HREF="actions-file.html#HANDLE-AS-IMAGE"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"+handle-as-image"</SPAN
-></A
->&nbsp;need&nbsp;not&nbsp;be&nbsp;specified,<br>
-#&nbsp;since&nbsp;all&nbsp;URLs&nbsp;ending&nbsp;in&nbsp;.gif&nbsp;will&nbsp;be&nbsp;tagged&nbsp;as&nbsp;images&nbsp;by&nbsp;the<br>
-#&nbsp;general&nbsp;rules&nbsp;in&nbsp;default.action&nbsp;anyway.<br>
-&nbsp;{&nbsp;<A
-HREF="actions-file.html#BLOCK"
+> Then, there are sites which rely on pop-up windows (yuck!) to work.
+ Since we made pop-up-killing our default above, we need to make exceptions
+ now. <A
+HREF="http://www.mozilla.org/"
 TARGET="_top"
->+block</A
->&nbsp;}<br>
-&nbsp;www.my-isp-example.com/logo[0-9].gif<br>
-<br>
-<br>
-#&nbsp;Say&nbsp;the&nbsp;site&nbsp;where&nbsp;you&nbsp;do&nbsp;your&nbsp;homebanking&nbsp;needs&nbsp;to&nbsp;open<br>
-#&nbsp;popup&nbsp;windows,&nbsp;but&nbsp;you&nbsp;have&nbsp;chosen&nbsp;to&nbsp;kill&nbsp;popups&nbsp;by<br>
-#&nbsp;default.&nbsp;This&nbsp;will&nbsp;allow&nbsp;it&nbsp;for&nbsp;your-example-bank.com:<br>
-#<br>
-&nbsp;{&nbsp;<A
+>Mozilla</A
+> users, who
+ can turn on smart handling of unwanted pop-ups in their browsers, can
+ safely choose
+ -<TT
+CLASS="LITERAL"
+><A
 HREF="actions-file.html#FILTER-POPUPS"
-TARGET="_top"
->-filter{popups}</A
->&nbsp;<A
+>filter{popups}</A
+></TT
+> (and
+ -<TT
+CLASS="LITERAL"
+><A
 HREF="actions-file.html#KILL-POPUPS"
-TARGET="_top"
->-kill-popups</A
->&nbsp;}<br>
-&nbsp;.my-example-bank.com<br>
-<br>
-<br>
-#&nbsp;This&nbsp;site&nbsp;is&nbsp;delicate,&nbsp;and&nbsp;requires&nbsp;kid-glove&nbsp;<br>
-#&nbsp;treatment.<br>
-&nbsp;{&nbsp;fragile&nbsp;}<br>
-&nbsp;.forbes.com<br>
-&nbsp;&nbsp;&nbsp;</P
-> 
- </TT
+>kill-popups</A
+></TT
+>) above
+ and hence don't need this section. Anyway, disabling an already disabled
+ action doesn't hurt, so we'll define our exceptions regardless of what was
+ chosen in the defaults section:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># These sites require pop-ups too :( 
+#
+{ -<A
+HREF="actions-file.html#KILL-POPUPS"
+>kill-popups</A
+> -<A
+HREF="actions-file.html#FILTER-POPUPS"
+>filter{popups}</A
+> }
+.dabs.com
+.overclockers.co.uk
+.deutsche-bank-24.de</PRE
+></TD
+></TR
+></TABLE
 ></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
+><P
+> The <TT
+CLASS="LITERAL"
 ><A
-NAME="ALIASES"
->8.6. Aliases</A
-></H2
+HREF="actions-file.html#FAST-REDIRECTS"
+>fast-redirects</A
+></TT
+>
+ action, which we enabled per default above,  breaks some sites. So disable
+ it for popular sites where we know it misbehaves:</P
 ><P
-> Custom <SPAN
-CLASS="QUOTE"
->"actions"</SPAN
->, known to <SPAN
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{ -<A
+HREF="actions-file.html#FAST-REDIRECTS"
+>fast-redirects</A
+> }
+login.yahoo.com
+edit.*.yahoo.com
+.google.com
+.altavista.com/.*(like|url|link):http
+.altavista.com/trans.*urltext=http
+.nytimes.com</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> It is important that <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
+> knows which
+ URLs belong to images, so that <I
+CLASS="EMPHASIS"
+>if</I
+> 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 (in terms of money <I
+CLASS="EMPHASIS"
+>and</I
 >
- as <SPAN
-CLASS="QUOTE"
->"aliases"</SPAN
->, can be defined by combining other <SPAN
-CLASS="QUOTE"
->"actions"</SPAN
->.
- These can in turn be invoked just like the built-in <SPAN
+ information). 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
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>##########################################################################
+# Images:
+##########################################################################
+
+# Define which file types will be treated as images, in case they get
+# blocked further down this file:
+#
+{ +<A
+HREF="actions-file.html#HANDLE-AS-IMAGE"
+>handle-as-image</A
+> }
+/.*\.(gif|jpe?g|png|bmp|ico)$</PRE
+></TD
+></TR
+></TABLE
+></P
+><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 <I
+CLASS="EMPHASIS"
+>and</I
+>
+ 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
+ <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#SET-IMAGE-BLOCKER"
+>set-image-blocker</A
+></TT
+>
+ action. Since all URLs have matched the default section with its
+ <TT
+CLASS="LITERAL"
+>+<A
+HREF="actions-file.html#SET-IMAGE-BLOCKER"
+>set-image-blocker</A
+>{pattern}</TT
+>
+ action before, it still applies and needn't be repeated:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># Known ad generators:
+#
+{ block-as-image }
+ar.atwola.com 
+.ad.doubleclick.net
+.ad.*.doubleclick.net
+.a.yimg.com/(?:(?!/i/).)*$
+.a[0-9].yimg.com/(?:(?!/i/).)*$
+bs*.gsanet.com
+bs*.einets.com
+.qkimg.net</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> One of the most important jobs of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ is to block banners. A huge bunch of them are already <SPAN
 CLASS="QUOTE"
->"actions"</SPAN
->.
- Currently, an alias can contain any character except space, tab, <SPAN
+>"blocked"</SPAN
+>
+ by the <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+>{banners-by-size}</TT
+>
+ action, which we enabled above, and which deletes the references to banner
+ images from the pages while they are loaded, so the browser doesn't request
+ them anymore, and hence they don't need to be blocked here. But this naturally
+ doesn't catch all banners, and some people choose not to use filters, so we
+ need a comprehensive list of patterns for banner URLs here, and apply the
+ <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#BLOCK"
+>block</A
+></TT
+> action to them.</P
+><P
+> First comes a bunch of generic patterns, which do most of the work, by
+ matching typical domain and path name components of banners. Then comes
+ a list of individual patterns for specific sites, which is omitted here
+ to keep the example short:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>##########################################################################
+# Block these fine banners:
+##########################################################################
+{ <A
+HREF="actions-file.html#BLOCK"
+>+block</A
+> }
+
+# Generic patterns:
+# 
+ad*.
+.*ads.
+banner?.
+count*.
+/.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
+/(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/
+
+# Site-specific patterns (abbreviated):
+#
+.hitbox.com</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> You wouldn't believe how many advertisers actually call their 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"
->"="</SPAN
->,
+>"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"
->"{"</SPAN
-> or <SPAN
-CLASS="QUOTE"
->"}"</SPAN
->. But please use only <SPAN
+>"nasty-<I
+CLASS="EMPHASIS"
+>ads</I
+>.nasty-corp.com"</SPAN
+> as intended,
+ but also <SPAN
 CLASS="QUOTE"
->"a"</SPAN
->-
+>"downlo<I
+CLASS="EMPHASIS"
+>ads</I
+>.sourcefroge.net"</SPAN
+> or
  <SPAN
 CLASS="QUOTE"
->"z"</SPAN
->, <SPAN
-CLASS="QUOTE"
->"0"</SPAN
->-<SPAN
-CLASS="QUOTE"
->"9"</SPAN
->, <SPAN
-CLASS="QUOTE"
->"+"</SPAN
->, and
+>"<I
+CLASS="EMPHASIS"
+>ads</I
+>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! Consider the URL
  <SPAN
 CLASS="QUOTE"
->"-"</SPAN
->. Alias names are not case sensitive, and 
- <I
+>"downloads.sourcefroge.net"</SPAN
+>: Initially, all actions are deactivated,
+ so it wouldn't get blocked. Then comes the defaults section, which matches the
+ URL, but just deactivates the <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#BLOCK"
+>block</A
+></TT
+>
+ action once again. Then it matches <TT
+CLASS="LITERAL"
+>.*ads.</TT
+>, an exception to the
+ general non-blocking policy, and suddenly
+ <TT
+CLASS="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 <I
 CLASS="EMPHASIS"
->must be defined before other actions</I
-> in the
- actions file! And there can only be one set of <SPAN
+>again</I
+> further down) it ends up
+ with no <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#BLOCK"
+>block</A
+></TT
+> action applying.</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>##########################################################################
+# Save some innocent victims of the above generic block patterns:
+##########################################################################
+
+# By domain:
+# 
+{ -<A
+HREF="actions-file.html#BLOCK"
+>block</A
+> }
+adv[io]*.  # (for advogato.org and advice.*)
+adsl.      # (has nothing to do with ads)
+ad[ud]*.   # (adult.* and add.*)
+.edu       # (universities don't host banners (yet!))
+.*loads.   # (downloads, uploads etc)
+
+# By path:
+#
+/.*loads/
+
+# Site-specific:
+#
+www.globalintersec.com/adv # (adv = advanced)
+www.ugu.com/sui/ugu/adv</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Filtering source code can have nasty side effects,
+ so make an exception for our friends at sourceforge.net,
+ and all paths with <SPAN
 CLASS="QUOTE"
->"aliases"</SPAN
+>"cvs"</SPAN
+> in them. Note that
+ <TT
+CLASS="LITERAL"
+>-<A
+HREF="actions-file.html#FILTER"
+>filter</A
+></TT
 >
- defined per file. Each actions file may have its own aliases, but they are 
- only visible within that file. Aliases do not requir a <SPAN
-CLASS="QUOTE"
->"+"</SPAN
-> or 
+ disables <I
+CLASS="EMPHASIS"
+>all</I
+> filters in one fell swoop!</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># Don't filter code!
+#
+{ -<A
+HREF="actions-file.html#FILTER"
+>filter</A
+> }
+/.*cvs
+.sourceforge.net</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> The actual <TT
+CLASS="FILENAME"
+>default.action</TT
+> is of course more
+ comprehensive, but we hope this example made clear how it works.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="AEN2675"
+>8.7.2. user.action</A
+></H3
+><P
+> So far we are painting with a broad brush by setting general policies,
+ which would be a reasonable starting point for many people. Now, 
+ you'd maybe want to be more specific and have customized rules that
+ are more suitable to your personal habits and preferences. These would
+ be for narrowly defined situations like your ISP or your bank, and should
+ be placed in <TT
+CLASS="FILENAME"
+>user.action</TT
+>, which 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 
+ <I
+CLASS="EMPHASIS"
+>safe</I
+> place for your personal settings, since
+ <TT
+CLASS="FILENAME"
+>default.action</TT
+> is actively maintained by the
  <SPAN
-CLASS="QUOTE"
->"-"</SPAN
-> sign in front, since they are merely expanded.</P
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> developers and you'll probably want
+ to install updated versions from time to time.</P
 ><P
-> Now let's define a few aliases:</P
+> So let's look at a few examples of things that one might typically do in
+ <TT
+CLASS="FILENAME"
+>user.action</TT
+>: </P
 ><P
-> <TT
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># My user.action file. &#60;fred@foobar.com&#62;</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> As <A
+HREF="actions-file.html#ALIASES"
+>aliases</A
+> are local to the actions
+ file that they are defined in, you can't use the ones from
+ <TT
+CLASS="FILENAME"
+>default.action</TT
+>, unless you repeat them here:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># (Re-)define aliases for this file:
+#
+{{alias}}
+-crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
+mercy-for-cookies   = -crunch-all-cookies -session-cookies-only
+fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -kill-popups
+shop        = mercy-for-cookies -filter{popups} -kill-popups
+allow-ads   = -block -filter{banners-by-size} # (see below)</PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> Say you have accounts on some sites that you visit regularly, and
+ you don't want to have to log in manually each time. So you'd like
+ to allow persistent cookies for these sites. The
+ <TT
 CLASS="LITERAL"
->  <P
-CLASS="LITERALLAYOUT"
->&nbsp;#&nbsp;Useful&nbsp;custom&nbsp;aliases&nbsp;we&nbsp;can&nbsp;use&nbsp;later.&nbsp;These&nbsp;must&nbsp;come&nbsp;first!<br>
-&nbsp;{{alias}}<br>
-&nbsp;+prevent-cookies&nbsp;=&nbsp;+prevent-setting-cookies&nbsp;+prevent-reading-cookies<br>
-&nbsp;-prevent-cookies&nbsp;=&nbsp;-prevent-setting-cookies&nbsp;-prevent-reading-cookies<br>
-&nbsp;fragile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;-block&nbsp;-prevent-cookies&nbsp;-filter&nbsp;-fast-redirects&nbsp;-hide-referer&nbsp;-kill-popups<br>
-&nbsp;shop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;-prevent-cookies&nbsp;-filter&nbsp;-fast-redirects<br>
-&nbsp;+imageblock&nbsp;=&nbsp;+block&nbsp;+handle-as-image<br>
-<br>
-&nbsp;#&nbsp;Aliases&nbsp;defined&nbsp;from&nbsp;other&nbsp;aliases,&nbsp;for&nbsp;people&nbsp;who&nbsp;don't&nbsp;like&nbsp;to&nbsp;type&nbsp;<br>
-&nbsp;#&nbsp;too&nbsp;much:&nbsp;&nbsp;;-)<br>
-&nbsp;c0&nbsp;=&nbsp;+prevent-cookies<br>
-&nbsp;c1&nbsp;=&nbsp;-prevent-cookies<br>
-&nbsp;#...&nbsp;etc.&nbsp;&nbsp;Customize&nbsp;to&nbsp;your&nbsp;heart's&nbsp;content.<br>
-&nbsp;&nbsp;&nbsp;</P
-> 
- </TT
+>mercy-for-cookies</TT
+> alias defined above does exactly
+ that, i.e. it disables crunching of cookies in any direction, and
+ processing of cookies to make them temporary.</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{ mercy-for-cookies }
+sunsolve.sun.com
+slashdot.org
+.yahoo.com
+.msdn.microsoft.com
+.redhat.com</PRE
+></TD
+></TR
+></TABLE
 ></P
 ><P
-> Some examples using our <SPAN
-CLASS="QUOTE"
->"shop"</SPAN
-> and <SPAN
-CLASS="QUOTE"
->"fragile"</SPAN
+> Your bank needs popups and is allergic to some filter, but you don't
+ know which, so you disable them all:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{ -<A
+HREF="actions-file.html#FILTER"
+>filter</A
+> -<A
+HREF="actions-file.html#KILL-POPUPS"
+>kill-popups</A
+> }
+.your-home-banking-site.com</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> While browsing the web with <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> you
+ noticed some ads that sneaked through, but you were too lazy to
+ report them through our fine and easy <A
+HREF="contact.html"
+>feedback</A
 >
- aliases from above. These would appear in the lower sections of an 
- actions file as exceptions to the default actions (as defined in the 
- upper section):</P
+ system, so you have added them here:</P
 ><P
-> <TT
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{ +<A
+HREF="actions-file.html#BLOCK"
+>block</A
+> }
+www.a-popular-site.com/some/unobvious/path
+another.popular.site.net/more/junk/here/</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Note that, assuming the banners in the above example have regular image
+ extensions (most do),
+ <TT
 CLASS="LITERAL"
->  <P
-CLASS="LITERALLAYOUT"
->&nbsp;#&nbsp;These&nbsp;sites&nbsp;are&nbsp;very&nbsp;complex&nbsp;and&nbsp;require<br>
-&nbsp;#&nbsp;minimal&nbsp;interference.<br>
-&nbsp;{fragile}<br>
-&nbsp;&nbsp;.office.microsoft.com<br>
-&nbsp;&nbsp;.windowsupdate.microsoft.com<br>
-&nbsp;&nbsp;.nytimes.com<br>
-<br>
-&nbsp;#&nbsp;Shopping&nbsp;sites&nbsp;-&nbsp;but&nbsp;we&nbsp;still&nbsp;want&nbsp;to&nbsp;block&nbsp;ads.<br>
-&nbsp;{shop}<br>
-&nbsp;&nbsp;.quietpc.com<br>
-&nbsp;&nbsp;.worldpay.com&nbsp;&nbsp;&nbsp;#&nbsp;for&nbsp;quietpc.com<br>
-&nbsp;&nbsp;.scan.co.uk<br>
-<br>
-&nbsp;#&nbsp;These&nbsp;shops&nbsp;require&nbsp;pop-ups&nbsp;also&nbsp;<br>
-&nbsp;{shop&nbsp;-kill-popups}<br>
-&nbsp;&nbsp;.dabs.com<br>
-&nbsp;&nbsp;.overclockers.co.uk<br>
-&nbsp;&nbsp;&nbsp;</P
-> 
- </TT
+>+<A
+HREF="actions-file.html#HANDLE-AS-IMAGE"
+>handle-as-image</A
+></TT
+>
+ need not be specified, since all URLs ending in these extensions will
+ already have been tagged as images in the relevant section of 
+ <TT
+CLASS="FILENAME"
+>default.action</TT
+> by now.</P
+><P
+> Then you noticed that the default configuration breaks Forbes Magazine,
+ but you were too lazy to find out which action is the 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
+ -- whoa! -- it worked:</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{ fragile }
+.forbes.com</PRE
+></TD
+></TR
+></TABLE
 ></P
 ><P
-> The <SPAN
-CLASS="QUOTE"
->"shop"</SPAN
-> and <SPAN
+> You like the <SPAN
 CLASS="QUOTE"
->"fragile"</SPAN
-> aliases are often used for 
- <SPAN
+>"fun"</SPAN
+> text replacements in <TT
+CLASS="FILENAME"
+>default.filter</TT
+>,
+ but it is disabled in the distributed actions file. (My colleagues on the team just
+ don't have a sense of humour, that's why! ;-). So you'd like to turn it on in your private,
+ update-safe config, once and for all:</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{ +<A
+HREF="actions-file.html#FILTER-FUN"
+>filter{fun}</A
+> }
+/ # For ALL sites!</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Note that the above is not really a good idea: There are exceptions
+ to the filters in <TT
+CLASS="FILENAME"
+>default.action</TT
+> for things that
+ really shouldn't be filtered, like code on CVS-&#62;Web interfaces. Since
+ <TT
+CLASS="FILENAME"
+>user.action</TT
+> has the last word, these exceptions
+ won't be valid for the <SPAN
 CLASS="QUOTE"
->"problem"</SPAN
-> sites that require most actions to be disabled 
- in order to function properly.&#13;</P
+>"fun"</SPAN
+> filtering specified here.</P
+><P
+> Finally, you might think about how your favourite free websites are
+ funded, and find that they rely on displaying banner advertisements
+ to survive. So you might want to specifically allow banners for those
+ sites that you feel provide value to you:</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{ allow-ads }
+.sourceforge.net
+.slashdot.org
+.osdn.net</PRE
+></TD
+></TR
+></TABLE
+>   </P
+><P
+> Note that <TT
+CLASS="LITERAL"
+>allow-ads</TT
+> has been aliased to 
+ <TT
+CLASS="LITERAL"
+>-<A
+HREF="actions-file.html#BLOCK"
+>block</A
+></TT
+>
+ <TT
+CLASS="LITERAL"
+>-<A
+HREF="actions-file.html#FILTER-BANNERS-BY-SIZE"
+>filter{banners-by-size}</A
+></TT
+>
+ above.</P
+></DIV
 ></DIV
 ></DIV
 ><DIV
index 87413b5..8480b63 100644 (file)
@@ -4,8 +4,7 @@
 >Appendix</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -79,44 +78,54 @@ NAME="REGEX"
 > <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> can use <SPAN
+> uses Perl-style <SPAN
 CLASS="QUOTE"
->"regular expressions"</SPAN
-> 
- in various config files. Assuming support for <SPAN
-CLASS="QUOTE"
->"pcre"</SPAN
-> (Perl
- Compatible Regular Expressions) is compiled in, which is the default. Such
- configuration directives do not require regular expressions, but they can be
- used to increase flexibility by matching a pattern with wild-cards against
- URLs.</P
+>"regular
+ expressions"</SPAN
+> in its <A
+HREF="actions-file.html"
+>actions
+ files</A
+> and <A
+HREF="filter-file.html"
+>filter file</A
+>,
+ through the <A
+HREF="http://www.pcre.org/"
+TARGET="_top"
+>PCRE</A
+> and
+ <A
+HREF="http://www.oesterhelt.org/pcrs/"
+TARGET="_top"
+>PCRS</A
+> libraries.</P
 ><P
 > If you are reading this, you probably don't understand what <SPAN
 CLASS="QUOTE"
 >"regular
  expressions"</SPAN
 > are, or what they can do. So this will be a very brief
- introduction only. A full explanation would require a book ;-)</P
+ introduction only. A full explanation would require a <A
+HREF="http://www.oreilly.com/catalog/regex/"
+TARGET="_top"
+>book</A
+> ;-)</P
 ><P
-> <SPAN
+> Regular expressions provide a language to describe patterns that can be
+ run against strings of characters (letter, numbers, etc), to see if they
+ match the string or not. The  patterns are themselves (sometimes complex)
+ strings of literal characters, combined with  wild-cards, and other special
+ characters, called meta-characters. The <SPAN
 CLASS="QUOTE"
->"Regular expressions"</SPAN
-> is a way of matching one character
- expression against another to see if it matches or not. One of the
+>"meta-characters"</SPAN
+> have
+ special meanings and are used to build complex patterns to be matched against.
+ Perl Compatible Regular Expressions are an especially convenient
  <SPAN
 CLASS="QUOTE"
->"expressions"</SPAN
-> is a literal string of readable characters
- (letter, numbers, etc), and the other is a complex string of literal
- characters combined with wild-cards, and other special characters, called
- meta-characters. The <SPAN
-CLASS="QUOTE"
->"meta-characters"</SPAN
-> have special meanings and
- are used to build the complex pattern to be matched against. Perl Compatible
- Regular Expressions is an enhanced form of the regular expression language
- with backward compatibility.</P
+>"dialect"</SPAN
+> of the regular expression language.</P
 ><P
 > To make a simple analogy, we do something similar when we use wild-card
  characters when listing files with the <B
@@ -380,36 +389,6 @@ CLASS="QUOTE"
 ></P
 ></P
 ><P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->  <I
-CLASS="EMPHASIS"
->s/string1/string2/g</I
-> - This is used to rewrite strings of text. 
-  <SPAN
-CLASS="QUOTE"
->"string1"</SPAN
-> is replaced by <SPAN
-CLASS="QUOTE"
->"string2"</SPAN
-> in this
-  example. There must of course be a match on <SPAN
-CLASS="QUOTE"
->"string1"</SPAN
-> first.
- </TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-><P
 > These are just some of the ones you are likely to use when matching URLs with 
  <SPAN
 CLASS="APPLICATION"
@@ -694,41 +673,6 @@ CLASS="QUOTE"
 > is not
  in the expression anywhere).</P
 ><P
-> <I
-CLASS="EMPHASIS"
-><TT
-CLASS="LITERAL"
->s/microsoft(?!.com)/MicroSuck/i</TT
-></I
-> - This is 
- a substitution. <SPAN
-CLASS="QUOTE"
->"MicroSuck"</SPAN
-> will replace any occurrence of 
- <SPAN
-CLASS="QUOTE"
->"microsoft"</SPAN
->.  The <SPAN
-CLASS="QUOTE"
->"i"</SPAN
-> at the end of the expression
- means ignore case. The <SPAN
-CLASS="QUOTE"
->"(?!.com)"</SPAN
-> means 
- the match should fail if <SPAN
-CLASS="QUOTE"
->"microsoft"</SPAN
-> is followed by
- <SPAN
-CLASS="QUOTE"
->".com"</SPAN
->. In other words, this acts like a <SPAN
-CLASS="QUOTE"
->"NOT"</SPAN
->
- modifier. In case this is a hyperlink, we don't want to break it ;-).</P
-><P
 > We are barely scratching the surface of regular expressions here so that you
  can understand the default <SPAN
 CLASS="APPLICATION"
@@ -745,13 +689,20 @@ HREF="http://www.perldoc.com/perl5.6/pod/perlre.html"
 TARGET="_top"
 >http://www.perldoc.com/perl5.6/pod/perlre.html</A
 ></P
+><P
+> For information on regular expression based substititions and their applications
+ in filters, please see the <A
+HREF="filter-file.html"
+>filter file tutorial</A
+>
+ in this manual.</P
 ></DIV
 ><DIV
 CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN2732"
+NAME="AEN3218"
 >14.2. <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
@@ -800,7 +751,7 @@ CLASS="APPLICATION"
    Privoxy main page: 
   </P
 ><A
-NAME="AEN2747"
+NAME="AEN3233"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -814,12 +765,16 @@ TARGET="_top"
    </P
 ></BLOCKQUOTE
 ><P
->   Alternately, this may be reached at <A
+>   There is a shortcut: <A
 HREF="http://p.p/"
 TARGET="_top"
 >http://p.p/</A
->, but this
-   variation may not work as reliably as the above in some configurations.
+> (But it
+   doesn't provide a fallback to a real page, in case the request is not
+   sent through <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>)
   </P
 ></LI
 ><LI
@@ -829,7 +784,7 @@ TARGET="_top"
     editing of actions files:
   </P
 ><A
-NAME="AEN2754"
+NAME="AEN3241"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -849,7 +804,7 @@ TARGET="_top"
     Show the source code version numbers:
   </P
 ><A
-NAME="AEN2759"
+NAME="AEN3246"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -869,7 +824,7 @@ TARGET="_top"
    Show the browser's request headers:
   </P
 ><A
-NAME="AEN2764"
+NAME="AEN3251"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -889,7 +844,7 @@ TARGET="_top"
    Show which actions apply to a URL and why:
   </P
 ><A
-NAME="AEN2769"
+NAME="AEN3256"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -913,7 +868,7 @@ CLASS="QUOTE"
    to run, but only as a pass-through proxy, with no actions taking place:
   </P
 ><A
-NAME="AEN2775"
+NAME="AEN3262"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -930,7 +885,7 @@ TARGET="_top"
 >   Short cuts. Turn off, then on: 
   </P
 ><A
-NAME="AEN2779"
+NAME="AEN3266"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -944,7 +899,7 @@ TARGET="_top"
    </P
 ></BLOCKQUOTE
 ><A
-NAME="AEN2782"
+NAME="AEN3269"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
@@ -1051,16 +1006,16 @@ TARGET="_top"
 ><LI
 ><P
 >    <A
-HREF="javascript:w=Math.floor(screen.width/2);h=Math.floor(screen.height*0.9);void(window.open('http://www.privoxy.org/actions','Feedback','screenx='+w+',width='+w+',height='+h+',scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
+HREF="javascript:w=Math.floor(screen.width/2);h=Math.floor(screen.height*0.9);void(window.open('http://www.privoxy.org/actions/index.php?url='+escape(location.href),'Feedback','screenx='+w+',width='+w+',height='+h+',scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
 TARGET="_top"
->Privoxy - Submit Filter Feedback</A
+>Privoxy - Submit Actions File Feedback</A
 >
    </P
 ></LI
 ></UL
 ></P
 ><P
-> Credit: The site which gave me the general idea for these bookmarklets is
+> Credit: The site which gave us the general idea for these bookmarklets is
  <A
 HREF="http://www.bookmarklets.com"
 TARGET="_top"
@@ -1115,7 +1070,6 @@ CLASS="APPLICATION"
 > checks to see if the URL 
    matches any <A
 HREF="actions-file.html#BLOCK"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+block"</SPAN
@@ -1124,7 +1078,6 @@ CLASS="QUOTE"
    so, the URL is then blocked, and the remote web server will not be contacted.
    <A
 HREF="actions-file.html#HANDLE-AS-IMAGE"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+handle-as-image"</SPAN
@@ -1137,7 +1090,6 @@ CLASS="QUOTE"
 > page is sent back. Otherwise, if it does match,
    an image is returned. The type of image depends on the setting of <A
 HREF="actions-file.html#SET-IMAGE-BLOCKER"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+set-image-blocker"</SPAN
@@ -1159,7 +1111,6 @@ CLASS="FILENAME"
 ><P
 >   If the URL pattern matches the <A
 HREF="actions-file.html#FAST-REDIRECTS"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+fast-redirects"</SPAN
@@ -1173,7 +1124,6 @@ CLASS="QUOTE"
 >   Now the rest of the client browser's request headers are processed. If any
    of these match any of the relevant actions (e.g. <A
 HREF="actions-file.html#HIDE-USER-AGENT"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+hide-user-agent"</SPAN
@@ -1195,16 +1145,14 @@ CLASS="QUOTE"
    things, the MIME type (document type) and encoding. The headers are then
    filtered as deterimed by the 
    <A
-HREF="actions-file.html#PREVENT-SETTING-COOKIES"
-TARGET="_top"
+HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
 ><SPAN
 CLASS="QUOTE"
->"+prevent-setting-cookies"</SPAN
+>"+crunch-incoming-cookies"</SPAN
 ></A
 >,
    <A
 HREF="actions-file.html#SESSION-COOKIES-ONLY"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+session-cookies-only"</SPAN
@@ -1212,7 +1160,6 @@ CLASS="QUOTE"
 >,
    and <A
 HREF="actions-file.html#DOWNGRADE-HTTP-VERSION"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+downgrade-http-version"</SPAN
@@ -1225,7 +1172,6 @@ CLASS="QUOTE"
 ><P
 >   If the <A
 HREF="actions-file.html#KILL-POPUPS"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+kill-popups"</SPAN
@@ -1239,7 +1185,6 @@ CLASS="QUOTE"
 ><P
 >   If a <A
 HREF="actions-file.html#FILTER"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+filter"</SPAN
@@ -1247,7 +1192,6 @@ CLASS="QUOTE"
 >
    or <A
 HREF="actions-file.html#DEANIMATE-GIFS"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+deanimate-gifs"</SPAN
@@ -1274,7 +1218,6 @@ CLASS="APPLICATION"
 ><P
 >   If neither <A
 HREF="actions-file.html#FILTER"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+filter"</SPAN
@@ -1282,7 +1225,6 @@ CLASS="QUOTE"
 >
    or <A
 HREF="actions-file.html#DEANIMATE-GIFS"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+deanimate-gifs"</SPAN
@@ -1323,19 +1265,10 @@ CLASS="APPLICATION"
 > applies 
  <A
 HREF="actions-file.html#ACTIONS"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"actions"</SPAN
-></A
->
- and <A
+>actions</A
+> and <A
 HREF="actions-file.html#FILTER"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"filters"</SPAN
-></A
+>filters</A
 >
  to any given URL can be complex, and not always so
  easy to understand what is happening. And sometimes we need to be able to
@@ -1352,11 +1285,11 @@ CLASS="APPLICATION"
 > is doing
  is causing us a problem inadvertently. It can be a little daunting to look at
  the actions and filters files themselves, since they tend to be filled with
- <SPAN
-CLASS="QUOTE"
->"regular expressions"</SPAN
-> whose consequences are not always 
- so obvious. </P
+ <A
+HREF="appendix.html#REGEX"
+>regular expressions</A
+> whose consequences are not
always so obvious. </P
 ><P
 > One quick test to see if <SPAN
 CLASS="APPLICATION"
@@ -1392,7 +1325,6 @@ CLASS="APPLICATION"
  how the current configuration will handle it. This will not
  help with filtering effects (i.e. the <A
 HREF="actions-file.html#FILTER"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+filter"</SPAN
@@ -1442,8 +1374,8 @@ CLASS="SCREEN"
  +filter{webbugs} +filter{refresh-tags} +filter{nimda} +filter{banners-by-size} 
  +hide-forwarded-for-headers +hide-from-header{block} +hide-referer{forge} 
  -hide-user-agent -handle-as-image +set-image-blocker{pattern} -limit-connect 
- +prevent-compression +session-cookies-only -prevent-reading-cookies 
- -prevent-setting-cookies -kill-popups -send-vanilla-wafer -send-wafer }
+ +prevent-compression +session-cookies-only -crunch-outgoing-cookies 
+ -crunch-incoming-cookies -kill-popups -send-vanilla-wafer -send-wafer }
 /
 
  { -session-cookies-only }
@@ -1462,7 +1394,6 @@ CLASS="SCREEN"
 > This tells us how we have defined our 
  <A
 HREF="actions-file.html#ACTIONS"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"actions"</SPAN
@@ -1511,7 +1442,6 @@ CLASS="QUOTE"
 >. The first is negating our previous cookie setting, 
  which was for <A
 HREF="actions-file.html#SESSION-COOKIES-ONLY"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+session-cookies-only"</SPAN
@@ -1524,7 +1454,6 @@ CLASS="EMPHASIS"
 > any 
  <A
 HREF="actions-file.html#FAST-REDIRECTS"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+fast-redirects"</SPAN
@@ -1583,8 +1512,8 @@ CLASS="SCREEN"
  +filter{webbugs} +filter{refresh-tags} +filter{nimda} +filter{banners-by-size} 
  +hide-forwarded-for-headers +hide-from-header{block} +hide-referer{forge} 
  -hide-user-agent -handle-as-image +set-image-blocker{pattern} -limit-connect 
- +prevent-compression -session-cookies-only -prevent-reading-cookies 
- -prevent-setting-cookies -kill-popups -send-vanilla-wafer -send-wafer</PRE
+ +prevent-compression -session-cookies-only -crunch-outgoing-cookies 
+ -crunch-incoming-cookies -kill-popups -send-vanilla-wafer -send-wafer</PRE
 ></TD
 ></TR
 ></TABLE
@@ -1636,7 +1565,6 @@ CLASS="QUOTE"
 >"+imageblock"</SPAN
 >. (<A
 HREF="actions-file.html#ALIASES"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"Aliases"</SPAN
@@ -1655,7 +1583,6 @@ CLASS="QUOTE"
 >
  is done here -- as both a <A
 HREF="actions-file.html#BLOCK"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+block"</SPAN
@@ -1667,7 +1594,6 @@ CLASS="EMPHASIS"
 > an 
  <A
 HREF="actions-file.html#HANDLE-AS-IMAGE"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"+handle-as-image"</SPAN
@@ -1700,8 +1626,8 @@ CLASS="SCREEN"
    +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal} 
    +filter{fun} +hide-forwarded-for-headers +hide-from-header{block} 
    +hide-referer{forge} -hide-user-agent -handle-as-image +set-image-blocker{blank} 
-   +prevent-compression +session-cookies-only -prevent-setting-cookies 
-   -prevent-reading-cookies +kill-popups -send-vanilla-wafer -send-wafer }
+   +prevent-compression +session-cookies-only -crunch-incoming-cookies 
+   -crunch-outgoing-cookies +kill-popups -send-vanilla-wafer -send-wafer }
    /
 
  { +block +handle-as-image }
index 8012aff..e16e47a 100644 (file)
@@ -4,8 +4,7 @@
 >The Main Configuration File</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -343,7 +342,7 @@ CLASS="LITERAL"
 > suffix</P
 ></DD
 ><DT
->Default value:</DT
+>Default values:</DT
 ><DD
 ><P
 ></P
@@ -443,9 +442,9 @@ CLASS="VARIABLELIST"
 ><DD
 ><P
 >    The <A
-HREF="actions-file.html#FILTER"
->filter</A
-> file to use
+HREF="filter-file.html"
+>filter file</A
+> to use
    </P
 ></DD
 ><DT
@@ -473,7 +472,10 @@ CLASS="EMPHASIS"
 >    No textual content filtering takes place, i.e. all
     <TT
 CLASS="LITERAL"
->+filter{<TT
+>+<A
+HREF="actions-file.html#FILTER"
+>filter</A
+>{<TT
 CLASS="REPLACEABLE"
 ><I
 >name</I
@@ -487,15 +489,15 @@ CLASS="REPLACEABLE"
 >Notes:</DT
 ><DD
 ><P
->    The <SPAN
-CLASS="QUOTE"
->"default.filter"</SPAN
-> file contains content modification rules 
-    that use <SPAN
-CLASS="QUOTE"
->"regular expressions"</SPAN
->. These rules permit powerful
-    changes on the content of Web pages, e.g., you could disable your favorite
+>    The <A
+HREF="filter-file.html"
+>filter file</A
+> contains content modification
+    rules that use <A
+HREF="appendix.html#REGEX"
+>regular expressions</A
+>. These rules permit
+    powerful changes on the content of Web pages, e.g., you could disable your favorite
     JavaScript annoyances, re-write the actual displayed text, or just have some
     fun replacing <SPAN
 CLASS="QUOTE"
@@ -506,6 +508,43 @@ CLASS="QUOTE"
 > wherever
     it appears on a Web page.
    </P
+><P
+>    The
+    <TT
+CLASS="LITERAL"
+>+<A
+HREF="actions-file.html#FILTER"
+>filter</A
+>{<TT
+CLASS="REPLACEABLE"
+><I
+>name</I
+></TT
+>}</TT
+>
+    actions rely on the relevant filter (<TT
+CLASS="REPLACEABLE"
+><I
+>name</I
+></TT
+>)
+    to be defined in the filter file!
+   </P
+><P
+>    A pre-defined filter file called <TT
+CLASS="FILENAME"
+>default.filter</TT
+> that contains
+    a bunch of handy filters for common problems is included in the distribution.
+    See the section on the <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+></TT
+>
+    action for a list.
+   </P
 ></DD
 ></DL
 ></DIV
@@ -770,8 +809,8 @@ NAME="LOCAL-SET-UP"
 CLASS="APPLICATION"
 >Privoxy</SPAN
 > for more users
-    that just yourself, it might be a good idea to let them know how to reach
-    you, what you block and why you do that, your policies etc.
+    than just yourself, it might be a good idea to let them know how to reach
+    you, what you block and why you do that, your policies, etc.
    </P
 ><DIV
 CLASS="SECT3"
@@ -841,7 +880,7 @@ CLASS="APPLICATION"
 ><DD
 ><P
 >    The User Manual URI is used for help links from some of the internal CGI pages. 
-    The manual itself is normally packaged with the binary distributions, so you propably want
+    The manual itself is normally packaged with the binary distributions, so you probably want
     to set this to a locally installed copy. For multi-user setups, you could provide a copy on
     a local webserver for all your users and use the corresponding URL here.
    </P
@@ -964,9 +1003,12 @@ CLASS="VARIABLELIST"
 ><DD
 ><P
 >    The value of this option only matters if the experimental trust mechanism has been
-    activated. (See <TT
-CLASS="LITERAL"
->trustfile</TT
+    activated. (See <A
+HREF="config.html#TRUSTFILE"
+><I
+CLASS="EMPHASIS"
+>trustfile</I
+></A
 > above.)
    </P
 ><P
@@ -1147,7 +1189,14 @@ CLASS="VARIABLELIST"
 >Specifies:</DT
 ><DD
 ><P
->    Key values that determine what information gets logged.
+>    Key values that determine what information gets logged to the 
+    <A
+HREF="config.html#LOGFILE"
+><I
+CLASS="EMPHASIS"
+>logfile</I
+></A
+>.
    </P
 ></DD
 ><DT
@@ -1364,13 +1413,13 @@ CLASS="REPLACEABLE"
 >Default value:</DT
 ><DD
 ><P
->localhost:8118</P
+>127.0.0.1:8118</P
 ></DD
 ><DT
 >Effect if unset:</DT
 ><DD
 ><P
->    Bind to localhost (127.0.0.1), port 8118. This is suitable and recommended for
+>    Bind to 127.0.0.1 (localhost), port 8118. This is suitable and recommended for
     home users who run <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
@@ -1484,17 +1533,17 @@ CLASS="APPLICATION"
 CLASS="QUOTE"
 >"toggled off"</SPAN
 > mode, i.e. behave like a normal, content-neutral
-    proxy. See <TT
+    proxy where all ad blocking, filtering, etc are disabled. See
+    <TT
 CLASS="LITERAL"
 >enable-remote-toggle</TT
->
-    below. This is not really useful anymore, since toggling is much easier
-    via <A
+> below. This is not really useful
+    anymore, since toggling is much easier via <A
 HREF="http://config.privoxy.org/toggle"
 TARGET="_top"
->the web
-    interface</A
-> than via editing the <TT
+>the web interface</A
+> than via
+    editing the <TT
 CLASS="FILENAME"
 >conf</TT
 > file.
@@ -1797,11 +1846,16 @@ CLASS="EMPHASIS"
     <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> only listens on the localhost or internal (home)
-    network address by means of the <TT
-CLASS="LITERAL"
->listen-address</TT
-> option.
+> only listens on the localhost
+    (127.0.0.1) or internal (home) network address by means of the
+    <A
+HREF="config.html#LISTEN-ADDRESS"
+><I
+CLASS="EMPHASIS"
+>listen-address</I
+></A
+>
+    option. 
    </P
 ><P
 >    Please see the warnings in the FAQ that this proxy is not intended to be a substitute
index 5082539..3b4256f 100644 (file)
@@ -4,8 +4,7 @@
 >Privoxy Configuration</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -93,7 +92,7 @@ CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN346"
+NAME="AEN357"
 >6.1. Controlling <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
@@ -306,7 +305,7 @@ CLASS="FILENAME"
     <TT
 CLASS="FILENAME"
 >default.action</TT
-> (which you will most propably want
+> (which you will most probably want
     to define sooner or later) are probably best applied in
     <TT
 CLASS="FILENAME"
index a0209a1..8e67ad8 100644 (file)
@@ -5,8 +5,7 @@
 Requests</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -76,8 +75,13 @@ NAME="CONTACT"
 Requests</A
 ></H1
 ><P
-> We value your feedback. However, to provide you with the best support, please
- note the following sections.</P
+> We value your feedback. In fact, we rely on it to improve
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> and its configuration.
+ However, please note the following hints, so we can 
+ provide you with the best support:</P
 ><DIV
 CLASS="SECT2"
 ><H2
@@ -87,17 +91,25 @@ NAME="CONTACT-SUPPORT"
 >11.1. Get Support</A
 ></H2
 ><P
->   <P
-CLASS="LITERALLAYOUT"
->To&nbsp;get&nbsp;support,&nbsp;use&nbsp;the&nbsp;Sourceforge&nbsp;Support&nbsp;Forum:<br>
-<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<A
+> For casual users, our support forum at
+ <A
+HREF="http://sourceforge.net/"
+TARGET="_top"
+>SourceForge</A
+>
+ is probably best suited:
+ <A
 HREF="http://sourceforge.net/tracker/?group_id=11118&atid=211118"
 TARGET="_top"
 >http://sourceforge.net/tracker/?group_id=11118&#38;atid=211118</A
 ></P
->
-  </P
+><P
+> All users are of course welcome to discuss their issues on the <A
+HREF="http://lists.sourceforge.net/lists/listinfo/ijbswa-users"
+TARGET="_top"
+>users
+ mailing list</A
+>, where the developers also hang around.</P
 ></DIV
 ><DIV
 CLASS="SECT2"
@@ -105,37 +117,61 @@ CLASS="SECT2"
 CLASS="SECT2"
 ><A
 NAME="CONTACT-BUGS"
->11.2. Report bugs</A
+>11.2. Report Bugs</A
 ></H2
 ><P
->   <P
-CLASS="LITERALLAYOUT"
->To&nbsp;submit&nbsp;bugs,&nbsp;use&nbsp;the&nbsp;Sourceforge&nbsp;Bug&nbsp;Forum:<br>
-<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<A
+> Please report all bugs <I
+CLASS="EMPHASIS"
+>only</I
+> through our
+ bug tracker: 
+ <A
 HREF="http://sourceforge.net/tracker/?group_id=11118&atid=111118"
 TARGET="_top"
 >http://sourceforge.net/tracker/?group_id=11118&#38;atid=111118</A
->.&nbsp;</P
->
- </P
+>. </P
+><P
+>  Before doing so, please make sure that the bug has not already been submitted
+  and observe the aditional hints at the top of the <A
+HREF="http://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118"
+TARGET="_top"
+>submit
+  form</A
+>.</P
 ><P
->   Make sure that the bug has not already been submitted.  Please try to
-   verify that it is a <SPAN
+> 
+  Please try to verify that it is a <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> bug, and not a
-   browser or site bug first. If you are using your own custom configuration,
-   please try the stock configs to see if the problem is a configuration
-   related bug.  And if not using the latest development snapshot, please try
-   the latest one. Or even better, CVS sources. Please be sure to include the
-   <SPAN
+> bug,
+  and not a browser or site bug first. If unsure,
+  try <A
+HREF="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=disabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
+TARGET="_top"
+>toggling
+  off</A
+> <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> version, platform, browser, any
-   pertinent log data, any other relevant details (please be specific) and,
-   if possible, some way to reproduce the bug.
-  </P
+>, and see if the problem persists.
+  The <A
+HREF="http://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT"
+TARGET="_top"
+>appendix
+  of the user manual</A
+> also has helpful information 
+  on action debugging. If you are using your own custom configuration, please try
+  the stock configs to see if the problem is configuration related.</P
+><P
+>  If not using the latest version, chances are that the bug has been found
+  and fixed in the meantime. We would appreciate if you could take the time
+  to <A
+HREF="http://www.privoxy.org/user-manual/installation.html"
+TARGET="_top"
+>upgrade
+  to the latest version</A
+> (or  even the latest CVS snapshot) and verify
+  your bug, but this is not required for reporting.</P
 ></DIV
 ><DIV
 CLASS="SECT2"
@@ -143,20 +179,16 @@ CLASS="SECT2"
 CLASS="SECT2"
 ><A
 NAME="CONTACT-FEATURE"
->11.3. Request new features</A
+>11.3. Request New Features</A
 ></H2
 ><P
->   <P
-CLASS="LITERALLAYOUT"
->To&nbsp;submit&nbsp;ideas&nbsp;on&nbsp;new&nbsp;features,&nbsp;use&nbsp;the&nbsp;Sourceforge&nbsp;feature&nbsp;request&nbsp;forum:<br>
-<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<A
-HREF="http://sourceforge.net/tracker/?atid=361118&group_id=11118&func=browse"
+> You are welcome to submit ideas on new features or other proposals
+ for improvement through our feature request tracker at
+ <A
+HREF="http://sourceforge.net/tracker/?atid=361118&group_id=11118"
 TARGET="_top"
->http://sourceforge.net/tracker/?atid=361118&#38;group_id=11118&#38;func=browse</A
+>http://sourceforge.net/tracker/?atid=361118&#38;group_id=11118</A
 >.</P
->
-  </P
 ></DIV
 ><DIV
 CLASS="SECT2"
@@ -164,20 +196,22 @@ CLASS="SECT2"
 CLASS="SECT2"
 ><A
 NAME="CONTACT-ADS"
->11.4. Report ads or other filter problems</A
+>11.4. Report Ads or Other Actions-Related Problems</A
 ></H2
 ><P
->You can also send feedback on websites that Privoxy has problems with. Please bookmark
-the following link: <A
+> Please send feedback on ads that slipped through, innocent images that were blocked,
+ and any other problems relating to the <TT
+CLASS="FILENAME"
+>default.action</TT
+> file through
+ our actions feedback mechanism located at
+ <A
 HREF="javascript:w=Math.floor(screen.width/2);h=Math.floor(screen.height*0.9);void(window.open('http://www.privoxy.org/actions','Feedback','screenx='+w+',width='+w+',height='+h+',scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
 TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"Privoxy - Submit Filter Feedback"</SPAN
-></A
->. Once you surf to a page with problems, use the
-bookmark to send us feedback. We will look into the issue as soon as possible.
-  </P
+>http://www.privoxy.org/actions/</A
+>.
+ On this page, you will also find a bookmark which will take you back there from
+ any troubled site and even pre-fill the form!</P
 ><P
 > New, improved <TT
 CLASS="FILENAME"
@@ -188,7 +222,11 @@ HREF="http://lists.sourceforge.net/lists/listinfo/ijbswa-announce"
 TARGET="_top"
 >ijbswa-announce</A
 >
- list.</P
+ list and available from our <A
+HREF="http://sf.net/projects/ijbswa/"
+TARGET="_top"
+>project page</A
+>.</P
 ></DIV
 ><DIV
 CLASS="SECT2"
@@ -199,22 +237,18 @@ NAME="CONTACT-OTHER"
 >11.5. Other</A
 ></H2
 ><P
->   <P
-CLASS="LITERALLAYOUT"
->For&nbsp;any&nbsp;other&nbsp;issues,&nbsp;feel&nbsp;free&nbsp;to&nbsp;use&nbsp;the&nbsp;mailing&nbsp;lists:<br>
-&nbsp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<A
+>For any other issues, feel free to use the mailing lists. Technically interested users
+and people who wish to contribute to the project are also welcome on the developers list!
+You can find an overview of all <SPAN
+CLASS="APPLICATION"
+>Prixoxy</SPAN
+>-related mailing lists,
+including list archives, at:
+<A
 HREF="http://sourceforge.net/mail/?group_id=11118"
 TARGET="_top"
 >http://sourceforge.net/mail/?group_id=11118</A
 >.</P
->
- </P
-><P
->  Anyone interested in actively participating in development and related
-  discussions can also join the appropriate mailing list. Archives are
-  available, too. See the page on Sourceforge.
- </P
 ></DIV
 ></DIV
 ><DIV
index 20307fe..1cb500c 100644 (file)
@@ -4,8 +4,7 @@
 >Privoxy Copyright, License and History</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -97,7 +96,7 @@ CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN2498"
+NAME="AEN2972"
 >12.1. License</A
 ></H2
 ><P
@@ -163,43 +162,136 @@ NAME="HISTORY"
 >12.2. History</A
 ></H2
 ><P
-> <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> is evolved, and derived from, 
- <SPAN
+> In the beginning, there was the
+ <A
+HREF="http://www.junkbusters.com/ijb.html"
+TARGET="_top"
+><SPAN
 CLASS="APPLICATION"
->the Internet Junkbuster</SPAN
->, with many 
- improvments and enhancements over the original.</P
+>Internet Junkbuster</SPAN
+></A
+>, 
+ by Anonymous Coders and <A
+HREF="http://www.junkbusters.com/"
+TARGET="_top"
+>Junkbusters
+ Corporation</A
+>. It saved many users a lot of pain in the early days of
+ web advertising and user tracking.</P
 ><P
-> <SPAN
+> But the web, its protocols and standards, and with it, the techniques for
+ forcing  users to consume ads, give up autonomy over their browsing, and
+ for spying on them, kept evolving. Unfortunately, the <SPAN
 CLASS="APPLICATION"
->Junkbuster</SPAN
-> was originally written by Anonymous
- Coders and <A
+>Internet
+ Junkbuster</SPAN
+> did not. Version 2.0.2, published in 1998, was 
+ (and is) the last official
+ <A
+HREF="http://www.junkbusters.com/ijbdist.html#release"
+TARGET="_top"
+>release</A
+>
+ available from <A
 HREF="http://www.junkbusters.com"
 TARGET="_top"
->Junkbusters
- Corporation</A
->, and was released as free open-source software under the
- GNU GPL. <A
+>Junkbusters Corporation</A
+>.
+ Fortunately, it had been released under the GNU
+ <A
+HREF="http://www.gnu.org/licenses/gpl.html"
+TARGET="_top"
+> GPL</A
+>, which allowed further
+ development by others.</P
+><P
+> So Stefan Waldherr started maintaining an
+ <A
 HREF="http://www.waldherr.org/junkbuster/"
 TARGET="_top"
->Stefan
- Waldherr</A
-> made many improvements, and started the <A
-HREF="http://sourceforge.net/projects/ijbswa/"
+>improved version of the
+ software</A
+>, to which eventually a number of people contributed patches.
+ It could already replace banners with a transparent image, and had a first
+ version of pop-up killing, but it was still very closely based on the
+ original, with all its limitations, such as the lack of HTTP/1.1 support,
+ flexible per-site configuration, or content modification. The last release
+ from this effort was version 2.0.2-10, published in 2000.</P
+><P
+> Then, some
+ <A
+HREF="http://www.privoxy.org/user-manual/copyright.html#AUTHORS"
+TARGET="_top"
+>developers</A
+>
+ picked up the thread, and started turning the software inside out, upside down,
+ and then reassembled it, adding many
+ <A
+HREF="http://www.privoxy.org/user-manual/introduction.html#FEATURES"
 TARGET="_top"
->SourceForge project
Privoxy</A
-> to rekindle development. There are now several active
- developers contributing.  The last stable release of
- <SPAN
+>new
features</A
+> along the way.</P
+><P
+> The result of this is <SPAN
 CLASS="APPLICATION"
->Junkbuster</SPAN
-> was v2.0.2, which has now
- grown whiskers ;-).</P
+>Privoxy</SPAN
+>, whose first
+ stable release, 3.0, is due in May 2002.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AUTHORS"
+>12.3. Authors</A
+></H2
+><P
+> Current Project Developers:</P
+><P
+CLASS="LITERALLAYOUT"
+>&nbsp;Jon&nbsp;Foster<br>
+&nbsp;Andreas&nbsp;Oesterhelt<br>
+&nbsp;Stefan&nbsp;Waldherr<br>
+&nbsp;<br>
+&nbsp;Thomas&nbsp;Steudten<br>
+&nbsp;Rodney&nbsp;Stromlund</P
+><P
+> Current Project Contributors:</P
+><P
+CLASS="LITERALLAYOUT"
+>&nbsp;Rodrigo&nbsp;Barbosa&nbsp;(RPM&nbsp;specfiles)<br>
+&nbsp;Hal&nbsp;Burgiss&nbsp;(docs)<br>
+&nbsp;Alexander&nbsp;Lazic<br>
+&nbsp;Gábor&nbsp;Lipták<br>
+&nbsp;Guy<br>
+&nbsp;Haroon&nbsp;Rafique<br>
+&nbsp;David&nbsp;Schmidt&nbsp;(OS/2,&nbsp;Mac&nbsp;OSX&nbsp;ports)<br>
+&nbsp;Joerg&nbsp;Strohmayer<br>
+&nbsp;Sarantis&nbsp;Paskalis</P
+><P
+> Originally developed by:</P
+><P
+CLASS="LITERALLAYOUT"
+>&nbsp;Junkbusters&nbsp;Corp.<br>
+&nbsp;Anonymous&nbsp;Coders</P
+><P
+> Thanks to the many people who have tested Privoxy, reported bugs, or made
+ suggestions. These include (in alphabetical order):</P
+><P
+CLASS="LITERALLAYOUT"
+>&nbsp;Ken&nbsp;Arromdee<br>
+&nbsp;Reiner&nbsp;Buehl<br>
+&nbsp;Andrew&nbsp;J.&nbsp;Caines<br>
+&nbsp;Clifford&nbsp;Caoile<br>
+&nbsp;Peter&nbsp;E<br>
+&nbsp;Aaron&nbsp;Hamid<br>
+&nbsp;Magnus&nbsp;Holmgren<br>
+&nbsp;Paul&nbsp;Lieverse<br>
+&nbsp;Roberto&nbsp;Ragusa<br>
+&nbsp;Bart&nbsp;Schelstraete<br>
+&nbsp;Darren&nbsp;Wiebe</P
 ></DIV
 ></DIV
 ><DIV
index 56c70eb..7bb9f26 100644 (file)
@@ -4,8 +4,7 @@
 >The Filter File</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -74,142 +73,580 @@ NAME="FILTER-FILE"
 >9. The Filter File</A
 ></H1
 ><P
-> Any web page can be dynamically modified with the filter file. This
- modification can be removal, or re-writing, of any web page content,
- including tags and non-visible content. The default filter file is
- oddly enough <TT
+> All text substitutions that can be invoked through the
+ <TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+></TT
+> action
+ must first be defined in the filter file, which is typically
+ called <TT
 CLASS="FILENAME"
 >default.filter</TT
->, located in the config
- directory. </P
+> and which can be
+ selected through the <TT
+CLASS="LITERAL"
+> <A
+HREF="config.html#FILTERFILE"
+>filterfile</A
+></TT
+> config
+ option.</P
 ><P
-> This is potentially a very powerful feature, and requires knowledge of both 
- <SPAN
+> Typical reasons for doing such substitutions are to eliminate
+ common annoyances in HTML and JavaScript, such as pop-up windows,
+ exit consoles, crippled windows without navigation tools, the
+ infamous &#60;BLINK&#62; tag etc, to suppress images with certain
+ width and height attributes (standard banner sizes or web-bugs),
+ or just to have fun. The possibilities are endless.</P
+><P
+> Filtering works on any text-based document type, including plain
+ text, HTML, JavaScript, CSS etc. (all <TT
+CLASS="LITERAL"
+>text/*</TT
+>
+ MIME types). Substitutions are made at the source level, so if
+ you want to <SPAN
+CLASS="QUOTE"
+>"roll your own"</SPAN
+> filters, you should be
+ familiar with HTML syntax.</P
+><P
+> Just like the <A
+HREF="actions-file.html"
+>actions files</A
+>, the
+ filter file is organized in sections, which are called <I
+CLASS="EMPHASIS"
+>filters</I
+>
+ here. Each filter consists of a heading line, that starts with the
+ <I
+CLASS="EMPHASIS"
+>keyword</I
+> <TT
+CLASS="LITERAL"
+>FILTER:</TT
+>, followed by
+ the filter's <I
+CLASS="EMPHASIS"
+>name</I
+>, and a short (one line) 
+ <I
+CLASS="EMPHASIS"
+>description</I
+> of what it does. Below that line
+ come the <I
+CLASS="EMPHASIS"
+>jobs</I
+>, i.e. lines that define the actual
+ text substitutions. By convention, the name of a filter
+ should describe what the filter <I
+CLASS="EMPHASIS"
+>eliminates</I
+>. The
+ comment is used in the <A
+HREF="http://config.privoxy.org/"
+TARGET="_top"
+>web-based
+ user interface</A
+>.</P
+><P
+> Once a filter called <TT
+CLASS="REPLACEABLE"
+><I
+>name</I
+></TT
+> has been defined
+ in the filter file, it can be invoked by using an action of the form
+ +<TT
+CLASS="LITERAL"
+><A
+HREF="actions-file.html#FILTER"
+>filter</A
+>{<TT
+CLASS="REPLACEABLE"
+><I
+>name</I
+></TT
+>}</TT
+>
+ in any <A
+HREF="actions-file.html"
+>actions file</A
+>.</P
+><P
+> A filter header line for a filter called <SPAN
+CLASS="QUOTE"
+>"foo"</SPAN
+> could look
+ like this:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>FILTER: foo Replace all "foo" with "bar"</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Below that line, and up to the next header line, come the jobs that
+ define what text replacements the filter executes. They are specified
+ in a syntax that imitates <A
+HREF="http://www.perl.org/"
+TARGET="_top"
+>Perl</A
+>'s
+ <TT
+CLASS="LITERAL"
+>s///</TT
+> operator. If you are familiar with Perl, you
+ will find this to be quite intuitive, and may want to look at the
+ <A
+HREF="http://www.oesterhelt.org/pcrs/pcrs.1.html"
+TARGET="_top"
+>PCRS man page</A
+>
+ for the subtle differences to Perl behaviour. Most notably, the non-standard
+ option letter <TT
+CLASS="LITERAL"
+>U</TT
+> is supported, which turns the default
+ to ungreedy matching.</P
+><P
+> If you are new to regular expressions, you might want to take a look at
+ the <A
+HREF="appendix.html#REGEX"
+>Appendix on regular expressions</A
+>, and
+ see the <A
+HREF="http://perldoc.com/perl5.6.1/pod/perl.html"
+TARGET="_top"
+>Perl
+ manual</A
+> for
+ <A
+HREF="http://perldoc.com/perl5.6.1/pod/perlop.html#s-PATTERN-REPLACEMENT-egimosx"
+TARGET="_top"
+>the 
+ <TT
+CLASS="LITERAL"
+>s///</TT
+> operator's syntax</A
+> and <A
+HREF="http://perldoc.com/perl5.6.1/pod/perlre.html"
+TARGET="_top"
+>Perl-style regular
+ expressions</A
+> in general.
+ The below examples might also help to get you started.</P
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN2778"
+>9.1. Filter File Tutorial</A
+></H2
+><P
+> Now, let's complete our <SPAN
 CLASS="QUOTE"
->"regular expression"</SPAN
-> and HTML in order create custom 
- filters. But, there are a number of useful filters included with 
+>"foo"</SPAN
+> filter. We have already defined
+ the heading, but the jobs are still missing. Since all it does is to replace
  <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> for many common situations.</P
+CLASS="QUOTE"
+>"foo"</SPAN
+> with <SPAN
+CLASS="QUOTE"
+>"bar"</SPAN
+>, there is only one (trivial) job
+ needed:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>s/foo/bar/</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> But wait! Didn't the comment say that <I
+CLASS="EMPHASIS"
+>all</I
+> occurrences
+ of <SPAN
+CLASS="QUOTE"
+>"foo"</SPAN
+> should be replaced? Our current job will only take
+ care of the first <SPAN
+CLASS="QUOTE"
+>"foo"</SPAN
+> on each page. For global substitution,
+ we'll need to add the <TT
+CLASS="LITERAL"
+>g</TT
+> option:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>s/foo/bar/g</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Our complete filter now looks like this:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>FILTER: foo Replace all "foo" with "bar"
+s/foo/bar/g</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Let's look at some real filters for more interesting examples. Here you see
+ a filter that protects against some common annoyances that arise from JavaScript
+ abuse. Let's look at its jobs one after the other:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse
+
+# Get rid of JavaScript referrer tracking. Test page: http://www.randomoddness.com/untitled.htm
+#
+s|(&#60;script.*)document\.referrer(.*&#60;/script&#62;)|$1"Not Your Business!"$2|Usg</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Following the header line and a comment, you see the job. Note that it uses
+ <TT
+CLASS="LITERAL"
+>|</TT
+> as the delimiter instead of <TT
+CLASS="LITERAL"
+>/</TT
+>, because
+ the pattern contains a forward slash, which would otherwise have to be escaped
+ by a backslash (<TT
+CLASS="LITERAL"
+>\</TT
+>).</P
 ><P
-> The included example file is divided into sections. Each section begins 
- with the <TT
+> Now, let's examine the pattern: it starts with the text <TT
 CLASS="LITERAL"
->FILTER</TT
-> keyword, followed by the identifier 
- for that section, e.g. <SPAN
+>&#60;script.*</TT
+>
+ enclosed in parentheses. Since the dot matches any character, and <TT
+CLASS="LITERAL"
+>*</TT
+>
+ means: <SPAN
 CLASS="QUOTE"
->"FILTER: webbugs"</SPAN
->. Each section performs
a similar type of filtering, such as <SPAN
+>"Match an arbitrary number of the element left of myself"</SPAN
+>, this
matches <SPAN
 CLASS="QUOTE"
->"html-annoyances"</SPAN
->.</P
+>"&#60;script"</SPAN
+>, followed by <I
+CLASS="EMPHASIS"
+>any</I
+> text, i.e.
+ it matches the whole page, from the start of the first &#60;script&#62; tag.</P
 ><P
-> This file uses regular expressions to alter or remove any string in the
- target page. The expressions can only operate on one line at a time. Some
- examples from the included default <TT
-CLASS="FILENAME"
->default.filter</TT
->:</P
+> That's more than we want, but the pattern continues: <TT
+CLASS="LITERAL"
+>document\.referrer</TT
+>
+ matches only the exact string <SPAN
+CLASS="QUOTE"
+>"document.referrer"</SPAN
+>. The dot needed to
+ be <I
+CLASS="EMPHASIS"
+>escaped</I
+>, i.e. preceded by a backslash, to take away its
+ special meaning as a joker, and make it just a regular dot. So far, the meaning is:
+ Match from the start of the first &#60;script&#62; tag in a the page, up to, and including,
+ the text <SPAN
+CLASS="QUOTE"
+>"document.referrer"</SPAN
+>, if <I
+CLASS="EMPHASIS"
+>both</I
+> are present
+ in the page (and appear in that order).</P
 ><P
-> Stop web pages from displaying annoying messages in the status bar by
- deleting such references:</P
+> But there's still more pattern to go. The next element, again enclosed in parentheses,
+ is <TT
+CLASS="LITERAL"
+>.*&#60;/script&#62;</TT
+>. You already know what <TT
+CLASS="LITERAL"
+>.*</TT
+>
+ means, so the whole pattern translates to: Match from the start of the first  &#60;script&#62;
+ tag in a page to the end of the last &#60;script&#62; tag, provided that the text
+ <SPAN
+CLASS="QUOTE"
+>"document.referrer"</SPAN
+> appears somewhere in between.</P
 ><P
-> <TT
+> This is still not the whole story, since we have ignored the options and the parentheses:
+ The portions of the page matched by sub-patterns that are enclosed in parentheses, will be
+ remembered and be available through the variables <TT
 CLASS="LITERAL"
->  <P
-CLASS="LITERALLAYOUT"
->&nbsp;FILTER:&nbsp;html-annoyances<br>
-<br>
-&nbsp;#&nbsp;New&nbsp;browser&nbsp;windows&nbsp;should&nbsp;be&nbsp;resizeable&nbsp;and&nbsp;have&nbsp;a&nbsp;location&nbsp;and&nbsp;status<br>
-&nbsp;#&nbsp;bar.&nbsp;Make&nbsp;it&nbsp;so.<br>
-&nbsp;#<br>
-&nbsp;s/resizable="?(no|0)"?/resizable=1/ig&nbsp;s/noresize/yesresize/ig<br>
-&nbsp;s/location="?(no|0)"?/location=1/ig&nbsp;s/status="?(no|0)"?/status=1/ig<br>
-&nbsp;s/scrolling="?(no|0|Auto)"?/scrolling=1/ig<br>
-&nbsp;s/menubar="?(no|0)"?/menubar=1/ig&nbsp;<br>
-<br>
-&nbsp;#&nbsp;The&nbsp;&#60;BLINK&#62;&nbsp;tag&nbsp;was&nbsp;a&nbsp;crime!<br>
-&nbsp;#<br>
-&nbsp;s*&#60;blink&#62;|&#60;/blink&#62;**ig<br>
-<br>
-&nbsp;#&nbsp;Is&nbsp;this&nbsp;evil?&nbsp;<br>
-&nbsp;#<br>
-&nbsp;#s/framespacing="?(no|0)"?//ig<br>
-&nbsp;#s/margin(height|width)=[0-9]*//gi<br>
-&nbsp;&nbsp;&nbsp;</P
-> 
- </TT
-></P
+>$1, $2, ...</TT
+> in
+ the substitute. The <TT
+CLASS="LITERAL"
+>U</TT
+> option switches to ungreedy matching, which means
+ that the first <TT
+CLASS="LITERAL"
+>.*</TT
+> in the pattern will only <SPAN
+CLASS="QUOTE"
+>"eat up"</SPAN
+> all
+ text in between <SPAN
+CLASS="QUOTE"
+>"&#60;script"</SPAN
+> and the <I
+CLASS="EMPHASIS"
+>first</I
+> occurrence
+ of <SPAN
+CLASS="QUOTE"
+>"document.referrer"</SPAN
+>, and that the second <TT
+CLASS="LITERAL"
+>.*</TT
+> will
+ only span the text up to the <I
+CLASS="EMPHASIS"
+>first</I
+> <SPAN
+CLASS="QUOTE"
+>"&#60;/script&#62;"</SPAN
+>
+ tag. Furthermore, the <TT
+CLASS="LITERAL"
+>s</TT
+> option says that the match may span
+ multiple lines in the page, and the <TT
+CLASS="LITERAL"
+>g</TT
+> option again means that the
+ substitution is global.</P
 ><P
-> Just for kicks, replace any occurrence of <SPAN
+> So, to summarize, the pattern means: Match all scripts that contain the text
+ <SPAN
 CLASS="QUOTE"
->"Microsoft"</SPAN
-> with
+>"document.referrer"</SPAN
+>. Remember the parts of the script from
+ (and including) the start tag up to (and excluding) the string
  <SPAN
 CLASS="QUOTE"
->"MicroSuck"</SPAN
->, and have a little fun with topical buzzwords: </P
+>"document.referrer"</SPAN
+> as <TT
+CLASS="LITERAL"
+>$1</TT
+>, and the part following
+ that string, up to and including the closing tag, as <TT
+CLASS="LITERAL"
+>$2</TT
+>.</P
 ><P
-> <TT
+> Now the pattern is deciphered, but wasn't this about substituting things? So
+ lets look at the substitute: <TT
 CLASS="LITERAL"
->  <P
-CLASS="LITERALLAYOUT"
->&nbsp;FILTER:&nbsp;fun<br>
-<br>
-&nbsp;s/microsoft(?!.com)/MicroSuck/ig<br>
-<br>
-&nbsp;#&nbsp;Buzzword&nbsp;Bingo:<br>
-&nbsp;#<br>
-&nbsp;s/industry-leading|cutting-edge|award-winning/&#60;font&nbsp;color=red&#62;&#60;b&#62;BINGO!&#60;/b&#62;&#60;/font&#62;/ig<br>
-&nbsp;&nbsp;&nbsp;</P
-> 
- </TT
-></P
+>$1"Not Your Business!"$2</TT
+> is
+ easy to read: The text remembered as <TT
+CLASS="LITERAL"
+>$1</TT
+>, followed by 
+ <TT
+CLASS="LITERAL"
+>"Not Your Business!"</TT
+> (<I
+CLASS="EMPHASIS"
+>including</I
+>
+ the quotation marks!), followed by the text remembered as <TT
+CLASS="LITERAL"
+>$2</TT
+>.
+ This produces an exact copy of the original string, with the middle part
+ (the <SPAN
+CLASS="QUOTE"
+>"document.referrer"</SPAN
+>) replaced by <TT
+CLASS="LITERAL"
+>"Not Your
+ Business!"</TT
+>.</P
 ><P
-> Kill those pesky little web-bugs:</P
+> The whole job now reads: Replace <SPAN
+CLASS="QUOTE"
+>"document.referrer"</SPAN
+> by
+ <TT
+CLASS="LITERAL"
+>"Not Your Business!"</TT
+> wherever it appears inside a
+ &#60;script&#62; tag. Note that this job won't break JavaScript syntax,
+ since both the original and the replacement are syntactically valid
+ string objects. The script just won't have access to the referrer
+ information anymore.</P
+><P
+> We'll show you two other jobs from the JavaScript taming department, but
+ this time only point out the constructs of special interest:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># The status bar is for displaying link targets, not pointless blahblah
+#
+s/window\.status\s*=\s*['"].*?['"]/dUmMy=1/ig</PRE
+></TD
+></TR
+></TABLE
+></P
 ><P
 > <TT
 CLASS="LITERAL"
->  <P
-CLASS="LITERALLAYOUT"
->&nbsp;#&nbsp;webbugs:&nbsp;Squish&nbsp;WebBugs&nbsp;(1x1&nbsp;invisible&nbsp;GIFs&nbsp;used&nbsp;for&nbsp;user&nbsp;tracking)<br>
-&nbsp;FILTER:&nbsp;webbugs<br>
-<br>
-&nbsp;s/&#60;img\s+[^&#62;]*?(width|height)\s*=\s*['"]?1\D[^&#62;]*?(width|height)\s*=\s*['"]?1(\D[^&#62;]*?)?&#62;/&#60;!--&nbsp;Squished&nbsp;WebBug&nbsp;--&#62;/sig<br>
-&nbsp;&nbsp;&nbsp;</P
-> 
- </TT
-></P
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN2432"
->9.1. The <I
+>\s</TT
+> stands for whitespace characters (space, tab, newline,
+ carriage return, form feed), so that <TT
+CLASS="LITERAL"
+>\s*</TT
+> means: <SPAN
+CLASS="QUOTE"
+>"zero
+ or more whitespace"</SPAN
+>. The <TT
+CLASS="LITERAL"
+>?</TT
+> in <TT
+CLASS="LITERAL"
+>.*?</TT
+>
+ makes this matching of arbitrary text ungreedy. (Note that the <TT
+CLASS="LITERAL"
+>U</TT
+>
+ option is not set). The <TT
+CLASS="LITERAL"
+>['"]</TT
+> construct means: <SPAN
+CLASS="QUOTE"
+>"a single
+ <I
 CLASS="EMPHASIS"
->+filter</I
-> Action</A
-></H2
+>or</I
+> a double quote"</SPAN
+>.</P
 ><P
-> Filters are enabled with the <A
-HREF="actions-file.html#FILTER"
+> So what does this job do? It replaces assignments of single- or double-quoted
+ strings to the <SPAN
+CLASS="QUOTE"
+>"window.status"</SPAN
+> object with a dummy assignment
+ (using a variable name that is hopefully odd enough not to conflict with
+ real variables in scripts). Thus, it catches many cases where e.g. pointless
+ descriptions are displayed in the status bar instead of the link target when
+ you move your mouse over links.</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># Kill OnUnload popups. Yummy. Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html
+#
+s/(&#60;body .*)onunload(.*&#62;)/$1never$2/iU</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Including the
+ <A
+HREF="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-eventgroupings-htmlevents"
 TARGET="_top"
-><SPAN
+>OnUnload
+ event binding</A
+> in the HTML DOM was a <I
+CLASS="EMPHASIS"
+>CRIME</I
+>.
+ When I close a browser window, I want it to close and die. Basta.
+ This job replaces the <SPAN
 CLASS="QUOTE"
->"+filter"</SPAN
-></A
-> action from within 
- one of the actions files. <SPAN
+>"onunload"</SPAN
+> attribute in
+ <SPAN
 CLASS="QUOTE"
->"+filter"</SPAN
-> requires one parameter, which 
- should match one of the section identifiers in the filter file itself. Example:</P
-><TABLE
+>"&#60;body&#62;"</SPAN
+> tags with the dummy word <TT
+CLASS="LITERAL"
+>never</TT
+>.
+ Note that the <TT
+CLASS="LITERAL"
+>i</TT
+> option makes the pattern matching
+ case-insensitive.</P
+><P
+> The last example is from the fun department:</P
+><P
+> <TABLE
 BORDER="0"
 BGCOLOR="#E0E0E0"
 WIDTH="100%"
@@ -217,21 +654,63 @@ WIDTH="100%"
 ><TD
 ><PRE
 CLASS="SCREEN"
->  +filter{html-annoyances}</PRE
+>FILTER: fun Fun text replacements
+
+# Spice the daily news:
+#
+s/microsoft(?!\.com)/MicroSuck/ig</PRE
 ></TD
 ></TR
 ></TABLE
+></P
 ><P
-> This would activate that particular filter. Similarly, <SPAN
-CLASS="QUOTE"
->"+filter"</SPAN
->
- can be turned off for selected sites as:
+> Note the <TT
+CLASS="LITERAL"
+>(?!\.com)</TT
+> part (a so-called negative lookahead)
+ in the job's pattern, which means: Don't match, if the string 
  <SPAN
 CLASS="QUOTE"
->"-filter{html-annoyances}"</SPAN
->. Remember too, all actions are off by
- default, unless they are explicity enabled in one of the actions files.</P
+>".com"</SPAN
+> appears directly following <SPAN
+CLASS="QUOTE"
+>"microsoft"</SPAN
+>
+ in the page. This prevents links to microsoft.com from being messed, while
+ still replacing the word everywhere else.</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># Buzzword Bingo (example for extended regex syntax)
+#
+s* industry[ -]leading \
+|  cutting[ -]edge \
+|  award[ -]winning # Comments are OK, too! \
+|  high[ -]performance \
+|  solutions[ -]based \
+|  unmatched \
+|  unparalleled \
+|  unrivalled \
+*&#60;font color="red"&#62;&#60;b&#62;BINGO!&#60;/b&#62;&#60;/font&#62; \
+*igx</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> The <TT
+CLASS="LITERAL"
+>x</TT
+> option in this job turns on extended syntax, and allows for
+ e.g. the liberal use of (non-interpreted!) whitespace for nicer formatting.</P
+><P
+> You get the idea?</P
 ></DIV
 ></DIV
 ><DIV
index ea08e98..cad3279 100644 (file)
@@ -4,8 +4,7 @@
 >Privoxy User Manual</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="NEXT"
 TITLE="Introduction"
 HREF="introduction.html"><LINK
@@ -45,7 +44,7 @@ TARGET="_top"
 ><BR></P
 ><P
 CLASS="PUBDATE"
->$Id: user-manual.sgml,v 1.105 2002/05/05 20:26:02 hal9 Exp $<BR></P
+>$Id: user-manual.sgml,v 1.117 2002/05/17 13:56:16 oes Exp $<BR></P
 ><DIV
 ><DIV
 CLASS="ABSTRACT"
@@ -147,7 +146,7 @@ HREF="installation.html#INSTALLATION-PACKAGES"
 ><DT
 >2.1.1. <A
 HREF="installation.html#INSTALLATION-PACK-RPM"
->Red Hat and SuSE RPMs</A
+>Red Hat, SuSE RPMs and Conectiva</A
 ></DT
 ><DT
 >2.1.2. <A
@@ -214,7 +213,7 @@ CLASS="APPLICATION"
 ><DT
 >5.1. <A
 HREF="startup.html#START-REDHATDEBIAN"
->RedHat and Debian</A
+>RedHat, Conectiva and Debian</A
 ></DT
 ><DT
 >5.2. <A
@@ -265,7 +264,7 @@ CLASS="APPLICATION"
 ><DL
 ><DT
 >6.1. <A
-HREF="configuration.html#AEN346"
+HREF="configuration.html#AEN357"
 >Controlling <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
@@ -456,34 +455,39 @@ HREF="actions-file.html"
 ><DL
 ><DT
 >8.1. <A
-HREF="actions-file.html#AEN1378"
+HREF="actions-file.html#AEN1403"
 >Finding the Right Mix</A
 ></DT
 ><DT
 >8.2. <A
-HREF="actions-file.html#AEN1385"
+HREF="actions-file.html#AEN1410"
 >How to Edit</A
 ></DT
 ><DT
 >8.3. <A
-HREF="actions-file.html#AEN1394"
+HREF="actions-file.html#ACTIONS-APPLY"
 >How Actions are Applied to URLs</A
 ></DT
 ><DT
 >8.4. <A
-HREF="actions-file.html#AEN1408"
+HREF="actions-file.html#AF-PATTERNS"
 >Patterns</A
 ></DT
 ><DD
 ><DL
 ><DT
+>22<A
+HREF="actions-file.html#AEN1440"
+></A
+></DT
+><DT
 >8.4.1. <A
-HREF="actions-file.html#AEN1448"
+HREF="actions-file.html#AEN1473"
 >The Domain Pattern</A
 ></DT
 ><DT
 >8.4.2. <A
-HREF="actions-file.html#AEN1510"
+HREF="actions-file.html#AEN1535"
 >The Path Pattern</A
 ></DT
 ></DL
@@ -500,7 +504,7 @@ HREF="actions-file.html#ACTIONS"
 HREF="actions-file.html#ADD-HEADER"
 ><I
 CLASS="EMPHASIS"
->+add-header</I
+>add-header</I
 ></A
 ></DT
 ><DT
@@ -508,166 +512,161 @@ CLASS="EMPHASIS"
 HREF="actions-file.html#BLOCK"
 ><I
 CLASS="EMPHASIS"
->+block</I
+>block</I
 ></A
 ></DT
 ><DT
 >8.5.3. <A
-HREF="actions-file.html#DEANIMATE-GIFS"
+HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
 ><I
 CLASS="EMPHASIS"
->+deanimate-gifs</I
+>crunch-incoming-cookies</I
 ></A
 ></DT
 ><DT
 >8.5.4. <A
-HREF="actions-file.html#DOWNGRADE-HTTP-VERSION"
+HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
 ><I
 CLASS="EMPHASIS"
->+downgrade-http-version</I
+>crunch-outgoing-cookies</I
 ></A
 ></DT
 ><DT
 >8.5.5. <A
-HREF="actions-file.html#FAST-REDIRECTS"
+HREF="actions-file.html#DEANIMATE-GIFS"
 ><I
 CLASS="EMPHASIS"
->+fast-redirects</I
+>deanimate-gifs</I
 ></A
 ></DT
 ><DT
 >8.5.6. <A
-HREF="actions-file.html#FILTER"
+HREF="actions-file.html#DOWNGRADE-HTTP-VERSION"
 ><I
 CLASS="EMPHASIS"
->+filter</I
+>downgrade-http-version</I
 ></A
 ></DT
 ><DT
 >8.5.7. <A
-HREF="actions-file.html#HIDE-FORWARDED-FOR-HEADERS"
+HREF="actions-file.html#FAST-REDIRECTS"
 ><I
 CLASS="EMPHASIS"
->+hide-forwarded-for-headers</I
+>fast-redirects</I
 ></A
 ></DT
 ><DT
 >8.5.8. <A
-HREF="actions-file.html#HIDE-FROM-HEADER"
+HREF="actions-file.html#FILTER"
 ><I
 CLASS="EMPHASIS"
->+hide-from-header</I
+>filter</I
 ></A
 ></DT
 ><DT
 >8.5.9. <A
-HREF="actions-file.html#HIDE-REFERER"
+HREF="actions-file.html#HANDLE-AS-IMAGE"
 ><I
 CLASS="EMPHASIS"
->+hide-referer</I
+>handle-as-image</I
 ></A
 ></DT
 ><DT
 >8.5.10. <A
-HREF="actions-file.html#HIDE-USER-AGENT"
+HREF="actions-file.html#HIDE-FORWARDED-FOR-HEADERS"
 ><I
 CLASS="EMPHASIS"
->+hide-user-agent</I
+>hide-forwarded-for-headers</I
 ></A
 ></DT
 ><DT
 >8.5.11. <A
-HREF="actions-file.html#HANDLE-AS-IMAGE"
+HREF="actions-file.html#HIDE-FROM-HEADER"
 ><I
 CLASS="EMPHASIS"
->+handle-as-image</I
+>hide-from-header</I
 ></A
 ></DT
 ><DT
 >8.5.12. <A
-HREF="actions-file.html#SET-IMAGE-BLOCKER"
+HREF="actions-file.html#HIDE-REFERRER"
 ><I
 CLASS="EMPHASIS"
->+set-image-blocker</I
+>hide-referrer</I
 ></A
 ></DT
 ><DT
 >8.5.13. <A
-HREF="actions-file.html#LIMIT-CONNECT"
+HREF="actions-file.html#HIDE-USER-AGENT"
 ><I
 CLASS="EMPHASIS"
->+limit-connect</I
+>hide-user-agent</I
 ></A
 ></DT
 ><DT
 >8.5.14. <A
-HREF="actions-file.html#PREVENT-COMPRESSION"
+HREF="actions-file.html#KILL-POPUPS"
 ><I
 CLASS="EMPHASIS"
->+prevent-compression</I
+>kill-popups<A
+NAME="KILL-POPUP"
+></A
+></I
 ></A
 ></DT
 ><DT
 >8.5.15. <A
-HREF="actions-file.html#SESSION-COOKIES-ONLY"
+HREF="actions-file.html#LIMIT-CONNECT"
 ><I
 CLASS="EMPHASIS"
->+session-cookies-only</I
+>limit-connect</I
 ></A
 ></DT
 ><DT
 >8.5.16. <A
-HREF="actions-file.html#PREVENT-READING-COOKIES"
+HREF="actions-file.html#PREVENT-COMPRESSION"
 ><I
 CLASS="EMPHASIS"
->+prevent-reading-cookies</I
+>prevent-compression</I
 ></A
 ></DT
 ><DT
 >8.5.17. <A
-HREF="actions-file.html#PREVENT-SETTING-COOKIES"
+HREF="actions-file.html#SEND-VANILLA-WAFER"
 ><I
 CLASS="EMPHASIS"
->+prevent-setting-cookies</I
+>send-vanilla-wafer</I
 ></A
 ></DT
 ><DT
 >8.5.18. <A
-HREF="actions-file.html#KILL-POPUP"
+HREF="actions-file.html#SEND-WAFER"
 ><I
 CLASS="EMPHASIS"
->+kill-popups<A
-NAME="KILL-POPUPS"
-></A
-></I
+>send-wafer</I
 ></A
 ></DT
 ><DT
 >8.5.19. <A
-HREF="actions-file.html#SEND-VANILLA-WAFER"
+HREF="actions-file.html#SESSION-COOKIES-ONLY"
 ><I
 CLASS="EMPHASIS"
->+send-vanilla-wafer</I
+>session-cookies-only</I
 ></A
 ></DT
 ><DT
 >8.5.20. <A
-HREF="actions-file.html#SEND-WAFER"
+HREF="actions-file.html#SET-IMAGE-BLOCKER"
 ><I
 CLASS="EMPHASIS"
->+send-wafer</I
+>set-image-blocker</I
 ></A
 ></DT
 ><DT
 >8.5.21. <A
-HREF="actions-file.html#AEN2289"
+HREF="actions-file.html#AEN2469"
 >Summary</A
 ></DT
-><DT
->8.5.22. <A
-HREF="actions-file.html#ACT-EXAMPLES"
->Sample Actions Files</A
-></DT
 ></DL
 ></DD
 ><DT
@@ -675,6 +674,25 @@ HREF="actions-file.html#ACT-EXAMPLES"
 HREF="actions-file.html#ALIASES"
 >Aliases</A
 ></DT
+><DT
+>8.7. <A
+HREF="actions-file.html#ACT-EXAMPLES"
+>Actions Files Tutorial</A
+></DT
+><DD
+><DL
+><DT
+>8.7.1. <A
+HREF="actions-file.html#AEN2521"
+>default.action</A
+></DT
+><DT
+>8.7.2. <A
+HREF="actions-file.html#AEN2675"
+>user.action</A
+></DT
+></DL
+></DD
 ></DL
 ></DD
 ><DT
@@ -686,11 +704,8 @@ HREF="filter-file.html"
 ><DL
 ><DT
 >9.1. <A
-HREF="filter-file.html#AEN2432"
->The <I
-CLASS="EMPHASIS"
->+filter</I
-> Action</A
+HREF="filter-file.html#AEN2778"
+>Filter File Tutorial</A
 ></DT
 ></DL
 ></DD
@@ -715,17 +730,17 @@ HREF="contact.html#CONTACT-SUPPORT"
 ><DT
 >11.2. <A
 HREF="contact.html#CONTACT-BUGS"
->Report bugs</A
+>Report Bugs</A
 ></DT
 ><DT
 >11.3. <A
 HREF="contact.html#CONTACT-FEATURE"
->Request new features</A
+>Request New Features</A
 ></DT
 ><DT
 >11.4. <A
 HREF="contact.html#CONTACT-ADS"
->Report ads or other filter problems</A
+>Report Ads or Other Actions-Related Problems</A
 ></DT
 ><DT
 >11.5. <A
@@ -746,7 +761,7 @@ CLASS="APPLICATION"
 ><DL
 ><DT
 >12.1. <A
-HREF="copyright.html#AEN2498"
+HREF="copyright.html#AEN2972"
 >License</A
 ></DT
 ><DT
@@ -754,6 +769,11 @@ HREF="copyright.html#AEN2498"
 HREF="copyright.html#HISTORY"
 >History</A
 ></DT
+><DT
+>12.3. <A
+HREF="copyright.html#AUTHORS"
+>Authors</A
+></DT
 ></DL
 ></DD
 ><DT
@@ -775,7 +795,7 @@ HREF="appendix.html#REGEX"
 ></DT
 ><DT
 >14.2. <A
-HREF="appendix.html#AEN2732"
+HREF="appendix.html#AEN3218"
 ><SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
index adce89d..42d1013 100644 (file)
@@ -4,8 +4,7 @@
 >Installation</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -95,18 +94,17 @@ CLASS="APPLICATION"
 CLASS="APPLICATION"
 >Privoxy</SPAN
 > installation on your system, you
- will need to remove it.  Some platforms do this for you as part 
- of their installation procedure. (See below for your platform).
In any case <I
+ will need to remove it.  On some platforms, this may be done for you as part
+ of their installation procedure. (See below for your platform). In any case
+ <I
 CLASS="EMPHASIS"
->be sure to backup your old configuration
- if it is valuable to you.</I
-> See the
- <A
+>be sure to backup your old configuration if it is valuable to
+ you.</I
+> See the <A
 HREF="upgradersnote.html"
->note to upgraders</A
-> section
- below.</P
+>note to
+ upgraders</A
+> section below.</P
 ><DIV
 CLASS="SECT2"
 ><H2
@@ -123,7 +121,7 @@ CLASS="SECT3"
 CLASS="SECT3"
 ><A
 NAME="INSTALLATION-PACK-RPM"
->2.1.1. Red Hat and SuSE RPMs</A
+>2.1.1. Red Hat, SuSE RPMs and Conectiva</A
 ></H3
 ><P
 > RPMs can be installed with <TT
index 1baca61..536b4f4 100644 (file)
@@ -4,8 +4,7 @@
 >Introduction</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -147,7 +146,7 @@ CLASS="QUOTE"
 ><P
 >   Modularized configuration that allows for standard settings and
    user settings to reside in separate files, so that installing updated
-   actions files won't overwrite idividual user settings.
+   actions files won't overwrite individual user settings.
   </P
 ></LI
 ><LI
index e3f8711..ac3066d 100644 (file)
@@ -4,8 +4,7 @@
 >Quickstart to Using Privoxy</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -82,12 +81,12 @@ CLASS="APPLICATION"
 ><UL
 ><LI
 ><P
->   If upgrading, please back up any configuration files. See 
-   the <A
+>   If upgrading, from versions before 2.9.16, please back up any configuration
+   files. See the <A
 HREF="upgradersnote.html"
 >Note to Upgraders</A
 > Section.
 </P
+ </P
 ></LI
 ><LI
 ><P
@@ -97,20 +96,36 @@ CLASS="APPLICATION"
 >. See the <A
 HREF="installation.html"
 >Installation Section</A
-> for platform specific
+> below for platform specific
   information. 
  </P
 ></LI
 ><LI
 ><P
+>   Advanced users and those who want to offer <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+   service to more than just their local machine should check the <A
+HREF="config.html"
+>main config file</A
+>, especially the <A
+HREF="config.html#ACCESS-CONTROL"
+>security-relevant</A
+> options. These are 
+   off by default.
+  </P
+></LI
+><LI
+><P
 >  Start <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 >, if the installation program has
-  not done this already. See the section <A
+  not done this already (may vary according to platform). See the section
+  <A
 HREF="startup.html"
->Starting
-  <SPAN
+>Starting <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 ></A
@@ -119,23 +134,23 @@ CLASS="APPLICATION"
 ></LI
 ><LI
 ><P
->  Set your browser to use <SPAN
+>   Set your browser to use <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> as HTTP and HTTPS
-  proxy by setting the proxy configuration for address of
-  <TT
+> as HTTP and
+   HTTPS proxy by setting the proxy configuration for address of
+   <TT
 CLASS="LITERAL"
->localhost</TT
+>127.0.0.1</TT
 > and port <TT
 CLASS="LITERAL"
 >8118</TT
 >.
-  (<SPAN
+   (<SPAN
 CLASS="APPLICATION"
 >Junkbuster</SPAN
 > and earlier versions of
-  <SPAN
+   <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 > used port 8000.) See the section <A
@@ -144,42 +159,63 @@ HREF="startup.html"
 CLASS="APPLICATION"
 >Privoxy</SPAN
 ></A
->.
+> below
+   for more details on this.
   </P
 ></LI
 ><LI
 ><P
->    Flush your browser's caches, to remove any cached ad images.
+>    Flush your browser's disk and memory caches, to remove any cached ad images.
   </P
 ></LI
 ><LI
 ><P
->  Enjoy surfing with enhanced comfort and privacy.  You may want to customize the
-  <A
-HREF="actions-file.html"
-><TT
-CLASS="FILENAME"
->user.action</TT
-></A
-> file to
-  personalize your new browsing experience. See the <A
+>   A default installation should provide a reasonable starting point for 
+   most. There will undoubtedly be occasions where you will want to adjust the
+   configuration, but that can be dealt with as the need arises. Little 
+   to no initial configuration is required in most cases.
+  </P
+><P
+>   See the <A
 HREF="configuration.html"
 >Configuration section</A
-> for more configuration
-  options, and how to further customize your installation.
+> for more
+   configuration options, and how to customize your installation.
   </P
 ></LI
 ><LI
 ><P
->   If you experience problems with sites that <SPAN
+>    If you experience ads that slipped through, innocent images that are
+    blocked, or otherwise feel the need to fine-tune
+    <SPAN
+CLASS="APPLICATION"
+>Privoxy's</SPAN
+> behaviour, take a look at the <A
+HREF="actions-file.html"
+>actions files</A
+>. As a quick start, you might
+    find the <A
+HREF="actions-file.html#ACT-EXAMPLES"
+>richly commented examples</A
+>
+    helpful. You can also view and edit the actions files through the <A
+HREF="http://config.privoxy.org"
+TARGET="_top"
+>web-based user interface</A
+>. The
+    Appendix <SPAN
 CLASS="QUOTE"
->"misbehave"</SPAN
->, see
-   the <A
+>"<A
 HREF="appendix.html#ACTIONSANAT"
->Anatomy of an Action</A
-> section in the
-   Appendix.
+>Anatomy of an
+    Action</A
+>"</SPAN
+> has hints how to debug actions that
+    <SPAN
+CLASS="QUOTE"
+>"misbehave"</SPAN
+>.
   </P
 ></LI
 ><LI
@@ -192,6 +228,11 @@ HREF="contact.html"
    help. 
   </P
 ></LI
+><LI
+><P
+>   Now enjoy surfing with enhanced comfort and privacy!
+  </P
+></LI
 ></UL
 ></P
 ></DIV
index b4a4889..bff29f2 100644 (file)
@@ -4,8 +4,7 @@
 >See Also</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -87,12 +86,12 @@ BORDER="0"
 ><TBODY
 ><TR
 ><TD
->    <A
+>   <A
 HREF="http://www.privoxy.org/"
 TARGET="_top"
 >http://www.privoxy.org/</A
 >, 
-   The <SPAN
+   the <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 > Home page. 
@@ -110,10 +109,33 @@ BORDER="0"
 ><TBODY
 ><TR
 ><TD
->    <A
-HREF="http://sourceforge.net/projects/ijbswa"
+>   <A
+HREF="http://www.privoxy.org/faq/"
+TARGET="_top"
+>http://www.privoxy.org/faq/</A
+>, 
+   the <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> FAQ. 
+  </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+>
+ <P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+>   <A
+HREF="http://sourceforge.net/projects/ijbswa/"
 TARGET="_top"
->http://sourceforge.net/projects/ijbswa</A
+>http://sourceforge.net/projects/ijbswa/</A
 >, 
    the Project Page for <SPAN
 CLASS="APPLICATION"
@@ -122,7 +144,7 @@ CLASS="APPLICATION"
    <A
 HREF="http://sourceforge.net"
 TARGET="_top"
->Sourceforge</A
+>SourceForge</A
 >.
   </TD
 ></TR
@@ -138,21 +160,20 @@ BORDER="0"
 ><TBODY
 ><TR
 ><TD
->    <A
-HREF="http://p.p/"
+>   <A
+HREF="http://config.privoxy.org/"
 TARGET="_top"
->http://p.p/</A
->, access
-   <SPAN
+>http://config.privoxy.org/</A
+>,
+   the web-based user interface. <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> from your browser. Alternately, 
-   <A
-HREF="http://config.privoxy.org"
+> must be
+   running for this to work. Shortcut: <A
+HREF="http://p.p/"
 TARGET="_top"
->http://config.privoxy.org</A
+>http://p.p/</A
 >
-   may work in some situations where the first does not.
   </TD
 ></TR
 ></TBODY
@@ -167,18 +188,11 @@ BORDER="0"
 ><TBODY
 ><TR
 ><TD
->    <A
-HREF="http://p.p/"
-TARGET="_top"
->http://p.p/</A
->, and select <A
+>   <A
 HREF="javascript:w=Math.floor(screen.width/2);h=Math.floor(screen.height*0.9);void(window.open('http://www.privoxy.org/actions','Feedback','screenx='+w+',width='+w+',height='+h+',scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
 TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"Privoxy - Submit Filter Feedback"</SPAN
-></A
-> to submit <SPAN
+>http://www.privoxy.org/actions/</A
+>, to submit <SPAN
 CLASS="QUOTE"
 >"misses"</SPAN
 > to the developers. 
@@ -196,11 +210,32 @@ BORDER="0"
 ><TBODY
 ><TR
 ><TD
->    <A
+>   <A
 HREF="http://www.junkbusters.com/ht/en/cookies.html"
 TARGET="_top"
 >http://www.junkbusters.com/ht/en/cookies.html</A
+>,
+   an explanation how cookies are used to track web users.
+  </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
 >
+ <P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+>   <A
+HREF="http://www.junkbusters.com/ijb.html"
+TARGET="_top"
+>http://www.junkbusters.com/ijb.html</A
+>,
+   the original Internet Junkbuster.
   </TD
 ></TR
 ></TBODY
@@ -215,11 +250,16 @@ BORDER="0"
 ><TBODY
 ><TR
 ><TD
->    <A
+>   <A
 HREF="http://www.waldherr.org/junkbuster/"
 TARGET="_top"
 >http://www.waldherr.org/junkbuster/</A
->
+>,
+   Stefan Waldherr's version of Junkbuster, from which <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> was
+   derived.
   </TD
 ></TR
 ></TBODY
@@ -234,11 +274,12 @@ BORDER="0"
 ><TBODY
 ><TR
 ><TD
->    <A
+>   <A
 HREF="http://privacy.net/analyze/"
 TARGET="_top"
 >http://privacy.net/analyze/</A
->
+>, a useful site
+   to check what information about you is leaked while you browse the web.
   </TD
 ></TR
 ></TBODY
@@ -257,14 +298,18 @@ BORDER="0"
 HREF="http://www.squid-cache.org/"
 TARGET="_top"
 >http://www.squid-cache.org/</A
->
+>, a very popular
+   caching proxy, which is often used together with <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.
   </TD
 ></TR
 ></TBODY
 ></TABLE
 ><P
 ></P
->&#13;</P
+></P
 ></DIV
 ><DIV
 CLASS="NAVFOOTER"
index 9193ffb..d6ba5e2 100644 (file)
@@ -4,8 +4,7 @@
 >Starting Privoxy</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -86,8 +85,8 @@ CLASS="APPLICATION"
 CLASS="APPLICATION"
 >Privoxy</SPAN
 > as a HTTP and HTTPS proxy. The default is
- localhost for the proxy address, and port 8118 (earlier versions used port
- 8000). This is the one configuration step that must be done!</P
+ 127.0.0.1 (or localhost) for the proxy address, and port 8118 (earlier versions
used port 8000). This is the one configuration step that must be done!</P
 ><P
 > 
  With <SPAN
@@ -114,7 +113,7 @@ CLASS="LITERAL"
 CLASS="QUOTE"
 >"Use Proxy"</SPAN
 > and fill in the appropriate info (Address:
localhost, Port: 8118). Include if HTTPS proxy support too.</P
127.0.0.1, Port: 8118). Include if HTTPS proxy support too.</P
 ><P
 > 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. You 
@@ -147,7 +146,7 @@ CLASS="SECT2"
 CLASS="SECT2"
 ><A
 NAME="START-REDHATDEBIAN"
->5.1. RedHat and Debian</A
+>5.1. RedHat, Conectiva and Debian</A
 ></H2
 ><P
 >We use a script. Note that RedHat does not start Privoxy upon booting per
index d4b24f1..dbd8a60 100644 (file)
@@ -4,8 +4,7 @@
 >Templates</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -75,49 +74,161 @@ NAME="TEMPLATES"
 >10. Templates</A
 ></H1
 ><P
-> When <SPAN
+> All <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> displays one of its internal 
pages, such as a <A
-HREF="http://bogus_404_page.com"
+> built-in pages, i.e. error pages such as the 
+ <A
+HREF="http://show-the-404-error.page"
 TARGET="_top"
->404 Not Found error page</A
+><SPAN
+CLASS="QUOTE"
+>"404 - No Such Domain"</SPAN
+>
+ error page</A
+>, the <A
+HREF="http://ads.bannerserver.example.com/nasty-ads/sponsor.html"
+TARGET="_top"
+><SPAN
+CLASS="QUOTE"
+>"BLOCKED"</SPAN
+>
+ page</A
 >
+ and all pages of its <A
+HREF="http://config.privoxy.org/"
+TARGET="_top"
+>web-based
+ user interface</A
+>, are generated from <I
+CLASS="EMPHASIS"
+>templates</I
+>. 
  (<SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> must be running for link to work as
- intended), it uses the appropriate template. On Linux, BSD, and Unix, these
- are located in <TT
+> must be running for the above links to work as
+ intended)</P
+><P
+> These templates are stored in a subdirectory of the <A
+HREF="config.html#CONFDIR"
+>configuration
+ directory</A
+> called <TT
 CLASS="FILENAME"
->/etc/privoxy/templates</TT
-> by default. These
- may be customized, if desired. <TT
+>templates</TT
+>. On unixish platforms,
+ this is typically
+ <A
+HREF="file:///etc/privoxy/templates/"
+TARGET="_top"
+><TT
 CLASS="FILENAME"
->cgi-style.css</TT
-> is used to
- control the HTML attributes (fonts, etc).</P
+>/etc/privoxy/templates/</TT
+></A
+>.</P
 ><P
-> The default 
-<A
-HREF="http://ads.bannerserver.example.com/nasty-ads/sponsor.html"
+> The templates are basically normal HTML files, but with place-holders (called symbols
+ or exports), which <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> fills at run time. You can
+ edit the templates with a normal text editor, should you want to customize them.
+ (<I
+CLASS="EMPHASIS"
+>Not recommended for the casual user</I
+>). Note that
+ just like in configuration files, lines starting with <TT
+CLASS="LITERAL"
+>#</TT
+> are
+ ignored when the templates are filled in.</P
+><P
+> The place-holders are of the form <TT
+CLASS="LITERAL"
+>@name@</TT
+>, and you will
+ find a list of available symbols, which vary from template to template,
+ in the comments at the start of each file. Note that these comments are not
+ always accurate, and that it's probably best to look at the existing HTML
+ code to find out which symbols are supported and what they are filled in with.</P
+><P
+> A special application of this substitution mechanism is to make whole
+ blocks of HTML code disappear when a specific symbol is set. We use this
+ for many purposes, one of them being to include the beta warning in all
+ our user interface (CGI) pages when <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ in in an alpha or beta development stage:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>&#60;!-- @if-unstable-start --&#62;
+
+  ... beta warning HTML code goes here ...
+
+&#60;!-- if-unstable-end@ --&#62;</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> If the "unstable" symbol is set, everything in between and including
+ <TT
+CLASS="LITERAL"
+>@if-unstable-start</TT
+> and <TT
+CLASS="LITERAL"
+>if-unstable-end@</TT
+>
+ will disappear, leaving nothing but an empty comment:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>&#60;!--  --&#62;</PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> There's also an if-then-else construct and an <TT
+CLASS="LITERAL"
+>#include</TT
+>
+ mechanism, but you'll sure find out if you are inclined to edit the
+ templates ;-)</P
+><P
+> All templates refer to a style located at
+ <A
+HREF="http://config.privoxy.org/send-stylesheet"
 TARGET="_top"
->Blocked 
-(<SPAN
+><TT
+CLASS="LITERAL"
+>http://config.privoxy.org/send-stylesheet</TT
+></A
+>.
+ This is, of course, locally served by <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> needs to be running for page to display)</A
 >
- banner page with the bright red top 
- banner, is called just <SPAN
-CLASS="QUOTE"
->"<TT
+ and the source for it can be found and edited in the
+ <TT
 CLASS="FILENAME"
->blocked</TT
->"</SPAN
->. This 
- may be customized or replaced with something else if desired.&#13;</P
+>cgi-style.css</TT
+> template.</P
 ></DIV
 ><DIV
 CLASS="NAVFOOTER"
index 56f71ea..6e8ea17 100644 (file)
@@ -4,8 +4,7 @@
 >Note to Upgraders</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.64
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
 REL="HOME"
 TITLE="Privoxy User Manual"
 HREF="index.html"><LINK
@@ -109,7 +108,6 @@ CLASS="FILENAME"
 > 
  are now combined into the <A
 HREF="actions-file.html"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"actions
@@ -127,7 +125,6 @@ CLASS="FILENAME"
 ><P
 > A <A
 HREF="filter-file.html"
-TARGET="_top"
 ><SPAN
 CLASS="QUOTE"
 >"filter file"</SPAN
@@ -199,14 +196,13 @@ CLASS="APPLICATION"
 ></LI
 ><LI
 ><P
->   The primary configuration file for cookie management, ad and banner 
+>   The primary configuration files for cookie management, ad and banner 
    blocking, and many other aspects of <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 >
-   configuration is in the <A
+   configuration are the <A
 HREF="actions-file.html"
-TARGET="_top"
 >actions
    files</A
 >. It is strongly recommended to become familiar with the new