X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=doc%2Fsource%2Fuser-manual.sgml;h=2bd092105a60e9fd61a009273d3b2bd03a6e6862;hp=fc78f12da39f682d1e3663f3c758e0de603a987c;hb=979620bb4c7aaaeb96f07b73b823c686d83cf14c;hpb=7200b36362d29ad2961b1d89321df46263d0f3e5 diff --git a/doc/source/user-manual.sgml b/doc/source/user-manual.sgml index fc78f12d..2bd09210 100644 --- a/doc/source/user-manual.sgml +++ b/doc/source/user-manual.sgml @@ -10,14 +10,15 @@ + - - + + - - + + @@ -30,15 +31,11 @@ Privoxy"> ]> - Copyright &my-copy; 2001-2016 by + Copyright &my-copy; 2001-2020 by Privoxy Developers -$Id: user-manual.sgml,v 2.217 2017/01/23 12:59:45 fabiankeil Exp $ - -OS/2 - - - First, make sure that no previous installations of - Junkbuster and / or - Privoxy are left on your - system. Check that no Junkbuster - or Privoxy objects are in - your startup folder. - - - - - Then, just double-click the WarpIN self-installing archive, which will - guide you through the installation process. A shadow of the - Privoxy executable will be placed in your - startup folder so it will start automatically whenever OS/2 starts. - - - - The directory you choose to install Privoxy - into will contain all of the configuration files. - - - Mac OS X @@ -346,30 +316,155 @@ How to install the binary packages depends on your operating system: Building from Source - The most convenient way to obtain the Privoxy sources - is to download the source tarball from our - project download - 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. - + The most convenient way to obtain the Privoxy source + code is to download the source tarball from our + + project download page, + or you can get the up-to-the-minute, possibly unstable, development version from + https://www.privoxy.org/. &buildsource; + + Windows + + Setup + + Install the Cygwin utilities needed to build Privoxy. + If you have a 64 bit CPU (which most people do by now), get the + Cygwin setup-x86_64.exe program here + (the .sig file is here). + + + Run the setup program and from View / Category select: + + + Devel + autoconf 2.5 + automake 1.15 + binutils + cmake + gcc-core + gcc-g++ + git + make + mingw64-i686-gcc-core + mingw64-i686-zlib + Editors + vim + Libs + libxslt: GNOME XSLT library (runtime) + Net + curl + openssh + Text + docbook-dssl + docbook-sgml31 + docbook-utils + openjade + Utils + gnupg + Web + w3m + + + + If you haven't already downloaded the Privoxy source code, get it now: + + + mkdir <root-dir> + cd <root-dir> + git clone https://www.privoxy.org/git/privoxy.git + + + + Get the source code (.zip or .tar.gz) for tidy from + + https://github.com/htacg/tidy-html5/releases, + unzip into <root-dir> and build the software: + + + cd <root-dir> + cd tidy-html5-x.y.z/build/cmake + cmake ../.. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIB:BOOL=OFF -DCMAKE_INSTALL_PREFIX=/usr/local + make && make install + + + + If you want to be able to make a Windows release package, get the NSIS .zip file from + + + https://sourceforge.net/projects/nsis/files/NSIS%203/ + and extract the NSIS directory to privoxy/windows. + Then edit the windows/GNUmakefile to set the location of the NSIS executable - eg: + + +# Path to NSIS +MAKENSIS = ./nsis/makensis.exe + + + + + Build + + + To build just the Privoxy executable and not the whole installation package, do: + + + cd <root-dir>/privoxy + ./windows/MYconfigure && make + + + + Privoxy uses the GNU Autotools + for building software, so the process is: + + + $ autoheader # creates config.h.in + $ autoconf # uses config.h.in to create the configure shell script + $ ./configure [options] # creates GNUmakefile + $ make [options] # builds the program + + + + The usual configure options for building a native Windows application under cygwin are + + + + --host=i686-w64-mingw32 + --enable-mingw32 + --enable-zlib + --enable-static-linking + --disable-pthread + --disable-dynamic-pcre + + + + You can set the CFLAGS and LDFLAGS envars before + running configure to set compiler and linker flags. For example: + + + + $ export CFLAGS="-O2" # set gcc optimization level + $ export LDFLAGS="-Wl,--nxcompat" # Enable DEP + $ ./configure --host=i686-w64-mingw32 --enable-mingw32 --enable-zlib \ + > --enable-static-linking --disable-pthread --disable-dynamic-pcre + $ make # build Privoxy + + + + See the Developer's Manual + for building a Windows release package. + + + + + + Keeping your Installation Up-to-Date @@ -412,7 +507,6 @@ How to install the binary packages depends on your operating system: versions of Privoxy: - @@ -497,11 +591,9 @@ How to install the binary packages depends on your operating system: that filtering does not work on compressed pages, so if you use, or want to use, filtering, you will need to force compression off. Example: - { +filter{google} +prevent-compression } .google. - Or if you use a number of filters, or filter many sites, you may just want to turn off compression for all sites in @@ -529,14 +621,13 @@ How to install the binary packages depends on your operating system: --> - Quickstart to Using Privoxy - + @@ -636,7 +727,6 @@ How to install the binary packages depends on your operating system: - @@ -713,7 +803,6 @@ How to install the binary packages depends on your operating system: set-image-blocker: - @@ -788,7 +877,6 @@ How to install the binary packages depends on your operating system: - Advanced users will eventually want to explore &my-app; @@ -834,7 +922,6 @@ How to install the binary packages depends on your operating system: A quick and simple step by step example: - @@ -858,7 +945,6 @@ How to install the binary packages depends on your operating system: -
Actions Files in Use @@ -869,7 +955,6 @@ How to install the binary packages depends on your operating system:
-
@@ -904,7 +989,6 @@ How to install the binary packages depends on your operating system: - This is a very crude and simple example. There might be good reasons to use a @@ -952,7 +1036,6 @@ How to install the binary packages depends on your operating system: -
Proxy Configuration Showing Mozilla/Netscape HTTP and HTTPS (SSL) Settings @@ -964,7 +1047,6 @@ How to install the binary packages depends on your operating system:
-
@@ -973,7 +1055,6 @@ How to install the binary packages depends on your operating system: Tools -> Options -> Advanced -> Network ->Connection -> Settings - @@ -982,7 +1063,6 @@ How to install the binary packages depends on your operating system: Edit -> Preferences -> General -> Connection Settings -> Manual Proxy Configuration - @@ -996,7 +1076,6 @@ How to install the binary packages depends on your operating system: Edit -> Preferences -> Advanced -> Proxies -> HTTP Proxy - @@ -1016,7 +1095,6 @@ How to install the binary packages depends on your operating system: -
Proxy Configuration Showing Internet Explorer HTTP and HTTPS (Secure) Settings @@ -1028,7 +1106,6 @@ How to install the binary packages depends on your operating system:
-
@@ -1056,11 +1133,9 @@ How to install the binary packages depends on your operating system: /etc/privoxy/config as its main configuration file. - # /etc/init.d/privoxy start - @@ -1079,11 +1154,9 @@ How to install the binary packages depends on your operating system: To start Privoxy manually, run: - # service privoxy onestart - @@ -1109,11 +1182,9 @@ Click on the &my-app; Icon to start Privoxy. If no co Example Unix startup command: - # /usr/sbin/privoxy --user privoxy /etc/privoxy/config - Note that if you installed Privoxy through a package manager, the package will probably contain a platform-specific @@ -1122,16 +1193,6 @@ Example Unix startup command: - -OS/2 - - During installation, Privoxy is configured to - start automatically when the system restarts. You can start it manually by - double-clicking on the Privoxy icon in the - Privoxy folder. - - - Mac OS X @@ -1260,7 +1321,6 @@ must find a better place for this paragraph command-line options: - @@ -1376,7 +1436,6 @@ must find a better place for this paragraph - On MS Windows only there are two additional @@ -1413,20 +1472,18 @@ for details. (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 or toggle the tags that can be set based on the client's address         ▪  View the request headers. @@ -1484,9 +1541,9 @@ for details. 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 + For Unix, *BSD and GNU/Linux, all configuration files are located in + /etc/privoxy/ by default. For MS Windows + these are all in the same directory as the Privoxy executable. @@ -1498,13 +1555,12 @@ for details. principle configuration files are: - The main configuration file is named config - on Linux, Unix, BSD, OS/2, and AmigaOS and config.txt + on GNU/Linux, Unix, BSD, and config.txt on Windows. This is a required file. @@ -1556,7 +1612,6 @@ for details. - The syntax of the configuration and filter files may change between different @@ -1642,7 +1697,6 @@ for details. are three action files included with Privoxy with differing purposes: - @@ -1705,7 +1759,6 @@ for details. The default profiles, and their associated actions, as pre-defined in default.action are: - Default Configurations @@ -1823,11 +1876,9 @@ for details.
-
-
The list of actions files to be used are defined in the main configuration @@ -1951,14 +2002,12 @@ for details. might look like: - { +handle-as-image +block{Banner ads.} } # Block these as if they were images. Send no block page. banners.example.com media.example.com/.*banners .example.com/images/ads/ - You can trace this process for URL patterns and any given URL by visiting + + When compiled with FEATURE_PCRE_HOST_PATTERNS patterns can be prefixed with + PCRE-HOST-PATTERN: in which case full regular expression + (PCRE) can be used for the host pattern as well. + +
@@ -2278,7 +2333,7 @@ for details. This regular expression is conditional so it will match any page named index.html regardless of path which in this case can have one or more /'s. And this one must contain exactly - .html (but does not have to end with that!). + .html (and end with that!). @@ -2290,6 +2345,7 @@ for details. that contains any of the words ads, banner, banners (because of the ?) or junk. The path does not have to end in these words, just contain them. + The path has to contain at least two slashes (including the one at the beginning). @@ -2434,7 +2490,6 @@ for details. Example: - # If the admin defined the client-specific-tag circumvent-blocks, # and the request comes from a client that previously requested @@ -2447,7 +2502,6 @@ CLIENT-TAG:^circumvent-blocks$ # the previous one. {+block{Nobody is supposed to request this.}} example.org/blocked-example-page - @@ -2469,7 +2523,6 @@ example.org/blocked-example-page following patterns, and -block means don't block URLs that match the following patterns, even if +block previously applied. - @@ -2485,18 +2538,15 @@ example.org/blocked-example-page Actions fall into three categories: - Boolean, i.e the action can only be enabled or disabled. Syntax: - +name # enable action name -name # disable action name - Example: +handle-as-image @@ -2508,12 +2558,10 @@ example.org/blocked-example-page 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 - 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. @@ -2532,13 +2580,11 @@ example.org/blocked-example-page that can be executed for the same request repeatedly, like adding multiple headers, or filtering through multiple filters. Syntax: - +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} @@ -2546,7 +2592,6 @@ example.org/blocked-example-page - If nothing is specified in any actions file, no actions are @@ -2641,7 +2686,6 @@ example.org/blocked-example-page Example usage: - # Add a DNT ("Do not track") header to all requests, # event to those that already have one. # @@ -2652,7 +2696,6 @@ example.org/blocked-example-page # header may make user-tracking easier. {+add-header{DNT: 1}} / - @@ -2741,7 +2784,6 @@ example.org/blocked-example-page Example usage (section): - {+block{No nasty stuff for you.}} # Block and replace with "blocked" page .nasty-stuff.example.com @@ -2754,7 +2796,6 @@ example.org/blocked-example-page {+block{Layered ads.} +handle-as-empty-document} # Block and then ignore adserver.example.net/.*\.js$ - @@ -2825,9 +2866,7 @@ example.org/blocked-example-page Example usage: - +change-x-forwarded-for{block} - @@ -2905,13 +2944,11 @@ example.org/blocked-example-page Example usage (section): - # Hide Tor exit notation in Host and Referer Headers {+client-header-filter{hide-tor-exit-notation}} / - - + @@ -2980,7 +3017,6 @@ example.org/blocked-example-page Example usage (section): - # Tag every request with the User-Agent header {+client-header-tagger{user-agent}} @@ -3004,9 +3040,8 @@ TAG:^User-Agent: RPM APT-HTTP/ TAG:^User-Agent: fetch libfetch/ TAG:^User-Agent: Ubuntu APT-HTTP/ TAG:^User-Agent: MPlayer/ - - - + + # Tag all requests with the Range header set {+client-header-tagger{range-requests}} @@ -3020,8 +3055,21 @@ TAG:^User-Agent: MPlayer/ # parts of multimedia files. {-filter -deanimate-gifs} TAG:^RANGE-REQUEST$ - - + + + +# Tag all requests with the client IP address +# +# (Technically the client IP address isn't included in the +# client headers but client-header taggers can set it anyway. +# For details see the tagger in default.filter) +{+client-header-tagger{client-ip-address}} +/ + +# Change forwarding settings for requests coming from address 10.0.0.1 +{+forward-override{forward-socks5 127.0.1.2:2222 .}} +TAG:^IP-ADDRESS: 10\.0\.0\.1$ + @@ -3121,7 +3169,6 @@ TAG:^RANGE-REQUEST$ Example usage (sections): - # Check if www.example.net/ really uses valid XHTML { +content-type-overwrite{application/xml} } www.example.net/ @@ -3131,7 +3178,6 @@ www.example.net/ www.example.net/.*\.css$ www.example.net/.*style - @@ -3210,12 +3256,10 @@ new action Example usage (section): - # Block the non-existent "Privacy-Violation:" client header { +crunch-client-header{Privacy-Violation:} } / - - + @@ -3292,14 +3336,13 @@ new action Example usage (section): - # Let the browser revalidate cached documents but don't # allow the server to use the revalidation headers for user tracking. {+hide-if-modified-since{-60} \ +overwrite-last-modified{randomize} \ +crunch-if-none-match} -/ - +/ + @@ -3367,9 +3410,7 @@ new action Example usage: - +crunch-incoming-cookies - @@ -3446,11 +3487,10 @@ new action Example usage (section): - # Crunch server headers that try to prevent caching { +crunch-server-header{no-cache} } -/ - +/ + @@ -3517,9 +3557,7 @@ new action Example usage: - +crunch-outgoing-cookies - @@ -3587,14 +3625,82 @@ new action Example usage: - +deanimate-gifs{last} - + + + +delay-response + + + + Typical use: + + Delay responses to the client to reduce the load + + + + + Effect: + + + Delays responses to the client by sending the response in ca. 10 byte chunks. + + + + + + Type: + + + Parameterized. + + + + + Parameter: + + + Number of milliseconds + + + + + + Notes: + + + Sometimes when JavaScript code is used to fetch advertisements + it doesn't respect Privoxy's blocks and retries to fetch the + same resource again causing unnecessary load on the client. + + + This action delays responses to the client and can be combined + with blocks + to slow down the JavaScript code, thus reducing + the load on the client. + + + When used without blocks + the action can also be used to simulate a slow internet connection. + + + + + + Example usage: + + +delay-response{100} + + + + + + downgrade-http-version @@ -3659,16 +3765,15 @@ new action Example usage (section): - {+downgrade-http-version} problem-host.example.com - + external-filter @@ -3749,9 +3854,7 @@ problem-host.example.com Example usage: - +external-filter{fancy-filter} - @@ -3856,7 +3959,7 @@ problem-host.example.com looks for the string http://, either in plain text (invalid but often used) or encoded as http%3a//. Some sites use their own URL encoding scheme, encrypt the address - of the target server or replace it with a database id. In theses cases + of the target server or replace it with a database id. In these cases fast-redirects is fooled and the request reaches the redirection server where it probably gets logged. @@ -3866,14 +3969,12 @@ problem-host.example.com Example usage: - { +fast-redirects{simple-check} } one.example.com { +fast-redirects{check-decoded-url} } another.example.com/testing - @@ -4015,112 +4116,112 @@ problem-host.example.com - +filter{js-annoyances} # Get rid of particularly annoying JavaScript abuse. + +filter{js-annoyances} # Get rid of particularly annoying JavaScript abuse. - +filter{js-events} # Kill JavaScript event bindings and timers (Radically destructive! Only for extra nasty sites). + +filter{js-events} # Kill JavaScript event bindings and timers (Radically destructive! Only for extra nasty sites). - +filter{html-annoyances} # Get rid of particularly annoying HTML abuse. + +filter{html-annoyances} # Get rid of particularly annoying HTML abuse. - +filter{content-cookies} # Kill cookies that come in the HTML or JS content. + +filter{content-cookies} # Kill cookies that come in the HTML or JS content. - +filter{refresh-tags} # Kill automatic refresh tags if refresh time is larger than 9 seconds. + +filter{refresh-tags} # Kill automatic refresh tags if refresh time is larger than 9 seconds. - +filter{unsolicited-popups} # Disable only unsolicited pop-up windows. + +filter{unsolicited-popups} # Disable only unsolicited pop-up windows. - +filter{all-popups} # Kill all popups in JavaScript and HTML. + +filter{all-popups} # Kill all popups in JavaScript and HTML. - +filter{img-reorder} # Reorder attributes in <img> tags to make the banners-by-* filters more effective. + +filter{img-reorder} # Reorder attributes in <img> tags to make the banners-by-* filters more effective. - +filter{banners-by-size} # Kill banners by size. + +filter{banners-by-size} # Kill banners by size. - +filter{banners-by-link} # Kill banners by their links to known clicktrackers. + +filter{banners-by-link} # Kill banners by their links to known clicktrackers. - +filter{webbugs} # Squish WebBugs (1x1 invisible GIFs used for user tracking). + +filter{webbugs} # Squish WebBugs (1x1 invisible GIFs used for user tracking). - +filter{tiny-textforms} # Extend those tiny textareas up to 40x80 and kill the hard wrap. + +filter{tiny-textforms} # Extend those tiny textareas up to 40x80 and kill the hard wrap. - +filter{jumping-windows} # Prevent windows from resizing and moving themselves. + +filter{jumping-windows} # Prevent windows from resizing and moving themselves. - +filter{frameset-borders} # Give frames a border and make them resizable. + +filter{frameset-borders} # Give frames a border and make them resizable. - +filter{iframes} # Removes all detected iframes. Should only be enabled for individual sites. + +filter{iframes} # Removes all detected iframes. Should only be enabled for individual sites. - +filter{demoronizer} # Fix MS's non-standard use of standard charsets. + +filter{demoronizer} # Fix MS's non-standard use of standard charsets. - +filter{shockwave-flash} # Kill embedded Shockwave Flash objects. + +filter{shockwave-flash} # Kill embedded Shockwave Flash objects. - +filter{quicktime-kioskmode} # Make Quicktime movies saveable. + +filter{quicktime-kioskmode} # Make Quicktime movies saveable. - +filter{fun} # Text replacements for subversive browsing fun! + +filter{fun} # Text replacements for subversive browsing fun! - +filter{crude-parental} # Crude parental filtering. Note that this filter doesn't work reliably. + +filter{crude-parental} # Crude parental filtering. Note that this filter doesn't work reliably. - +filter{ie-exploits} # Disable some known Internet Explorer bug exploits. + +filter{ie-exploits} # Disable some known Internet Explorer bug exploits. - +filter{site-specifics} # Cure for site-specific problems. Don't apply generally! + +filter{site-specifics} # Cure for site-specific problems. Don't apply generally! - +filter{no-ping} # Removes non-standard ping attributes in <a> and <area> tags. + +filter{no-ping} # Removes non-standard ping attributes in <a> and <area> tags. - +filter{google} # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement. + +filter{google} # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement. - +filter{yahoo} # CSS-based block for Yahoo text ads. Also removes a width limitation. + +filter{yahoo} # CSS-based block for Yahoo text ads. Also removes a width limitation. - +filter{msn} # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation. + +filter{msn} # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation. - +filter{blogspot} # Cleans up some Blogspot blogs. Read the fine print before using this. + +filter{blogspot} # Cleans up some Blogspot blogs. Read the fine print before using this. @@ -4190,11 +4291,9 @@ new action Example usage: - +force-text-mode - - + @@ -4323,7 +4422,6 @@ new action Example usage: - # Use an ssh tunnel for requests previously tagged as # User-Agent: fetch libfetch/2.0 and make sure @@ -4340,8 +4438,7 @@ new action -overwrite-last-modified \ } TAG:^User-Agent: fetch libfetch/2\.0$ - - + @@ -4413,13 +4510,11 @@ new action Example usage: - # Block all documents on example.org that end with ".js", # but send an empty document instead of the usual HTML message. {+block{Blocked JavaScript} +handle-as-empty-document} example.org/.*\.js$ - - + @@ -4494,7 +4589,6 @@ example.org/.*\.js$ Example usage (sections): - # Generic image extensions: # {+handle-as-image} @@ -4506,7 +4600,6 @@ example.org/.*\.js$ {+block{Nasty banners.} +handle-as-image} nasty-banner-server.example.com/junk.cgi\?output=trash - @@ -4586,13 +4679,12 @@ new action Example usage (section): - # Pretend to use Canadian language settings. {+hide-accept-language{en-ca} \ +hide-user-agent{Mozilla/5.0 (X11; U; OpenBSD i386; en-CA; rv:1.8.0.4) Gecko/20060628 Firefox/1.5.0.4} \ } -/ - +/ + @@ -4676,13 +4768,11 @@ new action Example usage: - # Disarm the download link in Sourceforge's patch tracker { -filter \ +content-type-overwrite{text/plain}\ +hide-content-disposition{block} } .sourceforge.net/tracker/download\.php - @@ -4765,13 +4855,11 @@ new action Example usage (section): - # Let the browser revalidate but make tracking based on the time less likely. {+hide-if-modified-since{-60} \ +overwrite-last-modified{randomize} \ +crunch-if-none-match} / - @@ -4840,10 +4928,9 @@ new action Example usage: - - +hide-from-header{block} or + +hide-from-header{block} + or +hide-from-header{spam-me-senseless@sittingduck.example.com} - @@ -4944,10 +5031,9 @@ new action Example usage: - - +hide-referrer{forge} or + +hide-referrer{forge} + or +hide-referrer{http://www.yahoo.com/} - @@ -5026,11 +5112,157 @@ new action Example usage: - +hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)} + + + + + + + + +https-inspection + + + + Typical use: + + Filter encrypted requests and responses + + + + + Effect: + + + Encrypted requests are decrypted, filtered and forwarded encrypted. + + + + + + Type: + + + Boolean. + + + + + Parameter: + + + N/A + + + + + + Notes: + + + This action allows &my-app; to filter encrypted requests and responses. + For this to work &my-app; has to generate a certificate and send it + to the client which has to accept it. + + + Before this works the directives in the + HTTPS inspection section + of the config file have to be configured. + + + Note that the action has to be enabled based on the CONNECT + request which doesn't contain a path. Enabling it based on + a pattern with path doesn't work as the path is only seen + by &my-app; if the action is already enabled. + + + This is an experimental feature. + + + + + + Example usage (section): + + {+https-inspection} +www.example.com + + + + + + + + + +ignore-certificate-errors + + + + Typical use: + + Filter encrypted requests and responses without verifying the certificate + + + + + Effect: + + + Encrypted requests are forwarded to sites without verifying the certificate. + + + Type: + + + Boolean. + + + + + Parameter: + + + N/A + + + + + + Notes: + + + When the + +https-inspection + action is used &my-app; by default verifies that the remote site uses a valid + certificate. + + + If the certificate can't be validated by &my-app; the connection is aborted. + + + This action disables the certificate check so requests to sites + with certificates that can't be validated are allowed. + + + Note that enabling this action allows Man-in-the-middle attacks. + + + + + + Example usage: + + + {+ignore-certificate-errors} + www.example.org + + + @@ -5104,13 +5336,11 @@ new action - +limit-connect{443} # Port 443 is OK. +limit-connect{80,443} # Ports 80 and 443 are OK. +limit-connect{-3, 7, 20-100, 500-} # Ports less than 3, 7, 20 to 100 and above 500 are OK. +limit-connect{-} # All ports are OK +limit-connect{,} # No HTTPS/SSL traffic is allowed - @@ -5195,10 +5425,7 @@ new action Example usages: - - +limit-cookie-lifetime{60} - - + +limit-cookie-lifetime{60} @@ -5274,9 +5501,10 @@ new action Note that some (rare) ill-configured sites don't handle requests for uncompressed documents correctly. Broken PHP applications tend to send an empty document body, - some IIS versions only send the beginning of the content. If you enable - prevent-compression per default, you might want to add - exceptions for those sites. See the example for how to do that. + some IIS versions only send the beginning of the content and some content delivery + networks let the connection time out. + If you enable prevent-compression per default, you might + want to add exceptions for those sites. See the example for how to do that. @@ -5284,7 +5512,6 @@ new action Example usage (sections): - # Selectively turn off compression, and enable a filter # @@ -5303,7 +5530,6 @@ new action # { -prevent-compression } .compusa.com/ - @@ -5395,13 +5621,11 @@ new action Example usage: - # Let the browser revalidate without being tracked across sessions { +hide-if-modified-since{-60} \ +overwrite-last-modified{randomize} \ +crunch-if-none-match} / - @@ -5492,7 +5716,6 @@ new action Example usages: - # Replace example.com's style sheet with another one { +redirect{http://localhost/css-replacements/example.com.css} } example.com/stylesheet\.css @@ -5533,7 +5756,6 @@ i[0-9][0-9][0-9][0-9]*/ # to the local version delivered by Privoxy {+redirect{s@^http://www@http://config@}} www.privoxy.org/user-manual/ - @@ -5607,15 +5829,13 @@ www.privoxy.org/user-manual/ Example usage (section): - {+server-header-filter{html-to-xml}} example.org/xml-instance-that-is-delivered-as-html {+server-header-filter{xml-to-html}} example.org/instance-that-is-delivered-as-xml-but-is-not - - + @@ -5692,7 +5912,6 @@ example.org/instance-that-is-delivered-as-xml-but-is-not Example usage (section): - # Tag every request with the content type declared by the server {+server-header-tagger{content-type}} @@ -5705,8 +5924,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not # silly example. {+external-filter{rotate-image} +force-text-mode} TAG:^image/ - - + @@ -5799,9 +6017,7 @@ TAG:^image/ Example usage: - +session-cookies-only - @@ -5901,21 +6117,15 @@ TAG:^image/ Built-in pattern: - +set-image-blocker{pattern} - Redirect to the BSD daemon: - +set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif} - Redirect to the built-in pattern for better caching: - +set-image-blocker{http://config.privoxy.org/send-banner?type=pattern} - @@ -5982,7 +6192,6 @@ TAG:^image/ Now let's define some aliases... - # Useful custom aliases we can use later. # @@ -6010,7 +6219,6 @@ TAG:^image/ # c0 = +crunch-all-cookies c1 = -crunch-all-cookies - ...and put them to use. These sections would appear in the lower part of an @@ -6018,7 +6226,6 @@ TAG:^image/ up for the / pattern): - # These sites are either very complex or very keen on # user data and require minimal interference to work: @@ -6042,7 +6249,6 @@ TAG:^image/ {-filter{all-popups} -filter{unsolicited-popups}} .dabs.com .overclockers.co.uk - Aliases like shop and fragile are typically used for @@ -6093,7 +6299,6 @@ hal stop here multiple lines with line continuation. - { \ +change-x-forwarded-for{block} \ @@ -6101,8 +6306,7 @@ hal stop here +set-image-blocker{pattern} \ } / # Match all URLs - - + The default behavior is now set. @@ -6129,14 +6333,12 @@ hal stop here that prevents older &my-app; versions from reading the file: - ########################################################################## # Settings -- Don't change! For internal Privoxy use ONLY. ########################################################################## {{settings}} for-privoxy-version=3.0.11 - After that comes the (optional) alias section. We'll use the example @@ -6144,7 +6346,6 @@ for-privoxy-version=3.0.11 that also explains why and how aliases are used: - ########################################################################## # Aliases @@ -6164,7 +6365,6 @@ for-privoxy-version=3.0.11 # fragile = -block -filter -crunch-all-cookies -fast-redirects -hide-referrer shop = -crunch-all-cookies -filter{all-popups} - The first of our specialized sections is concerned with fragile @@ -6175,7 +6375,6 @@ for-privoxy-version=3.0.11 of actions explicitly: - ########################################################################## # Exceptions for sites that'll break under the default action set: @@ -6187,7 +6386,6 @@ for-privoxy-version=3.0.11 .office.microsoft.com # surprise, surprise! .windowsupdate.microsoft.com mail.google.com - Shopping sites are not as fragile, but they typically @@ -6195,7 +6393,6 @@ mail.google.com carts or item details. Again, we'll use a pre-defined alias: - # Shopping sites: # @@ -6204,7 +6401,6 @@ mail.google.com .worldpay.com # for quietpc.com .jungle.com .scan.co.uk - The fast-redirects @@ -6212,7 +6408,6 @@ mail.google.com breaks some sites. So disable it for popular sites where we know it misbehaves: - { -fast-redirects } login.yahoo.com @@ -6221,7 +6416,6 @@ edit.*.yahoo.com .altavista.com/.*(like|url|link):http .altavista.com/trans.*urltext=http .nytimes.com - It is important that Privoxy knows which @@ -6236,7 +6430,6 @@ edit.*.yahoo.com good start: - ########################################################################## # Images: @@ -6247,7 +6440,6 @@ edit.*.yahoo.com # { +handle-as-image } /.*\.(gif|jpe?g|png|bmp|ico)$ - And then there are known banner sources. They often use scripts to @@ -6264,7 +6456,6 @@ edit.*.yahoo.com action before, it still applies and needn't be repeated: - # Known ad generators: # @@ -6276,7 +6467,6 @@ ar.atwola.com .a[0-9].yimg.com/(?:(?!/i/).)*$ bs*.gsanet.com .qkimg.net - One of the most important jobs of Privoxy @@ -6296,7 +6486,6 @@ bs*.gsanet.com to keep the example short: - ########################################################################## # Block these fine banners: @@ -6315,7 +6504,6 @@ count*. # Site-specific patterns (abbreviated): # .hitbox.com - It's quite remarkable how many advertisers actually call their banner @@ -6345,7 +6533,6 @@ count*. with no block action applying. - ########################################################################## # Save some innocent victims of the above generic block patterns: @@ -6369,7 +6556,6 @@ ad[ud]*. # (adult.* and add.*) # www.globalintersec.com/adv # (adv = advanced) www.ugu.com/sui/ugu/adv - Filtering source code can have nasty side effects, @@ -6379,7 +6565,6 @@ www.ugu.com/sui/ugu/adv disables all filters in one fell swoop! - # Don't filter code! # @@ -6389,7 +6574,6 @@ bugzilla. developer. wiki. .sourceforge.net - The actual default.action is of course much more @@ -6423,10 +6607,8 @@ wiki. - # My user.action file. <fred@example.com> - As aliases are local to the actions @@ -6434,7 +6616,6 @@ wiki. default.action, unless you repeat them here: - # Aliases are local to the file they are defined in. # (Re-)define aliases for this file: @@ -6465,8 +6646,6 @@ allow-ads = -block -filter{banners-by-size} -filter{banners-by-link} # MIME types. We want the browser to force these to be text documents. handle-as-text = -filter +-content-type-overwrite{text/plain} +-force-text-mode -hide-content-disposition - - 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 @@ -6476,30 +6655,25 @@ handle-as-text = -filter +-filter } .your-home-banking-site.com - Some file types you may not want to filter for various reasons: - # Technical documentation is likely to contain strings that might # erroneously get altered by the JavaScript-oriented filters: @@ -6511,7 +6685,6 @@ handle-as-text = -filter +-block action. Say you've @@ -6524,12 +6697,10 @@ stupid-server.example.com/ in default.action anyway: - { +block{Nasty ads.} } www.example.com/nasty-ads/sponsor\.gif another.example.net/more/junk/here/ - The URLs of dynamically generated banners, especially from large banner @@ -6543,14 +6714,12 @@ stupid-server.example.com/ browser. Use cautiously. - { +block-as-image } .doubleclick.net .fastclick.net /Realmedia/ads/ ar.atwola.com/ - Now you noticed that the default configuration breaks Forbes Magazine, @@ -6564,13 +6733,11 @@ stupid-server.example.com/ that misbehave, and add those to our personalized list of troublemakers: - { fragile } .forbes.com webmail.example.com .mybank.com - You like the fun text replacements in default.filter, @@ -6579,11 +6746,9 @@ stupid-server.example.com/ update-safe config, once and for all: - { +filter{fun} } / # For ALL sites! - Note that the above is not really a good idea: There are exceptions @@ -6600,13 +6765,11 @@ stupid-server.example.com/ sites that you feel provide value to you: - { allow-ads } .sourceforge.net .slashdot.org .osdn.net - Note that allow-ads has been aliased to @@ -6622,11 +6785,9 @@ stupid-server.example.com/ it should I choose to. - { handle-as-text } /.*\.sh$ - user.action is generally the best place to define @@ -6638,11 +6799,9 @@ stupid-server.example.com/ paths and patterns: - { +set-image-blocker{blank} } / # ALL sites - @@ -6754,9 +6913,7 @@ stupid-server.example.com/ like this: - FILTER: foo Replace all "foo" with "bar" - Below that line, and up to the next header line, come the jobs that @@ -6822,9 +6979,7 @@ stupid-server.example.com/ needed: - s/foo/bar/ - But wait! Didn't the comment say that all occurrences @@ -6833,17 +6988,14 @@ stupid-server.example.com/ we'll need to add the g option: - s/foo/bar/g - Our complete filter now looks like this: - + 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 @@ -6852,14 +7004,12 @@ s/foo/bar/g - 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 @@ -6941,12 +7091,10 @@ s|(<script.*)document\.referrer(.*</script>)|$1"Not Your Business!"$2|U this time only point out the constructs of special interest: - # The status bar is for displaying link targets, not pointless blahblah # s/window\.status\s*=\s*(['"]).*?\1/dUmMy=1/ig - \s stands for whitespace characters (space, tab, newline, @@ -6969,12 +7117,10 @@ s/window\.status\s*=\s*(['"]).*?\1/dUmMy=1/ig you move your mouse over links. - # Kill OnUnload popups. Yummy. Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html # s/(<body [^>]*)onunload(.*>)/$1never$2/iU - Including the @@ -6995,14 +7141,12 @@ s/(<body [^>]*)onunload(.*>)/$1never$2/iU The last example is from the fun department: - FILTER: fun Fun text replacements # Spice the daily news: # s/microsoft(?!\.com)/MicroSuck/ig - Note the (?!\.com) part (a so-called negative lookahead) @@ -7012,7 +7156,6 @@ s/microsoft(?!\.com)/MicroSuck/ig still replacing the word everywhere else. - # Buzzword Bingo (example for extended regex syntax) # @@ -7028,7 +7171,6 @@ s* industry[ -]leading \ | unrivalled \ *<font color="red"><b>BINGO!</b></font> \ *igx - The x option in this job turns on extended syntax, and allows for @@ -7063,6 +7205,7 @@ pre-defined filters for your convenience: The purpose of this filter is to get rid of particularly annoying JavaScript abuse. To that end, it + @@ -7086,7 +7229,6 @@ pre-defined filters for your convenience: - Use with caution. This is an aggressive filter, and can break sites that rely heavily on JavaScript. @@ -7310,7 +7452,7 @@ pre-defined filters for your convenience: sometimes appear on some pages, or user agents that don't correct for this on the fly. @@ -7545,7 +7687,7 @@ pre-defined filters for your convenience: &my-app; will temporary store the content to filter in the temporary-directory. - + EXTERNAL-FILTER: cat Pointless example filter that doesn't actually modify the content /bin/cat @@ -7571,7 +7713,6 @@ EXTERNAL-FILTER: rotate-image Rotate an image by 180 degree. Test filter with li EXTERNAL-FILTER: citation-needed Adds a "[citation needed]" tag to an image. The coordinates may need adjustment. /usr/local/bin/convert - -pointsize 16 -fill white -annotate +17+418 "[citation needed]" - - @@ -7644,14 +7785,12 @@ EXTERNAL-FILTER: citation-needed Adds a "[citation needed]" tag to an image. The is 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 @@ -7659,9 +7798,7 @@ EXTERNAL-FILTER: citation-needed Adds a "[citation needed]" tag to an image. The will disappear, leaving nothing but an empty comment: - <!-- --> - There's also an if-then-else construct and an #include @@ -7706,17 +7843,37 @@ Requests Privoxy is free software; you can - redistribute it and/or modify it under the terms of the - GNU General Public License, version 2, - as published by the Free Software Foundation and included in - the next section. + redistribute and/or modify its source code under the terms + of the GNU General Public License + as published by the Free Software Foundation, either version 2 + of the license, or (at your option) any later version. + + + + The same is true for Privoxy binaries + unless they are linked with a + mbed TLS version + that is licensed under the Apache 2.0 license in which + case you can redistribute and/or modify the Privoxy + binaries under the terms of the GNU General Public License + as published by the Free Software Foundation, either version 3 + of the license, or (at your option) any later version. + + + + Both licenses are included in the next section. License - + +GNU General Public License version 2 - + + +GNU General Public License version 3 + + @@ -7805,35 +7962,35 @@ Requests and then some examples: - + . - Matches any single character, e.g. a, A, 4, :, or @. - + - + ? - The preceding character or expression is matched ZERO or ONE times. Either/or. - + - + + - The preceding character or expression is matched ONE or MORE times. - + - + * - The preceding character or expression is matched ZERO or MORE times. - + - + \ - The escape character denotes that the following character should be taken literally. This is used where one of the @@ -7842,25 +7999,25 @@ Requests sure the period is recognized only as a period (and not expanded to its meta-character meaning of any single character). - + - + [ ] - Characters enclosed in brackets will be matched if any of the enclosed characters are encountered. For instance, [0-9] matches any numeric digit (zero through nine). As an example, we can combine this with + to match any digit one of more times: [0-9]+. - + - + ( ) - parentheses are used to group a sub-expression, or multiple sub-expressions. - + - + | - The bar character works like an or conditional statement. A match is successful if the @@ -7869,7 +8026,7 @@ Requests and would match either this example or that example, and nothing else. - + These are just some of the ones you are likely to use when matching URLs with @@ -7997,7 +8154,6 @@ Requests rules and other configuration options, and even turn Privoxy's filtering off, all with a web browser. - @@ -8008,7 +8164,6 @@ Requests necessary either. - @@ -8029,23 +8184,23 @@ Requests - Show information about the current configuration, including viewing and - editing of actions files: + View and toggle client tags:
- http://config.privoxy.org/show-status + http://config.privoxy.org/client-tags
- Show the source code version numbers: + Show information about the current configuration, including viewing and + editing of actions files: -
+
- http://config.privoxy.org/show-version + http://config.privoxy.org/show-status
@@ -8100,7 +8255,6 @@ Requests - @@ -8114,7 +8268,6 @@ Requests page is requested by your browser: - @@ -8223,7 +8376,7 @@ Requests - + NOTE: This is somewhat of a simplistic overview of what happens with each URL request. For the sake of brevity and simplicity, we have focused on @@ -8296,7 +8449,6 @@ Requests configuration may vary): - Matches for http://www.google.com: @@ -8326,7 +8478,6 @@ Requests In file: user.action [ View ] [ Edit ] (no matches in this file) - This is telling us how we have defined our @@ -8382,12 +8533,9 @@ In file: user.action [ View ] [ Edit ]Privoxy is applying all its actions to google.com: - - - Final results: -add-header @@ -8445,8 +8593,8 @@ In file: user.action [ View ] [ Edit ] - + +set-image-blocker {pattern} + Notice the only difference here to the previous listing, is to @@ -8459,9 +8607,7 @@ In file: user.action [ View ] [ Edit ]ad.doubleclick.net: - - { +block{Domains starts with "ad"} } ad*. @@ -8471,7 +8617,6 @@ In file: user.action [ View ] [ Edit ] - We'll just show the interesting part here - the explicit matches. It is @@ -8503,9 +8648,7 @@ In file: user.action [ View ] [ Edit ] - - Matches for http://www.example.net/adsl/HOWTO/: In file: default.action [ View ] [ Edit ] @@ -8569,7 +8712,6 @@ In file: user.action [ View ] [ Edit ] - Ooops, the /adsl/ is matching /ads in our @@ -8585,13 +8727,10 @@ In file: user.action [ View ] [ Edit ] - - { -block } /adsl - Now the page displays ;-) @@ -8605,13 +8744,10 @@ In file: user.action [ View ] [ Edit ] - - { +block{Path starts with "ads".} +handle-as-image } /ads - That actually was very helpful and pointed us quickly to where the problem @@ -8625,9 +8761,7 @@ In file: user.action [ View ] [ Edit ]+filter: - - { shop } .quietpc.com .worldpay.com # for quietpc.com @@ -8635,25 +8769,20 @@ In file: user.action [ View ] [ Edit ] - { shop } is an alias that expands to { -filter -session-cookies-only }. Or you could do your own exception to negate filtering: - - - { -filter } # Disable ALL filter actions for sites in this section .forbes.com developer.ibm.com localhost - This would turn off all filtering for these sites. This is best @@ -8676,14 +8805,12 @@ In file: user.action [ View ] [ Edit ] - - + { fragile } # Handle with care: easy to break mail.google. mybank.example.com -