Purpose : Used with other docs and files only.
- $Id: p-config.sgml,v 1.1.2.10 2003/02/20 13:50:37 hal9 Exp $
+ $Id: p-config.sgml,v 2.5 2006/07/18 14:48:51 david__schmidt Exp $
- Copyright (C) 2001, 2002 Privoxy Developers <developers@privoxy.org>
+ Copyright (C) 2001-2006 Privoxy Developers <developers@privoxy.org>
See LICENSE.
========================================================================
Sample Configuration File for Privoxy v&p-version;
</title>
<para>
- $Id: p-config.sgml,v 1.1.2.10 2003/02/20 13:50:37 hal9 Exp $
+ $Id: p-config.sgml,v 2.5 2006/07/18 14:48:51 david__schmidt Exp $
</para>
<para>
-Copyright (C) 2001, 2002 Privoxy Developers http://privoxy.org
+Copyright (C) 2001-2006 Privoxy Developers http://privoxy.org
</para>
<para>
<para>
This file holds the Privoxy configuration. If you modify this
- file, you will need to send a couple of requests to the proxy
+ file, you will need to send a couple of requests (of any kind) to the proxy
before any changes take effect.
</para>
<para>
<term>Specifies:</term>
<listitem>
<para>
- The <link linkend="filter-file">filter file</link> to use
+ The <link linkend="filter-file">filter file(s)</link> to use
</para>
</listitem>
</varlistentry>
<term>Notes:</term>
<listitem>
<para>
- The <link linkend="filter-file">filter file</link> contains content modification
+ Multiple <literal>filterfiles</literal> lines are permitted.
+ </para>
+ <para>
+ The <link linkend="filter-file">filter files</link> contain content modification
rules that use <link linkend="regex">regular expressions</link>. 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 <quote>Microsoft</quote> with <quote>MicroSuck</quote> wherever
- it appears on a Web page.
+ powerful changes on the content of Web pages, and optionally the headers
+ as well, e.g., you could disable your favorite JavaScript annoyances,
+ re-write the actual displayed text, or just have some fun replacing
+ <quote>Microsoft</quote> with <quote>MicroSuck</quote> wherever it appears
+ on a Web page.
</para>
<para>
The
<literal>+<link linkend="filter">filter</link>{<replaceable class="parameter">name</replaceable>}</literal>
actions rely on the relevant filter (<replaceable class="parameter">name</replaceable>)
- to be defined in the filter file!
+ to be defined in a filter file!
</para>
<para>
A pre-defined filter file called <filename>default.filter</filename> that contains
- a bunch of handy filters for common problems is included in the distribution.
+ a number of useful filters for common problems is included in the distribution.
See the section on the <literal><link linkend="filter">filter</link></literal>
action for a list.
</para>
+ <para>
+ It is recommended to place any locally adapted filters into a separate
+ file, such as <filename>user.filter</filename>.
+ </para>
</listitem>
</varlistentry>
</variablelist>
<!entity p-authors SYSTEM "p-authors.sgml">
<!entity config SYSTEM "p-config.sgml">
<!entity p-version "3.0.4">
-<!entity p-status "BETA">
+<!entity p-status "beta">
<!entity % p-authors-formal "INCLUDE"> <!-- include additional text, etc -->
<!entity % p-not-stable "INCLUDE">
<!entity % p-stable "IGNORE">
This file belongs into
ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/
- $Id: user-manual.sgml,v 2.14 2006/08/29 10:59:36 hal9 Exp $
+ $Id: user-manual.sgml,v 2.15 2006/08/30 11:15:22 hal9 Exp $
Copyright (C) 2001- 2006 Privoxy Developers <developers@privoxy.org>
See LICENSE.
</subscript>
</pubdate>
-<pubdate>$Id: user-manual.sgml,v 2.14 2006/08/29 10:59:36 hal9 Exp $</pubdate>
+<pubdate>$Id: user-manual.sgml,v 2.15 2006/08/30 11:15:22 hal9 Exp $</pubdate>
<!--
<application>Privoxy</application>, v.&p-version;<![%p-not-stable;[,
and is mostly complete at this point. The most up to date reference for the
time being is still the comments in the source files and in the individual
- configuration files. Development of version 3.0 is currently nearing
- completion, and includes many significant changes and enhancements over
- earlier versions. The target release date for
- stable v3.0 is <quote>soon</quote> ;-)]]>.
+ configuration files. Development of a new version is currently nearing
+ completion, and includes significant changes and enhancements over
+ earlier versions. ]]>.
</para>
<!-- include only in non-stable versions -->
<!-- ~~~~~ New section ~~~~~ -->
<sect2 id="features"><title>Features</title>
<para>
- In addition to <application>Internet Junkbuster's</application> traditional
- features of ad and banner blocking and cookie management,
- <application>Privoxy</application> provides new features<![%p-not-stable;[,
- some of them currently under development]]>:
+ In addition to the core
+ features of ad blocking and cookie management,
+ <application>Privoxy</application> provides many supplemental
+ features<![%p-not-stable;[, some of them currently under development]]>,
+ that give the end-user more control, more privacy and more freedom:
</para>
<!-- Include newfeatures.sgml boilerplate here: -->
&newfeatures;
<para>
In order not to lose your personal changes and adjustments when updating
to the latest <literal>default.action</literal> file we <emphasis>strongly
- recommend</emphasis> that you use <literal>user.action</literal> for your
- customization of <application>Privoxy</application>. See the <link
+ recommend</emphasis> that you use <literal>user.action</literal> and
+ <literal>user.filter</literal> for your local
+ customizations of <application>Privoxy</application>. See the <link
linkend="actions-file">Chapter on actions files</link> for details.
</para>
<sect1 id="actions-file"><title>Actions Files</title>
<para>
- The actions files are used to define what actions
- <application>Privoxy</application> takes for which URLs, and thus determine
+ The actions files are used to define what <emphasis>actions</emphasis>
+ <application>Privoxy</application> takes for which URLs, and thus determines
how ad images, cookies and various other aspects of HTTP content and
- transactions are handled, and on which sites (or even parts thereof). There
- are three such files included with <application>Privoxy</application>
- with differing purposes:
+ transactions are handled, and on which sites (or even parts thereof).
+ There are a number of such actions, with a wide range of functionality.
+ Each action does something a little different.
+ These actions give us a veritable arsenal of tools with which to exert
+ our control, preferences and independence.
+</para>
+<para>
+ There
+ are three action files included with <application>Privoxy</application> with
+ differing purposes:
</para>
<para>
<term>Effect:</term>
<listitem>
<para>
- Deletes every header send by the client that contains the string the user supplied as parameter.
+ Deletes every header sent by the client that contains the string the user supplied as parameter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Effect:</term>
<listitem>
- <para>Extend filtering capabilities to the client's headers, which
- by default applies only to the document itself.
+ <para>
+ By default, <application>Privoxy's</application> filters only apply
+ to the document content itself. This will extend those filters to
+ include the client's headers as well.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Effect:</term>
<listitem>
- <para>Extend filtering capabilities to the server's headers, which
- by default applies only to the document itself.
+ <para>
+ By default, <application>Privoxy's</application> filters only apply
+ to the document content itself. This will extend those filters to
+ include the server's headers as well.
</para>
</listitem>
</varlistentry>
<term>Effect:</term>
<listitem>
<para>
- To protect against a known exploit
+ Protect against a known exploit
</para>
</listitem>
</varlistentry>
<listitem>
<para>
This action is useful to replace whole documents with your own
- ones. For that to work, they have to be available on another server.
+ ones. For that to work, they have to be available on another server,
+ and both should resolve.
</para>
<para>
You can do the same by combining the actions
<para>
If you previously configured <application>Privoxy</application> to do the
request through a SSL tunnel, everything will work. Most likely you haven't
- and the server will responds with an error message because it is expecting
+ and the server will respond with an error message because it is expecting
HTTPS.
</para>
</listitem>
{ \
-<link linkend="ADD-HEADER">add-header</link> \
-<link linkend="BLOCK">block</link> \
+ -<link linkend="CONTENT-TYPE-OVERWRITE">content-type-overwrite</link> \
+ -<link linkend="CRUNCH-CLIENT-HEADER">crunch-client-header</link> \
+ -<link linkend="CRUNCH-IF-NONE-MATCH">crunch-if-none-match</link> \
-<link linkend="CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</link> \
+ -<link linkend="CRUNCH-SERVER-HEADER">crunch-server-header</link> \
-<link linkend="CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</link> \
+<link linkend="DEANIMATE-GIFS">deanimate-gifs</link> \
-<link linkend="DOWNGRADE-HTTP-VERSION">downgrade-http-version</link> \
- +<link linkend="FAST-REDIRECTS">fast-redirects</link> \
+ +<link linkend="FAST-REDIRECTS">fast-redirects{check-decoded-url}</link> \
+<link linkend="FILTER-JS-ANNOYANCES">filter{js-annoyances}</link> \
-<link linkend="FILTER-JS-EVENTS">filter{js-events}</link> \
+<link linkend="FILTER-HTML-ANNOYANCES">filter{html-annoyances}</link> \
-<link linkend="FILTER-FUN">filter{fun}</link> \
-<link linkend="FILTER-CRUDE-PARENTAL">filter{crude-parental}</link> \
+<link linkend="FILTER-IE-EXPLOITS">filter{ie-exploits}</link> \
+ -<link linkend="FILTER-CLIENT-HEADERS">filter-client-headers</link> \
+ -<link linkend="FILTER-SERVER-HEADERS">filter-server-headers</link> \
+ -<link linkend="FORCE-TEXT-MODE">force-text-mode</link> \
+ -<link linkend="HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</link> \
-<link linkend="HANDLE-AS-IMAGE">handle-as-image</link> \
+ -<link linkend="HIDE-ACCEPT-LANGUAGE">hide-accept-language</link> \
+ -<link linkend="HIDE-CONTENT-DISPOSITION">hide-content-disposition</link> \
+ -<link linkend="HIDE-IF-MODIFIED-SINCE">hide-if-modified-since</link> \
+<link linkend="HIDE-FORWARDED-FOR-HEADERS">hide-forwarded-for-headers</link> \
+<link linkend="HIDE-FROM-HEADER">hide-from-header{block}</link> \
+<link linkend="HIDE-REFERER">hide-referrer{forge}</link> \
-<link linkend="HIDE-USER-AGENT">hide-user-agent</link> \
+ -<link linkend="INSPECT-JPEGS">inspect-jpegs</link> \
-<link linkend="KILL-POPUPS">kill-popups</link> \
-<link linkend="LIMIT-CONNECT">limit-connect</link> \
+<link linkend="PREVENT-COMPRESSION">prevent-compression</link> \
+ -<link linkend="OVERWRITE-LAST-MODIFIED">overwrite-last-modified</link> \
+ -<link linkend="REDIRECT">redirect</link> \
-<link linkend="SEND-VANILLA-WAFER">send-vanilla-wafer</link> \
-<link linkend="SEND-WAFER">send-wafer</link> \
+<link linkend="SESSION-COOKIES-ONLY">session-cookies-only</link> \
+<link linkend="SET-IMAGE-BLOCKER">set-image-blocker{pattern}</link> \
+ -<link linkend="TREAT-FORBIDDEN-CONNECTS-LIKE-BLOCKS">treat-forbidden-connects-like-blocks</link> \
}
/ # forward slash will match *all* potential URL patterns.</screen>
</para>
<para>
One of the most important jobs of <application>Privoxy</application>
- is to block banners. A huge bunch of them are already <quote>blocked</quote>
+ is to block banners. A huge bunch of them can be <quote>blocked</quote>
by the <literal><link linkend="filter">filter</link>{banners-by-size}</literal>
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
</para>
<para>
- The actual <filename>default.action</filename> is of course more
+ The actual <filename>default.action</filename> is of course much more
comprehensive, but we hope this example made clear how it works.
</para>
# Allow ads for selected useful free sites:
#
-allow-ads = -block -filter{banners-by-size} -filter{banners-by-link}</screen>
+allow-ads = -block -filter{banners-by-size} -filter{banners-by-link}
+
+# Alias for specific file types that are text, but might have conflicting
+# MIME types. We want the browser to force these to be text documents.
+handle-as-text = -<link linkend="FILTER">filter</link> +-<link linkend="content-type-overwrite">content-type-overwrite{text/plain}</link> +-<link linkend="FORCE-TEXT-MODE">force-text-mode</link> -<link linkend="HIDE-CONTENT-DISPOSITION">hide-content-disposition</link></screen>
-
</para>
<para>
<literal>-<link linkend="filter-banners-by-link">filter{banners-by-link}</link></literal> above.
</para>
+<para>
+ Invoke another alias here to force an over-ride of the MIME type <literal>
+ application/x-sh</literal> which typically would open a download type
+ dialog. In my case, I want to look at the shell script, and then I can save
+ it should I choose to.
+</para>
+
+<para>
+<screen>
+{ handle-as-text }
+/.*\.sh$</screen>
+</para>
+
<para>
<filename>user.action</filename> is generally the best place to define
exceptions and additions to the default policies of
linkend="DEANIMATE-GIFS"><quote>+deanimate-gifs</quote></link>
action applies (and the document type fits the action), the rest of the page is
read into memory (up to a configurable limit). Then the filter rules (from
- <filename>default.filter</filename>) are processed against the buffered
- content. Filters are applied in the order they are specified in one of the
- filter files. Animated GIFs, if present, are
- reduced to either the first or last frame, depending on the action
+ <filename>default.filter</filename> and any other filter files) are
+ processed against the buffered content. Filters are applied in the order
+ they are specified in one of the filter files. Animated GIFs, if present,
+ are reduced to either the first or last frame, depending on the action
setting.The entire page, which is now filtered, is then sent by
<application>Privoxy</application> back to your browser.
</para>
<para>
Let's try an example, <ulink url="http://google.com">google.com</ulink>,
- and look at it one section at a time:
+ and look at it one section at a time in a sample configuration (your real
+ configuration may vary):
</para>
<para>
In file: default.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
-{-add-header
- -block
- -crunch-outgoing-cookies
- -crunch-incoming-cookies
- +deanimate-gifs{last}
- -downgrade-http-version
- +fast-redirects
- -filter{popups}
- -filter{fun}
- -filter{shockwave-flash}
- -filter{crude-parental}
- +filter{html-annoyances}
- +filter{js-annoyances}
- +filter{content-cookies}
- +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
- -kill-popups
- -limit-connect
- +prevent-compression
- -send-vanilla-wafer
- -send-wafer
- +session-cookies-only
- +set-image-blocker{pattern} }
+ {-add-header
+ -block
+ -content-type-overwrite
+ -crunch-client-header
+ -crunch-if-none-match
+ -crunch-incoming-cookies
+ -crunch-outgoing-cookies
+ -crunch-server-header
+ +deanimate-gifs {last}
+ -downgrade-http-version
+ +fast-redirects {check-decoded-url}
+ -filter {js-events}
+ -filter {content-cookies}
+ -filter {all-popups}
+ -filter {banners-by-link}
+ -filter {tiny-textforms}
+ -filter {frameset-borders}
+ -filter {demoronizer}
+ -filter {shockwave-flash}
+ -filter {quicktime-kioskmode}
+ -filter {fun}
+ -filter {crude-parental}
+ -filter {site-specifics}
+ +filter {js-annoyances}
+ +filter {html-annoyances}
+ +filter {refresh-tags}
+ +filter {unsolicited-popups}
+ +filter {img-reorder}
+ +filter {banners-by-size}
+ +filter {webbugs}
+ +filter {jumping-windows}
+ +filter {ie-exploits}
+ -filter-client-headers
+ -filter-server-headers
+ -force-text-mode
+ -handle-as-empty-document
+ -handle-as-image
+ -hide-accept-language
+ -hide-content-disposition
+ +hide-forwarded-for-headers
+ +hide-from-header {block}
+ -hide-if-modified-since
+ +hide-referrer {forge}
+ -hide-user-agent
+ -inspect-jpegs
+ -kill-popups
+ -limit-connect
+ -overwrite-last-modified
+ +prevent-compression
+ -redirect
+ -send-vanilla-wafer
+ -send-wafer
+ +session-cookies-only
+ +set-image-blocker {pattern}
+ -treat-forbidden-connects-like-blocks }
/
-
+
{ -session-cookies-only }
.google.com
</para>
<para>
- This tells us how we have defined our
+ This is telling us how we have defined our
<link linkend="ACTIONS"><quote>actions</quote></link>, and
- which ones match for our example, <quote>google.com</quote>. The first listing
+ which ones match for our test case, <quote>google.com</quote>.
+ Displayed is all the actions that are available to us. Remember,
+ the <literal>+</literal> sign denotes <quote>on</quote>. <literal>-</literal>
+ denotes <quote>off</quote>. So some are <quote>on</quote> here, but many
+ are <quote>off</quote>. Each example we try may provide a slightly different
+ end result, depending on our configuration directives.
+</para>
+<para>
+ The first listing
is any matches for the <filename>standard.action</filename> file. No hits at
all here on <quote>standard</quote>. Then next is <quote>default</quote>, or
our <filename>default.action</filename> file. The large, multi-line listing,
<quote>.google.com</quote>. The first is negating our previous cookie setting,
which was for <link
linkend="SESSION-COOKIES-ONLY"><quote>+session-cookies-only</quote></link>
- (i.e. not persistent). So we will allow persistent cookies for google. The
- second turns <emphasis>off</emphasis> any
+ (i.e. not persistent). So we will allow persistent cookies for google, at
+ least that is how it is in this example. The second turns
+ <emphasis>off</emphasis> any
<link
linkend="FAST-REDIRECTS"><quote>+fast-redirects</quote></link>
action, allowing this to take place unmolested. Note that there is a leading
<para>
Then, for our <filename>user.action</filename> file, we again have no hits.
+ So there is nothing google-specific that we might have added to our own, local
+ configuration.
</para>
<para>
Final results:
- -add-header
- -block
- -crunch-outgoing-cookies
- -crunch-incoming-cookies
- +deanimate-gifs{last}
- -downgrade-http-version
- -fast-redirects
- -filter{popups}
- -filter{fun}
- -filter{shockwave-flash}
- -filter{crude-parental}
- +filter{html-annoyances}
- +filter{js-annoyances}
- +filter{content-cookies}
- +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
- -kill-popups
- -limit-connect
- +prevent-compression
- -send-vanilla-wafer
+ -add-header
+ -block
+ -content-type-overwrite
+ -crunch-client-header
+ -crunch-if-none-match
+ -crunch-incoming-cookies
+ -crunch-outgoing-cookies
+ -crunch-server-header
+ +deanimate-gifs {last}
+ -downgrade-http-version
+ -fast-redirects
+ +filter {js-annoyances}
+ +filter {html-annoyances}
+ +filter {refresh-tags}
+ +filter {unsolicited-popups}
+ +filter {img-reorder}
+ +filter {banners-by-size}
+ +filter {webbugs}
+ +filter {jumping-windows}
+ +filter {ie-exploits}
+ -filter-client-headers
+ -filter-server-headers
+ -force-text-mode
+ -handle-as-empty-document
+ -handle-as-image
+ -hide-accept-language
+ -hide-content-disposition
+ +hide-forwarded-for-headers
+ +hide-from-header {block}
+ -hide-if-modified-since
+ +hide-referrer {forge}
+ -hide-user-agent
+ -inspect-jpegs
+ -kill-popups
+ -limit-connect
+ -overwrite-last-modified
+ +prevent-compression
+ -redirect
+ -send-vanilla-wafer
-send-wafer
- -session-cookies-only
- +set-image-blocker{pattern}
-</screen>
+ -session-cookies-only
+ +set-image-blocker {pattern}
+ -treat-forbidden-connects-like-blocks </screen>
</para>
<para>
Notice the only difference here to the previous listing, is to
<quote>fast-redirects</quote> and <quote>session-cookies-only</quote>,
- which are actived specifically for this site in our configuration.
+ which are actived specifically for this site in our configuration,
+ and thus show in the <quote>Final Results</quote>.
</para>
<para>
In file: default.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
{-add-header
- -block
- -crunch-incoming-cookies
- -crunch-outgoing-cookies
+ -block
+ -content-type-overwrite
+ -crunch-client-header
+ -crunch-if-none-match
+ -crunch-incoming-cookies
+ -crunch-outgoing-cookies
+ -crunch-server-header
+deanimate-gifs
-downgrade-http-version
- +fast-redirects
+ +fast-redirects{check-decoded-url}
+filter{html-annoyances}
+filter{js-annoyances}
+filter{kill-popups}
+filter{banners-by-size}
+filter{hal}
+filter{fun}
+ -filter-client-headers
+ -filter-server-headers
+ -force-text-mode
+ -handle-as-empty-document
+ -handle-as-image
+ -hide-accept-language
+ -hide-content-disposition
+hide-forwarded-for-headers
+hide-from-header{block}
+hide-referer{forge}
-hide-user-agent
- -handle-as-image
+ -inspect-jpegs
+kill-popups
+ -overwrite-last-modified
+prevent-compression
+ -redirect
-send-vanilla-wafer
-send-wafer
+session-cookies-only
- +set-image-blocker{blank} }
+ +set-image-blocker{blank}
+ -treat-forbidden-connects-like-blocks }
/
{ +block +handle-as-image }
</para>
<para>
- Ooops, the <quote>/adsl/</quote> is matching <quote>/ads</quote>! But
- we did not want this at all! Now we see why we get the blank page. We could
- now add a new action below this that explicitly does <emphasis>not</emphasis>
- block (<quote>{-block}</quote>) paths with <quote>adsl</quote>. There are
- various ways to handle such exceptions. Example:
+ Ooops, the <quote>/adsl/</quote> is matching <quote>/ads</quote> in our
+ configuration! But we did not want this at all! Now we see why we get the
+ blank page. We could now add a new action below this that explicitly
+ <emphasis>un</emphasis> blocks (<quote>{-block}</quote>) paths with
+ <quote>adsl</quote> in them (remember, last match in the configuration wins).
+ There are various ways to handle such exceptions. Example:
</para>
<para>
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
$Log: user-manual.sgml,v $
+ Revision 2.15 2006/08/30 11:15:22 hal9
+ More work on the new actions, especially filter-*-headers, and What's New
+ section. User Manual is close to final form for 3.0.4 release. Some tinkering
+ and proof reading left to do.
+
Revision 2.14 2006/08/29 10:59:36 hal9
Add a "Whats New in this release" Section. Further work on multiple filter
files, and assorted other minor changes.
></A
>8. Actions Files</H1
><P
-> The actions files are used to define what actions
+> The actions files are used to define what <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>actions</I
+></SPAN
+>
<SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
-> takes for which URLs, and thus determine
+> takes for which URLs, and thus determines
how ad images, cookies and various other aspects of HTTP content and
- transactions are handled, and on which sites (or even parts thereof). There
- are three such files included with <SPAN
+ transactions are handled, and on which sites (or even parts thereof).
+ There are a number of such actions, with a wide range of functionality.
+ Each action does something a little different.
+ These actions give us a veritable arsenal of tools with which to exert
+ our control, preferences and independence.</P
+><P
+> There
+ are three action files included with <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
->
- with differing purposes:
+> with
+ differing purposes:
</P
><P
> <P
> <DIV
CLASS="TABLE"
><A
-NAME="AEN1798"
+NAME="AEN1803"
></A
><P
><B
><H2
CLASS="SECT2"
><A
-NAME="AEN1897"
+NAME="AEN1902"
></A
>8.1. Finding the Right Mix</H2
><P
><H2
CLASS="SECT2"
><A
-NAME="AEN1904"
+NAME="AEN1909"
></A
>8.2. How to Edit</H2
><P
><H3
CLASS="SECT3"
><A
-NAME="AEN1978"
+NAME="AEN1983"
></A
>8.4.1. The Domain Pattern</H3
><P
><H3
CLASS="SECT3"
><A
-NAME="AEN2040"
+NAME="AEN2045"
></A
>8.4.2. The Path Pattern</H3
><P
>Effect:</DT
><DD
><P
-> Deletes every header send by the client that contains the string the user supplied as parameter.
+> Deletes every header sent by the client that contains the string the user supplied as parameter.
</P
></DD
><DT
>Effect:</DT
><DD
><P
->Extend filtering capabilities to the client's headers, which
- by default applies only to the document itself.
+> By default, <SPAN
+CLASS="APPLICATION"
+>Privoxy's</SPAN
+> filters only apply
+ to the document content itself. This will extend those filters to
+ include the client's headers as well.
</P
></DD
><DT
>Effect:</DT
><DD
><P
->Extend filtering capabilities to the server's headers, which
- by default applies only to the document itself.
+> By default, <SPAN
+CLASS="APPLICATION"
+>Privoxy's</SPAN
+> filters only apply
+ to the document content itself. This will extend those filters to
+ include the server's headers as well.
</P
></DD
><DT
>Effect:</DT
><DD
><P
-> To protect against a known exploit
+> Protect against a known exploit
</P
></DD
><DT
><DD
><P
> This action is useful to replace whole documents with your own
- ones. For that to work, they have to be available on another server.
+ ones. For that to work, they have to be available on another server,
+ and both should resolve.
</P
><P
> You can do the same by combining the actions
>Privoxy</SPAN
> to do the
request through a SSL tunnel, everything will work. Most likely you haven't
- and the server will responds with an error message because it is expecting
+ and the server will respond with an error message because it is expecting
HTTPS.
</P
></DD
><H3
CLASS="SECT3"
><A
-NAME="AEN3633"
+NAME="AEN3640"
></A
>8.5.36. Summary</H3
><P
><H3
CLASS="SECT3"
><A
-NAME="AEN3698"
+NAME="AEN3705"
></A
>8.7.1. default.action</H3
><P
-<A
HREF="actions-file.html#BLOCK"
>block</A
+> \
+ -<A
+HREF="actions-file.html#CONTENT-TYPE-OVERWRITE"
+>content-type-overwrite</A
+> \
+ -<A
+HREF="actions-file.html#CRUNCH-CLIENT-HEADER"
+>crunch-client-header</A
+> \
+ -<A
+HREF="actions-file.html#CRUNCH-IF-NONE-MATCH"
+>crunch-if-none-match</A
> \
-<A
HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
>crunch-incoming-cookies</A
+> \
+ -<A
+HREF="actions-file.html#CRUNCH-SERVER-HEADER"
+>crunch-server-header</A
> \
-<A
HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
> \
+<A
HREF="actions-file.html#FAST-REDIRECTS"
->fast-redirects</A
+>fast-redirects{check-decoded-url}</A
> \
+<A
HREF="actions-file.html#FILTER-JS-ANNOYANCES"
>filter{ie-exploits}</A
> \
-<A
+HREF="actions-file.html#FILTER-CLIENT-HEADERS"
+>filter-client-headers</A
+> \
+ -<A
+HREF="actions-file.html#FILTER-SERVER-HEADERS"
+>filter-server-headers</A
+> \
+ -<A
+HREF="actions-file.html#FORCE-TEXT-MODE"
+>force-text-mode</A
+> \
+ -<A
+HREF="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT"
+>handle-as-empty-document</A
+> \
+ -<A
HREF="actions-file.html#HANDLE-AS-IMAGE"
>handle-as-image</A
+> \
+ -<A
+HREF="actions-file.html#HIDE-ACCEPT-LANGUAGE"
+>hide-accept-language</A
+> \
+ -<A
+HREF="actions-file.html#HIDE-CONTENT-DISPOSITION"
+>hide-content-disposition</A
+> \
+ -<A
+HREF="actions-file.html#HIDE-IF-MODIFIED-SINCE"
+>hide-if-modified-since</A
> \
+<A
HREF="actions-file.html#HIDE-FORWARDED-FOR-HEADERS"
-<A
HREF="actions-file.html#HIDE-USER-AGENT"
>hide-user-agent</A
+> \
+ -<A
+HREF="actions-file.html#INSPECT-JPEGS"
+>inspect-jpegs</A
> \
-<A
HREF="actions-file.html#KILL-POPUPS"
+<A
HREF="actions-file.html#PREVENT-COMPRESSION"
>prevent-compression</A
+> \
+ -<A
+HREF="actions-file.html#OVERWRITE-LAST-MODIFIED"
+>overwrite-last-modified</A
+> \
+ -<A
+HREF="actions-file.html#REDIRECT"
+>redirect</A
> \
-<A
HREF="actions-file.html#SEND-VANILLA-WAFER"
+<A
HREF="actions-file.html#SET-IMAGE-BLOCKER"
>set-image-blocker{pattern}</A
+> \
+ -<A
+HREF="actions-file.html#TREAT-FORBIDDEN-CONNECTS-LIKE-BLOCKS"
+>treat-forbidden-connects-like-blocks</A
> \
}
/ # forward slash will match *all* potential URL patterns.</PRE
CLASS="APPLICATION"
>Privoxy</SPAN
>
- is to block banners. A huge bunch of them are already <SPAN
+ is to block banners. A huge bunch of them can be <SPAN
CLASS="QUOTE"
>"blocked"</SPAN
>
> The actual <TT
CLASS="FILENAME"
>default.action</TT
-> is of course more
+> is of course much more
comprehensive, but we hope this example made clear how it works.</P
></DIV
><DIV
><H3
CLASS="SECT3"
><A
-NAME="AEN3864"
+NAME="AEN3886"
></A
>8.7.2. user.action</H3
><P
# Allow ads for selected useful free sites:
#
-allow-ads = -block -filter{banners-by-size} -filter{banners-by-link}</PRE
+allow-ads = -block -filter{banners-by-size} -filter{banners-by-link}
+
+# Alias for specific file types that are text, but might have conflicting
+# MIME types. We want the browser to force these to be text documents.
+handle-as-text = -<A
+HREF="actions-file.html#FILTER"
+>filter</A
+> +-<A
+HREF="actions-file.html#CONTENT-TYPE-OVERWRITE"
+>content-type-overwrite{text/plain}</A
+> +-<A
+HREF="actions-file.html#FORCE-TEXT-MODE"
+>force-text-mode</A
+> -<A
+HREF="actions-file.html#HIDE-CONTENT-DISPOSITION"
+>hide-content-disposition</A
+></PRE
></TD
></TR
></TABLE
->
-
- </P
+> </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
></TT
> above.</P
><P
+> Invoke another alias here to force an over-ride of the MIME type <TT
+CLASS="LITERAL"
+> application/x-sh</TT
+> which typically would open a download type
+ dialog. In my case, I want to look at the shell script, and then I can save
+ it should I choose to.</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+>{ handle-as-text }
+/.*\.sh$</PRE
+></TD
+></TR
+></TABLE
+> </P
+><P
> <TT
CLASS="FILENAME"
>user.action</TT
><H2
CLASS="SECT2"
><A
-NAME="AEN4640"
+NAME="AEN4670"
></A
>14.2. <SPAN
CLASS="APPLICATION"
Privoxy main page:
</P
><A
-NAME="AEN4655"
+NAME="AEN4685"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
editing of actions files:
</P
><A
-NAME="AEN4663"
+NAME="AEN4693"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
Show the source code version numbers:
</P
><A
-NAME="AEN4668"
+NAME="AEN4698"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
Show the browser's request headers:
</P
><A
-NAME="AEN4673"
+NAME="AEN4703"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
Show which actions apply to a URL and why:
</P
><A
-NAME="AEN4678"
+NAME="AEN4708"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
to run, but only as a pass-through proxy, with no actions taking place:
</P
><A
-NAME="AEN4684"
+NAME="AEN4714"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
> Short cuts. Turn off, then on:
</P
><A
-NAME="AEN4688"
+NAME="AEN4718"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
</P
></BLOCKQUOTE
><A
-NAME="AEN4691"
+NAME="AEN4721"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
<TT
CLASS="FILENAME"
>default.filter</TT
->) are processed against the buffered
- content. Filters are applied in the order they are specified in one of the
- filter files. Animated GIFs, if present, are
- reduced to either the first or last frame, depending on the action
+> and any other filter files) are
+ processed against the buffered content. Filters are applied in the order
+ they are specified in one of the filter files. Animated GIFs, if present,
+ are reduced to either the first or last frame, depending on the action
setting.The entire page, which is now filtered, is then sent by
<SPAN
CLASS="APPLICATION"
TARGET="_top"
>google.com</A
>,
- and look at it one section at a time:</P
+ and look at it one section at a time in a sample configuration (your real
+ configuration may vary):</P
><P
> <TABLE
BORDER="0"
>[ Edit ]</SPAN
>
-{-add-header
- -block
- -crunch-outgoing-cookies
- -crunch-incoming-cookies
- +deanimate-gifs{last}
- -downgrade-http-version
- +fast-redirects
- -filter{popups}
- -filter{fun}
- -filter{shockwave-flash}
- -filter{crude-parental}
- +filter{html-annoyances}
- +filter{js-annoyances}
- +filter{content-cookies}
- +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
- -kill-popups
- -limit-connect
- +prevent-compression
- -send-vanilla-wafer
- -send-wafer
- +session-cookies-only
- +set-image-blocker{pattern} }
+ {-add-header
+ -block
+ -content-type-overwrite
+ -crunch-client-header
+ -crunch-if-none-match
+ -crunch-incoming-cookies
+ -crunch-outgoing-cookies
+ -crunch-server-header
+ +deanimate-gifs {last}
+ -downgrade-http-version
+ +fast-redirects {check-decoded-url}
+ -filter {js-events}
+ -filter {content-cookies}
+ -filter {all-popups}
+ -filter {banners-by-link}
+ -filter {tiny-textforms}
+ -filter {frameset-borders}
+ -filter {demoronizer}
+ -filter {shockwave-flash}
+ -filter {quicktime-kioskmode}
+ -filter {fun}
+ -filter {crude-parental}
+ -filter {site-specifics}
+ +filter {js-annoyances}
+ +filter {html-annoyances}
+ +filter {refresh-tags}
+ +filter {unsolicited-popups}
+ +filter {img-reorder}
+ +filter {banners-by-size}
+ +filter {webbugs}
+ +filter {jumping-windows}
+ +filter {ie-exploits}
+ -filter-client-headers
+ -filter-server-headers
+ -force-text-mode
+ -handle-as-empty-document
+ -handle-as-image
+ -hide-accept-language
+ -hide-content-disposition
+ +hide-forwarded-for-headers
+ +hide-from-header {block}
+ -hide-if-modified-since
+ +hide-referrer {forge}
+ -hide-user-agent
+ -inspect-jpegs
+ -kill-popups
+ -limit-connect
+ -overwrite-last-modified
+ +prevent-compression
+ -redirect
+ -send-vanilla-wafer
+ -send-wafer
+ +session-cookies-only
+ +set-image-blocker {pattern}
+ -treat-forbidden-connects-like-blocks }
/
-
+
{ -session-cookies-only }
.google.com
></TABLE
></P
><P
-> This tells us how we have defined our
+> This is telling us how we have defined our
<A
HREF="actions-file.html#ACTIONS"
><SPAN
>"actions"</SPAN
></A
>, and
- which ones match for our example, <SPAN
+ which ones match for our test case, <SPAN
CLASS="QUOTE"
>"google.com"</SPAN
->. The first listing
+>.
+ Displayed is all the actions that are available to us. Remember,
+ the <TT
+CLASS="LITERAL"
+>+</TT
+> sign denotes <SPAN
+CLASS="QUOTE"
+>"on"</SPAN
+>. <TT
+CLASS="LITERAL"
+>-</TT
+>
+ denotes <SPAN
+CLASS="QUOTE"
+>"off"</SPAN
+>. So some are <SPAN
+CLASS="QUOTE"
+>"on"</SPAN
+> here, but many
+ are <SPAN
+CLASS="QUOTE"
+>"off"</SPAN
+>. Each example we try may provide a slightly different
+ end result, depending on our configuration directives.</P
+><P
+> The first listing
is any matches for the <TT
CLASS="FILENAME"
>standard.action</TT
>"+session-cookies-only"</SPAN
></A
>
- (i.e. not persistent). So we will allow persistent cookies for google. The
- second turns <SPAN
+ (i.e. not persistent). So we will allow persistent cookies for google, at
+ least that is how it is in this example. The second turns
+ <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
> Then, for our <TT
CLASS="FILENAME"
>user.action</TT
-> file, we again have no hits.</P
+> file, we again have no hits.
+ So there is nothing google-specific that we might have added to our own, local
+ configuration.</P
><P
> And finally we pull it all together in the bottom section and summarize how
<SPAN
CLASS="SCREEN"
> Final results:
- -add-header
- -block
- -crunch-outgoing-cookies
- -crunch-incoming-cookies
- +deanimate-gifs{last}
- -downgrade-http-version
- -fast-redirects
- -filter{popups}
- -filter{fun}
- -filter{shockwave-flash}
- -filter{crude-parental}
- +filter{html-annoyances}
- +filter{js-annoyances}
- +filter{content-cookies}
- +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
- -kill-popups
- -limit-connect
- +prevent-compression
- -send-vanilla-wafer
+ -add-header
+ -block
+ -content-type-overwrite
+ -crunch-client-header
+ -crunch-if-none-match
+ -crunch-incoming-cookies
+ -crunch-outgoing-cookies
+ -crunch-server-header
+ +deanimate-gifs {last}
+ -downgrade-http-version
+ -fast-redirects
+ +filter {js-annoyances}
+ +filter {html-annoyances}
+ +filter {refresh-tags}
+ +filter {unsolicited-popups}
+ +filter {img-reorder}
+ +filter {banners-by-size}
+ +filter {webbugs}
+ +filter {jumping-windows}
+ +filter {ie-exploits}
+ -filter-client-headers
+ -filter-server-headers
+ -force-text-mode
+ -handle-as-empty-document
+ -handle-as-image
+ -hide-accept-language
+ -hide-content-disposition
+ +hide-forwarded-for-headers
+ +hide-from-header {block}
+ -hide-if-modified-since
+ +hide-referrer {forge}
+ -hide-user-agent
+ -inspect-jpegs
+ -kill-popups
+ -limit-connect
+ -overwrite-last-modified
+ +prevent-compression
+ -redirect
+ -send-vanilla-wafer
-send-wafer
- -session-cookies-only
- +set-image-blocker{pattern} </PRE
+ -session-cookies-only
+ +set-image-blocker {pattern}
+ -treat-forbidden-connects-like-blocks </PRE
></TD
></TR
></TABLE
CLASS="QUOTE"
>"session-cookies-only"</SPAN
>,
- which are actived specifically for this site in our configuration.</P
+ which are actived specifically for this site in our configuration,
+ and thus show in the <SPAN
+CLASS="QUOTE"
+>"Final Results"</SPAN
+>.</P
><P
> Now another example, <SPAN
CLASS="QUOTE"
>
{-add-header
- -block
- -crunch-incoming-cookies
- -crunch-outgoing-cookies
+ -block
+ -content-type-overwrite
+ -crunch-client-header
+ -crunch-if-none-match
+ -crunch-incoming-cookies
+ -crunch-outgoing-cookies
+ -crunch-server-header
+deanimate-gifs
-downgrade-http-version
- +fast-redirects
+ +fast-redirects{check-decoded-url}
+filter{html-annoyances}
+filter{js-annoyances}
+filter{kill-popups}
+filter{banners-by-size}
+filter{hal}
+filter{fun}
+ -filter-client-headers
+ -filter-server-headers
+ -force-text-mode
+ -handle-as-empty-document
+ -handle-as-image
+ -hide-accept-language
+ -hide-content-disposition
+hide-forwarded-for-headers
+hide-from-header{block}
+hide-referer{forge}
-hide-user-agent
- -handle-as-image
+ -inspect-jpegs
+kill-popups
+ -overwrite-last-modified
+prevent-compression
+ -redirect
-send-vanilla-wafer
-send-wafer
+session-cookies-only
- +set-image-blocker{blank} }
+ +set-image-blocker{blank}
+ -treat-forbidden-connects-like-blocks }
/
{ +block +handle-as-image }
> is matching <SPAN
CLASS="QUOTE"
>"/ads"</SPAN
->! But
- we did not want this at all! Now we see why we get the blank page. We could
- now add a new action below this that explicitly does <SPAN
+> in our
+ configuration! But we did not want this at all! Now we see why we get the
+ blank page. We could now add a new action below this that explicitly
+ <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
->not</I
+>un</I
></SPAN
->
- block (<SPAN
+> blocks (<SPAN
CLASS="QUOTE"
>"{-block}"</SPAN
->) paths with <SPAN
+>) paths with
+ <SPAN
CLASS="QUOTE"
>"adsl"</SPAN
->. There are
- various ways to handle such exceptions. Example:</P
+> in them (remember, last match in the configuration wins).
+ There are various ways to handle such exceptions. Example:</P
><P
> <TABLE
BORDER="0"
><P
> The <A
HREF="filter-file.html"
->filter file</A
+>filter file(s)</A
> to use
</P
></DD
>Notes:</DT
><DD
><P
+> Multiple <TT
+CLASS="LITERAL"
+>filterfiles</TT
+> lines are permitted.
+ </P
+><P
> The <A
HREF="filter-file.html"
->filter file</A
-> contains content modification
+>filter files</A
+> contain 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
+ powerful changes on the content of Web pages, and optionally the headers
+ as well, e.g., you could disable your favorite JavaScript annoyances,
+ re-write the actual displayed text, or just have some fun replacing
+ <SPAN
CLASS="QUOTE"
>"Microsoft"</SPAN
> with <SPAN
CLASS="QUOTE"
>"MicroSuck"</SPAN
-> wherever
- it appears on a Web page.
+> wherever it appears
+ on a Web page.
</P
><P
> The
>name</I
></TT
>)
- to be defined in the filter file!
+ to be defined in a 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.
+ a number of useful filters for common problems is included in the distribution.
See the section on the <TT
CLASS="LITERAL"
><A
>
action for a list.
</P
+><P
+> It is recommended to place any locally adapted filters into a separate
+ file, such as <TT
+CLASS="FILENAME"
+>user.filter</TT
+>.
+ </P
></DD
></DL
></DIV
><H2
CLASS="SECT2"
><A
-NAME="AEN725"
+NAME="AEN724"
></A
>6.1. Controlling <SPAN
CLASS="APPLICATION"
> <H2
CLASS="BRIDGEHEAD"
><A
-NAME="AEN734"
+NAME="AEN733"
></A
> Privoxy Menu</H2
><P
><H2
CLASS="SECT2"
><A
-NAME="AEN4394"
+NAME="AEN4424"
></A
>12.1. License</H2
><P
><H2
CLASS="SECT2"
><A
-NAME="AEN3994"
+NAME="AEN4024"
></A
>9.1. Filter File Tutorial</H2
><P
><BR></P
><P
CLASS="PUBDATE"
->$Id: user-manual.sgml,v 2.14 2006/08/29 10:59:36 hal9 Exp $<BR></P
+>$Id: user-manual.sgml,v 2.15 2006/08/30 11:15:22 hal9 Exp $<BR></P
><DIV
><DIV
CLASS="ABSTRACT"
CLASS="APPLICATION"
>Privoxy</SPAN
> is a web proxy with advanced filtering
- capabilities for protecting privacy, modifying web page content, managing
+ capabilities for protecting privacy, modifying web page data, managing
cookies, controlling access, and removing ads, banners, pop-ups and other
obnoxious Internet junk. <SPAN
CLASS="APPLICATION"
><DL
><DT
>6.1. <A
-HREF="configuration.html#AEN725"
+HREF="configuration.html#AEN724"
>Controlling <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
><DL
><DT
>8.1. <A
-HREF="actions-file.html#AEN1897"
+HREF="actions-file.html#AEN1902"
>Finding the Right Mix</A
></DT
><DT
>8.2. <A
-HREF="actions-file.html#AEN1904"
+HREF="actions-file.html#AEN1909"
>How to Edit</A
></DT
><DT
><DL
><DT
>8.4.1. <A
-HREF="actions-file.html#AEN1978"
+HREF="actions-file.html#AEN1983"
>The Domain Pattern</A
></DT
><DT
>8.4.2. <A
-HREF="actions-file.html#AEN2040"
+HREF="actions-file.html#AEN2045"
>The Path Pattern</A
></DT
></DL
></DT
><DT
>8.5.36. <A
-HREF="actions-file.html#AEN3633"
+HREF="actions-file.html#AEN3640"
>Summary</A
></DT
></DL
><DL
><DT
>8.7.1. <A
-HREF="actions-file.html#AEN3698"
+HREF="actions-file.html#AEN3705"
>default.action</A
></DT
><DT
>8.7.2. <A
-HREF="actions-file.html#AEN3864"
+HREF="actions-file.html#AEN3886"
>user.action</A
></DT
></DL
><DL
><DT
>9.1. <A
-HREF="filter-file.html#AEN3994"
+HREF="filter-file.html#AEN4024"
>Filter File Tutorial</A
></DT
><DT
><DL
><DT
>12.1. <A
-HREF="copyright.html#AEN4394"
+HREF="copyright.html#AEN4424"
>License</A
></DT
><DT
></DT
><DT
>14.2. <A
-HREF="appendix.html#AEN4640"
+HREF="appendix.html#AEN4670"
><SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
> that you use <TT
CLASS="LITERAL"
>user.action</TT
-> for your
- customization of <SPAN
+> and
+ <TT
+CLASS="LITERAL"
+>user.filter</TT
+> for your local
+ customizations of <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
>. See the <A
></A
>1. Introduction</H1
><P
-> This documentation is included with the current BETA version of
+> This documentation is included with the current beta version of
<SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
>, v.3.0.4,
and is mostly complete at this point. The most up to date reference for the
time being is still the comments in the source files and in the individual
- configuration files. Development of version 3.0 is currently nearing
- completion, and includes many significant changes and enhancements over
- earlier versions. The target release date for
- stable v3.0 is <SPAN
-CLASS="QUOTE"
->"soon"</SPAN
-> ;-).</P
+ configuration files. Development of a new version is currently nearing
+ completion, and includes significant changes and enhancements over
+ earlier versions. .</P
><P
-> Since this is a BETA version, not all new features are well tested. This
+> Since this is a beta version, not all new features are well tested. This
documentation may be slightly out of sync as a result (especially with
CVS sources). And there <SPAN
CLASS="emphasis"
></A
>1.1. Features</H2
><P
-> In addition to <SPAN
-CLASS="APPLICATION"
->Internet Junkbuster's</SPAN
-> traditional
- features of ad and banner blocking and cookie management,
+> In addition to the core
+ features of ad blocking and cookie management,
<SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
-> provides new features,
- some of them currently under development:</P
+> provides many supplemental
+ features, some of them currently under development,
+ that give the end-user more control, more privacy and more freedom:</P
><P
> <P
></P
> <DIV
CLASS="FIGURE"
><A
-NAME="AEN521"
+NAME="AEN520"
></A
><P
><B
> <DIV
CLASS="FIGURE"
><A
-NAME="AEN572"
+NAME="AEN571"
></A
><P
><B