X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=doc%2Fwebserver%2Fuser-manual%2Factions-file.html;h=f718b154d9eaa00927c092fcc32899a23147fa95;hp=d1b65672b3f35ae9c25a3066afee8c9bf4155f50;hb=HEAD;hpb=afa231b8e31bbf0489303df30d103db2d737cd18 diff --git a/doc/webserver/user-manual/actions-file.html b/doc/webserver/user-manual/actions-file.html index d1b65672..f718b154 100644 --- a/doc/webserver/user-manual/actions-file.html +++ b/doc/webserver/user-manual/actions-file.html @@ -4,7 +4,7 @@ Actions Files - + @@ -15,7 +15,7 @@

Additionally, there are wild-cards that you can use in the domain names themselves. These work similarly to shell globbing type wild-cards: "*" represents zero or more arbitrary characters - (this is equivalent to the "Regular Expression" based syntax of ".*"), "?" represents any single character (this is equivalent to the regular expression syntax of a simple "."), and you can define "character @@ -401,7 +401,7 @@

8.4.2. The Path Pattern

Privoxy uses "modern" POSIX 1003.2 "Regular + "https://en.wikipedia.org/wiki/Regular_expressions" target="_top">"Regular Expressions" for matching the path portion (after the slash), and is thus more flexible.

There is an Appendix with a brief quick-start into regular expressions, you also might want to have a look at your operating system's documentation on regular expressions (try @@ -499,18 +499,6 @@

8.4.5. The Client Tag Pattern

-
- - - - - - - -
Warning
-

This is an experimental feature. The syntax is likely to change in future versions.

-
-

Client tag patterns are not set based on HTTP headers but based on the client's IP address. Users can enable them themselves, but the Privoxy admin controls which tags are available and what their effect is.

After a client-specific tag has been defined with the -

# If the admin defined the client-specific-tag circumvent-blocks,
-# and the request comes from a client that previously requested
-# the tag to be set, overrule all previous +block actions that
-# are enabled based on URL to CLIENT-TAG patterns.
-{-block}
-CLIENT-TAG:^circumvent-blocks$
+              
  # If the admin defined the client-specific-tag circumvent-blocks,
+  # and the request comes from a client that previously requested
+  # the tag to be set, overrule all previous +block actions that
+  # are enabled based on URL to CLIENT-TAG patterns.
+  {-block}
+  CLIENT-TAG:^circumvent-blocks$
 
-# This section is not overruled because it's located after
-# the previous one.
-{+block{Nobody is supposed to request this.}}
-example.org/blocked-example-page
+ # This section is not overruled because it's located after + # the previous one. + {+block{Nobody is supposed to request this.}} + example.org/blocked-example-page
@@ -603,7 +591,7 @@ example.org/blocked-example-page -name{param} # remove the parameter param from the list of parameters - # If it was the last one left, disable the action. + # If it was the last one left, disable the action. -name # disable this action completely and remove all parameters from the list @@ -658,16 +646,16 @@ example.org/blocked-example-page
-
# Add a DNT ("Do not track") header to all requests,
-# event to those that already have one.
-#
-# This is just an example, not a recommendation.
-#
-# There is no reason to believe that user-tracking websites care
-# about the DNT header and depending on the User-Agent, adding the
-# header may make user-tracking easier.
-{+add-header{DNT: 1}}
-/
+
  # Add a DNT ("Do not track") header to all requests,
+  # event to those that already have one.
+  #
+  # This is just an example, not a recommendation.
+  #
+  # There is no reason to believe that user-tracking websites care
+  # about the DNT header and depending on the User-Agent, adding the
+  # header may make user-tracking easier.
+  {+add-header{DNT: 1}}
+  /
@@ -725,18 +713,18 @@ example.org/blocked-example-page
-
{+block{No nasty stuff for you.}}
-# Block and replace with "blocked" page
- .nasty-stuff.example.com
+                    
  {+block{No nasty stuff for you.}}
+  # Block and replace with "blocked" page
+  .nasty-stuff.example.com
 
-{+block{Doubleclick banners.} +handle-as-image}
-# Block and replace with image
- .ad.doubleclick.net
- .ads.r.us/banners/
+  {+block{Doubleclick banners.} +handle-as-image}
+  # Block and replace with image
+  .ad.doubleclick.net
+  .ads.r.us/banners/
 
-{+block{Layered ads.} +handle-as-empty-document}
-# Block and then ignore
- adserver.example.net/.*\.js$
+ {+block{Layered ads.} +handle-as-empty-document} + # Block and then ignore + adserver.example.net/.*\.js$
@@ -785,7 +773,7 @@ example.org/blocked-example-page
-
+change-x-forwarded-for{block}
+
  +change-x-forwarded-for{block}
@@ -825,6 +813,13 @@ example.org/blocked-example-page

If the request URI gets changed, Privoxy will detect that and use the new one. This can be used to rewrite the request destination behind the client's back, for example to specify a Tor exit relay for certain requests.

+

Note that to change the destination host for https-inspected requests a protocol and host has to be added to + the URI.

+

If https inspection is enabled, the protocol can be + downgraded from https to http but upgrading a request from http to https is currently not supported.

+

After detecting a rewrite, Privoxy does not update the actions used + for the request based on the new host.

Please refer to the filter file chapter to learn which client-header filters are available by default, and how to create your own.

@@ -833,9 +828,9 @@ example.org/blocked-example-page
-
# Hide Tor exit notation in Host and Referer Headers
-{+client-header-filter{hide-tor-exit-notation}}
-/
+
  # Hide Tor exit notation in Host and Referer Headers
+  {+client-header-filter{hide-tor-exit-notation}}
+  /
@@ -844,7 +839,105 @@ example.org/blocked-example-page
-

8.5.5. client-header-tagger

+

8.5.5. client-body-filter

+
+
+
Typical use:
+
+

Rewrite or remove client request body.

+
+
Effect:
+
+

All request bodies to which this action applies are filtered on-the-fly through the specified regular + expression based substitutions.

+
+
Type:
+
+

Multi-value.

+
+
Parameter:
+
+

The name of a client-body filter, as defined in one of the filter + files.

+
+
Notes:
+
+

Please refer to the filter file chapter to learn how to create your own + client-body filters.

+

The distribution default.filter file contains a selection of client-body + filters for example purposes.

+

The amount of data that can be filtered is limited by the buffer-limit option in the main config + file. The default is 4096 KB (4 Megs). Once this limit is exceeded, the whole request body is passed + through unfiltered.

+
+
Example usage (section):
+
+ + + + +
+
  # Remove "test" everywhere in the request body
+  {+client-body-filter{remove-test}}
+  /
+
+
+
+
+
+
+

8.5.6. client-body-tagger

