X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=doc%2Fwebserver%2Fuser-manual%2Fconfiguration.html;h=ed73cac20a88f80cc60e13fad994def5e3d9da2a;hp=9fe64ac3002786741a9812a10b223f8abd1a3f44;hb=7a99a61ab1a3ce0401821aedcd06eba19a698b2a;hpb=0a3750f6302df8349b5be2e15a9a4fefe3c35889 diff --git a/doc/webserver/user-manual/configuration.html b/doc/webserver/user-manual/configuration.html index 9fe64ac3..ed73cac2 100644 --- a/doc/webserver/user-manual/configuration.html +++ b/doc/webserver/user-manual/configuration.html @@ -1,6227 +1,275 @@ -Privoxy Configuration
Privoxy User Manual
PrevNext

7. Privoxy Configuration

All Privoxy configuration is stored - in text files. These files can be edited with a text editor. - Many important aspects of Privoxy can - also be controlled easily with a web browser. -

7.1. Controlling Privoxy with Your Web Browser

Privoxy's user interface can be reached through the special - URL http://config.privoxy.org/ - (shortcut: http://p.p/), - which is a built-in page and works without Internet access. - You will see the following section:

 

Privoxy Menu

        ▪  View & change the current configuration -
        ▪  View the source code version numbers -
        ▪  View the request headers. -
        ▪  Look up which actions apply to a URL and why -
        ▪  Toggle Privoxy on or off -

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 - 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.

"Toggle Privoxy On or Off" is handy for sites that might - 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 - is even a toggle Bookmarklet offered, so - that you can toggle Privoxy with one click from - your browser.

7.2. Configuration Files Overview

For Unix, *BSD and Linux, all configuration files are located in - /etc/privoxy/ by default. For MS Windows, OS/2, and - AmigaOS these are all in the same directory as the - Privoxy executable. The name - and number of configuration files has changed from previous versions, and is - subject to change as development progresses.

The installed defaults provide a reasonable starting point, though - some settings may be aggressive by some standards. For the time being, the - principle configuration files are:

All files use the "#" character to denote a - comment (the rest of the line will be ignored) angd 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 - valid configuration line to prevent it from being interpreted is called "commenting - out" that line.

The actions files and default.filter - can use Perl style regular expressions for - maximum flexibility.

After making any changes, there is no need to restart - Privoxy in order for the changes to take - effect. Privoxy detects such changes - automatically. Note, however, that it may take one or two additional - requests for the change to take effect. When changing the listening address - of Privoxy, these "wake up" requests - must obviously be sent to the old listening address.

While under development, the configuration content is subject to change. - The below documentation may not be accurate by the time you read this. - Also, what constitutes a "default" setting, may change, so - please check all your configuration files on important issues.

7.3. The Main Configuration File

Again, the main configuration file is named config on - Linux/Unix/BSD and OS/2, and config.txt on Windows. - Configuration lines consist of an initial keyword followed by a list of - values, all separated by whitespace (any number of spaces or tabs). For - example:

  confdir /etc/privoxy
-   

-

Assigns the value /etc/privoxy to the option - confdir and thus indicates that the configuration - directory is named "/etc/privoxy/".

All options in the config file except for confdir and - logdir are optional. Watch out in the below description - for what happens if you leave them unset.

The main config file controls all aspects of Privoxy's - operation that are not location dependent (i.e. they apply universally, no matter - where you may be surfing).

7.3.1. Configuration and Log File Locations

Privoxy can (and normally does) use a number of - other files for additional configuration and logging. - This section of the configuration file tells Privoxy - where to find those other files.

7.3.1.1. confdir

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). -

7.3.1.2. logdir

Specifies:

The directory where all logging takes place (i.e. where logfile and - jarfile are located) -

Type of value:

Path name

Default value:

/var/log/privoxy (Unix) or Privoxy installation dir (Windows)

Effect if unset:

Mandatory

Notes:

No trailing "/", please -

7.3.1.3. - - -actionsfile

Specifies:

The actions file(s) to use -

Type of value:

File name, relative to confdir

Default value:

  standard     # Internal purposes, recommended not editing

-

  default      # Main actions file

-

  user         # User customizations

-

Effect if unset:

No actions are taken at all. Simple neutral proxying. -

Notes:

Multiple actionsfile lines are OK and are in fact recommended! -

- The default values include standard.action, which is used for internal - purposes and should be loaded, default.action, which is the - "main" actions file maintained by the developers, and - user.action, where you can make your personal additions. -

- There is no point in using Privoxy without an actions file. -

7.3.1.4. filterfile

Specifies:

The filter file to use -

Type of value:

File name, relative to confdir

Default value:

default.filter (Unix) or default.filter.txt (Windows)

Effect if unset:

No textual content filtering takes place, i.e. all - +filter{name} - actions in the actions files are turned off -

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 - JavaScript annoyances, re-write the actual displayed text, or just have some - fun replacing "Microsoft" with "MicroSuck" wherever - it appears on a Web page. -

7.3.1.5. logfile

Specifies:

The log file to use -

Type of value:

File name, relative to logdir

Default value:

logfile (Unix) or privoxy.log (Windows)

Effect if unset:

No log file is used, all log messages go to the console (stderr). -

Notes:

The windows version will additionally log to the console. -

