From 6f113c5cca4a173f76c1000a093fc4a8618e3668 Mon Sep 17 00:00:00 2001 From: oes <oes@users.sourceforge.net> Date: Fri, 17 May 2002 14:08:27 +0000 Subject: [PATCH] generated --- doc/webserver/user-manual/actions-file.html | 4722 +++++++++++------- doc/webserver/user-manual/appendix.html | 234 +- doc/webserver/user-manual/config.html | 128 +- doc/webserver/user-manual/configuration.html | 7 +- doc/webserver/user-manual/contact.html | 164 +- doc/webserver/user-manual/copyright.html | 154 +- doc/webserver/user-manual/filter-file.html | 717 ++- doc/webserver/user-manual/index.html | 158 +- doc/webserver/user-manual/installation.html | 24 +- doc/webserver/user-manual/introduction.html | 5 +- doc/webserver/user-manual/quickstart.html | 113 +- doc/webserver/user-manual/seealso.html | 115 +- doc/webserver/user-manual/startup.html | 11 +- doc/webserver/user-manual/templates.html | 171 +- doc/webserver/user-manual/upgradersnote.html | 10 +- 15 files changed, 4416 insertions(+), 2317 deletions(-) diff --git a/doc/webserver/user-manual/actions-file.html b/doc/webserver/user-manual/actions-file.html index 9998abf4..fb9d76b3 100644 --- a/doc/webserver/user-manual/actions-file.html +++ b/doc/webserver/user-manual/actions-file.html @@ -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" -> <I -CLASS="EMPHASIS" ->{+add-header{X-User-Tracking: sucks}}</I -><br> - <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" -> <I -CLASS="EMPHASIS" ->{+block}</I -><br> - <I -CLASS="EMPHASIS" ->.banners.example.com</I -><br> - <I -CLASS="EMPHASIS" ->.ads.r.us</I -><br> - </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" -> <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> - <I +>both</I +> to disable cookies completely. + </P +><P +> It makes <I CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <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> - <I +>both</I +> to disable cookies completely. + </P +><P +> It makes <I CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <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> - <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> - </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" -> <I -CLASS="EMPHASIS" ->{+hide-forwarded-for-headers}</I -><br> - <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> - </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" -> <I -CLASS="EMPHASIS" ->{+hide-from-header{block}}</I -><br> - <I -CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <I -CLASS="EMPHASIS" ->{+hide-referer{forge}}</I -><br> - <I -CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <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> - <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> - </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" -> <I -CLASS="EMPHASIS" ->{+handle-as-image}</I -><br> - <I -CLASS="EMPHASIS" ->/.*\.(gif|jpg|jpeg|png|bmp|ico)</I -><br> - </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" -> <I -CLASS="EMPHASIS" ->{+set-image-blocker{blank}}</I -><br> - <I -CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <I -CLASS="EMPHASIS" ->+limit-connect{443}</I -> # This is the default and need not be specified.<br> - <I -CLASS="EMPHASIS" ->+limit-connect{80,443}</I -> # Ports 80 and 443 are OK.<br> - <I -CLASS="EMPHASIS" ->+limit-connect{-3, 7, 20-100, 500-}</I -> # Port less than 3, 7, 20 to 100 and above 500 are OK.<br> - </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" -> <I -CLASS="EMPHASIS" ->{+prevent-compression}</I -><br> - <I -CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <I -CLASS="EMPHASIS" ->{-session-cookies-only}</I -><br> - <I -CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <I -CLASS="EMPHASIS" ->{+prevent-reading-cookies}</I -><br> - <I -CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <I -CLASS="EMPHASIS" ->{+prevent-setting-cookies}</I -><br> - <I +> This action alone doesn't do anything noticeable. If <I CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <I -CLASS="EMPHASIS" ->{+kill-popups}</I -><br> - <I -CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <I -CLASS="EMPHASIS" ->{+send-vanilla-wafer}</I -><br> - <I -CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -> <I -CLASS="EMPHASIS" ->{+send-wafer{name=value}}</I -><br> - <I -CLASS="EMPHASIS" ->.example.com</I -><br> - </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" -># Sample default.action file <developers@privoxy.org><br> -<br> -# Settings -- Don't change! For internal Privoxy use ONLY.<br> -{{settings}}<br> -for-privoxy-version=3.0<br> -<br> -<br> -##########################################################################<br> -# <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 <developers@privoxy.org></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 -> must be defined *before* they are used. These are<br> -# easier to remember, and can combine several actions into one. Once <br> -# defined they can be used just like any built-in action -- but within <br> -# this file only! Aliases do not require a + or - sign.<br> -##########################################################################<br> -<br> -# Some useful aliases.<br> -# Alias to turn off cookie handling, ie allow all cookies unmolested.<br> - -prevent-cookies = -prevent-setting-cookies -prevent-reading-cookies \<br> - -session-cookies-only<br> -<br> -# Alias to both block and treat as if an image for ad blocking<br> -# purposes.<br> - +imageblock = +block +handle-as-image<br> -<br> -# Fragile sites should have the minimum changes:<br> - fragile = -block -deanimate-gifs -fast-redirects -filter -hide-referer \<br> - -prevent-cookies -kill-popups<br> -<br> -# Shops should be allowed to set persistent cookies<br> - shop = -filter -prevent-cookies -session-cookies-only<br> -<br> -<br> -##########################################################################<br> -# Begin default action settings. Anything in this section will match <br> -# all URLs -- UNLESS we have exceptions that also match, defined below this <br> -# section. We will show all potential actions here whether they are on <br> -# or off. We could omit any disabled action if we wanted, since all <br> -# actions are 'off' by default anyway. Shown for completeness only.<br> -# Actions are enabled if preceded by a '+', otherwise they are disabled <br> -# (unless an alias has been defined without this).<br> -##########################################################################<br> - { \<br> - <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 -> \<br> - <A +>add-header</A +> \ + -<A HREF="actions-file.html#BLOCK" -TARGET="_top" ->-block</A -> \<br> - <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 -> \<br> - <A +>deanimate-gifs</A +> \ + -<A HREF="actions-file.html#DOWNGRADE-HTTP-VERSION" -TARGET="_top" ->-downgrade-http-version</A -> \<br> - <A +>downgrade-http-version</A +> \ + +<A HREF="actions-file.html#FAST-REDIRECTS" -TARGET="_top" ->+fast-redirects</A -> \<br> - <A +>fast-redirects</A +> \ + +<A HREF="actions-file.html#FILTER-HTML-ANNOYANCES" -TARGET="_top" ->+filter{html-annoyances}</A -> \<br> - <A +>filter{html-annoyances}</A +> \ + +<A HREF="actions-file.html#FILTER-JS-ANNOYANCES" -TARGET="_top" ->+filter{js-annoyances}</A -> \<br> - <A +>filter{js-annoyances}</A +> \ + -<A HREF="actions-file.html#FILTER-CONTENT-COOKIES" -TARGET="_top" ->-filter{content-cookies}</A -> \<br> - <A +>filter{content-cookies}</A +> \ + +<A HREF="actions-file.html#FILTER-POPUPS" -TARGET="_top" ->-filter{popups}</A -> \<br> - <A +>filter{popups}</A +> \ + +<A HREF="actions-file.html#FILTER-WEBBUGS" -TARGET="_top" ->+filter{webbugs}</A -> \<br> - <A +>filter{webbugs}</A +> \ + -<A HREF="actions-file.html#FILTER-REFRESH-TAGS" -TARGET="_top" ->-filter{refresh-tags}</A -> \<br> - <A +>filter{refresh-tags}</A +> \ + -<A HREF="actions-file.html#FILTER-FUN" -TARGET="_top" ->-filter{fun}</A -> \<br> - <A +>filter{fun}</A +> \ + +<A HREF="actions-file.html#FILTER-NIMDA" -TARGET="_top" ->+filter{nimda}</A -> \<br> - <A +>filter{nimda}</A +> \ + +<A HREF="actions-file.html#FILTER-BANNERS-BY-SIZE" -TARGET="_top" ->+filter{banners-by-size}</A -> \<br> - <A +>filter{banners-by-size}</A +> \ + -<A HREF="actions-file.html#FILTER-SHOCKWAVE-FLASH" -TARGET="_top" ->-filter{shockwave-flash}</A -> \<br> - <A +>filter{shockwave-flash}</A +> \ + -<A HREF="actions-file.html#FILTER-CRUDE-PARENTAL" -TARGET="_top" ->-filter{crude-prental}</A -> \<br> - <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 -> \<br> - <A +>hide-forwarded-for-headers</A +> \ + +<A HREF="actions-file.html#HIDE-FROM-HEADER" -TARGET="_top" ->+hide-from-header{block}</A -> \<br> - <A +>hide-from-header{block}</A +> \ + +<A HREF="actions-file.html#HIDE-REFERER" -TARGET="_top" ->-hide-referrer</A -> \<br> - <A +>hide-referrer{forge}</A +> \ + -<A HREF="actions-file.html#HIDE-USER-AGENT" -TARGET="_top" ->-hide-user-agent</A -> \<br> - <A -HREF="actions-file.html#HANDLE-AS-IMAGE" -TARGET="_top" ->-handle-as-image</A -> \<br> - <A -HREF="actions-file.html#SET-IMAGE-BLOCKER" -TARGET="_top" ->+set-image-blocker{pattern}</A -> \<br> - <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 -> \<br> - <A +>limit-connect</A +> \ + +<A HREF="actions-file.html#PREVENT-COMPRESSION" -TARGET="_top" ->+prevent-compression</A -> \<br> - <A -HREF="actions-file.html#SESSION-COOKIES-ONLY" -TARGET="_top" ->-session-cookies-only</A -> \<br> - <A -HREF="actions-file.html#PREVENT-READING-COOKIES" -TARGET="_top" ->-prevent-reading-cookies</A -> \<br> - <A -HREF="actions-file.html#PREVENT-SETTING-COOKIES" -TARGET="_top" ->-prevent-setting-cookies</A -> \<br> - <A -HREF="actions-file.html#KILL-POPUPS" -TARGET="_top" ->-kill-popups</A -> \<br> - <A +>prevent-compression</A +> \ + -<A HREF="actions-file.html#SEND-VANILLA-WAFER" -TARGET="_top" ->-send-vanilla-wafer</A -> \<br> - <A +>send-vanilla-wafer</A +> \ + -<A HREF="actions-file.html#SEND-WAFER" -TARGET="_top" ->-send-wafer</A -> \<br> - }<br> - / # forward slash will match *all* potential URL patterns. <br> -<br> -##########################################################################<br> -# Default behavior is now set. Now we will define some exceptions to our <br> -# default action policies.<br> -##########################################################################<br> -<br> -# These sites are very complex and require very minimal interference.<br> -# We'll disable most actions with our 'fragile' alias:<br> - { fragile }<br> - .office.microsoft.com # surprise, surprise!<br> - .windowsupdate.microsoft.com<br> -<br> -<br> -# Shopping sites - not as fragile but require some special <br> -# handling. We still want to block ads, and we will allow <br> -# persistant cookies via the 'shop' alias:<br> - { shop }<br> - .quietpc.com <br> - .worldpay.com # for quietpc.com<br> - .jungle.com<br> - .scan.co.uk<br> -<br> -<br> -# These sites require pop-ups too :( We'll combine our 'shop' <br> -# alias with two other actions into one rule to allow all popups.<br> - { shop <A -HREF="actions-file.html#KILL-POPUPS" -TARGET="_top" ->-kill-popups</A -> <A -HREF="actions-file.html#FILTER-POPUPS" -TARGET="_top" ->-filter{popups}</A -> }<br> - .dabs.com<br> - .overclockers.co.uk<br> -<br> -<br> -# The 'Fast-redirects' action breaks some sites. Disable this action<br> -# for these known sensitive sites:<br> - { <A -HREF="actions-file.html#FAST-REDIRECTS" -TARGET="_top" ->-fast-redirects</A -> }<br> - login.yahoo.com<br> - edit.europe.yahoo.com<br> - .google.com<br> - .altavista.com/.*(like|url|link):http<br> - .altavista.com/trans.*urltext=http<br> - .nytimes.com<br> -<br> -<br> -# Define which file types will be treated as images. Important<br> -# for ad blocking.<br> - { <A -HREF="actions-file.html#HANDLE-AS-IMAGE" -TARGET="_top" ->+handle-as-image</A -> }<br> - /.*\.(gif|jpe?g|png|bmp|ico)<br> -<br> -<br> -# Now lets list some domains that are known ad generators. And<br> -# our alias that we use here will block these as well as force <br> -# them to be treated as images. This combination of actions is <br> -# important for ad blocking. What the browser will show instead is <br> -# determined by the setting of <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> - { +imageblock }<br> - ar.atwola.com <br> - .ad.doubleclick.net<br> - .a.yimg.com/(?:(?!/i/).)*$<br> - .a[0-9].yimg.com/(?:(?!/i/).)*$<br> - bs*.gsanet.com<br> - bs*.einets.com<br> - .qkimg.net<br> - ad.*.doubleclick.net<br> -<br> -<br> -# These will just simply be blocked. They will generate the BLOCKED<br> -# banner page, if matched. Heavy use of wildcards and regular <br> -# expressions in this example. Enable block action:<br> - { <A -HREF="actions-file.html#BLOCK" -TARGET="_top" ->+block</A -> }<br> - ad*.<br> - .*ads.<br> - banner?.<br> - count*.<br> - /.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)<br> - /(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/<br> - .hitbox.com <br> -<br> -<br> -# The above block section will probably inadvertantly catch some <br> -# sites we DO NOT want blocked via the wildcards and regular expressions. <br> -# Now let's set exceptions to the exceptions so the good guys get better <br> -# treatment. Disable block action:<br> - { <A -HREF="actions-file.html#BLOCK" -TARGET="_top" ->-block</A -> }<br> - advogato.org<br> - adsl.<br> - ad[ud]*.<br> - advice.<br> -# Let's just trust all .edu top level domains.<br> - .edu<br> - www.ugu.com/sui/ugu/adv<br> -# We'll need to access to path names containing 'download' <br> - .*downloads.<br> - /downloads/<br> -# 'adv' is for globalintersec and means advanced, not advertisement<br> - www.globalintersec.com/adv<br> -<br> -<br> -# Don't filter *anything* from our friends at sourceforge.<br> -# Notice we don't have to name the individual filter <br> -# identifiers -- we just turn them all off in one fell swoop.<br> -# Disable all filters for this one site:<br> - { <A -HREF="actions-file.html#FILTER" -TARGET="_top" ->-filter</A -> }<br> - .sourceforge.net<br> - </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" -># Sample user.action file.<br> -<br> -# Any aliases you want to use need to be re-defined here.<br> -# Alias to turn off cookie handling, ie allow all cookies unmolested.<br> - -prevent-cookies = -prevent-setting-cookies -prevent-reading-cookies \<br> - -session-cookies-only<br> -<br> -# Fragile sites should have the minimum changes:<br> - fragile = -block -deanimate-gifs -fast-redirects -filter -hide-referer \<br> - -prevent-cookies -kill-popups<br> -<br> -# Allow persistent cookies for a few regular sites that we <br> -# trust via our above alias. These will be saved from one browser session <br> -# to the next. We are explicity turning off any and all cookie handling, <br> -# even though the prevent-*-cookie settings were disabled in our above <br> -# default.action anyway. So cookies from these domains will come through <br> -# unmolested.<br> - { -prevent-cookies }<br> - .sun.com<br> - .yahoo.com<br> - .msdn.microsoft.com<br> - .redhat.com<br> -<br> -<br> -# My ISP uses obnoxious self promoting images on many pages.<br> -# Nuke them :) Note that <A -HREF="actions-file.html#HANDLE-AS-IMAGE" -TARGET="_top" -><SPAN -CLASS="QUOTE" ->"+handle-as-image"</SPAN -></A -> need not be specified,<br> -# since all URLs ending in .gif will be tagged as images by the<br> -# general rules in default.action anyway.<br> - { <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 -> }<br> - www.my-isp-example.com/logo[0-9].gif<br> -<br> -<br> -# Say the site where you do your homebanking needs to open<br> -# popup windows, but you have chosen to kill popups by<br> -# default. This will allow it for your-example-bank.com:<br> -#<br> - { <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 -> <A +>filter{popups}</A +></TT +> (and + -<TT +CLASS="LITERAL" +><A HREF="actions-file.html#KILL-POPUPS" -TARGET="_top" ->-kill-popups</A -> }<br> - .my-example-bank.com<br> -<br> -<br> -# This site is delicate, and requires kid-glove <br> -# treatment.<br> - { fragile }<br> - .forbes.com<br> - </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. <fred@foobar.com></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" -> # Useful custom aliases we can use later. These must come first!<br> - {{alias}}<br> - +prevent-cookies = +prevent-setting-cookies +prevent-reading-cookies<br> - -prevent-cookies = -prevent-setting-cookies -prevent-reading-cookies<br> - fragile = -block -prevent-cookies -filter -fast-redirects -hide-referer -kill-popups<br> - shop = -prevent-cookies -filter -fast-redirects<br> - +imageblock = +block +handle-as-image<br> -<br> - # Aliases defined from other aliases, for people who don't like to type <br> - # too much: ;-)<br> - c0 = +prevent-cookies<br> - c1 = -prevent-cookies<br> - #... etc. Customize to your heart's content.<br> - </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" -> # These sites are very complex and require<br> - # minimal interference.<br> - {fragile}<br> - .office.microsoft.com<br> - .windowsupdate.microsoft.com<br> - .nytimes.com<br> -<br> - # Shopping sites - but we still want to block ads.<br> - {shop}<br> - .quietpc.com<br> - .worldpay.com # for quietpc.com<br> - .scan.co.uk<br> -<br> - # These shops require pop-ups also <br> - {shop -kill-popups}<br> - .dabs.com<br> - .overclockers.co.uk<br> - </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->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. </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 diff --git a/doc/webserver/user-manual/appendix.html b/doc/webserver/user-manual/appendix.html index 87413b5f..8480b635 100644 --- a/doc/webserver/user-manual/appendix.html +++ b/doc/webserver/user-manual/appendix.html @@ -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 } diff --git a/doc/webserver/user-manual/config.html b/doc/webserver/user-manual/config.html index 8012aff5..e16e47af 100644 --- a/doc/webserver/user-manual/config.html +++ b/doc/webserver/user-manual/config.html @@ -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 diff --git a/doc/webserver/user-manual/configuration.html b/doc/webserver/user-manual/configuration.html index 50825391..3b4256fd 100644 --- a/doc/webserver/user-manual/configuration.html +++ b/doc/webserver/user-manual/configuration.html @@ -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" diff --git a/doc/webserver/user-manual/contact.html b/doc/webserver/user-manual/contact.html index a0209a17..8e67ad83 100644 --- a/doc/webserver/user-manual/contact.html +++ b/doc/webserver/user-manual/contact.html @@ -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 get support, use the Sourceforge Support Forum:<br> -<br> - <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&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 submit bugs, use the Sourceforge Bug Forum:<br> -<br> - <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&atid=111118</A ->. </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 submit ideas on new features, use the Sourceforge feature request forum:<br> -<br> - <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&group_id=11118&func=browse</A +>http://sourceforge.net/tracker/?atid=361118&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 any other issues, feel free to use the mailing lists:<br> - <br> - <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 diff --git a/doc/webserver/user-manual/copyright.html b/doc/webserver/user-manual/copyright.html index 20307fe8..1cb500c2 100644 --- a/doc/webserver/user-manual/copyright.html +++ b/doc/webserver/user-manual/copyright.html @@ -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" +> Jon Foster<br> + Andreas Oesterhelt<br> + Stefan Waldherr<br> + <br> + Thomas Steudten<br> + Rodney Stromlund</P +><P +> Current Project Contributors:</P +><P +CLASS="LITERALLAYOUT" +> Rodrigo Barbosa (RPM specfiles)<br> + Hal Burgiss (docs)<br> + Alexander Lazic<br> + Gábor Lipták<br> + Guy<br> + Haroon Rafique<br> + David Schmidt (OS/2, Mac OSX ports)<br> + Joerg Strohmayer<br> + Sarantis Paskalis</P +><P +> Originally developed by:</P +><P +CLASS="LITERALLAYOUT" +> Junkbusters Corp.<br> + Anonymous 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" +> Ken Arromdee<br> + Reiner Buehl<br> + Andrew J. Caines<br> + Clifford Caoile<br> + Peter E<br> + Aaron Hamid<br> + Magnus Holmgren<br> + Paul Lieverse<br> + Roberto Ragusa<br> + Bart Schelstraete<br> + Darren Wiebe</P ></DIV ></DIV ><DIV diff --git a/doc/webserver/user-manual/filter-file.html b/doc/webserver/user-manual/filter-file.html index 56c70ebe..7bb9f261 100644 --- a/doc/webserver/user-manual/filter-file.html +++ b/doc/webserver/user-manual/filter-file.html @@ -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 <BLINK> 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|(<script.*)document\.referrer(.*</script>)|$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 +><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 +>"<script"</SPAN +>, followed by <I +CLASS="EMPHASIS" +>any</I +> text, i.e. + it matches the whole page, from the start of the first <script> 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 <script> 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" +>.*</script></TT +>. You already know what <TT +CLASS="LITERAL" +>.*</TT +> + means, so the whole pattern translates to: Match from the start of the first <script> + tag in a page to the end of the last <script> 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" -> FILTER: html-annoyances<br> -<br> - # New browser windows should be resizeable and have a location and status<br> - # bar. Make it so.<br> - #<br> - s/resizable="?(no|0)"?/resizable=1/ig s/noresize/yesresize/ig<br> - s/location="?(no|0)"?/location=1/ig s/status="?(no|0)"?/status=1/ig<br> - s/scrolling="?(no|0|Auto)"?/scrolling=1/ig<br> - s/menubar="?(no|0)"?/menubar=1/ig <br> -<br> - # The <BLINK> tag was a crime!<br> - #<br> - s*<blink>|</blink>**ig<br> -<br> - # Is this evil? <br> - #<br> - #s/framespacing="?(no|0)"?//ig<br> - #s/margin(height|width)=[0-9]*//gi<br> - </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" +>"<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" +>"</script>"</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" -> FILTER: fun<br> -<br> - s/microsoft(?!.com)/MicroSuck/ig<br> -<br> - # Buzzword Bingo:<br> - #<br> - s/industry-leading|cutting-edge|award-winning/<font color=red><b>BINGO!</b></font>/ig<br> - </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 + <script> 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" -> # webbugs: Squish WebBugs (1x1 invisible GIFs used for user tracking)<br> - FILTER: webbugs<br> -<br> - s/<img\s+[^>]*?(width|height)\s*=\s*['"]?1\D[^>]*?(width|height)\s*=\s*['"]?1(\D[^>]*?)?>/<!-- Squished WebBug -->/sig<br> - </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/(<body .*)onunload(.*>)/$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 +>"<body>"</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 \ +*<font color="red"><b>BINGO!</b></font> \ +*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 diff --git a/doc/webserver/user-manual/index.html b/doc/webserver/user-manual/index.html index ea08e987..cad32796 100644 --- a/doc/webserver/user-manual/index.html +++ b/doc/webserver/user-manual/index.html @@ -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 diff --git a/doc/webserver/user-manual/installation.html b/doc/webserver/user-manual/installation.html index adce89dd..42d10135 100644 --- a/doc/webserver/user-manual/installation.html +++ b/doc/webserver/user-manual/installation.html @@ -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 diff --git a/doc/webserver/user-manual/introduction.html b/doc/webserver/user-manual/introduction.html index 1baca614..536b4f46 100644 --- a/doc/webserver/user-manual/introduction.html +++ b/doc/webserver/user-manual/introduction.html @@ -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 diff --git a/doc/webserver/user-manual/quickstart.html b/doc/webserver/user-manual/quickstart.html index e3f8711f..ac3066d0 100644 --- a/doc/webserver/user-manual/quickstart.html +++ b/doc/webserver/user-manual/quickstart.html @@ -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 diff --git a/doc/webserver/user-manual/seealso.html b/doc/webserver/user-manual/seealso.html index b4a48898..bff29f27 100644 --- a/doc/webserver/user-manual/seealso.html +++ b/doc/webserver/user-manual/seealso.html @@ -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 -> </P +></P ></DIV ><DIV CLASS="NAVFOOTER" diff --git a/doc/webserver/user-manual/startup.html b/doc/webserver/user-manual/startup.html index 9193ffb7..d6ba5e29 100644 --- a/doc/webserver/user-manual/startup.html +++ b/doc/webserver/user-manual/startup.html @@ -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 diff --git a/doc/webserver/user-manual/templates.html b/doc/webserver/user-manual/templates.html index d4b24f1e..dbd8a604 100644 --- a/doc/webserver/user-manual/templates.html +++ b/doc/webserver/user-manual/templates.html @@ -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" +><!-- @if-unstable-start --> + + ... beta warning HTML code goes here ... + +<!-- if-unstable-end@ --></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" +><!-- --></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. </P +>cgi-style.css</TT +> template.</P ></DIV ><DIV CLASS="NAVFOOTER" diff --git a/doc/webserver/user-manual/upgradersnote.html b/doc/webserver/user-manual/upgradersnote.html index 56f71ea1..6e8ea179 100644 --- a/doc/webserver/user-manual/upgradersnote.html +++ b/doc/webserver/user-manual/upgradersnote.html @@ -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 -- 2.49.0