+
+
+
Typical use:
+
+

Block requests based on the content of the body data.

+
+
Effect:
+
+

Client request bodies to which this action applies are filtered on-the-fly through the specified + regular expression based substitutions, the result is used as tag.

+
+
Type:
+
+

Multi-value.

+
+
Parameter:
+
+

The name of a client-body tagger, as defined in one of the filter + files.

+
+
Notes:
+
+

Please refer to the filter file chapter to learn how to create your own + client-body tagger.

+

Client-body taggers are applied to each request body on its own, and as the body isn't modified, each + tagger "sees" the original.

+

Chunk-encoded request bodies currently can't be tagged. Request bodies larger than the buffer-limit + can't be tagged either.

+
+
Example usage (section):
+
+ + + + +
+
  # Apply blafasel tagger.
+  {+client-body-tagger{blafasel}}
+  /
+
+  # Block request based on the tag created by the blafasel tagger.
+  {+block{Request body contains blafasel}}
+  TAG:^content contains blafasel$
+
+
+
+
+
+
+

8.5.7. client-header-tagger

Typical use:
@@ -877,63 +970,63 @@ example.org/blocked-example-page
-
# Tag every request with the User-Agent header
-{+client-header-tagger{user-agent}}
-/
+                    
  # Tag every request with the User-Agent header
+  {+client-header-tagger{user-agent}}
+  /
 
-# Tagging itself doesn't change the action
-# settings, sections with TAG patterns do:
-#
-# If it's a download agent, use a different forwarding proxy,
-# show the real User-Agent and make sure resume works.
-{+forward-override{forward-socks5 10.0.0.2:2222 .} \
- -hide-if-modified-since      \
- -overwrite-last-modified     \
- -hide-user-agent             \
- -filter                      \
- -deanimate-gifs              \
-}
-TAG:^User-Agent: NetBSD-ftp/
-TAG:^User-Agent: Novell ZYPP Installer
-TAG:^User-Agent: RPM APT-HTTP/
-TAG:^User-Agent: fetch libfetch/
-TAG:^User-Agent: Ubuntu APT-HTTP/
-TAG:^User-Agent: MPlayer/
+ # Tagging itself doesn't change the action + # settings, sections with TAG patterns do: + # + # If it's a download agent, use a different forwarding proxy, + # show the real User-Agent and make sure resume works. + {+forward-override{forward-socks5 10.0.0.2:2222 .} \ + -hide-if-modified-since \ + -overwrite-last-modified \ + -hide-user-agent \ + -filter \ + -deanimate-gifs \ + } + TAG:^User-Agent: NetBSD-ftp/ + TAG:^User-Agent: Novell ZYPP Installer + 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}}
-/
+                    
  # Tag all requests with the Range header set
+  {+client-header-tagger{range-requests}}
+  /
 
-# Disable filtering for the tagged requests.
-#
-# With filtering enabled Privoxy would remove the Range headers
-# to be able to filter the whole response. The downside is that
-# it prevents clients from resuming downloads or skipping over
-# parts of multimedia files.
-{-filter -deanimate-gifs}
-TAG:^RANGE-REQUEST$
+ # Disable filtering for the tagged requests. + # + # With filtering enabled Privoxy would remove the Range headers + # to be able to filter the whole response. The downside is that + # it prevents clients from resuming downloads or skipping over + # 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}}
-/
+                    
  # 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$
+ # 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$
@@ -942,7 +1035,7 @@ TAG:^IP-ADDRESS: 10\.0\.0\.1$
-

8.5.6. +

8.5.8. content-type-overwrite

@@ -995,14 +1088,14 @@ TAG:^IP-ADDRESS: 10\.0\.0\.1$
-
# Check if www.example.net/ really uses valid XHTML
-{ +content-type-overwrite{application/xml} }
-www.example.net/
+                    
  # Check if www.example.net/ really uses valid XHTML
+  { +content-type-overwrite{application/xml} }
+  www.example.net/
 
-# but leave the content type unmodified if the URL looks like a style sheet
-{-content-type-overwrite}
-www.example.net/.*\.css$
-www.example.net/.*style
+ # but leave the content type unmodified if the URL looks like a style sheet + {-content-type-overwrite} + www.example.net/.*\.css$ + www.example.net/.*style
@@ -1011,7 +1104,7 @@ www.example.net/.*style

-

8.5.7. crunch-client-header

+

8.5.9. crunch-client-header

Typical use:
@@ -1059,9 +1152,9 @@ www.example.net/.*style
-
# Block the non-existent "Privacy-Violation:" client header
-{ +crunch-client-header{Privacy-Violation:} }
-/
+
  # Block the non-existent "Privacy-Violation:" client header
+  { +crunch-client-header{Privacy-Violation:} }
+  /
@@ -1070,7 +1163,8 @@ www.example.net/.*style
-

8.5.8. crunch-if-none-match

+

8.5.10. + crunch-if-none-match

Typical use:
@@ -1108,12 +1202,12 @@ www.example.net/.*style
-
# 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}
-/
+
  # 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}
+  /
@@ -1122,7 +1216,7 @@ www.example.net/.*style
-

8.5.9. +

8.5.11. crunch-incoming-cookies

@@ -1159,7 +1253,7 @@ www.example.net/.*style
-
+crunch-incoming-cookies
+
  +crunch-incoming-cookies
@@ -1168,7 +1262,7 @@ www.example.net/.*style

-

8.5.10. +

8.5.12. crunch-server-header

@@ -1217,9 +1311,9 @@ www.example.net/.*style
-
# Crunch server headers that try to prevent caching
-{ +crunch-server-header{no-cache} }
-/
+
  # Crunch server headers that try to prevent caching
+  { +crunch-server-header{no-cache} }
+  /
@@ -1228,7 +1322,7 @@ www.example.net/.*style

-

8.5.11. +

8.5.13. crunch-outgoing-cookies

@@ -1264,7 +1358,7 @@ www.example.net/.*style
-
+crunch-outgoing-cookies
+
  +crunch-outgoing-cookies
@@ -1273,7 +1367,7 @@ www.example.net/.*style

-

8.5.12. deanimate-gifs

+

8.5.14. deanimate-gifs

Typical use:
@@ -1307,7 +1401,7 @@ www.example.net/.*style
-
+deanimate-gifs{last}
+
  +deanimate-gifs{last}
@@ -1316,7 +1410,7 @@ www.example.net/.*style
-

8.5.13. delay-response

+

8.5.15. delay-response

Typical use:
@@ -1350,7 +1444,7 @@ www.example.net/.*style
-
+delay-response{100}
+
  +delay-response{100}
@@ -1359,7 +1453,7 @@ www.example.net/.*style
-

8.5.14. +

8.5.16. downgrade-http-version

