X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=doc%2Fsource%2Fuser-manual.sgml;h=60ab2810c0deb52f344f0f5f1db2b187a6eaf97b;hb=d2634851d661efbb05d81bd4c584c3ed15e9b45c;hp=06daeb7a8a0e6de951b064327297394c177986c1;hpb=1e1d5c254bb2b4241dfe6ebc5573a7560535de59;p=privoxy.git
diff --git a/doc/source/user-manual.sgml b/doc/source/user-manual.sgml
index 06daeb7a..60ab2810 100644
--- a/doc/source/user-manual.sgml
+++ b/doc/source/user-manual.sgml
@@ -8,8 +8,11 @@
-
+
+
+
+
@@ -17,6 +20,8 @@
+
+
]>
+
+ Copyright &my-copy; 2001, 2002 by
+ Privoxy Developers
+
+
+
+$Id: user-manual.sgml,v 1.122 2002/05/24 13:24:08 oes Exp $
+
+
-
-
-
- By: Privoxy Developers
-
-
-
+
@@ -68,21 +95,21 @@
]]>
- The user manual gives users information on how to install, configure and use
- User Manual gives users information on how to
+ install, configure and use Privoxy.
-
+
&p-intro;
- You can find the latest version of the user manual at User Manual at http://www.privoxy.org/user-manual/.
Please see the Contact section on how to
contact the developers.
-
+
@@ -91,13 +118,6 @@
-
-
-
-
-
-
-
Introduction
@@ -147,39 +167,27 @@
packages for a wide range of operating systems, and as raw source code.
For most users, we recommend using the packages, which can be downloaded from our
Privoxy Project
- Page. For installing and compiling the source code, please look
- into our Developer Manual.
-
-
-
- If you like to live on the bleeding edge and are not afraid of using
- possibly unstable development versions, you can check out the up-to-the-minute
- version directly from the
- CVS repository or simply download the nightly CVS
- tarball. Again, we refer you to the Developer Manual.
+ Page.
-
- &supported;
-
-
Note: If you have a previous Junkbuster or
Privoxy 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).
+ 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
+ be sure to backup your old configuration if it is valuable to
+ you. See the note to
+ upgraders section below.
+
+Binary Packages
- In any case be sure to backup your old configuration
- if it is valuable to you. See the
- note to upgraders section
- below.
+How to install the binary packages depends on your operating system:
-Red Hat and SuSE RPMs
+Red Hat, SuSE and Conectiva RPMs
RPMs can be installed with rpm -Uvh privoxy-&p-version;-1.rpm,
@@ -197,7 +205,7 @@ automatically start Privoxy in the boot process.
If you have problems with failed dependencies, try rebuilding the SRC RPM:
- rpm --rebuild privoxy-&p-version;-1.src.rpm;. This
+ rpm --rebuild privoxy-&p-version;-1.src.rpm. This
will use your locally installed libraries and RPM version.
@@ -207,17 +215,20 @@ automatically start Privoxy in the boot process.
Otherwise, RPM will try to remove Junkbuster
automatically, before installing Privoxy.
-
+
-Debian
+Debian
- FIXME.
+ DEBs can be installed with dpkg -i
+ privoxy_&p-version;-1.deb, and will use
+ /etc/privoxy for the location of configuration
+ files.
-
+
-Windows
+Windows
Just double-click the installer, which will guide you through
@@ -225,20 +236,20 @@ automatically start Privoxy in the boot process.
in the same directory as you installed Privoxy in. We do not
use the registry of Windows.
-
+
-Solaris, NetBSD, FreeBSD, HP-UX
+Solaris, NetBSD, FreeBSD, HP-UX
Create a new directory, cd to it, then unzip and
untar the archive. For the most part, you'll have to figure out where
things go. FIXME.
-
+
-OS/2
+OS/2
First, make sure that no previous installations of
@@ -258,10 +269,10 @@ automatically start Privoxy in the boot process.
The directory you choose to install Privoxy
into will contain all of the configuration files.
-
+
-Max OSX
+Max OSX
Unzip the downloaded package (you can either double-click on the file
in the finder, or on the desktop if you downloaded it there). Then,
@@ -273,10 +284,10 @@ automatically start Privoxy in the boot process.
automatically on system bring-up via
/System/Library/StartupItems/Privoxy.
-
+
-AmigaOS
+AmigaOS
Copy and then unpack the lha archive to a suitable location.
All necessary files will be installed into Privoxy
@@ -292,7 +303,33 @@ automatically start Privoxy in the boot process.
TCP/IP stack (just ignore the harmless warning your TCP/IP stack may display that
Privoxy is still running).
+
+
+
+
+Building from Source
+
+
+ The most convenient way to obtain the Privoxy sources
+ is to download the source tarball from our project
+ page.
+
+
+
+ If you like to live on the bleeding edge and are not afraid of using
+ possibly unstable development versions, you can check out the up-to-the-minute
+ version directly from the
+ CVS repository or simply download the nightly CVS
+ tarball.
+
+
+
+&buildsource;
+
+
+
@@ -301,19 +338,22 @@ automatically start Privoxy in the boot process.
Note to Upgraders
- There are very significant changes from older versions of
- Junkbuster to the current
- Privoxy. Configuration is substantially
- changed. Junkbuster 2.0.x and earlier
- configuration files will not migrate. The functionality of the old
- blockfile, cookiefile and
- imagelist, are now combined into the
- actions files
.
+ There are very significant changes from earlier
+ Junkbuster versions to the current
+ Privoxy. The number, names, syntax, and
+ purposes of configuration files have substantially changed.
+ Junkbuster 2.0.x configuration
+ files will not migrate, Junkbuster 2.9.x
+ and Privoxy configurations will need to be
+ ported. The functionalities of the old blockfile,
+ cookiefile and imagelist
+ are now combined into the actions
+ files
.
default.action, is the main actions file. Local
exceptions should best be put into user.action.
- A filter file
(typically
+ A filter file
(typically
default.filter) is new as of Privoxy
2.9.x, and provides some of the new sophistication (explained
below). config is much the same as before.
@@ -357,10 +397,10 @@ automatically start Privoxy in the boot process.
- 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 Privoxy
- configuration is in the actions
- files. It is strongly recommended to become familiar with the new
+ configuration are the actions
+ files. It is strongly recommended to become familiar with the new
actions concept below, before modifying these files. Locally defined rules
should go into user.action.
@@ -385,38 +425,352 @@ automatically start Privoxy in the boot process.
- Install Privoxy. See the section Installing.
-
+ If upgrading, from versions before 2.9.16, please back up any configuration
+ files. See the Note to Upgraders Section.
+
+
+
+
+
+ Install Privoxy. See the Installation Section below for platform specific
+ information.
+
- Start Privoxy. See the section Starting Privoxy.
+ Advanced users and those who want to offer Privoxy
+ service to more than just their local machine should check the main config file, especially the security-relevant options. These are
+ off by default.
- Change your browser's configuration to use the proxy localhost on port
- 8118. See the section Starting Privoxy.
+ Start Privoxy, if the installation program has
+ not done this already (may vary according to platform). See the section
+ Starting Privoxy.
-
+
- Enjoy surfing with enhanced comfort and privacy. Please see the section
- Contacting the Developers on how to report
- bugs or problems with websites or to get help. You may want to change the
- file user.action to further tweak your new browsing
- experience.
+ Set your browser to use Privoxy as HTTP and
+ HTTPS proxy by setting the proxy configuration for address of
+ 127.0.0.1 and port 8118.
+ (Junkbuster and earlier versions of
+ Privoxy used port 8000.) See the section Starting Privoxy below
+ for more details on this.
+
+
+ Flush your browser's disk and memory caches, to remove any cached ad images.
+
+
+
+
+
+ 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.
+
+
+ See the Configuration section for more
+ configuration options, and how to customize your installation.
+ next section for a quick
+ introduction to how Privoxy blocks ads and
+ banners.]]>
+
+
+
+
+
+ If you experience ads that slipped through, innocent images that are
+ blocked, or otherwise feel the need to fine-tune
+ Privoxy's behaviour, take a look at the actions files. As a quick start, you might
+ find the richly commented examples
+ helpful. You can also view and edit the actions files through the web-based user interface. The
+ Appendix Anatomy of an
+ Action
has hints how to debug actions that
+ misbehave
.
+
+
+
+
+
+ Please see the section Contacting the
+ Developers on how to report bugs or problems with websites or to get
+ help.
+
+
+
+
+
+ Now enjoy surfing with enhanced comfort and privacy!
+
+
+
+
+
+
+
+
+
+
+Quickstart to Ad Blocking
+
+
+ Ad blocking is but one of Privoxy's
+ array of features. Many of these features are for the technically minded advanced
+ user. But, ad and banner blocking is surely common ground for everybody.
+
+
+ This section will provide a quick summary of ad blocking so
+ you can get up to speed quickly without having to read the more extensive
+ information provided below, though this is highly recommended.
+
+
+ First a bit of a warning ... blocking ads is much like blocking SPAM: the
+ more aggressive you are about it, the more likely you are to block
+ things that were not intended. So there is a trade off here. If you want
+ extreme ad free browsing, be prepared to deal with more
+ problem
sites, and to spend more time adjusting the
+ configuration to solve these unintended consequences. In short, there is
+ not an easy way to eliminate all ads. Either take
+ the easy way and settle for most ads blocked with the
+ default configuration, or jump in and tweak it for your personal surfing
+ habits and preferences.
+
+
+ Secondly, a brief explanation of Privoxy's
+ actions
. Actions
in this context, are
+ the directives we use to tell Privoxy to perform
+ some task relating to HTTP transactions (i.e. web browsing). We tell
+ Privoxy to take some action
. Each
+ action has a unique name and function. While there are many potential
+ actions in Privoxy's
+ arsenal, only a few are used for ad blocking. Actions, and action
+ configuration files, are explained in depth below.
+
+
+ Actions are specified in Privoxy's configuration,
+ followed by one or more URLs to which the action should apply. URLs
+ can actually be URL type patterns that use
+ wildcards so they can apply potentially to a range of similar URLs. The
+ actions, together with the URL patterns are called a section.
+
+
+ When you connect to a website, the full URL will either match one or more
+ of the sections as defined in Privoxy's configuration,
+ or not. If so, then Privoxy will perform the
+ respective actions. If not, then nothing special happens. Futhermore, web
+ pages may contain embedded, secondary URLs that your web browser will
+ use to load additional components of the page, as it parses the
+ original page's HTML content. An ad image for instance, is just an URL
+ embedded in the page somewhere. The image itself may be on the same server,
+ or a server somewhere else on the Internet. Complex web pages will have many
+ such embedded URLs.
+
+
+
+ The actions we need to know about for ad blocking are: block, handle-as-image, and
+ set-image-blocker:
+
+
+
+
+
+
+
+ block - this action stops
+ any contact between your browser and any URL patterns that match this
+ action's configuration. It can be used for blocking ads, but also anything
+ that is determined to be unwanted. By itself, it simply stops any
+ communication with the remote server and sends Privoxy's
+ own built-in BLOCKED page instead to let you now what has happened.
+
+
+
+
+
+ handle-as-image -
+ tells Privoxy to treat this URL as an image.
+ Privoxy's default configuration already does this
+ for all common image types (e.g. GIF), but there are many situations where this
+ is not so easy to determine. So we'll force it in these cases. This is particularly
+ important for ad blocking, since only if we know that it's an image of
+ some kind, can we replace it with an image of our chosing, instead of the
+ Privoxy BLOCKED page (which would only result in
+ a broken image
icon). There are some limitations to this
+ though. For instance, you can't just brute-force an image substituion for
+ an entire HTML page in most situations.
+
+
+
+
+
+ set-image-blocker - tells
+ Privoxy what to display in place of an ad image that
+ has hit a block rule. For this to come into play, the URL must match a
+ block action somewhere in the
+ configuration, and, it must also match an
+ handle-as-image action.
+
+
+ The configuration options on what to display instead of the ad are:
+
+
+
+ pattern - a checkboard pattern, so that an ad
+ replacement is obvious. This is the default.
+
+
+
+
+ blank - A very small empty GIF image is displayed.
+ This is the so-called invisible
configuration option.
+
+
+
+
+ http://<URL> - A redirect to any image anywhere
+ of the user's choosing (advanced usage).
+
+
+
+
+
+
+
+
+ The quickest way to adjust any of these settings is with your browser through
+ the special Privoxy editor at http://config.privoxy.org/show-status
+ (shortcut: http://p.p/show-status). This
+ is an internal page, and does not require Internet access. Select the
+ appropriate actions
file, and click
+ Edit
. It is best to put personal or
+ local preferences in user.action since this is not
+ meant to be overwritten during upgrades, and will over-ride the settings in
+ other files. Here you can insert new actions
, and URLs for ad
+ blocking or other purposes, and make other adjustments to the configuration.
+ Privoxy will detect these changes automatically.
+
+
+
+ A quick and simple step by step example:
+
+
+
+
+
+
+
+ Right click on the ad image to be blocked, then select
+ Copy Link Location
from the
+ pop-up menu.
+
+
+
+
+ Set your browser to
+ http://config.privoxy.org/show-status
+
+
+
+
+ Find user.action in the top section, and click
+ on Edit
:
+
+
+
+
+
+
+
+
+
+
+ You should have a section with only
+ block listed under
+ Actions:
.
+ If not, click a Insert new section below
+ button, and in the new section that just appeared, click the
+ Edit button right under the word Actions:
.
+ This will bring up a list of all actions. Find
+ block near the top, and click
+ in the Enabled
column, then Submit
+ just below the list.
+
+
+
+
+ Now, in the block actions section,
+ click the Add
button, and paste the URL the
+ browser got from Copy Link Location
.
+ Remove the http:// at the beginning of the URL. Then, click
+ Submit
(or
+ OK
if in a pop-up window).
+
+
+
+
+ Now go back to the original page, and press SHIFT-Reload
+ (or flush all browser caches). The image should be gone now.
+
+
+
+
+ This is a very crude and simple example. There might be good reasons to use a
+ wildcard pattern match to include potentially similar images from the same
+ site. For a more extensive explanation of patterns
, and
+ the entire actions concept, see the Actions
+ section.
+
+
+
+ For advanced users who want to hand edit their config files, you might want
+ to now go to the Actions Files Tutorial.
+ The ideas explained thererin also apply to the web-based editor.
+
+
+
+
+
+
+
Starting Privoxy
@@ -424,18 +778,63 @@ automatically start Privoxy in the boot process.
Before launching Privoxy for the first time, you
will want to configure your browser(s) to use
Privoxy 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!
+ 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!
+
+
+
+
+
With Netscape (and
- Mozilla), this can be set under Edit
- -> Preferences -> Advanced -> Proxies -> HTTP Proxy.
- For Internet Explorer: Tools ->
- Internet Properties -> Connections -> LAN Setting. Then,
- check Use Proxy
and fill in the appropriate info (Address:
- localhost, Port: 8118). Include if HTTPS proxy support too.
+ Mozilla), this can be set under:
+
+
+
+
+
+ Edit
+ |_
+ Preferences
+ |_
+ Advanced
+ |_
+ Proxies
+ |_
+ HTTP Proxy
+
+
+
+ For Internet Explorer:
+
+
+
+
+
+ Tools
+ |_
+ Internet Properties
+ |_
+ Connections
+ |_
+ LAN Settings
+
+
+
+ Then, check Use Proxy
and fill in the appropriate info
+ (Address: 127.0.0.1, Port: 8118). Include HTTPS (SSL), if you want HTTPS
+ proxy support too.
@@ -453,12 +852,12 @@ automatically start Privoxy in the boot process.
directory. Except on Win32 where it will try config.txt.
-
-RedHat and Debian
+
+RedHat and Conectiva
-We use a script. Note that RedHat does not start Privoxy upon booting per
-default. It will use the file /etc/privoxy/config as its
-main configuration file. FIXME: Debian??
+ We use a script. Note that RedHat does not start Privoxy upon booting per
+ default. It will use the file /etc/privoxy/config as
+ its main configuration file.
@@ -467,6 +866,21 @@ main configuration file. FIXME: Debian??
+
+Debian
+
+ We use a script. Note that Debian starts Privoxy upon booting per
+ default. It will use the file
+ /etc/privoxy/config as its main configuration
+ file.
+
+
+
+ # /etc/init.d/privoxy start
+
+
+
+
SuSE
@@ -734,7 +1148,7 @@ must find a better place for this paragraph
- Privoxy Menu
+ Privoxy Menu
@@ -759,8 +1173,8 @@ must find a better place for this paragraph
This should be self-explanatory. Note the first item leads to an editor for the
- actions list
, which is where the ad, banner, cookie,
- and URL blocking magic is configured as well as other advanced features of
+ actions files, which is where the ad, banner,
+ cookie, and URL blocking magic is configured as well as other advanced features of
Privoxy. This is an easy way to adjust various
aspects of Privoxy configuration. The actions
file, and other configuration files, are explained in detail below.
@@ -771,7 +1185,8 @@ must find a better place for this paragraph
have problems with your current actions and filters. You can in fact use
it as a test to see whether it is Privoxy
causing the problem or not. Privoxy continues
- to run as a proxy in this case, but all filtering is disabled. There
+ to run as a proxy in this case, but all manipulation is disabled, i.e.
+ Privoxy acts like a normal forwarding proxy. There
is even a toggle Bookmarklet offered, so
that you can toggle Privoxy with one click from
your browser.
@@ -808,7 +1223,7 @@ must find a better place for this paragraph
- The main configuration file is named config
+ The main configuration file is named config
on Linux, Unix, BSD, OS/2, and AmigaOS and config.txt
on Windows. This is a required file.
@@ -816,25 +1231,29 @@ must find a better place for this paragraph
- default.action (the main actions file) is used to define
- the default settings for various actions
relating to images, banners,
- pop-ups, access restrictions, banners and cookies.
+ default.action (the main actions file)
+ is used to define which actions
relating to banner-blocking, images, pop-ups,
+ content modification, cookie handling etc should be applied by default. It also defines many
+ exceptions (both positive and negative) from this default set of actions that enable
+ Privoxy to selectively eliminate the junk, and only the junk, on
+ as many websites as possible.
Multiple actions files may be defined in config. These
are processed in the order they are defined. Local customizations and locally
- preferred exceptions to the default policies as defined in
- default.action are probably best applied in
- user.action, which should be preserved across
- upgrades. standard.action is also included. This is mostly
- for Privoxy's internal use.
+ preferred exceptions to the default policies as defined in
+ default.action (which you will most probably want
+ to define sooner or later) are probably best applied in
+ user.action, where you can preserve them across
+ upgrades. standard.action is for
+ Privoxy's internal use.
There is also a web based editor that can be accessed from
http://config.privoxy.org/show-status/
+ url="http://config.privoxy.org/show-status">http://config.privoxy.org/show-status
(Shortcut: http://p.p/show-status/) for the
+ url="http://p.p/show-status">http://p.p/show-status) for the
various actions files.
@@ -854,7 +1273,7 @@ must find a better place for this paragraph
All files use the #
character to denote a
- comment (the rest of the line will be ignored) angd understand line continuation
+ comment (the rest of the line will be ignored) and understand line continuation
through placing a backslash ("\") as the very last character
in a line. If the # is preceded by a backslash, it looses
its special function. Placing a # in front of an otherwise
@@ -909,8 +1328,7 @@ must find a better place for this paragraph
- confdir /etc/privoxy
-
+ confdir /etc/privoxy
@@ -952,117 +1370,62 @@ must find a better place for this paragraph
be modified, such as log files.
-user-manual
+confdir
+
Specifies:
-
- Location of the Privoxy User Manual.
-
+ The directory where the other configuration files are located
Type of value:
- A fully qualified URI
+ Path name
Default value:
- http://www.privoxy.org/user-manual/
+ /etc/privoxy (Unix) or Privoxy installation dir (Windows)
Effect if unset:
-
- The default will be used.
-
+ Mandatory
Notes:
- The User Manual is used for help hints from some of the internal CGI pages.
- It is normally packaged with the binary distributions, and would make more
- sense to have this pointed at a locally installed copy.
-
-
- A more useful example (Unix):
+ No trailing /
, please
-
- user-manual file:///usr/share/doc/privoxy-&p-version;/user-manual/
-
-
- If this option is defined, it must come first! It is needed before the rest of
- config is read.
+ When development goes modular and multi-user, the blocker, filter, and
+ per-user config will be stored in subdirectories of confdir
.
+ For now, the configuration directory structure is flat, except for
+ confdir/templates, where the HTML templates for CGI
+ output reside (e.g. Privoxy's 404 error page).
-
-confdir
+
+logdir
Specifies:
- The directory where the other configuration files are located
-
-
-
- Type of value:
-
- Path name
-
-
-
- Default value:
-
- /etc/privoxy (Unix) or Privoxy installation dir (Windows)
-
-
-
- Effect if unset:
-
- Mandatory
-
-
-
- Notes:
-
-
- No trailing /
, please
-
-
- When development goes modular and multi-user, the blocker, filter, and
- per-user config will be stored in subdirectories of confdir
.
- For now, the configuration directory structure is flat, except for
- confdir/templates, where the HTML templates for CGI
- output reside (e.g. Privoxy's 404 error page).
-
-
-
-
-
-
-
-logdir
-
-
-
- Specifies:
-
-
- The directory where all logging takes place (i.e. where logfile and
- jarfile are located)
-
+
+ The directory where all logging takes place (i.e. where logfile and
+ jarfile are located)
+
@@ -1106,22 +1469,22 @@ actionsfile
Specifies:
- The actions file(s) to use
+ The actions file(s) to use
Type of value:
- File name, relative to confdir
+ File name, relative to confdir, without the .action suffix
- Default value:
+ Default values:
- standard # Internal purposes, recommended not editing
+ standard # Internal purposes, no editing recommended
default # Main actions file
@@ -1170,7 +1533,7 @@ actionsfile
Specifies:
- The filter file to use
+ The filter file to use
@@ -1191,8 +1554,8 @@ actionsfile
No textual content filtering takes place, i.e. all
- +filter{name}
- actions in the actions files are turned off
+ +filter{name}
+ actions in the actions files are turned neutral.
@@ -1200,13 +1563,25 @@ actionsfile
Notes:
- The default.filter
file contains content modification rules
- that use regular expressions
. These rules permit powerful
- changes on the content of Web pages, e.g., you could disable your favorite
+ The filter file contains content modification
+ rules that use regular expressions. 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 Microsoft
with MicroSuck
wherever
it appears on a Web page.
+
+ The
+ +filter{name}
+ actions rely on the relevant filter (name)
+ to be defined in the filter file!
+
+
+ A pre-defined filter file called default.filter that contains
+ a bunch of handy filters for common problems is included in the distribution.
+ See the section on the filter
+ action for a list.
+
@@ -1372,7 +1747,6 @@ actionsfile
-
@@ -1386,9 +1760,75 @@ actionsfile
If you intend to operate Privoxy 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.
+
+
+user-manual
+
+
+ Specifies:
+
+
+ Location of the Privoxy User Manual.
+
+
+
+
+ Type of value:
+
+ A fully qualified URI
+
+
+
+ Default value:
+
+ Unset
+
+
+
+ Effect if unset:
+
+
+ http://www.privoxy.org/version/user-manual/
+ will be used, where version is the Privoxy version.
+
+
+
+
+ Notes:
+
+
+ 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 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.
+
+
+ Examples:
+
+
+ Unix, in local filesystem:
+
+
+ user-manual file:///usr/share/doc/privoxy-&p-version;/user-manual/
+
+
+ Any platform, on local webserver (called local-webserver
):
+
+
+ user-manual http://local-webserver/privoxy-user-manual/
+
+
+
+ If set, this option should be the first option in the config file, because
+ it is used while the config file is being read.
+
+
+
+
+
trust-info-url
@@ -1426,7 +1866,7 @@ actionsfile
The value of this option only matters if the experimental trust mechanism has been
- activated. (See trustfile above.)
+ activated. (See trustfile above.)
If you use the trust mechanism, it is a good idea to write up some on-line
@@ -1556,7 +1996,8 @@ actionsfile
Specifies:
- Key values that determine what information gets logged.
+ Key values that determine what information gets logged to the
+ logfile.
@@ -1706,14 +2147,14 @@ actionsfile
Default value:
- localhost:8118
+ 127.0.0.1:8118
Effect if unset:
- 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 Privoxy on the same machine as
their browser.
@@ -1733,8 +2174,16 @@ actionsfile
If you leave out the IP address, Privoxy will
bind to all interfaces (addresses) on your machine and may become reachable
- from the Internet. In that case, consider using access control lists (ACL's)
- (see ACLs
below), or a firewall.
+ from the Internet. In that case, consider using access control lists (ACL's, see below), and/or
+ a firewall.
+
+
+ If you open Privoxy to untrusted users, you will
+ also want to turn off the enable-edit-actions and
+ enable-remote-toggle
+ options!
@@ -1794,10 +2243,11 @@ actionsfile
If set to 0, Privoxy will start in
toggled off
mode, i.e. behave like a normal, content-neutral
- proxy. See enable-remote-toggle
- below. This is not really useful anymore, since toggling is much easier
- via the web
- interface than via editing the conf file.
+ proxy where all ad blocking, filtering, etc are disabled. See
+ enable-remote-toggle below. This is not really useful
+ anymore, since toggling is much easier via the web interface than via
+ editing the conf file.
The windows version will only display the toggle icon in the system tray
@@ -1919,8 +2369,8 @@ actionsfile
ACLs: permit-access and deny-access
-
-
+
+
@@ -1969,8 +2419,10 @@ ACLs: permit-access and deny-access
Access controls are included at the request of ISPs and systems
administrators, and are not usually needed by individual users.
For a typical home user, it will normally suffice to ensure that
- Privoxy only listens on the localhost or internal (home)
- network address by means of the listen-address option.
+ Privoxy only listens on the localhost
+ (127.0.0.1) or internal (home) network address by means of the
+ listen-address
+ option.
Please see the warnings in the FAQ that this proxy is not intended to be a substitute
@@ -2571,7 +3023,7 @@ forward-socks4 and forward-socks4a
The actions files are used to define what actions
- Privoxy takes for which URLs, and thus determines
+ Privoxy takes for which URLs, and thus determine
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 Privoxy (as of
@@ -2580,14 +3032,6 @@ forward-socks4 and forward-socks4a
-
-
- standard.action - is used by the web based editor,
- to set various pre-defined sets of rules for the default actions section
- in default.action. These have increasing levels of
- aggressiveness. It is not recommend to edit this file.
-
-
default.action - is the primary action file
@@ -2607,6 +3051,16 @@ forward-socks4 and forward-socks4a
thing should go here. This file will not be upgraded.
+
+
+ standard.action - is used by the web based editor,
+ to set various pre-defined sets of rules for the default actions section
+ in default.action. These have increasing levels of
+ aggressiveness and have no influence on your browsing unless
+ you select them explicitly in the editor. It is not recommend
+ to edit this file.
+
+
@@ -2618,11 +3072,18 @@ forward-socks4 and forward-socks4a
- An actions file typically has sections. Near the top, aliases
are
- optionally defined (discussed below), then the default set of rules
- which will apply universally to all sites and pages. And then below that,
- exceptions to the defined universal policies.
+ An actions file typically has multiple sections. If you want to use
+ aliases
in an actions file, you have to place the (optional)
+ alias section at the top of that file.
+ Then comes the default set of rules which will apply universally to all
+ sites and pages (be very careful with using such a
+ universal set in user.action or any other actions file after
+ default.action, because it will override the result
+ from consulting any previous file). And then below that,
+ exceptions to the defined universal policies. You can regard
+ user.action as an appendix to default.action,
+ with the advantage that is a separate file, which makes preserving your
+ personal settings across Privoxy upgrades easier.
@@ -2630,7 +3091,8 @@ forward-socks4 and forward-socks4a
just some obnoxious URL that you would rather not see. Cookies can be accepted
or rejected, or accepted only during the current browser session (i.e. not
written to disk), content can be modified, JavaScripts tamed, user-tracking
- fooled, and much more. See below for a complete list of actions.
+ fooled, and much more. See below for a complete list
+ of actions.
@@ -2661,43 +3123,49 @@ forward-socks4 and forward-socks4a
How to Edit
- The easiest way to edit the actions
files is with a browser by
+ The easiest way to edit the actions files is with a browser by
using our browser-based editor, which can be reached from http://config.privoxy.org/show-status.
+ The editor allows both fine-grained control over every single feature on a
+ per-URL basis, and easy choosing from wholesale sets of defaults like
+ Cautious
, Medium
or Advanced
.
If you prefer plain text editing to GUIs, you can of course also directly edit the
- the actions files.
+ the actions files. Look at default.action which is richly
+ commented.
-
+
How Actions are Applied to URLs
Actions files are divided into sections. There are special sections,
- like the alias
sections which will be discussed later. For now
- let's concentrate on regular sections: They have a heading line (often split
- up to multiple lines for readability) which consist of a list of actions,
- separated by whitespace and enclosed in curly braces. Below that, there
- is a list of URL patterns, each on a separate line.
+ like the alias
sections which will
+ be discussed later. For now let's concentrate on regular sections: They have a
+ heading line (often split up to multiple lines for readability) which consist
+ of a list of actions, separated by whitespace and enclosed in curly braces.
+ Below that, there is a list of URL patterns, each on a separate line.
To determine which actions apply to a request, the URL of the request is
- compared to all patterns in this file. Every time it matches, the list of
+ compared to all patterns in each action file file. Every time it matches, the list of
applicable actions for the URL is incrementally updated, using the heading
of the section in which the pattern is located. If multiple matches for
the same URL set the same action differently, the last match wins. If not,
- the effects are aggregated (e.g. a URL might match both the
- +handle-as-image
- and +block
actions).
-
+ the effects are aggregated. E.g. a URL might match a regular section with
+ a heading line of {
+ +handle-as-image },
+ then later another one with just {
+ +block }, resulting
+ in both actions to apply.
- You can trace this process by visiting http://config.privoxy.org/show-url-info.
@@ -2708,7 +3176,7 @@ forward-socks4 and forward-socks4a
-
+
Patterns
Generally, a pattern has the form <domain>/<path>,
@@ -2882,12 +3350,10 @@ forward-socks4 and forward-socks4a
- Please also note that matching in the path is case
- INSENSITIVE by default, but you can switch to case
- sensitive at any point in the pattern by using the
- (?-i)
switch:
- www.example.com/(?-i)PaTtErN.* will match only
- documents whose path starts with PaTtErN in
+ Please also note that matching in the path is CASE INSENSITIVE
+ by default, but you can switch to case sensitive at any point in the pattern by using the
+ (?-i)
switch: www.example.com/(?-i)PaTtErN.* will match
+ only documents whose path starts with PaTtErN in
exactly this capitalization.
@@ -2905,73 +3371,84 @@ forward-socks4 and forward-socks4a
All actions are disabled by default, until they are explicitly enabled
somewhere in an actions file. Actions are turned on if preceded with a
+
, and turned off if preceded with a -
. So a
- +action
means do that action
, e.g.
- +block
means please block the following URL
- patterns
.
+ +action means do that action
, e.g.
+ +block means please block URLs that match the
+ following patterns
, and -block means don't
+ block URLs that match the following patterns, even if +block
+ previously applied.
+
+
+
+
+ Again, actions are invoked by placing them on a line, enclosed in curly braces and
+ separated by whitespace, like in
+ {+some-action -some-other-action{some-parameter}},
+ followed by a list of URL patterns, one per line, to which they apply.
+ Together, the actions line and the following pattern lines make up a section
+ of the actions file.
- Actions are invoked by enclosing the action name in curly braces (e.g.
- {+some_action}), followed by a list of URLs (or patterns that match URLs) to
- which the action applies. There are three classes of actions:
+ There are three classes of actions:
-
- Boolean, i.e the action can only be on
or
- off
. Examples:
-
+ Boolean, i.e the action can only be enabled
or
+ disabled
. Syntax:
+
-
-
-
- {+name} # enable this action
- {-name} # disable this action
-
-
-
+
+ +name # enable action name
+ -name # disable action name
+
+
+ Example: +block
- Parameterized, e.g. +/-hide-user-agent{ Mozilla 1.0 }
,
- where some value is required in order to enable this type of action.
- Examples:
+ Parameterized, where some value is required in order to enable this type of action.
+ Syntax:
+
+
+
+ +name{param} # enable action and set parameter to param,
+ # overwriting parameter from previous match if necessary
+ -name # disable action. The parameter can be omitted
-
-
-
- {+name{param}} # enable action and set parameter to param
- {-name} # disable action (parameter
) can be omitted
-
-
-
+ Note that if the URL matches multiple positive forms of a parameterized action,
+ the last match wins, i.e. the params from earlier matches are simply ignored.
+
+
+ Example: +hide-user-agent{ Mozilla 1.0 }
-
- Multi-value, e.g. {+/-add-header{Name: value}}
or
- {+/-send-wafer{name=value}}
), where some value needs to be defined
- in addition to simply enabling the action. Examples:
+ Multi-value. These look exactly like parameterized actions,
+ but they behave differently: If the action applies multiple times to the
+ same URL, but with different parameters, all the parameters
+ from all matches are remembered. This is used for actions
+ that can be executed for the same request repeatedly, like adding multiple
+ headers, or filtering through multiple filters. Syntax:
-
-
-
- {+name{param=value}} # enable action and set param
to value
- {-name{param=value}} # remove the parameter param
completely
- {-name} # disable this action totally and remove param too
-
-
-
+
+ +name{param} # enable action and add param to the list of parameters
+ -name{param} # remove the parameter param from the list of parameters
+ # If it was the last one left, disable the action.
+ -name # disable this action completely and remove all parameters from the list
+
+
+ Examples: +add-header{X-Fun-Header: Some text} and
+ +filter{html-annoyances}
@@ -2994,12 +3471,12 @@ forward-socks4 and forward-socks4a
Actions files are processed in the order they are defined in
config (the default installation has three actions
files). It also quite possible for any given URL pattern to match more than
- one action!
+ one pattern and thus more than one set of actions!
- The list of valid Privoxy actions
are:
+ The list of valid Privoxy actions are:
@@ -3013,45 +3490,44 @@ forward-socks4 and forward-socks4a
-+block
+block
- Type:
-
+ Typical use:
- Boolean.
+ Block ads or other obnoxious content
- Typical uses:
+ Effect:
- Used to block a URL from reaching your browser. The URL may be
- anything, but is typically used to block ads or other obnoxious
- content.
+ 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 handle-as-image
+ and set-image-blocker actions.
- Possible values:
+ Type:
+
- N/A
+ Boolean.
-
+
- Example usage:
+ Parameter:
-
- {+block}
- .banners.example.com
- .ads.r.us
-
+ N/A
-
+
Notes:
- If a URL matches one of the blocked patterns, Privoxy
- will intercept the URL and display its special BLOCKED
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 BLOCKED
- page will appear without the red banner.
- Click here
- to view the default blocked HTML page (Privoxy must be running
- for this to work as intended!).
+ Privoxy sends a special BLOCKED
page
+ 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 BLOCKED
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 Privoxy
+ right now, you can take a look at the
+ BLOCKED
+ page.
-
- A very important exception is if the URL matches both
- +block
and +handle-as-image
,
- then it will be handled by
- +set-image-blocker
- (see below). It is important to understand this process, in order
- to understand how Privoxy is able to deal with
- ads and other objectionable content.
+ A very important exception occurs if both
+ block and handle-as-image,
+ apply to the same request: it will then be replaced by an image. If
+ set-image-blocker
+ (see below) also applies, the type of image will be determined by its parameter,
+ if not, the standard checkerboard pattern is sent.
+
+
+ It is important to understand this process, in order
+ to understand how Privoxy deals with
+ ads and other unwanted content.
- The +filter
- action can also perform some of the
- same functionality as +block
, but by virtue of very
- different programming techniques, and is most often used for different
- reasons.
+ The filter
+ action can perform a very similar task, by blocking
+ 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.
+
+ Example usage (section):
+
+
+ {+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
+
+
+
+
+
-
-
-+deanimate-gifs
+
+crunch-incoming-cookies
- Type:
-
+ Typical use:
- Parameterized.
+
+ Prevent the web server from setting any cookies on your system
+
- Typical uses:
+ Effect:
- To stop those annoying, distracting animated GIF images.
+ Deletes any Set-Cookie:
HTTP headers from server replies.
- Possible values:
+ Type:
+
+
+ Boolean.
+
+
+
+
+ Parameter:
- last
or first
+ N/A
- Example usage:
+ Notes:
-
- {+deanimate-gifs{last}}
- .example.com
-
+
+ This action is only concerned with incoming cookies. For
+ outgoing cookies, use
+ crunch-outgoing-cookies.
+ Use both to disable cookies completely.
+
+
+ It makes no sense at all to use this action in conjunction
+ with the session-cookies-only action,
+ since it would prevent the session cookies from being set.
+
- Notes:
+ Example usage:
- 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 first
is given, the first frame of the animation
- is used as the replacement. If last
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).
+ +crunch-incoming-cookies
-
+
-
-+downgrade-http-version
+
+crunch-outgoing-cookies
- Type:
-
+ Typical use:
- Boolean.
+
+ Prevent the web server from reading any cookies from your system
+
- Typical uses:
+ Effect:
- +downgrade-http-version
will downgrade HTTP/1.1 client requests to
- HTTP/1.0 and downgrade the responses as well.
+ Deletes any Cookie:
HTTP headers from client requests.
- Possible values:
+ Type:
+
+
+ Boolean.
+
+
+
+
+ Parameter:
N/A
@@ -3240,23 +3756,27 @@ forward-socks4 and forward-socks4a
- Example usage:
+ Notes:
-
- {+downgrade-http-version}
- .example.com
-
+
+ This action is only concerned with outgoing cookies. For
+ incoming cookies, use
+ crunch-incoming-cookies.
+ Use both to disable cookies completely.
+
+
+ It makes no sense at all to use this action in conjunction
+ with the session-cookies-only action,
+ since it would prevent the session cookies from being read.
+
- Notes:
+ Example usage:
- Use this action for servers that use HTTP/1.1 protocol features that
- Privoxy 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.
+ +crunch-outgoing-cookies
@@ -3264,698 +3784,776 @@ forward-socks4 and forward-socks4a
+
-
-+fast-redirects
+
+deanimate-gifs
- Type:
-
+ Typical use:
- Boolean.
+ Stop those annoying, distracting animated GIF images.
- Typical uses:
+ Effect:
- The +fast-redirects
action enables interception of
- redirect
requests from one server to another, which
- are used to track users.Privoxy 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).
+ De-animate GIF animations, i.e. reduce them to their first or last image.
- Possible values:
+ Type:
+
+
+ Parameterized.
+
+
+
+
+ Parameter:
- N/A
+ last
or first
-
- Example usage:
-
-
- {+fast-redirects}
- .example.com
-
-
-
-
Notes:
-
- 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
- parameter, which will then redirect you to the final target. URLs
- resulting from this scheme typically look like:
- http://some.place/some_script?http://some.where-else.
-
- Sometimes, there are even multiple consecutive redirects encoded in the
- URL. These redirections via scripts make your web browsing more traceable,
- since the server from which you follow such a link can see where you go
- to. Apart from that, valuable bandwidth and time is wasted, while your
- browser ask the server for one redirect after the other. Plus, it feeds
- the advertisers.
+ This will also shrink the images considerably (in bytes, not pixels!). If
+ the option first
is given, the first frame of the animation
+ is used as the replacement. If last
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).
- This is a normally on
feature, and often requires exceptions
- for sites that are sensitive to defeating this mechanism.
+ 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.
+
+ Example usage:
+
+
+ +deanimate-gifs{last}
+
+
+
-
-
-+filter
+
+downgrade-http-version
- Type:
-
+ Typical use:
- Parameterized.
+ Work around (very rare) problems with HTTP/1.1
- Typical uses:
+ Effect:
- Apply page filtering as defined by named sections of the
- default.filter file to the specified site(s).
- Filtering
can be any modification of the raw
- page content, including re-writing or deletion of content.
+ Downgrades HTTP/1.1 client requests and server replies to HTTP/1.0.
- Possible values:
+ Type:
+
+
+ Boolean.
+
+
+
+
+ Parameter:
- +filter
must include the name of one of the section identifiers
- from default.filter (or whatever
- filterfile is specified in config).
+ N/A
-
- Example usage (from the current default.filter):
+
+ Notes:
-
-
-
- +filter{html-annoyances}: Get rid of particularly annoying HTML abuse.
-
-
-
-
-
- +filter{js-annoyances}: Get rid of particularly annoying JavaScript abuse
-
-
-
-
-
- +filter{content-cookies}: Kill cookies that come in the HTML or JS content
-
-
-
-
-
-
-
-
-
- +filter{frameset-borders}: Give frames a border and make them resizable
-
-
-
-
-
- +filter{webbugs}: Squish WebBugs (1x1 invisible GIFs used for user tracking)
-
-
-
-
-
- +filter{refresh-tags}: Kill automatic refresh tags (for dial-on-demand setups)
-
-
-
-
-
- +filter{fun}: Text replacements for subversive browsing fun!
-
-
-
-
-
- +filter{nimda}: Remove Nimda (virus) code.
-
-
-
-
-
- +filter{banners-by-size}: Kill banners by size (very efficient!)
-
-
-
-
-
- +filter{shockwave-flash}: Kill embedded Shockwave Flash objects
-
-
-
-
-
- +filter{crude-parental}: Kill all web pages that contain the words "sex" or "warez"
-
-
+
+ This is a left-over from the time when Privoxy
+ 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.
+
- Notes:
+ Example usage (section):
-
- This is potentially a very powerful feature! And requires a knowledge
- of regular expressions if you want to roll your own
.
- Filtering operates on a line by line basis throughout the entire page.
-
-
- 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.
-
-
- Filtering can achieve some of the effects as the
- +block
- 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 Privoxy
- does with a web page. So other most other actions are applied to the
- already filtered
page.
-
+
+ {+downgrade-http-version}
+problem-host.example.com
+
-
-
+
+
+
+Aliases
+
+ Custom actions
, known to Privoxy
+ as aliases
, 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,
+ =
,
+ {
and }
, but we strongly
+ recommend that you only use a
to z
,
+ 0
to 9
, +
, and -
.
+ Alias names are not case sensitive, and are not required to start with a
+ +
or -
sign, since they are merely textually
+ expanded.
+
+
+ Aliases can be used throughout the actions file, but they must be
+ defined in a special section at the top of the file!
+ 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.
+
+
+ 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
+ shop
, you can later change your policy on shops in
+ one place, and your changes will take effect everywhere
+ in the actions file where the shop
alias is used. Calling aliases
+ by their purpose also makes your actions files more readable.
+
+
+ Currently, there is one big drawback to using aliases, though:
+ Privoxy'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 Privoxy.
+
+
+
+ Now let's define some aliases...
+
+
+
+
+ # 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
+
+
+
+ ...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 /
pattern):
+
+
+
+
+ # 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
+
+
+
+ Aliases like shop
and fragile
are often used for
+ problem
sites that require some actions to be disabled
+ in order to function properly.
+
+
+
+
+
+Actions Files Tutorial
+
+ The above chapters have shown which actions files
+ there are and how they are organized, how actions are specified and applied
+ to URLs, how patterns work, and how to
+ define and use aliases. Now, let's look at an
+ example default.action and user.action
+ file and see how all these pieces come together:
+
+
+default.action
+
+
+Every config file should start with a short comment stating its purpose:
+
+
+
+ # Sample default.action file <developers@privoxy.org>
+
+
+Then, since this is the default.action file, the
+first section is a special section for internal use that you needn't
+change or worry about:
+
+
+
+
+##########################################################################
+# Settings -- Don't change! For internal Privoxy use ONLY.
+##########################################################################
+
+{{settings}}
+for-privoxy-version=3.0
+
+
+
+After that comes the (optional) alias section. We'll use the example
+section from the above chapter on aliases,
+that also explains why and how aliases are used:
+
+
+
+
+##########################################################################
+# 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
+
+
+
+ Now come the regular sections, i.e. sets of actions, accompanied
+ by URL patterns to which they apply. Remember all actions
+ are disabled when matching starts, so we have to explicitly
+ enable the ones we want.
+
+
+
+ The first regular section is probably the most important. It has only
+ one pattern, /
, but this pattern
+ matches all URLs. Therefore, the
+ set of actions used in this default
section will
+ be applied to all requests as a start. 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.
+
+
+
+ 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 +
+ preceding the action name enables the action, a -
disables!).
+ Also note how this long line has been made more readable by splitting it into
+ multiple lines with line continuation.
+
+
+
+
+##########################################################################
+# "Defaults" section:
+##########################################################################
+ { \
+ -add-header \
+ -block \
+ -crunch-incoming-cookies \
+ -crunch-outgoing-cookies \
+ +deanimate-gifs \
+ -downgrade-http-version \
+ +fast-redirects \
+ +filter{html-annoyances} \
+ +filter{js-annoyances} \
+ -filter{content-cookies} \
+ +filter{popups} \
+ +filter{webbugs} \
+ -filter{refresh-tags} \
+ -filter{fun} \
+ +filter{nimda} \
+ +filter{banners-by-size} \
+ -filter{shockwave-flash} \
+ -filter{crude-parental} \
+ -handle-as-image \
+ +hide-forwarded-for-headers \
+ +hide-from-header{block} \
+ +hide-referrer{forge} \
+ -hide-user-agent \
+ -kill-popups \
+ -limit-connect \
+ +prevent-compression \
+ -send-vanilla-wafer \
+ -send-wafer \
+ +session-cookies-only \
+ +set-image-blocker{pattern} \
+ }
+ / # forward slash will match *all* potential URL patterns.
+
+
+
+ The default behavior is now set. Note that some actions, like not hiding
+ the user agent, are part of a general policy
that applies
+ universally and won't get any exceptions defined later. Other choices,
+ like not blocking (which is understandably 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.
+
+
+
+ The first of our specialized sections is concerned with fragile
+ 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 fragile alias instead of stating the list
+ of actions explicitly:
+
+
+
+
+##########################################################################
+# 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
+
+
+
+ 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:
+
+
+
+
+# Shopping sites:
+#
+{ shop }
+.quietpc.com
+.worldpay.com # for quietpc.com
+.jungle.com
+.scan.co.uk
+
+
+
+ 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. Mozilla users, who
+ can turn on smart handling of unwanted pop-ups in their browsers, can
+ safely choose
+ -filter{popups} (and
+ -kill-popups) 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:
+
+
+
+
+# These sites require pop-ups too :(
+#
+{ -kill-popups -filter{popups} }
+.dabs.com
+.overclockers.co.uk
+.deutsche-bank-24.de
+
+
+
+ The fast-redirects
+ action, which we enabled per default above, breaks some sites. So disable
+ it for popular sites where we know it misbehaves:
+
+
+
+
+{ -fast-redirects }
+login.yahoo.com
+edit.*.yahoo.com
+.google.com
+.altavista.com/.*(like|url|link):http
+.altavista.com/trans.*urltext=http
+.nytimes.com
+
+
+
+ It is important that Privoxy knows which
+ URLs belong to images, so that if 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 and
+ information). We can mark any URL as an image with the handle-as-image action,
+ and marking all URLs that end in a known image file extension is a
+ good start:
+
+
+
+
+##########################################################################
+# Images:
+##########################################################################
+
+# Define which file types will be treated as images, in case they get
+# blocked further down this file:
+#
+{ +handle-as-image }
+/.*\.(gif|jpe?g|png|bmp|ico)$
+
+
+
+ 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 and
+ mark them as images in one go, with the help of our
+ block-as-image alias defined above. (We could of
+ course just as well use +block
+ +handle-as-image here.)
+ Remember that the type of the replacement image is chosen by the
+ set-image-blocker
+ action. Since all URLs have matched the default section with its
+ +set-image-blocker{pattern}
+ action before, it still applies and needn't be repeated:
+
+
+
+
+# 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
+
+
+
+ One of the most important jobs of Privoxy
+ is to block banners. A huge bunch of them are already blocked
+ by the filter{banners-by-size}
+ 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
+ block action to them.
+
+
+ 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:
+
+
+
+
+##########################################################################
+# Block these fine banners:
+##########################################################################
+{ +block }
+
+# 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
+
+
+
+ You wouldn't believe how many advertisers actually call their banner
+ servers ads.company.com, or call the directory
+ in which the banners are stored simply banners
. So the above
+ generic patterns are surprisingly effective.
+
+
+ But being very generic, they necessarily also catch URLs that we don't want
+ to block. The pattern .*ads. e.g. catches
+ nasty-ads.nasty-corp.com
as intended,
+ but also downloads.sourcefroge.net
or
+ adsl.some-provider.net.
So here come some
+ well-known exceptions to the +block
+ section above.
+
+
+ Note that these are exceptions to exceptions from the default! Consider the URL
+ downloads.sourcefroge.net
: Initially, all actions are deactivated,
+ so it wouldn't get blocked. Then comes the defaults section, which matches the
+ URL, but just deactivates the block
+ action once again. Then it matches .*ads., an exception to the
+ general non-blocking policy, and suddenly
+ +block applies. And now, it'll match
+ .*loads., where -block
+ applies, so (unless it matches again further down) it ends up
+ with no block action applying.
+
+
+
+
+##########################################################################
+# Save some innocent victims of the above generic block patterns:
+##########################################################################
+
+# By domain:
+#
+{ -block }
+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
+
+
+
+ Filtering source code can have nasty side effects,
+ so make an exception for our friends at sourceforge.net,
+ and all paths with cvs
in them. Note that
+ -filter
+ disables all filters in one fell swoop!
+
+
+
+
+# Don't filter code!
+#
+{ -filter }
+/.*cvs
+.sourceforge.net
+
+
+
+ The actual default.action is of course more
+ comprehensive, but we hope this example made clear how it works.
+
+
+
+
+user.action
+
+
+ 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 might 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 user.action, which is parsed after all other
+ actions files and hence has the last word, over-riding any previously
+ defined actions. user.action is also a
+ safe place for your personal settings, since
+ default.action is actively maintained by the
+ Privoxy developers and you'll probably want
+ to install updated versions from time to time.
+
+
+
+ So let's look at a few examples of things that one might typically do in
+ user.action:
+
+
+
+
+
+
+
+# My user.action file. <fred@foobar.com>
+
+
+
+ As aliases are local to the actions
+ file that they are defined in, you can't use the ones from
+ default.action, unless you repeat them here:
+
+
+
+
+# (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)
+
+
+
+
+ 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
+ mercy-for-cookies alias defined above does exactly
+ that, i.e. it disables crunching of cookies in any direction, and
+ processing of cookies to make them temporary.
+
+
+
+
+{ mercy-for-cookies }
+sunsolve.sun.com
+slashdot.org
+.yahoo.com
+.msdn.microsoft.com
+.redhat.com
+
+
+
+ Your bank needs popups and is allergic to some filter, but you don't
+ know which, so you disable them all:
+
+
+
+
+{ -filter -kill-popups }
+.your-home-banking-site.com
+
-
-
-Sample Actions Files
- Remember that the meaning of any of the above references is reversed by preceding
- the action with a -
, in place of the +
. 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 on
.
+ While browsing the web with Privoxy you
+ noticed some ads that sneaked through, but you were too lazy to
+ report them through our fine and easy feedback
+ system, so you have added them here:
- But, other actions that are turned on in the default section do
- typically require exceptions to be listed in the latter sections of
- one of our actions file. For instance, by default no URLs are
- blocked
(i.e. in the default definitions of
- default.action). We need exceptions to this in order to
- enable ad blocking in the lower sections. But we need to
- be very selective about what we do block. Thus, the default is off
- for blocking.
+
+{ +block }
+www.a-popular-site.com/some/unobvious/path
+another.popular.site.net/more/junk/here/
- Below is a liberally commented sample default.action 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
- user.action with similar examples.
+ Note that, assuming the banners in the above example have regular image
+ extensions (most do),
+ +handle-as-image
+ need not be specified, since all URLs ending in these extensions will
+ already have been tagged as images in the relevant section of
+ default.action by now.
-
-
-
-# Sample default.action file <developers@privoxy.org>
-
-# Settings -- Don't change! For internal Privoxy use ONLY.
-{{settings}}
-for-privoxy-version=3.0
-
-
-##########################################################################
-# Aliases must be defined *before* they are used. These are
-# easier to remember, and can combine several actions into one. Once
-# defined they can be used just like any built-in action -- but within
-# this file only! Aliases do not require a + or - sign.
-##########################################################################
-
-# Some useful aliases.
-# Alias to turn off cookie handling, ie allow all cookies unmolested.
- -prevent-cookies = -prevent-setting-cookies -prevent-reading-cookies \
- -session-cookies-only
-
-# Alias to both block and treat as if an image for ad blocking
-# purposes.
- +imageblock = +block +handle-as-image
-
-# Fragile sites should have the minimum changes:
- fragile = -block -deanimate-gifs -fast-redirects -filter -hide-referer \
- -prevent-cookies -kill-popups
+ 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 feedback, so
+ you just used the fragile alias on the site, and
+ -- whoa! -- it worked:
+
-# Shops should be allowed to set persistent cookies
- shop = -filter -prevent-cookies -session-cookies-only
+
+
+{ fragile }
+.forbes.com
+
+
+ You like the fun
text replacements in default.filter,
+ 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:
+
-##########################################################################
-# Begin default action settings. Anything in this section will match
-# all URLs -- UNLESS we have exceptions that also match, defined below this
-# section. We will show all potential actions here whether they are on
-# or off. We could omit any disabled action if we wanted, since all
-# actions are 'off' by default anyway. Shown for completeness only.
-# Actions are enabled if preceded by a '+', otherwise they are disabled
-# (unless an alias has been defined without this).
-##########################################################################
- { \
- -add-header \
- -block \
- -deanimate-gifs \
- -downgrade-http-version \
- +fast-redirects \
- +filter{html-annoyances} \
- +filter{js-annoyances} \
- -filter{content-cookies} \
- -filter{popups} \
- +filter{webbugs} \
- -filter{refresh-tags} \
- -filter{fun} \
- +filter{nimda} \
- +filter{banners-by-size} \
- -filter{shockwave-flash} \
- -filter{crude-prental} \
- +hide-forwarded-for-headers \
- +hide-from-header{block} \
- -hide-referrer \
- -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 \
- }
- / # forward slash will match *all* potential URL patterns.
+
+
+{ +filter{fun} }
+/ # For ALL sites!
+
-##########################################################################
-# Default behavior is now set. Now we will define some exceptions to our
-# default action policies.
-##########################################################################
+
+ Note that the above is not really a good idea: There are exceptions
+ to the filters in default.action for things that
+ really shouldn't be filtered, like code on CVS->Web interfaces. Since
+ user.action has the last word, these exceptions
+ won't be valid for the fun
filtering specified here.
+
-# These sites are very complex and require very minimal interference.
-# We'll disable most actions with our 'fragile' alias:
- { fragile }
- .office.microsoft.com # surprise, surprise!
- .windowsupdate.microsoft.com
+
+ 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:
+
+
+
+{ allow-ads }
+.sourceforge.net
+.slashdot.org
+.osdn.net
+
-# Shopping sites - not as fragile but require some special
-# handling. We still want to block ads, and we will allow
-# persistant cookies via the 'shop' alias:
- { shop }
- .quietpc.com
- .worldpay.com # for quietpc.com
- .jungle.com
- .scan.co.uk
+
+ Note that allow-ads has been aliased to
+ -block
+ -filter{banners-by-size}
+ above.
+
+
+
+
-# These sites require pop-ups too :( We'll combine our 'shop'
-# alias with two other actions into one rule to allow all popups.
- { shop -kill-popups -filter{popups} }
- .dabs.com
- .overclockers.co.uk
+
+
-# The 'Fast-redirects' action breaks some sites. Disable this action
-# for these known sensitive sites:
- { -fast-redirects }
- login.yahoo.com
- edit.europe.yahoo.com
- .google.com
- .altavista.com/.*(like|url|link):http
- .altavista.com/trans.*urltext=http
- .nytimes.com
+
+
+The Filter File
-# Define which file types will be treated as images. Important
-# for ad blocking.
- { +handle-as-image }
- /.*\.(gif|jpe?g|png|bmp|ico)
-
-
-# Now lets list some domains that are known ad generators. And
-# our alias that we use here will block these as well as force
-# them to be treated as images. This combination of actions is
-# important for ad blocking. What the browser will show instead is
-# determined by the setting of +set-image-blocker
- { +imageblock }
- ar.atwola.com
- .ad.doubleclick.net
- .a.yimg.com/(?:(?!/i/).)*$
- .a[0-9].yimg.com/(?:(?!/i/).)*$
- bs*.gsanet.com
- bs*.einets.com
- .qkimg.net
- ad.*.doubleclick.net
-
-
-# These will just simply be blocked. They will generate the BLOCKED
-# banner page, if matched. Heavy use of wildcards and regular
-# expressions in this example. Enable block action:
- { +block }
- ad*.
- .*ads.
- banner?.
- count*.
- /.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
- /(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/
- .hitbox.com
-
-
-# The above block section will probably inadvertantly catch some
-# sites we DO NOT want blocked via the wildcards and regular expressions.
-# Now let's set exceptions to the exceptions so the good guys get better
-# treatment. Disable block action:
- { -block }
- advogato.org
- adsl.
- ad[ud]*.
- advice.
-# Let's just trust all .edu top level domains.
- .edu
- www.ugu.com/sui/ugu/adv
-# We'll need to access to path names containing 'download'
- .*downloads.
- /downloads/
-# 'adv' is for globalintersec and means advanced, not advertisement
- www.globalintersec.com/adv
-
-
-# Don't filter *anything* from our friends at sourceforge.
-# Notice we don't have to name the individual filter
-# identifiers -- we just turn them all off in one fell swoop.
-# Disable all filters for this one site:
- { -filter }
- .sourceforge.net
-
-
-
+
+ All text substitutions that can be invoked through the
+ filter action
+ must first be defined in the filter file, which is typically
+ called default.filter and which can be
+ selected through the
+ filterfile config
+ option.
- 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
- user.action, 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.
+ 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.
- Now a few examples of some things that one might do with a
- user.action file.
+ Filtering works on any text-based document type, including plain
+ text, HTML, JavaScript, CSS etc. (all text/*
+ MIME types). Substitutions are made at the source level, so if
+ you want to roll your own
filters, you should be
+ familiar with HTML syntax.
-
-
-
-
-
-# Sample user.action file.
-
-# Any aliases you want to use need to be re-defined here.
-# Alias to turn off cookie handling, ie allow all cookies unmolested.
- -prevent-cookies = -prevent-setting-cookies -prevent-reading-cookies \
- -session-cookies-only
-
-# Fragile sites should have the minimum changes:
- fragile = -block -deanimate-gifs -fast-redirects -filter -hide-referer \
- -prevent-cookies -kill-popups
-
-# Allow persistent cookies for a few regular sites that we
-# trust via our above alias. These will be saved from one browser session
-# to the next. We are explicity turning off any and all cookie handling,
-# even though the prevent-*-cookie settings were disabled in our above
-# default.action anyway. So cookies from these domains will come through
-# unmolested.
- { -prevent-cookies }
- .sun.com
- .yahoo.com
- .msdn.microsoft.com
- .redhat.com
-
-
-# My ISP uses obnoxious self promoting images on many pages.
-# Nuke them :) Note that +handle-as-image
need not be specified,
-# since all URLs ending in .gif will be tagged as images by the
-# general rules in default.action anyway.
- { +block }
- www.my-isp-example.com/logo[0-9].gif
-
-
-# Say the site where you do your homebanking needs to open
-# popup windows, but you have chosen to kill popups by
-# default. This will allow it for your-example-bank.com:
-#
- { -filter{popups} -kill-popups }
- .my-example-bank.com
+ Just like the actions files, the
+ filter file is organized in sections, which are called filters
+ here. Each filter consists of a heading line, that starts with the
+ keyword FILTER:, followed by
+ the filter's name, and a short (one line)
+ description of what it does. Below that line
+ come the jobs, i.e. lines that define the actual
+ text substitutions. By convention, the name of a filter
+ should describe what the filter eliminates. The
+ comment is used in the web-based
+ user interface.
+
+
+ Once a filter called name has been defined
+ in the filter file, it can be invoked by using an action of the form
+ +filter{name}
+ in any actions file.
+
+
+
+ A filter header line for a filter called foo
could look
+ like this:
+
-# This site is delicate, and requires kid-glove
-# treatment.
- { fragile }
- .forbes.com
-
-
-
+
+ FILTER: foo Replace all "foo" with "bar"
-
-
+
+ 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 Perl's
+ s/// operator. If you are familiar with Perl, you
+ will find this to be quite intuitive, and may want to look at the
+ PCRS man page
+ for the subtle differences to Perl behaviour. Most notably, the non-standard
+ option letter U is supported, which turns the default
+ to ungreedy matching.
+
-
+
+ If you are new to regular expressions, you might want to take a look at
+ the Appendix on regular expressions, and
+ see the Perl
+ manual for
+ the
+ s/// operator's syntax and Perl-style regular
+ expressions in general.
+ The below examples might also help to get you started.
+
+
-
-
-Aliases
+Filter File Tutorial
- Custom actions
, known to Privoxy
- as aliases
, can be defined by combining other actions
.
- These can in turn be invoked just like the built-in actions
.
- Currently, an alias can contain any character except space, tab, =
,
- {
or }
. But please use only a
-
- z
, 0
-9
, +
, and
- -
. Alias names are not case sensitive, and
- must be defined before other actions in the
- actions file! And there can only be one set of aliases
- defined per file. Each actions file may have its own aliases, but they are
- only visible within that file. Aliases do not requir a +
or
- -
sign in front, since they are merely expanded.
+ Now, let's complete our foo
filter. We have already defined
+ the heading, but the jobs are still missing. Since all it does is to replace
+ foo
with bar
, there is only one (trivial) job
+ needed:
- Now let's define a few aliases:
+ s/foo/bar/
-
-
-
- # Useful custom aliases we can use later. These must come first!
- {{alias}}
- +prevent-cookies = +prevent-setting-cookies +prevent-reading-cookies
- -prevent-cookies = -prevent-setting-cookies -prevent-reading-cookies
- fragile = -block -prevent-cookies -filter -fast-redirects -hide-referer -kill-popups
- shop = -prevent-cookies -filter -fast-redirects
- +imageblock = +block +handle-as-image
-
- # Aliases defined from other aliases, for people who don't like to type
- # too much: ;-)
- c0 = +prevent-cookies
- c1 = -prevent-cookies
- #... etc. Customize to your heart's content.
-
-
-
+ But wait! Didn't the comment say that all occurrences
+ of foo
should be replaced? Our current job will only take
+ care of the first foo
on each page. For global substitution,
+ we'll need to add the g option:
- Some examples using our shop
and fragile
- 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):
+ s/foo/bar/g
-
-
-
- # These sites are very complex and require
- # minimal interference.
- {fragile}
- .office.microsoft.com
- .windowsupdate.microsoft.com
- .nytimes.com
-
- # Shopping sites - but we still want to block ads.
- {shop}
- .quietpc.com
- .worldpay.com # for quietpc.com
- .scan.co.uk
-
- # These shops require pop-ups also
- {shop -kill-popups}
- .dabs.com
- .overclockers.co.uk
-
-
-
+ Our complete filter now looks like this:
-
- The shop
and fragile
aliases are often used for
- problem
sites that require most actions to be disabled
- in order to function properly.
-
+ FILTER: foo Replace all "foo" with "bar"
+s/foo/bar/g
-
-
+
+ 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:
+
-
+
+
+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
+
-
+
+ Following the header line and a comment, you see the job. Note that it uses
+ | as the delimiter instead of /, because
+ the pattern contains a forward slash, which would otherwise have to be escaped
+ by a backslash (\).
+
-
-The Filter File
- 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 default.filter, located in the config
- directory.
+ Now, let's examine the pattern: it starts with the text <script.*
+ enclosed in parentheses. Since the dot matches any character, and *
+ means: Match an arbitrary number of the element left of myself
, this
+ matches <script
, followed by any text, i.e.
+ it matches the whole page, from the start of the first <script> tag.
- This is potentially a very powerful feature, and requires knowledge of both
- regular expression
and HTML in order create custom
- filters. But, there are a number of useful filters included with
- Privoxy for many common situations.
+ That's more than we want, but the pattern continues: document\.referrer
+ matches only the exact string document.referrer
. The dot needed to
+ be escaped, 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 document.referrer
, if both are present
+ in the page (and appear in that order).
- The included example file is divided into sections. Each section begins
- with the FILTER keyword, followed by the identifier
- for that section, e.g. FILTER: webbugs
. Each section performs
- a similar type of filtering, such as html-annoyances
.
+ But there's still more pattern to go. The next element, again enclosed in parentheses,
+ is .*</script>. You already know what .*
+ 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
+ document.referrer
appears somewhere in between.
- 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 default.filter:
+ 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 $1, $2, ... in
+ the substitute. The U option switches to ungreedy matching, which means
+ that the first .* in the pattern will only eat up
all
+ text in between <script
and the first occurrence
+ of document.referrer
, and that the second .* will
+ only span the text up to the first </script>
+ tag. Furthermore, the s option says that the match may span
+ multiple lines in the page, and the g option again means that the
+ substitution is global.
- Stop web pages from displaying annoying messages in the status bar by
- deleting such references:
+ So, to summarize, the pattern means: Match all scripts that contain the text
+ document.referrer
. Remember the parts of the script from
+ (and including) the start tag up to (and excluding) the string
+ document.referrer
as $1, and the part following
+ that string, up to and including the closing tag, as $2.
-
-
-
- FILTER: html-annoyances
+ Now the pattern is deciphered, but wasn't this about substituting things? So
+ lets look at the substitute: $1"Not Your Business!"$2 is
+ easy to read: The text remembered as $1, followed by
+ "Not Your Business!" (including
+ the quotation marks!), followed by the text remembered as $2.
+ This produces an exact copy of the original string, with the middle part
+ (the document.referrer
) replaced by "Not Your
+ Business!".
+
- # New browser windows should be resizeable and have a location and status
- # bar. Make it so.
- #
- s/resizable="?(no|0)"?/resizable=1/ig s/noresize/yesresize/ig
- s/location="?(no|0)"?/location=1/ig s/status="?(no|0)"?/status=1/ig
- s/scrolling="?(no|0|Auto)"?/scrolling=1/ig
- s/menubar="?(no|0)"?/menubar=1/ig
+
+ The whole job now reads: Replace document.referrer
by
+ "Not Your Business!" 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.
+
- # The <BLINK> tag was a crime!
- #
- s*<blink>|</blink>**ig
+
+ We'll show you two other jobs from the JavaScript taming department, but
+ this time only point out the constructs of special interest:
+
- # Is this evil?
- #
- #s/framespacing="?(no|0)"?//ig
- #s/margin(height|width)=[0-9]*//gi
-
-
-
+
+
+# The status bar is for displaying link targets, not pointless blahblah
+#
+s/window\.status\s*=\s*['"].*?['"]/dUmMy=1/ig
- Just for kicks, replace any occurrence of Microsoft
with
- MicroSuck
, and have a little fun with topical buzzwords:
+ \s stands for whitespace characters (space, tab, newline,
+ carriage return, form feed), so that \s* means: zero
+ or more whitespace
. The ? in .*?
+ makes this matching of arbitrary text ungreedy. (Note that the U
+ option is not set). The ['"] construct means: a single
+ or a double quote
.
-
-
-
- FILTER: fun
+ So what does this job do? It replaces assignments of single- or double-quoted
+ strings to the window.status
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.
+
- s/microsoft(?!.com)/MicroSuck/ig
+
+
+# Kill OnUnload popups. Yummy. Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html
+#
+s/(<body .*)onunload(.*>)/$1never$2/iU
+
- # Buzzword Bingo:
- #
- s/industry-leading|cutting-edge|award-winning/<font color=red><b>BINGO!</b></font>/ig
-
-
-
+
+ Including the
+ OnUnload
+ event binding in the HTML DOM was a CRIME.
+ When I close a browser window, I want it to close and die. Basta.
+ This job replaces the onunload
attribute in
+ <body>
tags with the dummy word never.
+ Note that the i option makes the pattern matching
+ case-insensitive.
- Kill those pesky little web-bugs:
+ The last example is from the fun department:
-
-
-
- # webbugs: Squish WebBugs (1x1 invisible GIFs used for user tracking)
- FILTER: webbugs
+
+FILTER: fun Fun text replacements
- s/<img\s+[^>]*?(width|height)\s*=\s*['"]?1\D[^>]*?(width|height)\s*=\s*['"]?1(\D[^>]*?)?>/<!-- Squished WebBug -->/sig
-
-
-
+# Spice the daily news:
+#
+s/microsoft(?!\.com)/MicroSuck/ig
-
-
-
-The +filter Action
- Filters are enabled with the +filter
action from within
- one of the actions files. +filter
requires one parameter, which
- should match one of the section identifiers in the filter file itself. Example:
+ Note the (?!\.com) part (a so-called negative lookahead)
+ in the job's pattern, which means: Don't match, if the string
+ .com
appears directly following microsoft
+ in the page. This prevents links to microsoft.com from being messed, while
+ still replacing the word everywhere else.
-
- +filter{html-annoyances}
-
+
+
+# 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
+
- This would activate that particular filter. Similarly, +filter
- can be turned off for selected sites as:
- -filter{html-annoyances}
. Remember too, all actions are off by
- default, unless they are explicity enabled in one of the actions files.
+ The x option in this job turns on extended syntax, and allows for
+ e.g. the liberal use of (non-interpreted!) whitespace for nicer formatting.
+
+ You get the idea?
+
-
@@ -4882,23 +6114,82 @@ for-privoxy-version=3.0
Templates
- When Privoxy displays one of its internal
- pages, such as a 404 Not Found error page
- (Privoxy must be running for link to work as
- intended), it uses the appropriate template. On Linux, BSD, and Unix, these
- are located in /etc/privoxy/templates by default. These
- may be customized, if desired. cgi-style.css is used to
- control the HTML attributes (fonts, etc).
+ All Privoxy built-in pages, i.e. error pages such as the
+ 404 - No Such Domain
+ error page, the BLOCKED
+ page
+ and all pages of its web-based
+ user interface, are generated from templates.
+ (Privoxy must be running for the above links to work as
+ intended.)
+
+
+
+ These templates are stored in a subdirectory of the configuration
+ directory called templates. On unixish platforms,
+ this is typically
+ /etc/privoxy/templates/.
+
+
+
+ The templates are basically normal HTML files, but with place-holders (called symbols
+ or exports), which Privoxy fills at run time. You can
+ edit the templates with a normal text editor, should you want to customize them.
+ (Not recommended for the casual user). Note that
+ just like in configuration files, lines starting with # are
+ ignored when the templates are filled in.
+
+
+
+ The place-holders are of the form @name@, 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.
+
+
+
+ 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 Privoxy
+ in in an alpha or beta development stage:
+
+
+
+
+<!-- @if-unstable-start -->
+
+ ... beta warning HTML code goes here ...
+
+<!-- if-unstable-end@ -->
+
+
+
+ If the "unstable" symbol is set, everything in between and including
+ @if-unstable-start and if-unstable-end@
+ will disappear, leaving nothing but an empty comment:
+
+
+ <!-- -->
+
+
- The default
-Blocked
-(Privoxy needs to be running for page to display)
- banner page with the bright red top
- banner, is called just blocked
. This
- may be customized or replaced with something else if desired.
+ There's also an if-then-else construct and an #include
+ mechanism, but you'll sure find out if you are inclined to edit the
+ templates ;-)
+
+
+ All templates refer to a style located at
+ http://config.privoxy.org/send-stylesheet.
+ This is, of course, locally served by Privoxy
+ and the source for it can be found and edited in the
+ cgi-style.css template.
+
@@ -4916,16 +6207,22 @@ Requests
+
+
-Copyright and History
+Privoxy Copyright, License and History
-Copyright
©right;
-
+
+License
+
+ &license;
+
+
@@ -4936,8 +6233,18 @@ Requests
&history;
+
+Authors
+
+ &p-authors;
+
+
+
+
+
+
See Also
@@ -4955,30 +6262,29 @@ Requests
Regular Expressions
- Privoxy can use regular expressions
- in various config files. Assuming support for pcre
(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.
+ Privoxy uses Perl-style regular
+ expressions
in its actions
+ files and filter file,
+ through the PCRE and
+ PCRS libraries.
If you are reading this, you probably don't understand what regular
expressions
are, or what they can do. So this will be a very brief
- introduction only. A full explanation would require a book ;-)
+ introduction only. A full explanation would require a book ;-)
- Regular expressions
is a way of matching one character
- expression against another to see if it matches or not. One of the
- expressions
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 meta-characters
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.
+ 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 meta-characters
have
+ special meanings and are used to build complex patterns to be matched against.
+ Perl Compatible Regular Expressions are an especially convenient
+ dialect
of the regular expression language.
@@ -5065,14 +6371,6 @@ Requests
-
-
- s/string1/string2/g - This is used to rewrite strings of text.
- string1
is replaced by string2
in this
- example. There must of course be a match on string1
first.
-
-
-
These are just some of the ones you are likely to use when matching URLs with
Privoxy, and is a long way from a definitive
@@ -5162,16 +6460,6 @@ Requests
in the expression anywhere).
-
- s/microsoft(?!.com)/MicroSuck/i - This is
- a substitution. MicroSuck
will replace any occurrence of
- microsoft
. The i
at the end of the expression
- means ignore case. The (?!.com)
means
- the match should fail if microsoft
is followed by
- .com
. In other words, this acts like a NOT
- modifier. In case this is a hyperlink, we don't want to break it ;-).
-
-
We are barely scratching the surface of regular expressions here so that you
can understand the default Privoxy
@@ -5186,6 +6474,11 @@ Requests
http://www.perldoc.com/perl5.6/pod/perlre.html
+
+ For information on regular expression based substititions and their applications
+ in filters, please see the filter file tutorial
+ in this manual.
+
@@ -5228,9 +6521,9 @@ Requests
- Alternately, this may be reached at http://p.p/, but this
- variation may not work as reliably as the above in some configurations.
+ There is a shortcut: http://p.p/ (But it
+ doesn't provide a fallback to a real page, in case the request is not
+ sent through Privoxy)
@@ -5364,17 +6657,19 @@ Requests
- Privoxy - Submit Filter Feedback
+ Privoxy - Submit Actions File Feedback
+
+
+
+
+ Privoxy - Why?
-
-
-
- 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
www.bookmarklets.com. They
have more information about bookmarklets.
@@ -5412,14 +6707,14 @@ Requests
Next, Privoxy checks to see if the URL
- matches any +block
patterns. If
+ matches any +block
patterns. If
so, the URL is then blocked, and the remote web server will not be contacted.
- +handle-as-image
+ +handle-as-image
is then checked and if it does not match, an
HTML BLOCKED
page is sent back. Otherwise, if it does match,
- an image is returned. The type of image depends on the setting of +set-image-blocker
+ an image is returned. The type of image depends on the setting of +set-image-blocker
(blank, checkerboard pattern, or an HTTP redirect to an image elsewhere).
@@ -5431,16 +6726,16 @@ Requests
- If the URL pattern matches the +fast-redirects
action,
+ If the URL pattern matches the +fast-redirects
action,
it is then processed. Unwanted parts of the requested URL are stripped.
Now the rest of the client browser's request headers are processed. If any
- of these match any of the relevant actions (e.g. +hide-user-agent
,
+ of these match any of the relevant actions (e.g. +hide-user-agent
,
etc.), headers are suppressed or forged as determined by these actions and
their parameters.
@@ -5456,24 +6751,24 @@ Requests
First, the server headers are read and processed to determine, among other
things, the MIME type (document type) and encoding. The headers are then
filtered as deterimed by the
- +prevent-setting-cookies
,
- +session-cookies-only
,
- and +downgrade-http-version
+ +crunch-incoming-cookies
,
+ +session-cookies-only
,
+ and +downgrade-http-version
actions.
- If the +kill-popups
+ If the +kill-popups
action applies, and it is an HTML or JavaScript document, the popup-code in the
response is filtered on-the-fly as it is received.
- If a +filter
- or +deanimate-gifs
+ If a +filter
+ or +deanimate-gifs
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
default.filter) are processed against the buffered
@@ -5484,9 +6779,9 @@ Requests
Privoxy back to your browser.
- If neither +filter
- or +deanimate-gifs
+ If neither +filter
+ or +deanimate-gifs
matches, then Privoxy passes the raw data through
to the client browser as it becomes available.
@@ -5514,16 +6809,15 @@ Requests
The way Privoxy applies
- actions
- and filters
+ actions and filters
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
see just what Privoxy is
doing. Especially, if something Privoxy 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
- regular expressions
whose consequences are not always
- so obvious.
+ regular expressions whose consequences are not
+ always so obvious.
@@ -5544,8 +6838,8 @@ Requests
First, enter one URL (or partial URL) at the prompt, and then
Privoxy will tell us
how the current configuration will handle it. This will not
- help with filtering effects (i.e. the +filter
action) from
+ help with filtering effects (i.e. the +filter
action) from
the default.filter file since this is handled very
differently and not so easy to trap! It also will not tell you about any other
URLs that may be embedded within the URL you are testing. For instance, images
@@ -5566,19 +6860,38 @@ Requests
Matches for http://google.com:
---- File standard ---
-(no matches in this file)
-
---- File default ---
-
-{ -add-header -block +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 +set-image-blocker{pattern} -limit-connect
- +prevent-compression +session-cookies-only -prevent-reading-cookies
- -prevent-setting-cookies -kill-popups -send-vanilla-wafer -send-wafer }
+ In file: default.action [ View ] [ Edit ]
+
+{-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} }
/
{ -session-cookies-only }
@@ -5587,14 +6900,14 @@ Requests
{ -fast-redirects }
.google.com
---- File user ---
+In file: user.action [ View ] [ Edit ]
(no matches in this file)
This tells us how we have defined our
- actions
, and
+ actions
, and
which ones match for our example, google.com
. The first listing
is any matches for the standard.action file. No hits at
all here on standard
. Then next is default
, or
@@ -5611,12 +6924,12 @@ Requests
rules, and then list specific URLs (or patterns) that these exceptions would
apply to. Last match wins. Just below this then are two explicit matches for
.google.com
. The first is negating our previous cookie setting,
- which was for +session-cookies-only
+ which was for +session-cookies-only
(i.e. not persistent). So we will allow persistent cookies for google. The
second turns off any
- +fast-redirects
+ +fast-redirects
action, allowing this to take place unmolested. Note that there is a leading
dot here -- .google.com
. This will match any hosts and
sub-domains, in the google.com domain also, such as
@@ -5641,14 +6954,37 @@ Requests
Final results:
- -add-header -block +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 +set-image-blocker{pattern} -limit-connect
- +prevent-compression -session-cookies-only -prevent-reading-cookies
- -prevent-setting-cookies -kill-popups -send-vanilla-wafer -send-wafer
+
+ -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}
@@ -5679,8 +7015,8 @@ Requests
We'll just show the interesting part here, the explicit matches. It is
matched three different times. Each as an +block +handle-as-image
,
which is the expanded form of one of our aliases that had been defined as:
- +imageblock
. (Aliases
are defined in
+ +imageblock
. (Aliases
are defined in
the first section of the actions file and typically used to combine more
than one action.)
@@ -5691,18 +7027,18 @@ Requests
would also cover the first. No point in taking chances with these guys
though ;-) Note that if you want an ad or obnoxious
URL to be invisible, it should be defined as ad.doubleclick.net
- is done here -- as both a +block
+ is done here -- as both a +block
and an
- +handle-as-image
.
+ +handle-as-image
.
The custom alias +imageblock
just simplifies the process and make
it more readable.
One last example. Let's try http://www.rhapsodyk.net/adsl/HOWTO/
.
- This one is giving us problems. We are getting a blank page. Hmmm...
+ This one is giving us problems. We are getting a blank page. Hmmm ...
@@ -5710,13 +7046,34 @@ Requests
Matches for http://www.rhapsodyk.net/adsl/HOWTO/:
- { -add-header -block +deanimate-gifs -downgrade-http-version +fast-redirects
- +filter{html-annoyances} +filter{js-annoyances} +filter{kill-popups}
- +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 }
+ In file: default.action [ View ] [ Edit ]
+
+ {-add-header
+ -block
+ -crunch-incoming-cookies
+ -crunch-outgoing-cookies
+ +deanimate-gifs
+ -downgrade-http-version
+ +fast-redirects
+ +filter{html-annoyances}
+ +filter{js-annoyances}
+ +filter{kill-popups}
+ +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
+ +kill-popups
+ +prevent-compression
+ -send-vanilla-wafer
+ -send-wafer
+ +session-cookies-only
+ +set-image-blocker{blank} }
/
{ +block +handle-as-image }
@@ -5831,6 +7188,86 @@ Requests
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
$Log: user-manual.sgml,v $
+ Revision 1.122 2002/05/24 13:24:08 oes
+ Added Bookmarklet for one-click pre-filled access to show-url-info
+
+ Revision 1.121 2002/05/23 23:20:17 oes
+ - Changed more (all?) references to actions to the
+ style.
+ - Small fixes in the actions chapter
+ - Small clarifications in the quickstart to ad blocking
+ - Removed from s since the new doc CSS
+ renders them red (bad in TOC).
+
+ Revision 1.120 2002/05/23 19:16:43 roro
+ Correct Debian specials (installation and startup).
+
+ Revision 1.119 2002/05/22 17:17:05 oes
+ Added Security hint
+
+ Revision 1.118 2002/05/21 04:54:55 hal9
+ -New Section: Quickstart to Ad Blocking
+ -Reformat Actions Anatomy to match new CGI layout
+
+ Revision 1.117 2002/05/17 13:56:16 oes
+ - Reworked & extended Templates chapter
+ - Small changes to Regex appendix
+ - #included authors.sgml into (C) and hist chapter
+
+ Revision 1.116 2002/05/17 03:23:46 hal9
+ Fixing merge conflict in Quickstart section.
+
+ Revision 1.115 2002/05/16 16:25:00 oes
+ Extended the Filter File chapter & minor fixes
+
+ Revision 1.114 2002/05/16 09:42:50 oes
+ More ulink->link, added some hints to Quickstart section
+
+ Revision 1.113 2002/05/15 21:07:25 oes
+ Extended and further commented the example actions files
+
+ Revision 1.112 2002/05/15 03:57:14 hal9
+ Spell check. A few minor edits here and there for better syntax and
+ clarification.
+
+ Revision 1.111 2002/05/14 23:01:36 oes
+ Fixing the fixes
+
+ Revision 1.110 2002/05/14 19:10:45 oes
+ Restored alphabetical order of actions
+
+ Revision 1.109 2002/05/14 17:23:11 oes
+ Renamed the prevent-*-cookies actions, extended aliases section and moved it before the example AFs
+
+ Revision 1.108 2002/05/14 15:29:12 oes
+ Completed proofreading the actions chapter
+
+ Revision 1.107 2002/05/12 03:20:41 hal9
+ Small clarifications for 127.0.0.1 vs localhost for listen-address since this
+ apparently an important distinction for some OS's.
+
+ Revision 1.106 2002/05/10 01:48:20 hal9
+ This is mostly proposed copyright/licensing additions and changes. Docs
+ are still GPL, but licensing and copyright are more visible. Also, copyright
+ changed in doc header comments (eliminate references to JB except FAQ).
+
+ Revision 1.105 2002/05/05 20:26:02 hal9
+ Sorting out license vs copyright in these docs.
+
+ Revision 1.104 2002/05/04 08:44:45 swa
+ bumped version
+
+ Revision 1.103 2002/05/04 00:40:53 hal9
+ -Remove the TOC first page kludge. It's fixed proper now in ldp.dsl.in.
+ -Some minor additions to Quickstart.
+
+ Revision 1.102 2002/05/03 17:46:00 oes
+ Further proofread & reactivated short build instructions
+
+ Revision 1.101 2002/05/03 03:58:30 hal9
+ Move the user-manual config directive to top of section. Add note about
+ Privoxy needing read permissions for configs, and write for logs.
+
Revision 1.100 2002/04/29 03:05:55 hal9
Add clarification on differences of new actions files.