The logfile is where all logging and error messages are written. The level - of detail and number of messages are set with the debug - option (see below). The logfile can be useful for tracking down a problem with - Privoxy (e.g., it's not blocking an ad you - think it should block) but in most cases you probably will never look at it. -

Your logfile will grow indefinitely, and you will probably want to - periodically remove it. On Unix systems, you can do this with a cron job - (see "man cron"). For Red Hat, a logrotate - script has been included. -

On SuSE Linux systems, you can place a line like "/var/log/privoxy.* - +1024k 644 nobody.nogroup" in /etc/logfiles, with - the effect that cron.daily will automatically archive, gzip, and empty the - log, when it exceeds 1M size. -

7.3.1.6. jarfile

Specifies:

The file to store intercepted cookies in -

Type of value:

File name, relative to logdir

Default value:

jarfile (Unix) or privoxy.jar (Windows)

Effect if unset:

Intercepted cookies are not stored at all. -

Notes:

The jarfile may grow to ridiculous sizes over time. -

7.3.1.7. trustfile

Specifies:

The trust file to use -

Type of value:

File name, relative to confdir

Default value:

Unset (commented out). When activated: trust (Unix) or trust.txt (Windows)

Effect if unset:

The whole trust mechanism is turned off. -

Notes:

The trust mechanism is an experimental feature for building white-lists and should - be used with care. It is NOT recommended for the casual user. -

If you specify a trust file, Privoxy will only allow - access to sites that are named in the trustfile. - You can also mark sites as trusted referrers (with +), with - the effect that access to untrusted sites will be granted, if a link from a - trusted referrer was used. - The link target will then be added to the "trustfile". - Possible applications include limiting Internet access for children. -

If you use + operator in the trust file, it may grow considerably over time. -

7.3.2. Local Set-up Documentation

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. -

7.3.2.1. trust-info-url

Specifies:

A URL to be displayed in the error page that users will see if access to an untrusted page is denied. -

Type of value:

URL

Default value:

Two example URL are provided

Effect if unset:

No links are displayed on the "untrusted" error page. -

Notes:

The value of this option only matters if the experimental trust mechanism has been - activated. (See trustfile above.) -

If you use the trust mechanism, it is a good idea to write up some on-line - documentation about your trust policy and to specify the URL(s) here. - Use multiple times for multiple URLs. -

The URL(s) should be added to the trustfile as well, so users don't end up - locked out from the information on why they were locked out in the first place! -

7.3.2.2. admin-address

Specifies:

An email address to reach the proxy administrator. -

Type of value:

Email address

Default value:

Unset

Effect if unset:

No email address is displayed on error pages and the CGI user interface. -

Notes:

If both admin-address and proxy-info-url - are unset, the whole "Local Privoxy Support" box on all generated pages will - not be shown. -

7.3.2.3. proxy-info-url

Specifies:

A URL to documentation about the local Privoxy setup, - configuration or policies. -

Type of value:

URL

Default value:

Unset

Effect if unset:

No link to local documentation is displayed on error pages and the CGI user interface. -

Notes:

If both admin-address and proxy-info-url - are unset, the whole "Local Privoxy Support" box on all generated pages will - not be shown. -

This URL shouldn't be blocked ;-) -

7.3.3. Debugging

These options are mainly useful when tracing a problem. - Note that you might also want to invoke - Privoxy with the --no-daemon - command line option when debugging. -

7.3.3.1. debug

Specifies:

Key values that determine what information gets logged. -

Type of value:

Integer values

Default value:

12289 (i.e.: URLs plus informational and warning messages)

Effect if unset:

Nothing gets logged. -

Notes:

The available debug levels are: -

  debug         1 # show each GET/POST/CONNECT request
-  debug         2 # show each connection status
-  debug         4 # show I/O status
-  debug         8 # show header parsing
-  debug        16 # log all data into the logfile
-  debug        32 # debug force feature
-  debug        64 # debug regular expression filter 
-  debug       128 # debug fast redirects
-  debug       256 # debug GIF de-animation
-  debug       512 # Common Log Format
-  debug      1024 # debug kill pop-ups
-  debug      4096 # Startup banner and warnings.
-  debug      8192 # Non-fatal errors
-

To select multiple debug levels, you can either add them or use - multiple debug lines. -

A debug level of 1 is informative because it will show you each request - as it happens. 1, 4096 and 8192 are highly recommended - so that you will notice when things go wrong. The other levels are probably - only of interest if you are hunting down a specific problem. They can produce - a hell of an output (especially 16). - -

The reporting of fatal errors (i.e. ones which crash - Privoxy) is always on and cannot be disabled. -

If you want to use CLF (Common Log Format), you should set "debug - 512" ONLY and not enable anything else. -

7.3.3.2. single-threaded

Specifies:

Whether to run only one server thread -

Type of value:

None

Default value:

Unset

Effect if unset:

Multi-threaded (or, where unavailable: forked) operation, i.e. the ability to - serve multiple requests simultaneously. -

Notes:

This option is only there for debug purposes and you should never - need to use it. It will drastically reduce performance. -

7.3.4. Access Control and Security

This section of the config file controls the security-relevant aspects - of Privoxy's configuration. -

7.3.4.1. listen-address

Specifies:

The IP address and TCP port on which Privoxy will - listen for client requests. -

Type of value:

[IP-Address]:Port

Default value:

localhost:8118

Effect if unset:

Bind to localhost (127.0.0.1), port 8118. This is suitable and recommended for - home users who run Privoxy on the same machine as - their browser. -

Notes:

You will need to configure your browser(s) to this proxy address and port. -

If you already have another service running on port 8118, or if you want to - serve requests from other machines (e.g. on your local network) as well, you - will need to override the default. -

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. -

Example:

Suppose you are running Privoxy on - a machine which has the address 192.168.0.1 on your local private network - (192.168.0.0) and has another outside connection with a different address. - You want it to serve requests from inside only: -

  listen-address  192.168.0.1:8118
-

7.3.4.2. toggle

Specifies:

Initial state of "toggle" status -

Type of value:

1 or 0

Default value:

1

Effect if unset:

Act as if toggled on -

Notes:

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 then via editing the conf file. -

The windows version will only display the toggle icon in the system tray - if this option is present. -

7.3.4.3. enable-remote-toggle

Specifies:

Whether or not the web-based toggle - feature may be used -

Type of value:

0 or 1

Default value:

1

Effect if unset:

The web-based toggle feature is disabled. -

Notes:

When toggled off, Privoxy acts like a normal, - content-neutral proxy, i.e. it acts as if none of the actions applied to - any URL. -

For the time being, access to the toggle feature can not be - controlled separately by "ACLs" or HTTP authentication, - so that everybody who can access Privoxy (see - "ACLs" and listen-address above) can - toggle it for all users. So this option is not recommended - for multi-user environments with untrusted users. -

Note that you must have compiled Privoxy with - support for this feature, otherwise this option has no effect. -

7.3.4.4. enable-edit-actions

Specifies:

Whether or not the web-based actions - file editor may be used -

Type of value:

0 or 1

Default value:

1

Effect if unset:

The web-based actions file editor is disabled. -

Notes:

For the time being, access to the editor can not be - controlled separately by "ACLs" or HTTP authentication, - so that everybody who can access Privoxy (see - "ACLs" and listen-address above) can - modify its configuration for all users. So this option is not - recommended for multi-user environments with untrusted users. -

Note that you must have compiled Privoxy with - support for this feature, otherwise this option has no effect. -

7.3.4.5. - -ACLs: permit-access and deny-access

Specifies:

Who can access what. -

Type of value:

src_addr[/src_masklen] - [dst_addr[/dst_masklen]] -

Where src_addr and - dst_addr are IP addresses in dotted decimal notation or valid - DNS names, and src_masklen and - dst_masklen are subnet masks in CIDR notation, i.e. integer - values from 2 to 30 representing the length (in bits) of the network address. The masks and the whole - destination part are optional. -

Default value:

Unset

Effect if unset:

Don't restrict access further than implied by listen-address -

Notes:

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. -

Please see the warnings in the FAQ that this proxy is not intended to be a substitute - for a firewall or to encourage anyone to defer addressing basic security - weaknesses. -

Multiple ACL lines are OK. - If any ACLs are specified, then the Privoxy - talks only to IP addresses that match at least one permit-access line - and don't match any subsequent deny-access line. In other words, the - last match wins, with the default being deny-access. -

If Privoxy is using a forwarder (see forward below) - for a particular destination URL, the dst_addr - that is examined is the address of the forwarder and NOT the address - of the ultimate target. This is necessary because it may be impossible for the local - Privoxy to determine the IP address of the - ultimate target (that's often what gateways are used for). -

You should prefer using IP addresses over DNS names, because the address lookups take - time. All DNS names must resolve! You can not use domain patterns - like "*.org" or partial domain names. If a DNS name resolves to multiple - IP addresses, only the first one is used. -

Denying access to particular sites by ACL may have undesired side effects - if the site in question is hosted on a machine which also hosts other sites. -

Examples:

Explicitly define the default behavior if no ACL and - listen-address are set: "localhost" - is OK. The absence of a dst_addr implies that - all destination addresses are OK: -

  permit-access  localhost
-

Allow any host on the same class C subnet as www.privoxy.org access to - nothing but www.example.com: -

  permit-access  www.privoxy.org/24 www.example.com/32
-

Allow access from any host on the 26-bit subnet 192.168.45.64 to anywhere, - with the exception that 192.168.45.73 may not access www.dirty-stuff.example.com: -

  permit-access  192.168.45.64/26
-  deny-access    192.168.45.73    www.dirty-stuff.example.com
-

7.3.4.6. buffer-limit

Specifies:

Maximum size of the buffer for content filtering. -

Type of value:

Size in Kbytes

Default value:

4096

Effect if unset:

Use a 4MB (4096 KB) limit. -

Notes:

For content filtering, i.e. the +filter and - +deanimate-gif actions, it is necessary that - Privoxy buffers the entire document body. - This can be potentially dangerous, since a server could just keep sending - data indefinitely and wait for your RAM to exhaust -- with nasty consequences. - Hence this option. -

When a document buffer size reaches the buffer-limit, it is - flushed to the client unfiltered and no further attempt to - filter the rest of the document is made. Remember that there may be multiple threads - running, which might require up to buffer-limit Kbytes - each, unless you have enabled "single-threaded" - above. -

7.3.5. Forwarding

This feature allows routing of HTTP requests through a chain of - multiple proxies. - It can be used to better protect privacy and confidentiality when - accessing specific domains by routing requests to those domains - through an anonymous public proxy (see e.g. http://www.multiproxy.org/anon_list.htm) - Or to use a caching proxy to speed up browsing. Or chaining to a parent - proxy may be necessary because the machine that Privoxy - runs on has no direct Internet access.

Also specified here are SOCKS proxies. Privoxy - supports the SOCKS 4 and SOCKS 4A protocols.

7.3.5.1. forward

Specifies:

To which parent HTTP proxy specific requests should be routed. -

Type of value:

target_domain[:port] - http_parent[/port] -

Where target_domain is a domain name pattern (see the - chapter on domain matching in the default.action file), - http_parent is the address of the parent HTTP proxy - as an IP addresses in dotted decimal notation or as a valid DNS name (or "." to denote - "no forwarding", and the optional - port parameters are TCP ports, i.e. integer - values from 1 to 64535 -

Default value:

Unset

Effect if unset:

Don't use parent HTTP proxies. -

Notes:

If http_parent is ".", then requests are not - forwarded to another HTTP proxy but are made directly to the web servers. -

Multiple lines are OK, they are checked in sequence, and the last match wins. -

Examples:

Everything goes to an example anonymizing proxy, except SSL on port 443 (which it doesn't handle): -

  forward   .*     anon-proxy.example.org:8080
-  forward   :443   .
-

Everything goes to our example ISP's caching proxy, except for requests - to that ISP's sites: -

  forward   .*.                caching-proxy.example-isp.net:8000
-  forward   .example-isp.net   .
-

7.3.5.2. - -forward-socks4 and forward-socks4a

Specifies:

Through which SOCKS proxy (and to which parent HTTP proxy) specific requests should be routed. -

Type of value:

target_domain[:port] - socks_proxy[/port] - http_parent[/port] -

Where target_domain is a domain name pattern (see the - chapter on domain matching in the default.action file), - http_parent and socks_proxy - are IP addresses in dotted decimal notation or valid DNS names (http_parent - may be "." to denote "no HTTP forwarding"), and the optional - port parameters are TCP ports, i.e. integer values from 1 to 64535 -

Default value:

Unset

Effect if unset:

Don't use SOCKS proxies. -

Notes:

Multiple lines are OK, they are checked in sequence, and the last match wins. -

The difference between forward-socks4 and forward-socks4a - is that in the SOCKS 4A protocol, the DNS resolution of the target hostname happens on the SOCKS - server, while in SOCKS 4 it happens locally. -

If http_parent is ".", then requests are not - forwarded to another HTTP proxy but are made (HTTP-wise) directly to the web servers, albeit through - a SOCKS proxy. -

Examples:

From the company example.com, direct connections are made to all - "internal" domains, but everything outbound goes through - their ISP's proxy by way of example.com's corporate SOCKS 4A gateway to - the Internet. -

  forward-socks4a   .*.            socks-gw.example.com:1080  www-cache.example-isp.net:8080
-  forward           .example.com   .
-

A rule that uses a SOCKS 4 gateway for all destinations but no HTTP parent looks like this: -

  forward-socks4   .*.            socks-gw.example.com:1080  .
-

7.3.5.3. Advanced Forwarding Examples

If you have links to multiple ISPs that provide various special content - only to their subscribers, you can configure multiple Privoxies - which have connections to the respective ISPs to act as forwarders to each other, so that - your users can see the internal content of all ISPs.

Assume that host-a has a PPP connection to isp-a.net. And host-b has a PPP connection to - isp-b.net. Both run Privoxy. Their forwarding - configuration can look like this:

host-a:

  forward    .*.         .
-  forward    .isp-b.net  host-b:8118

host-b:

  forward    .*.         .
-  forward    .isp-a.net  host-a:8118

Now, your users can set their browser's proxy to use either - host-a or host-b and be able to browse the internal content - of both isp-a and isp-b.

If you intend to chain Privoxy and - squid locally, then chain as - browser -> squid -> privoxy is the recommended way.

Assuming that Privoxy and squid - run on the same box, your squid configuration could then look like this:

+ + + + + + +
  # Define Privoxy as parent proxy (without ICP) 
-  cache_peer 127.0.0.1 parent 8118 7 no-query 
+
 
-  # Define ACL for protocol FTP 
-  acl ftp proto FTP 
+
+
+  Privoxy Configuration
+  
+  
+  
+  
+  
+  
+  
+
 
-  # Do not forward FTP requests to Privoxy
-  always_direct allow ftp 
+
+  

7.3.6. Windows GUI Options

Privoxy has a number of options specific to the - Windows GUI interface:

If "activity-animation" is set to 1, the - Privoxy icon will animate when - "Privoxy" is active. To turn off, set to 0.

  activity-animation 1
-   

-

If "log-messages" is set to 1, - Privoxy will log messages to the console - window:

  log-messages 1
-   

-

- If "log-buffer-size" is set to 1, the size of the log buffer, - i.e. the amount of memory used for the log messages displayed in the - console window, will be limited to "log-max-lines" (see below).

Warning: Setting this to 0 will result in the buffer to grow infinitely and - eat up all your memory!

  log-buffer-size 1
-   

-

log-max-lines is the maximum number of lines held - in the log buffer. See above.

  log-max-lines 200
-   

-

If "log-highlight-messages" is set to 1, - Privoxy will highlight portions of the log - messages with a bold-faced font:

  log-highlight-messages 1
-   

-

The font used in the console window:

  log-font-name Comic Sans MS
-   

-

Font size used in the console window:

  log-font-size 8
-   

-

- "show-on-task-bar" controls whether or not - Privoxy will appear as a button on the Task bar - when minimized:

  show-on-task-bar 0
-   

-

If "close-button-minimizes" is set to 1, the Windows close - button will minimize Privoxy instead of closing - the program (close with the exit option on the File menu).

  close-button-minimizes 1
-   

-

The "hide-console" option is specific to the MS-Win console - version of Privoxy. If this option is used, - Privoxy will disconnect from and hide the - command console.

  #hide-console
-   

-

7.4. Actions Files

The actions files are used to define what actions - Privoxy takes for which URLs, and thus determines - how ad images, cookies and various other aspects of HTTP content and - transactions are handled, and on which sites (or even parts thereof). There - are three such files included with Privoxy, - with slightly different purposes. default.action sets - the default policies. standard.action is used by - Privoxy and the web based editor to set - pre-defined values (and normally should not be edited). Local exceptions - are best done in user.action. The content of these - can all be viewed and edited from http://config.privoxy.org/show-status. -

- Anything you want can blocked, including ads, banners, or just some obnoxious - URL that you would rather not see is done here. 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 available actions.

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.

7.4.1. Finding the Right Mix

Note that some actions like cookie suppression - or script disabling may render some sites unusable, which rely on these - techniques to work properly. Finding the right mix of actions is not easy and - certainly a matter of personal taste. In general, it can be said that the more - "aggressive" your default settings (in the top section of the - actions file) are, the more exceptions for "trusted" sites you - will have to make later. If, for example, you want to kill popup windows per - default, you'll have to make exceptions from that rule for sites that you - regularly use and that require popups for actually useful content, like maybe - your bank, favorite shop, or newspaper.

We have tried to provide you with reasonable rules to start from in the - distribution actions files. But there is no general rule of thumb on these - things. There just are too many variables, and sites are constantly changing. - Sooner or later you will want to change the rules (and read this chapter again :).

7.4.2. How to Edit

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.

If you prefer plain text editing to GUIs, you can of course also directly edit the - the actions files.

7.4.3. 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.

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 - 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). -

You can trace this process by visiting http://config.privoxy.org/show-url-info.

More detail on this is provided in the Appendix, Anatomy of an Action.

7.4.4. Patterns

Generally, a pattern has the form <domain>/<path>, - where both the <domain> and <path> - are optional. (This is why the pattern / matches all URLs).

www.example.com/

is a domain-only pattern and will match any request to www.example.com, - regardless of which document on that server is requested. -

www.example.com

means exactly the same. For domain-only patterns, the trailing / may - be omitted. -

www.example.com/index.html

matches only the single document /index.html - on www.example.com. -

/index.html

matches the document /index.html, regardless of the domain, - i.e. on any web server. -

index.html

matches nothing, since it would be interpreted as a domain name and - there is no top-level domain called .html. -

7.4.4.1. The Domain Pattern

The matching of the domain part offers some flexible options: if the - domain starts or ends with a dot, it becomes unanchored at that end. - For example:

.example.com

matches any domain that ENDS in - .example.com -

www.

matches any domain that STARTS with - www. -

.example.

matches any domain that CONTAINS .example. - (Correctly speaking: It matches any FQDN that contains example as a domain.) -

Additionally, there are wild-cards that you can use in the domain names - themselves. They work pretty similar to shell wild-cards: "*" - stands for zero or more arbitrary characters, "?" stands for - any single character, you can define character classes in square - brackets and all of that can be freely mixed:

ad*.example.com

matches "adserver.example.com", - "ads.example.com", etc but not "sfads.example.com" -

*ad*.example.com

matches all of the above, and then some. -

.?pix.com

matches www.ipix.com, - pictures.epix.com, a.b.c.d.e.upix.com etc. -

www[1-9a-ez].example.c*

matches www1.example.com, - www4.example.cc, wwwd.example.cy, - wwwz.example.com etc., but not - wwww.example.com. -

7.4.4.2. The Path Pattern

Privoxy uses Perl compatible regular expressions - (through the PCRE library) for - matching the path.

There is an Appendix with a brief quick-start into regular - expressions, and full (very technical) documentation on PCRE regex syntax is available on-line - at http://www.pcre.org/man.txt. - You might also find the Perl man page on regular expressions (man perlre) - useful, which is available on-line at http://www.perldoc.com/perl5.6/pod/perlre.html.

Note that the path pattern is automatically left-anchored at the "/", - i.e. it matches as if it would start with a "^" (regular expression speak - for the beginning of a line).

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.

7.4.5. Actions

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".

- 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:

  • - Boolean, i.e the action can only be "on" or - "off". Examples: -

      {+name}        # enable this action
    -  {-name}        # disable this action
    -     

    - -

  • - Parameterized, e.g. "+/-hide-user-agent{ Mozilla 1.0 }", - where some value is required in order to enable this type of action. - Examples: -

      {+name{param}}  # enable action and set parameter to "param"
    -  {-name}         # disable action ("parameter") can be omitted
    -     

    - -

  • - - 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: -

      {+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
    -     

    - -

If nothing is specified in any actions file, no "actions" are - taken. So in this case Privoxy would just be a - normal, non-blocking, non-anonymizing proxy. You must specifically enable the - privacy and blocking features you need (although the provided default actions - files will give a good starting point).

Later defined actions always over-ride earlier ones. So exceptions - to any rules you make, should come in the latter part of the file. For - multi-valued actions, the actions are applied in the order they are - specified. 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!

The list of valid Privoxy "actions" are:

7.4.5.1. +add-header{Name: value}

Type:

Multi-value.

Typical uses:

Send a user defined HTTP header to the web server. -

Possible values:

Any value is possible. Validity of the defined HTTP headers is not checked. -

Example usage:

     {+add-header{X-User-Tracking: sucks}}
-     .example.com
-    

Notes:

This action may be specified multiple times, in order to define multiple - headers. This is rarely needed for the typical user. If you don't know what - "HTTP headers" are, you definitely don't need to worry about this - one. -

7.4.5.2. +block

Type:

Boolean.

Typical uses:

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. -

Possible values:

N/A

Example usage:

     {+block}
-     .banners.example.com
-     .ads.r.us
-    

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!). -

- 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. -

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. -

7.4.5.3. +deanimate-gifs

Type:

Parameterized.

Typical uses:

To stop those annoying, distracting animated GIF images. -

Possible values:

"last" or "first" -

Example usage:

      {+deanimate-gifs{last}}
-      .example.com
-    

Notes:

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). -

7.4.5.4. +downgrade-http-version

Type:

Boolean.

Typical uses:

"+downgrade-http-version" will downgrade HTTP/1.1 client requests to - HTTP/1.0 and downgrade the responses as well. -

Possible values:

N/A -

Example usage:

     {+downgrade-http-version}
-     .example.com
-    

Notes:

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. -

7.4.5.5. +fast-redirects

Type:

Boolean.

Typical uses:

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). -

Possible values:

N/A -

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 is a normally "on" feature, and often requires exceptions - for sites that are sensitive to defeating this mechanism. -

7.4.5.6. +filter

Type:

Parameterized.

Typical uses:

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. -

Possible values:

"+filter" must include the name of one of the section identifiers - from default.filter (or whatever - filterfile is specified in config). -

Example usage (from the current default.filter):

+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{popups}: Kill all popups in JS and HTML -

+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" -

Notes:

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. -

7.4.5.7. +hide-forwarded-for-headers

Type:

Boolean.

Typical uses:

Block any existing X-Forwarded-for HTTP header, and do not add a new one. -

Possible values:

N/A -

Example usage:

     {+hide-forwarded-for-headers}
-     .example.com
-    

Notes:

It is fairly safe to leave this on. It does not seem to break many sites. -

7.4.5.8. +hide-from-header

Type:

Parameterized.

Typical uses:

To block the browser from sending your email address in a "From:" - header. -

Possible values:

Keyword: "block", or any user defined value. -

Example usage:

     {+hide-from-header{block}}
-     .example.com
-    

Notes:

The keyword "block" will completely remove the header - (not to be confused with the "+block" action). - Alternately, you can specify any value you prefer to send to the web - server. -

7.4.5.9. +hide-referer

Type:

Parameterized.

Typical uses:

Don't send the "Referer:" (sic) HTTP header to the web site. - Or, alternately send a forged header instead. -

Possible values:

Prevent the header from being sent with the keyword, "block". - Or, "forge" a URL to one from the same server as the request. - Or, set to user defined value of your choice. -

Example usage:

     {+hide-referer{forge}}
-     .example.com
-    

Notes:

"forge" is the preferred option here, since some servers will - not send images back otherwise. -

- "+hide-referrer" is an alternate spelling of - "+hide-referer". It has the exact same parameters, and can be freely - mixed with, "+hide-referer". ("referrer" is the - correct English spelling, however the HTTP specification has a bug - it - requires it to be spelled as "referer".) -

7.4.5.10. +hide-user-agent

Type:

Parameterized.

Typical uses:

To change the "User-Agent:" header so web servers can't tell - your browser type. Who's business is it anyway? -

Possible values:

Any user defined string. -

Example usage:

     {+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}}
-     .msn.com
-    

Notes:

Warning! This breaks many web sites that depend on this in order - to determine how the target browser will respond to various - requests. Use with caution. -

7.4.5.11. +handle-as-image

Type:

Boolean.

Typical uses:

To define what Privoxy should treat - automatically as an image, and is an important ingredient of how - ads are handled. -

Possible values:

N/A -

Example usage:

     {+handle-as-image}
-     /.*\.(gif|jpg|jpeg|png|bmp|ico)
-    

Notes:

This only has meaning if the URL (or pattern) also is - "+block"ed, in which case a user definable image can - be sent rather than a HTML page. This is integral to the whole concept of - ad blocking: the URL must match both a "+block" rule, - and "+handle-as-image". - (See "+set-image-blocker" - below for control over what will actually be displayed by the browser.) -

There is little reason to change the default definition for this action. -

7.4.5.12. +set-image-blocker

Type:

Parameterized.

Typical uses:

Decide what to do with URLs that end up tagged with both - "+block" - and "+handle-as-image", - e.g an advertisement. -

Possible values:

There are four available options: "-set-image-blocker" will send a HTML - "blocked" page, usually resulting in a "broken - image" icon. - "+set-image-blocker{blank}" will send a - 1x1 transparent GIF image. - "+set-image-blocker{pattern}" will send a - checkerboard type pattern (the default). And finally, - "+set-image-blocker{http://xyz.com}" will - send a HTTP temporary redirect to the specified image. This has the - advantage of the icon being being cached by the browser, which will speed - up the display. -

Example usage:

     {+set-image-blocker{blank}}
-     .example.com
-    

Notes:

If you want invisible ads, they need to meet - criteria as matching both images and blocked - actions. And then, "image-blocker" should be set to - "blank" for invisibility. Note you cannot treat HTML pages as - images in most cases. For instance, frames require an HTML page to - display. So a frame that is an ad, typically cannot be treated as an image. - Forcing an "image" in this situation just will not work - reliably. -

7.4.5.13. +limit-connect

Type:

Parameterized.

Typical uses:

By default, Privoxy only allows HTTP CONNECT - requests to port 443 (the standard, secure HTTPS port). Use - "+limit-connect" to disable this altogether, or to allow - more ports. -

Possible values:

Any valid port number, or port number range. -

Example usages:

     +limit-connect{443}                       # This is the default and need not be specified.
-     +limit-connect{80,443}                  # Ports 80 and 443 are OK.
-     +limit-connect{-3, 7, 20-100, 500-}   # Port less than 3, 7, 20 to 100 and above 500 are OK.
-    

Notes:

The CONNECT methods exists in HTTP to allow access to secure websites - (https:// URLs) through proxies. It works very simply: the proxy connects - to the server on the specified port, and then short-circuits its - connections to the client and to the remote proxy. - This can be a big security hole, since CONNECT-enabled proxies can be - abused as TCP relays very easily. -

- If you want to allow CONNECT for more ports than this, or want to forbid - CONNECT altogether, you can specify a comma separated list of ports and - port ranges (the latter using dashes, with the minimum defaulting to 0 and - max to 65K). -

If you don't know what any of this means, there probably is no reason to - change this one. -

7.4.5.14. +prevent-compression

Type:

Boolean.

Typical uses:

Prevent the specified websites from compressing HTTP data. -

Possible values:

N/A -

Example usage:

     {+prevent-compression}
-     .example.com
-    

Notes:

Some websites do this, which can be a problem for - Privoxy, since - "+filter", - "+kill-popups" - and "+gif-deanimate" - will not work on compressed data. This will slow down connections to those - websites, though. Default typically is to turn - "prevent-compression" on. -

7.4.5.15. +session-cookies-only

Type:

Boolean.

Typical uses:

Allow cookies for the current browser session only. -

Possible values:

N/A -

Example usage (disabling):

     {-session-cookies-only}
-     .example.com
-    

Notes:

If websites set cookies, "+session-cookies-only" will make sure - they are erased when you exit and restart your web browser. This makes - profiling cookies useless, but won't break sites which require cookies so - that you can log in for transactions. This is generally turned on for all - sites, and is the recommended setting. -

"+prevent-*-cookies" actions should be turned off as well (see - below), for "+session-cookies-only" to work. Or, else no cookies - will get through at all. For, "persistent" cookies that survive - across browser sessions, see below as well. -

7.4.5.16. +prevent-reading-cookies

Type:

Boolean.

Typical uses:

Explicitly prevent the web server from reading any cookies on your - system. -

Possible values:

N/A -

Example usage:

     {+prevent-reading-cookies}
-     .example.com
-    

Notes:

Often used in conjunction with "+prevent-setting-cookies" to - disable cookies completely. Note that - "+session-cookies-only" - requires these to both be disabled (or else it never gets any cookies to cache). -

For "persistent" cookies to work (i.e. they survive across browser - sessions and reboots), all three cookie settings should be "off" - for the specified sites. -

7.4.5.17. +prevent-setting-cookies

Type:

Boolean.

Typical uses:

Explicitly block the web server from storing cookies on your - system. -

Possible values:

N/A -

Example usage:

     {+prevent-setting-cookies}
-     .example.com
-    

Notes:

Often used in conjunction with "+prevent-reading-cookies" to - disable cookies completely (see above). -

7.4.5.18. +kill-popups

Type:

Boolean.

Typical uses:

Stop those annoying JavaScript pop-up windows! -

Possible values:

N/A -

Example usage:

     {+kill-popups}
-     .example.com
-    

Notes:

"+kill-popups" uses a built in filter to disable pop-ups - that use the window.open() function, etc. This is - one of the first actions processed by Privoxy - as it contacts the remote web server. This action is not always 100% reliable, - and is supplemented by "+filter{popups}". -

7.4.5.19. +send-vanilla-wafer

Type:

Boolean.

Typical uses:

Sends a cookie for every site stating that you do not accept any copyright - on cookies sent to you, and asking them not to track you. -

Possible values:

N/A -

Example usage:

     {+send-vanilla-wafer}
-     .example.com
-    

Notes:

This action only applies if you are using a jarfile - for saving cookies. Of course, this is a (relatively) unique header and - could conceivably be used to track you. -

7.4.5.20. +send-wafer

Type:

Multi-value.

Typical uses:

This allows you to send an arbitrary, user definable cookie. -

Possible values:

User specified cookie name and corresponding value. -

Example usage:

     {+send-wafer{name=value}}
-     .example.com
-    

Notes:

This can be specified multiple times in order to add as many cookies as you - like. -

7.4.5.21. Actions Examples

Note that the meaning of any of the above examples 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". - But, other actions that are turned on the default section do - typically require exceptions to be listed in the lower sections of - actions file. E.g. 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.

Some examples:

Turn off cookies by default, then allow a few through for specified sites - (showing an excerpt from the "default" section of an actions - file ONLY):

 # Excerpt only:
- # Allow cookies to and from the server, but
- # for this browser session ONLY
- { 
-   # other actions normally listed here...
-   -prevent-setting-cookies \
-   -prevent-reading-cookies \
-   +session-cookies-only   \  
- }
- / # match all URLs
-
- # Exceptions to the above, sites that benefit from persistent cookies
- # that are saved from one browser session to the next.
- { -session-cookies-only }
-  .javasoft.com
-  .sun.com
-  .yahoo.com
-  .msdn.microsoft.com
-  .redhat.com
-
-   

-

Now turn off "fast redirects", and then we allow two exceptions:

 # Turn them off (excerpt only)!
- {
-  # other actions normally listed here...
-  +fast-redirects
- }
- / # match all URLs

- # Reverse it for these two sites, which don't work right without it.
- {-fast-redirects}
-  www.ukc.ac.uk/cgi-bin/wac\.cgi\?
-  login.yahoo.com
-   

-

Turn on page filtering according to rules in the defined sections - of default.filter, and make one exception for - Sourceforge: -

 # Run everything through the filter file, using only certain
- # specified sections:
- {
-  # other actions normally listed here...
-  +filter{html-annoyances} +filter{js-annoyances} +filter{kill-popups}\
-  +filter{webbugs} +filter{nimda} +filter{banners-by-size}
- }
- / #match all URLs
-              
- # Then disable filtering of code from all sourceforge domains!
- {-filter}
-  .sourceforge.net
-   

-

Now some URLs that we want "blocked" (normally generates - the "blocked" banner). Typically, the "block" - action is off by default in the upper section of an actions file, then enabled - against certain URLs and patterns in the lower part of the file. Many of these use regular expressions that will expand to match multiple - URLs:

  # Blocklist:
-  {+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 
-  /.*/(ng)?adclient\.cgi
-  /.*/(plain|live|rotate)[-_.]?ads?/
-  /.*/abanners/
-  /autoads/
-   

-

Note that many of these actions have the potential to cause a page to - misbehave, possibly even not to display at all. There are many ways - a site designer may choose to design his site, and what HTTP header - content, and other criteria, he may depend on. There is no way to have hard - and fast rules for all sites. See the Appendix for a brief example on troubleshooting - actions.

7.4.6. 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 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.

Now let's define a few aliases:

 # 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.
-   

-

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):

 # 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
-   

-

The "shop" and "fragile" aliases are often used for - "problem" sites that require most actions to be disabled - in order to function properly.

7.5. 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 - default.filter, located in the config directory.

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.

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".

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:

Stop web pages from displaying annoying messages in the status bar by - deleting such references:

 FILTER: html-annoyances
-
- # 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 <BLINK> tag was a crime!
- #
- s*<blink>|</blink>**ig
-
- # Is this evil? 
- #
- #s/framespacing="?(no|0)"?//ig
- #s/margin(height|width)=[0-9]*//gi
-   

-

Just for kicks, replace any occurrence of "Microsoft" with - "MicroSuck", and have a little fun with topical buzzwords:

 FILTER: fun
-
- s/microsoft(?!.com)/MicroSuck/ig
-
- # Buzzword Bingo:
- #
- s/industry-leading|cutting-edge|award-winning/<font color=red><b>BINGO!</b></font>/ig
-   

-

Kill those pesky little web-bugs:

 # webbugs: Squish WebBugs (1x1 invisible GIFs used for user tracking)
- FILTER: webbugs
-
- s/<img\s+[^>]*?(width|height)\s*=\s*['"]?1\D[^>]*?(width|height)\s*=\s*['"]?1(\D[^>]*?)?>/<!-- Squished WebBug -->/sig
-   

-

7.6. Templates

When Privoxy displays one of its internal - pages, such as a 404 Not Found error page, 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).

The default "Blocked" banner page with the bright red top - banner, is called just "blocked". This - may be customized or replaced with something else if desired.


PrevHomeNext
Starting Privoxy Contacting the Developers, Bug Reporting and Feature -Requests
\ No newline at end of file +
PrevNext
+


+
+ +
+

6. Privoxy + Configuration

+ +

All Privoxy configuration is stored + in text files. These files can be edited with a text editor. Many + important aspects of Privoxy can also be + controlled easily with a web browser.

+ +
+

6.1. Controlling Privoxy with Your Web + Browser

+ +

Privoxy's user interface can be + reached through the special URL http://config.privoxy.org/ (shortcut: http://p.p/), which is a built-in page + and works without Internet access. You will see the following + section:

+ + + + + +
+
+
+
+ +

    Privoxy Menu

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+         ▪  View & change the current + configuration
+         ▪  View the source code version numbers
+         ▪  View the request headers.
+         ▪  Look up which actions apply to a URL and + why
+         ▪  Toggle Privoxy on or off
+         ▪  Documentation
+
+ +

This should be self-explanatory. Note the first item leads to an + editor for the 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.

+ +

"Toggle Privoxy On or Off" is handy for + sites that might 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 manipulation is disabled, i.e. Privoxy acts like a normal forwarding proxy.

+ +

Note that several of the features described above are disabled by + default in Privoxy 3.0.7 beta and + later. Check the configuration + file to learn why and in which cases it's safe to enable them + again.

+
+ +
+

6.2. + Configuration Files Overview

+ +

For Unix, *BSD and Linux, all configuration files are located in + /etc/privoxy/ by default. For MS Windows, + OS/2, and AmigaOS these are all in the same directory as the + Privoxy executable. The name and + number of configuration files has changed from previous versions, and + is subject to change as development progresses.

+ +

The installed defaults provide a reasonable starting point, though + some settings may be aggressive by some standards. For the time being, + the principle configuration files are:

+ +
    +
  • +

    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.

    +
  • + +
  • +

    match-all.action is used to define + which "actions" relating to + banner-blocking, images, pop-ups, content modification, cookie + handling etc should be applied by default. It should be the first + actions file loaded.

    + +

    default.action defines many exceptions + (both positive and negative) from the default set of actions that's + configured in match-all.action. It should + be the second actions file loaded and shouldn't be edited by the + user.

    + +

    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 match-all.action (which you will most probably want + to define sooner or later) are best applied in user.action, where you can preserve them across + upgrades. The file isn't installed by all installers, but you can + easily create it yourself with a text editor.

    + +

    There is also a web based editor that can be accessed from + http://config.privoxy.org/show-status (Shortcut: + http://p.p/show-status) for the various actions + files.

    +
  • + +
  • +

    "Filter files" (the filter file) can be used to re-write the raw + page content, including viewable text as well as embedded HTML and + JavaScript, and whatever else lurks on any given web page. The + filtering jobs are only pre-defined here; whether to apply them or + not is up to the actions files. default.filter includes various filters made + available for use by the developers. Some are much more intrusive + than others, and all should be used with caution. You may define + additional filter files in config as you + can with actions files. We suggest user.filter for any locally defined filters or + customizations.

    +
  • +
+ +

The syntax of the configuration and filter files may change between + different Privoxy versions, unfortunately some enhancements cost + backwards compatibility.

+ +

All files use the "#" character to denote a 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 valid configuration line to + prevent it from being interpreted is called "commenting out" that line. + Blank lines are ignored.

+ +

The actions files and filter files can use Perl style regular expressions for maximum + flexibility.

+ +

After making any changes, there is no need to restart Privoxy in order for the changes to take effect. + Privoxy detects such changes + automatically. Note, however, that it may take one or two additional + requests for the change to take effect. When changing the listening + address of Privoxy, these "wake up" requests must obviously be sent to the + old listening + address.

+ +

While under development, the configuration content is subject to + change. The below documentation may not be accurate by the time you + read this. Also, what constitutes a "default" setting, may change, so please check all your + configuration files on important issues.

+
+
+ + + +