@@ -1396,8 +1490,8 @@ www.example.net/.*style
-
{+downgrade-http-version}
-problem-host.example.com
+
  {+downgrade-http-version}
+  problem-host.example.com
@@ -1406,7 +1500,7 @@ problem-host.example.com

-

8.5.15. external-filter

+

8.5.17. external-filter

Typical use:
@@ -1453,13 +1547,16 @@ problem-host.example.com

This feature is experimental, the syntax may change in the future.

+

If you want to apply external filters to images or other content that isn't text-based, enable the + force-text-mode action as + well.

Example usage:
-
+external-filter{fancy-filter}
+
  +external-filter{fancy-filter}
@@ -1468,7 +1565,7 @@ problem-host.example.com
-

8.5.16. fast-redirects

+

8.5.18. fast-redirects

Typical use:
@@ -1536,11 +1633,11 @@ problem-host.example.com
-
 { +fast-redirects{simple-check} }
-   one.example.com
+                    
  { +fast-redirects{simple-check} }
+  one.example.com
 
- { +fast-redirects{check-decoded-url} }
-   another.example.com/testing
+ { +fast-redirects{check-decoded-url} } + another.example.com/testing
@@ -1549,7 +1646,7 @@ problem-host.example.com
-

8.5.17. filter

+

8.5.19. filter

Typical use:
@@ -1587,11 +1684,11 @@ problem-host.example.com completely rendered doesn't change much, but it may be perceived as slower since the page is not incrementally displayed.) This effect will be more noticeable on slower connections.

"Rolling your own" filters requires a knowledge of "Regular - Expressions" and "Regular + Expressions" and "HTML". This is very powerful feature, and potentially very intrusive. Filters should be used with caution, and where an equivalent "action" is not available.

-

The amount of data that can be filtered is limited to the The amount of data that can be filtered is limited by the buffer-limit option in the main config file. The default is 4096 KB (4 Megs). Once this limit is exceeded, the buffered data, and all pending data, is passed through unfiltered.

@@ -1626,7 +1723,7 @@ problem-host.example.com
+filter{js-annoyances}       # Get rid of particularly annoying JavaScript abuse.
+ "SCREEN"> +filter{js-annoyances} # Get rid of particularly annoying JavaScript abuse. @@ -1635,7 +1732,7 @@ problem-host.example.com
+filter{js-events}           # Kill JavaScript event bindings and timers (Radically destructive! Only for extra nasty sites).
+ "SCREEN"> +filter{js-events} # Kill JavaScript event bindings and timers (Radically destructive! Only for extra nasty sites). @@ -1644,7 +1741,7 @@ problem-host.example.com
+filter{html-annoyances}     # Get rid of particularly annoying HTML abuse.
+ "SCREEN"> +filter{html-annoyances} # Get rid of particularly annoying HTML abuse. @@ -1653,7 +1750,7 @@ problem-host.example.com
+filter{content-cookies}     # Kill cookies that come in the HTML or JS content.
+ "SCREEN"> +filter{content-cookies} # Kill cookies that come in the HTML or JS content. @@ -1662,7 +1759,7 @@ problem-host.example.com
+filter{refresh-tags}        # Kill automatic refresh tags if refresh time is larger than 9 seconds.
+ "SCREEN"> +filter{refresh-tags} # Kill automatic refresh tags if refresh time is larger than 9 seconds. @@ -1670,7 +1767,7 @@ problem-host.example.com
-
+filter{unsolicited-popups}  # Disable only unsolicited pop-up windows.
+
  +filter{unsolicited-popups}  # Disable only unsolicited pop-up windows.
@@ -1678,7 +1775,7 @@ problem-host.example.com
-
+filter{all-popups}          # Kill all popups in JavaScript and HTML.
+
  +filter{all-popups}          # Kill all popups in JavaScript and HTML.
@@ -1687,7 +1784,7 @@ problem-host.example.com
+filter{img-reorder}         # Reorder attributes in <img> tags to make the banners-by-* filters more effective.
+ "SCREEN"> +filter{img-reorder} # Reorder attributes in <img> tags to make the banners-by-* filters more effective. @@ -1695,7 +1792,7 @@ problem-host.example.com
-
+filter{banners-by-size}     # Kill banners by size.
+
  +filter{banners-by-size}     # Kill banners by size.
@@ -1704,7 +1801,7 @@ problem-host.example.com
+filter{banners-by-link}     # Kill banners by their links to known clicktrackers.
+ "SCREEN"> +filter{banners-by-link} # Kill banners by their links to known clicktrackers. @@ -1713,7 +1810,7 @@ problem-host.example.com
+filter{webbugs}             # Squish WebBugs (1x1 invisible GIFs used for user tracking).
+ "SCREEN"> +filter{webbugs} # Squish WebBugs (1x1 invisible GIFs used for user tracking). @@ -1722,7 +1819,7 @@ problem-host.example.com
+filter{tiny-textforms}      # Extend those tiny textareas up to 40x80 and kill the hard wrap.
+ "SCREEN"> +filter{tiny-textforms} # Extend those tiny textareas up to 40x80 and kill the hard wrap. @@ -1731,7 +1828,7 @@ problem-host.example.com
+filter{jumping-windows}     # Prevent windows from resizing and moving themselves.
+ "SCREEN"> +filter{jumping-windows} # Prevent windows from resizing and moving themselves. @@ -1740,7 +1837,7 @@ problem-host.example.com
+filter{frameset-borders}    # Give frames a border and make them resizable.
+ "SCREEN"> +filter{frameset-borders} # Give frames a border and make them resizable. @@ -1749,7 +1846,7 @@ problem-host.example.com
+filter{iframes}             # Removes all detected iframes. Should only be enabled for individual sites.
+ "SCREEN"> +filter{iframes} # Removes all detected iframes. Should only be enabled for individual sites. @@ -1758,7 +1855,7 @@ problem-host.example.com
+filter{demoronizer}         # Fix MS's non-standard use of standard charsets.
+ "SCREEN"> +filter{demoronizer} # Fix MS's non-standard use of standard charsets. @@ -1766,7 +1863,7 @@ problem-host.example.com
-
+filter{shockwave-flash}     # Kill embedded Shockwave Flash objects.
+
  +filter{shockwave-flash}     # Kill embedded Shockwave Flash objects.
@@ -1774,7 +1871,7 @@ problem-host.example.com
-
+filter{quicktime-kioskmode} # Make Quicktime movies saveable.
+
  +filter{quicktime-kioskmode} # Make Quicktime movies saveable.
@@ -1783,7 +1880,7 @@ problem-host.example.com
+filter{fun}                 # Text replacements for subversive browsing fun!
+ "SCREEN"> +filter{fun} # Text replacements for subversive browsing fun! @@ -1792,7 +1889,7 @@ problem-host.example.com
+filter{crude-parental}      # Crude parental filtering. Note that this filter doesn't work reliably.
+ "SCREEN"> +filter{crude-parental} # Crude parental filtering. Note that this filter doesn't work reliably. @@ -1801,7 +1898,7 @@ problem-host.example.com
+filter{ie-exploits}         # Disable some known Internet Explorer bug exploits.
+ "SCREEN"> +filter{ie-exploits} # Disable some known Internet Explorer bug exploits. @@ -1810,7 +1907,7 @@ problem-host.example.com
+filter{site-specifics}      # Cure for site-specific problems. Don't apply generally!
+ "SCREEN"> +filter{site-specifics} # Cure for site-specific problems. Don't apply generally! @@ -1819,7 +1916,25 @@ problem-host.example.com
+filter{no-ping}             # Removes non-standard ping attributes in <a> and <area> tags.
+ "SCREEN"> +filter{no-ping} # Removes non-standard ping attributes in <a> and <area> tags. + + + +

+ + + + +
+
  +filter{bundeswehr.de}      # Hide the cookie and privacy info banner on bundeswehr.de.
+
+

+ + +
+
  +filter{github}              # Removes the annoying "Sign-Up" banner and the Cookie disclaimer.
@@ -1828,7 +1943,15 @@ problem-host.example.com
+filter{google}              # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement.
+ "SCREEN"> +filter{google} # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement. + + + +

+ + +
+
  +filter{imdb}                # Removes some ads on IMDb.
@@ -1837,7 +1960,7 @@ problem-host.example.com
+filter{yahoo}               # CSS-based block for Yahoo text ads. Also removes a width limitation.
+ "SCREEN"> +filter{yahoo} # CSS-based block for Yahoo text ads. Also removes a width limitation. @@ -1846,7 +1969,7 @@ problem-host.example.com
+filter{msn}                 # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation.
+ "SCREEN"> +filter{msn} # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation. @@ -1855,7 +1978,16 @@ problem-host.example.com
+filter{blogspot}            # Cleans up some Blogspot blogs. Read the fine print before using this.
+ "SCREEN"> +filter{blogspot} # Cleans up some Blogspot blogs. Read the fine print before using this. + + + +

+ + +
+
  +filter{sourceforge}         # Reduces the amount of ads for proprietary software on SourceForge.
@@ -1864,7 +1996,7 @@ problem-host.example.com
-

8.5.18. force-text-mode

+

8.5.20. force-text-mode

Typical use:
@@ -1912,7 +2044,7 @@ problem-host.example.com
-
+force-text-mode
+
  +force-text-mode
@@ -1921,7 +2053,7 @@ problem-host.example.com
-

8.5.19. forward-override

+

8.5.21. forward-override

Typical use:
@@ -2005,21 +2137,21 @@ problem-host.example.com
-
# Use an ssh tunnel for requests previously tagged as
-# "User-Agent: fetch libfetch/2.0" and make sure
-# resuming downloads continues to work.
-#
-# This way you can continue to use Tor for your normal browsing,
-# without overloading the Tor network with your FreeBSD ports updates
-# or downloads of bigger files like ISOs.
-#
-# Note that HTTP headers are easy to fake and therefore their
-# values are as (un)trustworthy as your clients and users.
-{+forward-override{forward-socks5 10.0.0.2:2222 .} \
- -hide-if-modified-since      \
- -overwrite-last-modified     \
-}
-TAG:^User-Agent: fetch libfetch/2\.0$
+
  # Use an ssh tunnel for requests previously tagged as
+  # "User-Agent: fetch libfetch/2.0" and make sure
+  # resuming downloads continues to work.
+  #
+  # This way you can continue to use Tor for your normal browsing,
+  # without overloading the Tor network with your FreeBSD ports updates
+  # or downloads of bigger files like ISOs.
+  #
+  # Note that HTTP headers are easy to fake and therefore their
+  # values are as (un)trustworthy as your clients and users.
+  {+forward-override{forward-socks5 10.0.0.2:2222 .} \
+   -hide-if-modified-since      \
+   -overwrite-last-modified     \
+  }
+  TAG:^User-Agent: fetch libfetch/2\.0$
@@ -2028,7 +2160,7 @@ TAG:^User-Agent: fetch libfetch/2\.0$
-

8.5.20. +

8.5.22. handle-as-empty-document

@@ -2069,10 +2201,10 @@ TAG:^User-Agent: fetch libfetch/2\.0$
-
# 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$
+
  # 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$
@@ -2081,7 +2213,7 @@ example.org/.*\.js$

-

8.5.21. handle-as-image

+

8.5.23. handle-as-image

Typical use:
@@ -2123,16 +2255,16 @@ example.org/.*\.js$
-
# Generic image extensions:
-#
-{+handle-as-image}
-/.*\.(gif|jpg|jpeg|png|bmp|ico)$
+                    
  # Generic image extensions:
+  #
+  {+handle-as-image}
+  /.*\.(gif|jpg|jpeg|png|bmp|ico)$
 
-# These don't look like images, but they're banners and should be
-# blocked as images:
-#
-{+block{Nasty banners.} +handle-as-image}
-nasty-banner-server.example.com/junk.cgi\?output=trash
+ # These don't look like images, but they're banners and should be + # blocked as images: + # + {+block{Nasty banners.} +handle-as-image} + nasty-banner-server.example.com/junk.cgi\?output=trash
@@ -2141,7 +2273,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-

8.5.22. +

8.5.24. hide-accept-language

@@ -2181,11 +2313,11 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-
# 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} \
-}
-/
+
  # 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} \
+  }
+  /
@@ -2194,7 +2326,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash

-

8.5.23. +

8.5.25. hide-content-disposition

@@ -2237,11 +2369,12 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-
# Disarm the download link in Sourceforge's patch tracker
-{ -filter \
- +content-type-overwrite{text/plain}\
- +hide-content-disposition{block} }
- .sourceforge.net/tracker/download\.php
+
  # Disarm the download link in Sourceforge's patch tracker
+  { -filter \
+    +content-type-overwrite{text/plain} \
+    +hide-content-disposition{block} \
+  }
+  .sourceforge.net/tracker/download\.php
@@ -2250,7 +2383,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash

-

8.5.24. +

8.5.26. hide-if-modified-since

@@ -2296,11 +2429,11 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-
# 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}
-/
+
  # 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}
+  /
@@ -2309,7 +2442,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash

-

8.5.25. hide-from-header

+

8.5.27. hide-from-header

Typical use:
@@ -2343,7 +2476,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-
+hide-from-header{block}
+
  +hide-from-header{block}
@@ -2351,7 +2484,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-
+hide-from-header{spam-me-senseless@sittingduck.example.com}
+
  +hide-from-header{spam-me-senseless@sittingduck.example.com}
@@ -2360,7 +2493,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-

8.5.26. hide-referrer

8.5.28. hide-referrer
@@ -2424,7 +2557,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-
+hide-referrer{forge}
+
  +hide-referrer{forge}
@@ -2432,7 +2565,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-
+hide-referrer{http://www.yahoo.com/}
+
  +hide-referrer{http://www.yahoo.com/}
@@ -2441,7 +2574,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-

8.5.27. hide-user-agent

+

8.5.29. hide-user-agent

Typical use:
@@ -2485,7 +2618,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash occasionally useful to forge this in order to access sites that won't let you in otherwise (though there may be a good reason in some cases).

More information on known user-agent strings can be found at http://www.user-agents.org/ and http://www.user-agents.org/ and http://en.wikipedia.org/wiki/User_agent.

Example usage:
@@ -2493,7 +2626,8 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-
+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}
+
  +hide-user-agent{Mozilla/5.0 (X11; ElectroBSD i386; rv:78.0) Gecko/20100101 Firefox/78.0}
@@ -2502,7 +2636,7 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-

8.5.28. https-inspection

+

8.5.30. https-inspection

Typical use:
@@ -2524,10 +2658,11 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
Notes:

This action allows Privoxy to filter encrypted requests and - responses. For this to work Privoxy has to generate a certificate and - send it to the client which has to accept it.

-

Before this works the directives in the TLS section of the config file have to be configured.

+ responses. For this to work Privoxy has to generate a certificate for + the web site 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 Privoxy if the action is already enabled.

@@ -2537,8 +2672,8 @@ nasty-banner-server.example.com/junk.cgi\?output=trash
-
{+https-inspection}
-www.example.com
+
  {+https-inspection}
+  www.example.com
@@ -2547,7 +2682,7 @@ www.example.com
-

8.5.29. +

8.5.31. ignore-certificate-errors

@@ -2583,9 +2718,8 @@ www.example.com
-
    {+ignore-certificate-errors}
-    www.example.org
-   
+
      {+ignore-certificate-errors}
+      www.example.org
@@ -2594,7 +2728,7 @@ www.example.com

-

8.5.30. limit-connect

+

8.5.32. limit-connect

Typical use:
@@ -2633,11 +2767,11 @@ www.example.com
-
+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
+
  +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
@@ -2646,7 +2780,7 @@ www.example.com
-

8.5.31. +

8.5.33. limit-cookie-lifetime

@@ -2689,7 +2823,7 @@ www.example.com
-
+limit-cookie-lifetime{60}
+
  +limit-cookie-lifetime{60}
@@ -2698,7 +2832,7 @@ www.example.com

-

8.5.32. prevent-compression

+

8.5.34. prevent-compression

Typical use:
@@ -2745,23 +2879,23 @@ www.example.com
-
# Selectively turn off compression, and enable a filter
-#
-{ +filter{tiny-textforms} +prevent-compression }
-# Match only these sites
- .google.
- sourceforge.net
- sf.net
+                    
  # Selectively turn off compression, and enable a filter
+  #
+  { +filter{tiny-textforms} +prevent-compression }
+  # Match only these sites
+  .google.
+  sourceforge.net
+  sf.net
 
-# Or instead, we could set a universal default:
-#
-{ +prevent-compression }
- / # Match all sites
+  # Or instead, we could set a universal default:
+  #
+  { +prevent-compression }
+  / # Match all sites
 
-# Then maybe make exceptions for broken sites:
-#
-{ -prevent-compression }
-.compusa.com/
+ # Then maybe make exceptions for broken sites: + # + { -prevent-compression } + .compusa.com/
@@ -2770,7 +2904,7 @@ www.example.com
-

8.5.33. +

8.5.35. overwrite-last-modified

@@ -2819,11 +2953,12 @@ www.example.com
-
# Let the browser revalidate without being tracked across sessions
-{ +hide-if-modified-since{-60} \
- +overwrite-last-modified{randomize} \
- +crunch-if-none-match}
-/
+
  # Let the browser revalidate without being tracked across sessions
+  { +hide-if-modified-since{-60} \
+    +overwrite-last-modified{randomize} \
+    +crunch-if-none-match \
+  }
+  /
@@ -2832,7 +2967,7 @@ www.example.com

-

8.5.34. redirect

+

8.5.36. redirect

Typical use:
@@ -2876,46 +3011,50 @@ www.example.com
-
# Replace example.com's style sheet with another one
-{ +redirect{http://localhost/css-replacements/example.com.css} }
- example.com/stylesheet\.css
+                    
  # Replace example.com's style sheet with another one
+  { +redirect{http://localhost/css-replacements/example.com.css} }
+  example.com/stylesheet\.css
 
-# Create a short, easy to remember nickname for a favorite site
-# (relies on the browser to accept and forward invalid URLs to Privoxy)
-{ +redirect{https://www.privoxy.org/user-manual/actions-file.html} }
- a
+  # Create a short, easy to remember nickname for a favorite site
+  # (relies on the browser to accept and forward invalid URLs to Privoxy)
+  { +redirect{https://www.privoxy.org/user-manual/actions-file.html} }
+  a
 
-# Always use the expanded view for Undeadly.org articles
-# (Note the $ at the end of the URL pattern to make sure
-# the request for the rewritten URL isn't redirected as well)
-{+redirect{s@$@&mode=expanded@}}
-undeadly.org/cgi\?action=article&sid=\d*$
+  # Always use the expanded view for Undeadly.org articles
+  # (Note the $ at the end of the URL pattern to make sure
+  # the request for the rewritten URL isn't redirected as well)
+  {+redirect{s@$@&mode=expanded@}}
+  undeadly.org/cgi\?action=article&sid=\d*$
 
-# Redirect Google search requests to MSN
-{+redirect{s@^http://[^/]*/search\?q=([^&]*).*@http://search.msn.com/results.aspx?q=$1@}}
-.google.com/search
+  # Redirect Google search requests to MSN
+  {+redirect{s@^http://[^/]*/search\?q=([^&]*).*@http://search.msn.com/results.aspx?q=$1@}}
+  .google.com/search
 
-# Redirect MSN search requests to Yahoo
-{+redirect{s@^http://[^/]*/results\.aspx\?q=([^&]*).*@http://search.yahoo.com/search?p=$1@}}
-search.msn.com//results\.aspx\?q=
+  # Redirect MSN search requests to Yahoo
+  {+redirect{s@^http://[^/]*/results\.aspx\?q=([^&]*).*@http://search.yahoo.com/search?p=$1@}}
+  search.msn.com//results\.aspx\?q=
 
-# Redirect http://example.com/&bla=fasel&toChange=foo (and any other value but "bar")
-# to       http://example.com/&bla=fasel&toChange=bar
-#
-# The URL pattern makes sure that the following request isn't redirected again.
-{+redirect{s@toChange=[^&]+@toChange=bar@}}
-example.com/.*toChange=(?!bar)
+  # Redirect http://example.com/&bla=fasel&toChange=foo (and any other value but "bar")
+  # to       http://example.com/&bla=fasel&toChange=bar
+  #
+  # The URL pattern makes sure that the following request isn't redirected again.
+  {+redirect{s@toChange=[^&]+@toChange=bar@}}
+  example.com/.*toChange=(?!bar)
 
-# Add a shortcut to look up illumos bugs
-{+redirect{s@^http://i([0-9]+)/.*@https://www.illumos.org/issues/$1@}}
-# Redirected URL = http://i4974/
-# Redirect Destination = https://www.illumos.org/issues/4974
-i[0-9][0-9][0-9][0-9]*/
+  # Add a shortcut to look up illumos bugs
+  {+redirect{s@^http://i([0-9]+)/.*@https://www.illumos.org/issues/$1@}}
+  # Redirected URL = http://i4974/
+  # Redirect Destination = https://www.illumos.org/issues/4974
+  i[0-9][0-9][0-9][0-9]*/
 
-# Redirect remote requests for this manual
-# to the local version delivered by Privoxy
-{+redirect{s@^http://www@http://config@}}
-www.privoxy.org/user-manual/
+ # Redirect requests for the old Tor Hidden Service of the Privoxy website to the new one + {+redirect{s@^http://jvauzb4sb3bwlsnc.onion/@http://l3tczdiiwoo63iwxty4lhs6p7eaxop5micbn7vbliydgv63x5zrrrfyd.onion/@}} + jvauzb4sb3bwlsnc.onion/ + + # Redirect remote requests for this manual + # to the local version delivered by Privoxy + {+redirect{s@^http://www@http://config@}} + www.privoxy.org/user-manual/
@@ -2924,7 +3063,7 @@ www.privoxy.org/user-manual/
-

8.5.35. +

8.5.37. server-header-filter

@@ -2961,11 +3100,11 @@ www.privoxy.org/user-manual/
-
{+server-header-filter{html-to-xml}}
-example.org/xml-instance-that-is-delivered-as-html
+                    
  {+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
+ {+server-header-filter{xml-to-html}} + example.org/instance-that-is-delivered-as-xml-but-is-not
@@ -2974,7 +3113,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not

-

8.5.36. +

8.5.38. server-header-tagger

@@ -3012,17 +3151,55 @@ example.org/instance-that-is-delivered-as-xml-but-is-not + +
-
# Tag every request with the content type declared by the server
-{+server-header-tagger{content-type}}
-/
+                    
  # Tag every request with the content type declared by the server
+  {+server-header-tagger{content-type}}
+  /
 
-# If the response has a tag starting with 'image/' enable an external
-# filter that only applies to images.
-#
-# Note that the filter is not available by default, it's just a
-# silly example.
-{+external-filter{rotate-image} +force-text-mode}
-TAG:^image/
+ # If the response has a tag starting with 'image/' enable an external + # filter that only applies to images. + # + # Note that the filter is not available by default, it's just a + # silly example. + {+external-filter{rotate-image} +force-text-mode} + TAG:^image/
+
+ +
+
+

+
+

8.5.39. suppress-tag

+
+
+
Typical use:
+
+

Suppress client or server tag.

+
+
Effect:
+
+

Server or client tags to which this action applies are not added to the request, thus making all + actions that are specific to these request tags inactive.

+
+
Type:
+
+

Multi-value.

+
+
Parameter:
+
+

The result tag of a server-header or client-header tagger, as defined in one of the filter files.

+
+
Example usage (section):
+
+ + +
+
  # Suppress tag produced by range-requests client-header tagger for requests coming from address 10.0.0.1
+  {+suppress-tag{RANGE-REQUEST}}
+  TAG:^IP-ADDRESS: 10\.0\.0\.1$
@@ -3031,7 +3208,7 @@ TAG:^image/
-

8.5.37. +

8.5.40. session-cookies-only

@@ -3084,7 +3261,7 @@ TAG:^image/
-
+session-cookies-only
+
  +session-cookies-only
@@ -3093,7 +3270,7 @@ TAG:^image/

-

8.5.38. set-image-blocker

+

8.5.41. set-image-blocker

Typical use:
@@ -3157,7 +3334,7 @@ TAG:^image/
-
+set-image-blocker{pattern}
+
  +set-image-blocker{pattern}
@@ -3165,7 +3342,7 @@ TAG:^image/
-
+set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}
+
  +set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}
@@ -3173,7 +3350,7 @@ TAG:^image/
-
+set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}
+
  +set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}
@@ -3182,7 +3359,7 @@ TAG:^image/
-

8.5.39. Summary

+

8.5.42. Summary

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 @@ -3218,40 +3395,40 @@ TAG:^image/
-
 # Useful custom aliases we can use later.
- #
- # Note the (required!) section header line and that this section
- # must be at the top of the actions file!
- #
- {{alias}}
+            
  # Useful custom aliases we can use later.
+  #
+  # Note the (required!) section header line and that this section
+  # must be at the top of the actions file!
+  #
+  {{alias}}
 
- # These aliases just save typing later:
- # (Note that some already use other aliases!)
- #
- +crunch-all-cookies = +crunch-incoming-cookies +crunch-incoming-cookies +crunch-outgoing-cookies
- -crunch-all-cookies = -crunch-incoming-cookies -crunch-incoming-cookies -crunch-outgoing-cookies
- +block-as-image      = +block{Blocked image.} +handle-as-image
- allow-all-cookies   = -crunch-all-cookies -session-cookies-only -filter{content-cookies}
 
- # These aliases define combinations of actions
- # that are useful for certain types of sites:
- #
- fragile     = -block -block -filter -crunch-all-cookies -fast-redirects -hide-referrer -prevent-compression
 
- shop        = -crunch-all-cookies -filter{all-popups}
+  shop        = -crunch-all-cookies -filter{all-popups}
 
- # Short names for other aliases, for really lazy people ;-)
- #
- c0 = +crunch-all-cookies
- c1 = -crunch-all-cookies
+ # Short names for other aliases, for really lazy people ;-) + # + c0 = +crunch-all-cookies + c1 = -crunch-all-cookies
@@ -3260,26 +3437,26 @@ TAG:^image/ @@ -3315,12 +3492,12 @@ TAG:^image/
-
 # These sites are either very complex or very keen on
- # user data and require minimal interference to work:
- #
- {fragile}
- .office.microsoft.com
- .windowsupdate.microsoft.com
- # Gmail is really mail.google.com, not gmail.com
- mail.google.com
+            
  # These sites are either very complex or very keen on
+  # user data and require minimal interference to work:
+  #
+  {fragile}
+  .office.microsoft.com
+  .windowsupdate.microsoft.com
+  # Gmail is really mail.google.com, not gmail.com
+  mail.google.com
 
- # Shopping sites:
- # Allow cookies (for setting and retrieving your customer data)
- #
- {shop}
- .quietpc.com
- .worldpay.com   # for quietpc.com
- mybank.example.com
+  # Shopping sites:
+  # Allow cookies (for setting and retrieving your customer data)
+  #
+  {shop}
+  .quietpc.com
+  .worldpay.com   # for quietpc.com
+  mybank.example.com
 
- # These shops require pop-ups:
- #
- {-filter{all-popups} -filter{unsolicited-popups}}
+  # These shops require pop-ups:
+  #
+  {-filter{all-popups} -filter{unsolicited-popups}}
   .dabs.com
   .overclockers.co.uk
-
{ \
- +change-x-forwarded-for{block} \
- +hide-from-header{block} \
- +set-image-blocker{pattern} \
-}
-/ # Match all URLs
+
  { \
+   +change-x-forwarded-for{block} \
+   +hide-from-header{block} \
+   +set-image-blocker{pattern} \
+  }
+  / # Match all URLs
@@ -3338,11 +3515,11 @@ TAG:^image/
-
##########################################################################
-# Settings -- Don't change! For internal Privoxy use ONLY.
-##########################################################################
-{{settings}}
-for-privoxy-version=3.0.11
+
  ##########################################################################
+  # Settings -- Don't change! For internal Privoxy use ONLY.
+  ##########################################################################
+  {{settings}}
+  for-privoxy-version=3.0.11
@@ -3351,30 +3528,30 @@ for-privoxy-version=3.0.11
-
##########################################################################
-# Aliases
-##########################################################################
-{{alias}}
+              
  ##########################################################################
+  # Aliases
+  ##########################################################################
+  {{alias}}
 
- # These aliases just save typing later:
- # (Note that some already use other aliases!)
- #
- +crunch-all-cookies = +crunch-incoming-cookies +crunch-incoming-cookies +crunch-outgoing-cookies
- -crunch-all-cookies = -crunch-incoming-cookies -crunch-incoming-cookies -crunch-outgoing-cookies
- +block-as-image      = +block{Blocked image.} +handle-as-image
- mercy-for-cookies   = -crunch-all-cookies -session-cookies-only -filter{content-cookies}
 
- # These aliases define combinations of actions
- # that are useful for certain types of sites:
- #
- fragile     = -block -block -filter -crunch-all-cookies -fast-redirects -hide-referrer
- shop        = -crunch-all-cookies -filter{all-popups}
+ shop = -crunch-all-cookies -filter{all-popups}
@@ -3385,16 +3562,16 @@ for-privoxy-version=3.0.11
-
##########################################################################
-# Exceptions for sites that'll break under the default action set:
-##########################################################################
+              
  ##########################################################################
+  # Exceptions for sites that'll break under the default action set:
+  ##########################################################################
 
-# "Fragile" Use a minimum set of actions for these sites (see alias above):
-#
-{ fragile }
-.office.microsoft.com           # surprise, surprise!
-.windowsupdate.microsoft.com
-mail.google.com
+ # "Fragile" Use a minimum set of actions for these sites (see alias above): + # + { fragile } + .office.microsoft.com # surprise, surprise! + .windowsupdate.microsoft.com + mail.google.com
@@ -3403,13 +3580,13 @@ mail.google.com
-
# Shopping sites:
-#
-{ shop }
-.quietpc.com
-.worldpay.com   # for quietpc.com
-.jungle.com
-.scan.co.uk
+
  # Shopping sites:
+  #
+  { shop }
+  .quietpc.com
+  .worldpay.com   # for quietpc.com
+  .jungle.com
+  .scan.co.uk
@@ -3419,13 +3596,13 @@ mail.google.com
-
{ -fast-redirects }
-login.yahoo.com
-edit.*.yahoo.com
-.google.com
-.altavista.com/.*(like|url|link):http
-.altavista.com/trans.*urltext=http
-.nytimes.com
+
  { -fast-redirects }
+  login.yahoo.com
+  edit.*.yahoo.com
+  .google.com
+  .altavista.com/.*(like|url|link):http
+  .altavista.com/trans.*urltext=http
+  .nytimes.com
@@ -3439,15 +3616,15 @@ edit.*.yahoo.com
-
##########################################################################
-# Images:
-##########################################################################
+              
  ##########################################################################
+  # Images:
+  ##########################################################################
 
-# Define which file types will be treated as images, in case they get
-# blocked further down this file:
-#
-{ +handle-as-image }
-/.*\.(gif|jpe?g|png|bmp|ico)$
+ # Define which file types will be treated as images, in case they get + # blocked further down this file: + # + { +handle-as-image } + /.*\.(gif|jpe?g|png|bmp|ico)$
@@ -3465,16 +3642,16 @@ edit.*.yahoo.com
-
# Known ad generators:
-#
-{ +block-as-image }
-ar.atwola.com
-.ad.doubleclick.net
-.ad.*.doubleclick.net
-.a.yimg.com/(?:(?!/i/).)*$
-.a[0-9].yimg.com/(?:(?!/i/).)*$
-bs*.gsanet.com
-.qkimg.net
+
  # Known ad generators:
+  #
+  { +block-as-image }
+  ar.atwola.com
+  .ad.doubleclick.net
+  .ad.*.doubleclick.net
+  .a.yimg.com/(?:(?!/i/).)*$
+  .a[0-9].yimg.com/(?:(?!/i/).)*$
+  bs*.gsanet.com
+  .qkimg.net
@@ -3491,23 +3668,23 @@ bs*.gsanet.com
-
##########################################################################
-# Block these fine banners:
-##########################################################################
-{ +block{Banner ads.} }
+              
  ##########################################################################
+  # Block these fine banners:
+  ##########################################################################
+  { +block{Banner ads.} }
 
-# Generic patterns:
-#
-ad*.
-.*ads.
-banner?.
-count*.
-/.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
-/(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/
+  # Generic patterns:
+  #
+  ad*.
+  .*ads.
+  banner?.
+  count*.
+  /.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
+  /(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/
 
-# Site-specific patterns (abbreviated):
-#
-.hitbox.com
+ # Site-specific patterns (abbreviated): + # + .hitbox.com
@@ -3532,28 +3709,28 @@ count*.
-
##########################################################################
-# Save some innocent victims of the above generic block patterns:
-##########################################################################
+              
  ##########################################################################
+  # Save some innocent victims of the above generic block patterns:
+  ##########################################################################
 
-# By domain:
-#
-{ -block }
-adv[io]*.  # (for advogato.org and advice.*)
-adsl.      # (has nothing to do with ads)
-adobe.     # (has nothing to do with ads either)
-ad[ud]*.   # (adult.* and add.*)
-.edu       # (universities don't host banners (yet!))
-.*loads.   # (downloads, uploads etc)
+  # By domain:
+  #
+  { -block }
+  adv[io]*.  # (for advogato.org and advice.*)
+  adsl.      # (has nothing to do with ads)
+  adobe.     # (has nothing to do with ads either)
+  ad[ud]*.   # (adult.* and add.*)
+  .edu       # (universities don't host banners (yet!))
+  .*loads.   # (downloads, uploads etc)
 
-# By path:
-#
-/.*loads/
+  # By path:
+  #
+  /.*loads/
 
-# Site-specific:
-#
-www.globalintersec.com/adv # (adv = advanced)
-www.ugu.com/sui/ugu/adv
+ # Site-specific: + # + www.globalintersec.com/adv # (adv = advanced) + www.ugu.com/sui/ugu/adv
@@ -3564,14 +3741,14 @@ www.ugu.com/sui/ugu/adv
-
# Don't filter code!
-#
-{ -filter }
-/(.*/)?cvs
-bugzilla.
-developer.
-wiki.
-.sourceforge.net
+
  # Don't filter code!
+  #
+  { -filter }
+  /(.*/)?cvs
+  bugzilla.
+  developer.
+  wiki.
+  .sourceforge.net
@@ -3594,7 +3771,7 @@ wiki.
-
# My user.action file. <fred@example.com>
+
  # My user.action file. <fred@example.com>
@@ -3603,34 +3780,34 @@ wiki.
-
# Aliases are local to the file they are defined in.
-# (Re-)define aliases for this file:
-#
-{{alias}}
-#
-# These aliases just save typing later, and the alias names should
-# be self explanatory.
-#
-+crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
--crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
- allow-all-cookies  = -crunch-all-cookies -session-cookies-only
- allow-popups       = -filter{all-popups}
-+block-as-image     = +block{Blocked as image.} +handle-as-image
--block-as-image     = -block
+              
  # Aliases are local to the file they are defined in.
+  # (Re-)define aliases for this file:
+  #
+  {{alias}}
+  #
+  # These aliases just save typing later, and the alias names should
+  # be self explanatory.
+  #
+  +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
+  -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
+   allow-all-cookies  = -crunch-all-cookies -session-cookies-only
+   allow-popups       = -filter{all-popups}
+  +block-as-image     = +block{Blocked as image.} +handle-as-image
+  -block-as-image     = -block
 
-# These aliases define combinations of actions that are useful for
-# certain types of sites:
-#
-fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referrer
-shop        = -crunch-all-cookies allow-popups
+  # These aliases define combinations of actions that are useful for
+  # certain types of sites:
+  #
+  fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referrer
+  shop        = -crunch-all-cookies allow-popups
 
-# Allow ads for selected useful free sites:
-#
-allow-ads   = -block -filter{banners-by-size} -filter{banners-by-link}
+  # Allow ads for selected useful free sites:
+  #
+  allow-ads   = -block -filter{banners-by-size} -filter{banners-by-link}
 
-# Alias for specific file types that are text, but might have conflicting
-# MIME types. We want the browser to force these to be text documents.
-handle-as-text = -filter +-filter +-content-type-overwrite{text/plain} +-force-text-mode -hide-content-disposition
@@ -3644,11 +3821,11 @@ handle-as-text = -filter +-
-
{ allow-all-cookies }
- sourceforge.net
- .yahoo.com
- .msdn.microsoft.com
- .redhat.com
+
  { allow-all-cookies }
+  sourceforge.net
+  .yahoo.com
+  .msdn.microsoft.com
+  .redhat.com
@@ -3656,8 +3833,8 @@ handle-as-text = -filter +- -

{ -filter }
- .your-home-banking-site.com
+
  { -filter }
+  .your-home-banking-site.com
@@ -3665,16 +3842,16 @@ handle-as-text = -filter +- -
# Technical documentation is likely to contain strings that might
-# erroneously get altered by the JavaScript-oriented filters:
-#
-.tldp.org
-/(.*/)?selfhtml/
+              
  # Technical documentation is likely to contain strings that might
+  # erroneously get altered by the JavaScript-oriented filters:
+  #
+  .tldp.org
+  /(.*/)?selfhtml/
 
-# And this stupid host sends streaming video with a wrong MIME type,
-# so that Privoxy thinks it is getting HTML and starts filtering:
-#
-stupid-server.example.com/
+ # And this stupid host sends streaming video with a wrong MIME type, + # so that Privoxy thinks it is getting HTML and starts filtering: + # + stupid-server.example.com/
@@ -3687,9 +3864,9 @@ stupid-server.example.com/
-
{ +block{Nasty ads.} }
- www.example.com/nasty-ads/sponsor\.gif
- another.example.net/more/junk/here/
+
  { +block{Nasty ads.} }
+  www.example.com/nasty-ads/sponsor\.gif
+  another.example.net/more/junk/here/
@@ -3702,11 +3879,11 @@ stupid-server.example.com/
-
{ +block-as-image }
- .doubleclick.net
- .fastclick.net
- /Realmedia/ads/
- ar.atwola.com/
+
  { +block-as-image }
+  .doubleclick.net
+  .fastclick.net
+  /Realmedia/ads/
+  ar.atwola.com/
@@ -3720,10 +3897,10 @@ stupid-server.example.com/
-
{ fragile }
- .forbes.com
- webmail.example.com
- .mybank.com
+
  { fragile }
+  .forbes.com
+  webmail.example.com
+  .mybank.com
@@ -3733,8 +3910,8 @@ stupid-server.example.com/
-
{ +filter{fun} }
- / # For ALL sites!
+
  { +filter{fun} }
+  / # For ALL sites!
@@ -3748,10 +3925,10 @@ stupid-server.example.com/
-
{ allow-ads }
- .sourceforge.net
- .slashdot.org
- .osdn.net
+
  { allow-ads }
+  .sourceforge.net
+  .slashdot.org
+  .osdn.net
@@ -3765,8 +3942,8 @@ stupid-server.example.com/
-
{ handle-as-text }
- /.*\.sh$
+
  { handle-as-text }
+  /.*\.sh$
@@ -3778,8 +3955,8 @@ stupid-server.example.com/
-
{ +set-image-blocker{blank} }
-/ # ALL sites
+
  { +set-image-blocker{blank} }
+  / # ALL sites