#
# File : $Source: /cvsroot/ijbswa/current/default.filter,v $
#
-# $Id: default.filter,v 1.38 2007/02/19 11:22:48 hal9 Exp $
+# $Id: default.filter,v 1.70 2009/02/21 13:01:51 fabiankeil Exp $
#
# Purpose : Rules to process the content of web pages
#
-# Copyright : Written by and Copyright (C) 2001 - 2007 the
+# Copyright : Written by and Copyright (C) 2001-2009 the
# Privoxy team. http://www.privoxy.org/
#
# We value your feedback. However, to provide you with the best support,
#
# Syntax:
#
-# Filters start with a line "FILTER: name description". They are then referrable
-# from the actionsfile with +filter{name}
+# Generally filters start with a line like "FILTER: name description".
+# They are then referrable from the actionsfile with +filter{name}
+#
+# FILTER marks a filter as content filter, other filter
+# types are CLIENT-HEADER-FILTER, CLIENT-HEADER-TAGGER,
+# SERVER-HEADER-FILTER and SERVER-HEADER-TAGGER.
#
# Inside the filters, write one Perl-Style substitution (job) per line.
# Jobs that precede the first FILTER: line are ignored.
# For Details see the pcrs manpage contained in this distribution.
# (and the perlre, perlop and pcre manpages)
#
-# Note that you are free to choose the delimter as you see fit.
+# Note that you are free to choose the delimiter as you see fit.
#
-# Note2: In addidion to the Perl options gimsx, the following nonstandard
+# Note2: In addition to the Perl options gimsx, the following nonstandard
# options are supported:
#
# 'U' turns the default to ungreedy matching. Add ? to quantifiers to
# switch back to greedy.
+#
# 'T' (trivial) prevents parsing for backreferences in the substitute.
# Use if you want to include text like '$&' in your substitute without
# quoting.
+#
+# 'D' (Dynamic) allows the use of variables. Supported variables are:
+# $host, $origin (the IP address the request came from), $path and $url.
+#
+# Note that '$' is a bad choice as delimiter for dynamic filters as you
+# might end up with unintended variables if you use a variable name
+# directly after the delimiter. Variables will be resolved without
+# escaping anything, therefore you also have to be careful not to chose
+# delimiters that appear in the replacement text. For example '<' should
+# be save, while '?' will sooner or later cause conflicts with $url.
#
#################################################################################
#################################################################################
#
-# js-annoyances: Get rid of particularly annoying JavaScript abuse
+# js-annoyances: Get rid of particularly annoying JavaScript abuse.
#
#################################################################################
-FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse
+FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse.
# Note: Most of these jobs would be safer if restricted to a
# <script> context as in:
#
# s/(<script.*)nasty-item(?=.*<\/script>)/$1replacement/sigU
#
-# but that would make them match only the first occurance of
+# but that would make them match only the first occurrence of
# nasty-item in each <script>. We need nestable jobs!
# Get rid of Javascript referrer tracking.
#################################################################################
#
-# js-events: Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites)
+# js-events: Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites).
#
#################################################################################
-FILTER: js-events Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites)
+FILTER: js-events Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites).
s/(on|event\.)((mouse(over|out|down|up|move))|(un)?load|contextmenu|selectstart)/never/ig
# Not events, but abused on the same type of sites:
#################################################################################
#
-# html-annoyances: Get rid of particularly annoying HTML abuse
+# html-annoyances: Get rid of particularly annoying HTML abuse.
#
#################################################################################
-FILTER: html-annoyances Get rid of particularly annoying HTML abuse
+FILTER: html-annoyances Get rid of particularly annoying HTML abuse.
# New browser windows (if allowed -- see no-popups filter below) should be
# resizeable and have a location and status bar
#################################################################################
#
-# content-cookies: Kill cookies that come in the HTML or JS content
+# 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: content-cookies Kill cookies that come in the HTML or JS content.
# JS cookies, except those used by antiadbuster.com to detect us:
#
#################################################################################
#
-# refresh-tags: Kill automatic refresh tags (for dial-on-demand setups)
+# refresh-tags: Kill automatic refresh tags (for dial-on-demand setups).
#
#################################################################################
-FILTER: refresh-tags Kill automatic refresh tags (for dial-on-demand setups)
+FILTER: refresh-tags Kill automatic refresh tags (for dial-on-demand setups).
# Note: Only deactivates refreshes with more than 9 seconds delay to
# preserve monster-stupid but common redirections via meta tags.
#################################################################################
#
-# unsolicited-popups: Disable unsolicited pop-up windows
+# unsolicited-popups: Disable unsolicited pop-up windows.
#
#################################################################################
-FILTER: unsolicited-popups Disable only unsolicited pop-up windows
+FILTER: unsolicited-popups Disable only unsolicited pop-up windows.
s+([^'"]\s*<head.*>)(?=\s*[^'"])+$1<script>function PrivoxyWindowOpen(){return(null);}</script>+isU
s@([^\w\s.]\s*)((?:map)?(window|this|parent)\.?)?open\s*\(@$1PrivoxyWindowOpen(@ig
##################################################################################
#
-# all-popups: Kill all popups in JavaScript and HTML
+# all-popups: Kill all popups in JavaScript and HTML.
#
#################################################################################
-FILTER: all-popups Kill all popups in JavaScript and HTML
+FILTER: all-popups Kill all popups in JavaScript and HTML.
s@((\W\s*)(?:map)?(window|this|parent)\.?)open\s*\\?\(@$1concat(@ig # JavaScript
-s/\starget\s*=\s*(['"]?)_?(blank|new)\1?/ notarget/ig # HTML
-
+#s/\starget\s*=\s*(['"]?)_?(blank|new)\1?/ notarget/ig # HTML
+s/\starget\s*=\s*(['"]?)_?(blank|new)\1?/ /ig # (X)HTML
##################################################################################
#
-# img-reorder: Reorder attributes in <img> tags to make the banners-by-* filters more effective
+# 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: img-reorder Reorder attributes in <img> tags to make the banners-by-* filters more effective.
# In the first step src is moved to the start, then width is moved to the second
-# place to guarantee an order of src, width, height.
+# place to guarantee an order of src, width, height. Also does some white-space
+# normalization.
+#
# This makes banners-by-size more effective and allows both banners-by-size
# and banners-by-link to preserve the original image URL in the title attribute.
-s|<img\s+?([^>]*) src\s*=\s*(['"])([^>\\\2]+)\2|<img src=$2$3$2 $1|siUg
-s|<img\s+?([^>]*) src\s*=\s*([^'">\\\s]+)|<img src=$2 $1|sig
+s|<img\s+?([^>]*)\ssrc\s*=\s*(['"])([^>\\\2]+)\2|<img src=$2$3$2 $1|siUg
+s|<img\s+?([^>]*)\ssrc\s*=\s*([^'">\\\s]+)|<img src=$2 $1|sig
+s|(<img[^>]+height)\s*=\s*|$1=|sig
-s|<img (src=(?:(['"])[^>\\\\2]*\2\|[^'">\\\s]+?))([^>]*)\s+width\s*=\s*(["']?)(\d+?)\4|<img $1 width=$4$5$4$3|siUg
+s|<img (src=(?:(['"])[^>\\\\2]*\2\|[^'">\\\s]+?))([^>]*)\s+width\s*=\s*((["']?)\d+?\5)(?=[\s>])|<img $1 width=$4$3|siUg
#################################################################################
#
-# banners-by-size: Kill banners by size
+# banners-by-size: Kill banners by size.
#
#################################################################################
#
# Note2: Use img-reorder before this filter to ensure maximum matching success
#
#################################################################################
-FILTER: banners-by-size Kill banners by size
+FILTER: banners-by-size Kill banners by size.
# 88*31
s@<img\s+(?:src\s*=\s*(['"]?)([^>\\\1\s]+)\1)?[^>]*?(width=(['"]?)88\4)[^>]*?(height=(['"]?)31\6)[^>]*?(?=/?>)@\
#################################################################################
#
-# banners-by-link: Kill banners by their links to known clicktrackers (Experimental)
+# banners-by-link: Kill banners by their links to known clicktrackers (Experimental).
#
#################################################################################
-FILTER: banners-by-link Kill banners by their links to known clicktrackers
+FILTER: banners-by-link Kill banners by their links to known clicktrackers.
# Common case with width and height attributes:
#
adclick # See www.dn.se \
| advert # see dict.leo.org \
| atwola\.com/(?:link|redir) # see www.cnn.com \
-| /jump/ # redirs for doublecklick.net ads \
-| tracker | counter # common \
+| doubleclick\.net/jump/ # redirs for doublecklick.net ads \
+| counter # common \
+| (?<!&type=)tracker # (&type=tracker is used in sf's project statistics) \
| adlog\.pl # see sf.net \
)[^>\1\s]*)\1[^>]*>\s*<img\s+(?:src\s*=\s*(['"]?)([^>\\\3\s]+)\3)?[^>]*((?:width|height)\s*=\s*(['"]?)\d+?\6)[^>]*((?:width|height)\s*=\s*(['"]?)\d+?\8)[^>]*?(?=/?>)\
@<img $5 $7 src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed $4 by link to $2"@sigx
# Rare case w/o explicit dimensions:
#
-s@<a\s+href\s*=\s*(['"]?)([^>\1\s]*?(?:ad(?:click|vert)|atwola\.com/(?:link|redir)|doubleclick\.net/jump/|tracker|counter|adlog\.pl)[^>\1\s]*)\1[^>]*>\s*<img\s+(?:src\s*=\s*(['"]?)([^>\\\3\s]+)\3)?[^>]*?(?=/?>)@<img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed $4 by link to $2"@sig
+s@<a\s+href\s*=\s*(['"]?)([^>\1\s]*?(?:ad(?:click|vert)|atwola\.com/(?:link|redir)|doubleclick\.net/jump/|(?<!&type=)tracker|counter|adlog\.pl)[^>\1\s]*)\1[^>]*>\s*<img\s+(?:src\s*=\s*(['"]?)([^>\\\3\s]+)\3)?[^>]*?(?=/?>)@<img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed $4 by link to $2"@sig
################################################################################
#
-# webbugs: Squish WebBugs (1x1 invisible GIFs used for user tracking)
+# webbugs: Squish WebBugs (1x1 invisible GIFs used for user tracking).
#
#################################################################################
-FILTER: webbugs Squish WebBugs (1x1 invisible GIFs used for user tracking)
+FILTER: webbugs Squish WebBugs (1x1 invisible GIFs used for user tracking).
s@<img[^>]*\s(?:width|height)\s*=\s*['"]?[01](?=\D)[^>]*\s(?:width|height)\s*=\s*['"]?[01](?=\D)[^>]*?>@@siUg
#################################################################################
#
-# tiny-textforms: Extend those tiny textareas up to 40x80 and kill the hard wrap
+# 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: tiny-textforms Extend those tiny textareas up to 40x80 and kill the hard wrap.
s/(<textarea[^>]*?)(?:\s*(?:rows|cols)=(['"]?)\d+\2)+/$1 rows=$2\40$2 cols=$2\80$2/ig
s/(<textarea[^>]*?)wrap=(['"]?)hard\2/$1/ig
#################################################################################
#
-# jumping-windows: Prevent windows from resizing and moving themselves
+# jumping-windows: Prevent windows from resizing and moving themselves.
#
#################################################################################
-FILTER: jumping-windows Prevent windows from resizing and moving themselves
+FILTER: jumping-windows Prevent windows from resizing and moving themselves.
s/(?<=[\W])(?:window|this|self)\.(?:move|resize)(?:to|by)\(/''.concat(/ig
#################################################################################
#
-# frameset-borders: Give frames a border, make them resizable and scrollable
+# frameset-borders: Give frames a border, make them resizable and scrollable.
#
#################################################################################
-FILTER: frameset-borders Give frames a border and make them resizable
+FILTER: frameset-borders Give frames a border and make them resizable.
s/(<frameset\s+[^>]*)framespacing=(['"]?)(no|0)\2/$1/igU
s/(<frameset\s+[^>]*)frameborder=(['"]?)(no|0)\2/$1/igU
# John Walker -- January 1998, http://www.fourmilab.ch/webtools/demoroniser
#
#################################################################################
-FILTER: demoronizer Fix MS's non-standard use of standard charsets
+FILTER: demoronizer Fix MS's non-standard use of standard charsets.
s/(&\#[0-2]\d\d)\s/$1; /g
# per Robert Lynch: http://slate.msn.com//?id=2067547, just a guess.
#################################################################################
#
-# shockwave-flash: Kill embedded Shockwave Flash objects
+# shockwave-flash: Kill embedded Shockwave Flash objects.
# Note: Better just block "/.*\.swf$"!
#
#################################################################################
-FILTER: shockwave-flash Kill embedded Shockwave Flash objects
+FILTER: shockwave-flash Kill embedded Shockwave Flash objects.
s|<object [^>]*macromedia.*</object>|<!-- Squished Shockwave Object -->|sigU
s|<embed [^>]*(application/x-shockwave-flash\|\.swf).*>(.*</embed>)?|<!-- Squished Shockwave Flash Embed -->|sigU
#################################################################################
#
-# quicktime-kioskmode: Make Quicktime movies saveable
+# quicktime-kioskmode: Make Quicktime movies saveable.
#
#################################################################################
-FILTER: quicktime-kioskmode Make Quicktime movies saveable
+FILTER: quicktime-kioskmode Make Quicktime movies saveable.
s/(<embed\s+[^>]*)kioskmode\s*=\s*(["']?)true\2/$1/ig
# Pages are "blocked" based on keyword matching.
#
#################################################################################
-FILTER: crude-parental Crude parental filtering
+FILTER: crude-parental Crude parental filtering. Note that this filter doesn't work reliably.
# (Note: Middlesex, Sussex and Essex are counties in the UK, not rude words)
# (Note #2: Is 'sex' a rude word?!)
-s%^.*(?<!middle)(?<!sus)(?<!es)sex.*$%<html><head><title>Blocked</title></head><body><h3>Blocked due to possible adult content. Please see <a href="http://dmoz.org/Kids_and_Teens/">this site</a>.</h3></body></html>%is
+s%^.*(?<!middle)(?<!sus)(?<!es)sex.*$%<html><head><title>Blocked</title></head><body>\
+<h3>Blocked by Privoxy's crude-parental filter due to possible adult content.</h3></body></html>%is
s+^.*warez.*$+<html><head><title>No Warez</title></head><body><h3>You're not searching for illegal stuff, are you?</h3></body></html>+is
# Remove by description
s/^.*\
-(suck |lick |tounge |rub |fuck |fingering |finger |chicks? )?\
-(her |your |my |hard |with |big |wet |tight |pink |hot |moist |young |teen )+\
+(?:(suck|lick|tongue|rub|fuck|fingering|finger|chicks?)\s*)?\
+(?:(her|your|my|hard|with|big|wet|tight|pink|hot|moist|young|teen)\s*)+\
(dicks?|penis|cocks?|balls?|tits?|pussy|cunt|clit|ass|mouth).*$\
/This page has been blocked by Privoxy's crude-parental content filter\
-/is
+/is
#Remove by link text
s/^.*\
-(download|broadband|view|watch|free|get|extreem)? \
-(sex|xxx|porn|cumshot|fuck(ing|s)?|anal|ass|asian|adult|Amateur|org(y|ies)|close ups?|hand ? job|nail(ed)?)+ \
+(download|broadband|view|watch|free|get|extreem)?\s*\
+(sex|xxx|porn|cumshot|fuck(ing|s)?|anal|ass|asian|adult|Amateur|org(y|ies)|close ups?|hand?job|nail(ed)?)+\s*\
(movies?|pics?|videos?|dvds?|dvd's|links?).*$\
/This page has been blocked by Privoxy's crude-parental content filter\
-/is
+/is
#Remove by age disclaimer
s/^.*\
-(models?|chicks?|girls?|women|persons) \
+(models?|chicks?|girls?|women|persons)\s*\
(who|are|were)+ (over|at least) (16|18|21) years (old|of age).*$\
/This page has been blocked by Privoxy's crude-parental content filter\
-/is
+/is
#Remove by regulations
s/^.*(Section 2257|18 U.?S.?C.? 2257).*$\
#################################################################################
#
-# IE-Exploits: Disable some known Internet Explorer bug exploits
+# IE-Exploits: Disable some known Internet Explorer bug exploits.
#
#################################################################################
-FILTER: ie-exploits Disable some known Internet Explorer bug exploits
+FILTER: ie-exploits Disable some known Internet Explorer bug exploits.
# Note: This is basically a demo and waits for someone more interested in IE
# security (sic!) to take over.
#
#################################################################################
FILTER: google CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement.
+
s@</head>@<style type="text/css">\n\
/* Style sheet inserted by Privoxy's google filter. */\n\
\#fbc, \#fbl, \#ra, .rhh {visibility: hidden !important;}\n\
#
#################################################################################
FILTER: yahoo CSS-based block for Yahoo text ads. Also removes a width limitation.
+
s@</head>@\n<style type="text/css">\n\
/* Style sheet inserted by Privoxy's yahoo filter. */\n\
- \#symadbn, \#ymadbn, .yschbox, \#yschsec, .yschhd, \#yschanswr, .yschftad,\
- .yschspn, .yschspns, \#ygrp-sponsored-links {display: none !important;}\n\
- \#yschpri, \#yschweb {width: 100% !important; max-width: 100% !important;}\n\
+ \#symadbn, \#ymadbn, .yschbox, .yschhd, .bbox, \#yschsec, \#sec,\
+ \#yschanswr, .yschftad, .yschspn, .yschspns, \#ygrp-sponsored-links,\
+ \#nwad, \#MWA2, \#MSCM, \#yregad, \
+ \#ks-ypn-ads, .ad, \#east, \#ygrp-vital {display: none !important;}\n\
+ \#yschpri, \#yschweb, \#pri, \#web, \#main {width: 100% !important; max-width: 100% !important;}\n\
\#yschqcon, \#yschtg {width: auto !important; /* No useless horizontal scrollbar please */}\n\
-</style>\n$0@
+ \#composebox \#compose_editorArea {width: 70% !important; /* reasonably sized reply textarea please */\n\
+ </style>\n$0\n@
+
+s@(<textarea\s+id="composeArea"[^>]*)width:545px;@$1width:70%;@isU
#################################################################################
#
#
#################################################################################
FILTER: msn CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation.
+
s@</head>@<style type="text/css">\n\
/* Style sheet inserted by Privoxy's msn filter. */\n\
- .msn_ads {display: none !important;}\n\
- \#results, .flank, .results_area_flank, .results_area_stroke, .SearchSection .not\
- {width: 99% /*!important*/; min-width: 99% !important;\
+ .msn_ads, \#at, \#ar, .mktmsg {display: none !important;}\n\
+ \#results, .flank, .results_area_flank, .results_area_stroke,\n\
+ \#results_area, .SearchSection, .not, .sc_rslth1\n\
+.content, \#sw_foot, \#bf, \#sw_content, \#sidebar, \#pag\n\
+ {width: 99% !important; min-width: 99% !important;\n\
max-width: 100% !important; /* width:100% sometimes causes horizontal scrollbars */}\n\
- /* Make continue links harder to miss */\n\
- \#pagination_bottom a {padding: .3em .5em .3em .5em; border: 1px solid \#e6e6e6;}\n\
- \#pagination_bottom li, \#pagination_bottom li .selected, li .nextPage \
- {margin: 0 !important; cursor: auto; border: none; padding:.1em;}\n\
- \#pagination_bottom li .prevPage {padding-right: 1.5em !important;}\n\
- \#pagination_bottom li .selected {border: none;}\n\
- .selected a {background-color: \#d2eaf6; border: 1px solid \#b7d8ee;}\n\
/* Remove "suggestions". They are next to worthless but partly overlap with the search results */\n\
- .suggestion, \#nys_right {clear: both; display:none;}\n\
+ .suggestion, \#nys_right, \#nys {clear: both; display:none;}\n\
+ \#content {padding-right: 0;}\n\
</style>\n$0@
+# Are these ids still in use?
s@(<div[^>]*) id=(["']?)ads_[^\2]*\2@$1 class="msn_ads"@Uig
+s@(<div[^>]*) class=(["']?)sb_ads[^\2]*\2@$1 class="msn_ads"@Uig
s@(<a[^>]*href=\")http://g.msn.com/.*\?(http://.*)(&&DI=.*)(\")@$1$2$4@Ug
s@(<a[^>]*)gping=\".*\"@$1 title="URL cleaned up by Privoxy's msn filter"@Ug
# appear to early or not at all and as fixing this would require a browser
# that understands background-size (CSS3), they are removed instead.
#
+# When applied to feeds, it removes comment titles that
+# only contain the beginning of the actual comment.
+#
#################################################################################
FILTER: blogspot Cleans up some Blogspot blogs. Read the fine print before using this.
+
s@</head>@<style type="text/css">\n\
/* Style sheet inserted by Privoxy's blogspot filter. */\n\
\#powered-by {display: none !important;}\n\
s@(<div style=\"[^\"]*width:)30em@$1 100%@
s@background:url\(\"http://www.blogblog.com/rounders[^\"]*\"\).*;@/*$0*/@Ug
s@(background:\#[a-f\d]{3})( url\(\"http://www.blogblog.com/rounders[^\"]*\"\).*;)@$1 ;/*$2*/@Ug
+# Do the feed filtering magic as described above.
+s@<title(?:\s+type=\'text\')?>([^<]*)(?:\.\.\.)?\s*</title>\s*\
+(<content(?:\s+type=\'(?:html|text)\')?>\s*\1)@<title></title>$2@ig
#################################################################################
#
-# x-httpd-php-to-html: Header filter to change the Content-Type from
+# x-httpd-php-to-html: Changes the Content-Type header from
# x-httpd-php to html. "Content-Type: x-httpd-php"
# is set by clueless PHP users and causes many
# browsers do open a download menu instead of
# rendering the page.
#
#################################################################################
-FILTER: x-httpd-php-to-html Header filter to change the Content-Type from x-httpd-php to html.
-s@^(Content-Type:) application/x-httpd-php@$1 text/html@
+SERVER-HEADER-FILTER: x-httpd-php-to-html Changes the Content-Type header from x-httpd-php to html.
+
+s@^(Content-Type:)\s*application/x-httpd-php@$1 text/html@i
#################################################################################
#
-# html-to-xml: Header filter to change the Content-Type from html to xml.
+# html-to-xml: Changes the Content-Type header from html to xml.
#
#################################################################################
-FILTER: html-to-xml Header filter to change the Content-Type from html to xml.
-s@^(Content-Type:) text/html(;.*)?$@$1 application/xhtml+xml$2@
+SERVER-HEADER-FILTER: html-to-xml Changes the Content-Type header from html to xml.
+
+s@^(Content-Type:)\s*text/html(;.*)?$@$1 application/xhtml+xml$2@i
#################################################################################
#
-# xml-to-html: Header filter to change the Content-Type from xml to html.
+# xml-to-html: Changes the Content-Type header from xml to html.
#
#################################################################################
-FILTER: xml-to-html Header filter to change the Content-Type from xml to html.
-s@^(Content-Type:) (?:application|text)/(?:xhtml\+)?xml(;.*)?$@$1 text/html$2@
+SERVER-HEADER-FILTER: xml-to-html Changes the Content-Type header from xml to html.
+
+s@^(Content-Type:)\s*(?:application|text)/(?:xhtml\+)?xml(;.*)?$@$1 text/html$2@i
#################################################################################
#
-# hide-tor-exit-notation: Header filter to remove the Tor exit node notation
-# in Host and Referer headers.
+# hide-tor-exit-notation: Remove the Tor exit node notation in Host and Referer headers.
#
# Note: If Privoxy and Tor are chained and Privoxy is configured to
# use socks4a, one can use http://www.example.org.foobar.exit/
# coming from.
#
#################################################################################
-FILTER: hide-tor-exit-notation Header filter to remove the Tor exit node notation in Host and Referer headers.
+CLIENT-HEADER-FILTER: hide-tor-exit-notation Removes the Tor exit node notation in Host and Referer headers.
+
s@^((?:Referer|Host):\s*(?:https?://)?[^/]*)\.[^\./]*?\.exit@$1@i
+#################################################################################
+#
+# less-download-windows: Prevents annoying download windows for content types
+# the browser can handle itself.
+#
+#################################################################################
+SERVER-HEADER-FILTER: less-download-windows Prevent annoying download windows for content types the browser can handle itself.
+
+s@^Content-Disposition:.*filename=(["']?).*\.(png|gif|jpe?g|diff?|d?patch|c|h|pl|shar)\1.*$@@i
+s@^(Content-Type:)\s*(?:message/(?:news|rfc822)|text/x-.*|application/x-sh(?:\s|$))\s*@$1 text/plain@i
+
+#################################################################################
+#
+# image-requests: Tags detected image requests as "IMAGE-REQUEST". Whether
+# or not the detection actually works depends on the browser.
+#
+#################################################################################
+CLIENT-HEADER-TAGGER: image-requests Tags detected image requests as "IMAGE-REQUEST".
+
+s@^Accept:\s*image/.*@IMAGE-REQUEST@i
+
+#################################################################################
+#
+# css-requests: Tags detected CSS requests as "CSS-REQUEST". Whether
+# or not the detection actually works depends on the browser.
+#
+#################################################################################
+CLIENT-HEADER-TAGGER: css-requests Tags detected CSS requests as "CSS-REQUEST".
+
+s@^Accept:\s*text/css.*@CSS-REQUEST@i
+
+#################################################################################
+#
+# client-ip-address: Tags the request with the client's IP address.
+#
+#################################################################################
+CLIENT-HEADER-TAGGER: client-ip-address Tags the request with the client's IP address.
+
+s@^\w*\s+.*\s+HTTP/\d\.\d\s*@IP-ADDRESS: $origin@D
+
+#################################################################################
+#
+# http-method: Tags the request with its HTTP method.
+#
+#################################################################################
+CLIENT-HEADER-TAGGER: http-method Tags the request with its HTTP method.
+
+s@^(\w*).*HTTP/\d\.\d\s*$@$1@i
+
+#################################################################################
+#
+# allow-post: Tags POST requests as "ALLOWED-POST".
+#
+#################################################################################
+CLIENT-HEADER-TAGGER: allow-post Tags POST requests as "ALLOWED-POST".
+
+s@^(?:POST)\s+.*\s+HTTP/\d\.\d\s*@ALLOWED-POST@i
+
+#################################################################################
+#
+# complete-url: Tags the request with the whole request URL.
+#
+#################################################################################
+CLIENT-HEADER-TAGGER: complete-url Tags the request with the whole request URL.
+
+s@^\w*\s+(.*)\s+HTTP/\d\.\d\s*$@$1@i
+
+#################################################################################
+#
+# user-agent: Tags the request with the complete User-Agent header.
+#
+#################################################################################
+CLIENT-HEADER-TAGGER: user-agent Tags the request with the complete User-Agent header.
+
+s@^User-Agent:.*@$0@i
+
+#################################################################################
+#
+# content-type: Tags the request with the content type declared by the server.
+#
+#################################################################################
+SERVER-HEADER-TAGGER: content-type Tags the request with the content type declared by the server.
+
+s@^Content-Type:\s*([^;]+).*@$1@i
+
+#################################################################################
+#
+# privoxy-control: The taggers create tags with the content of X-Privoxy-Control
+# headers, the filters remove said headers.
+#
+#################################################################################
+CLIENT-HEADER-TAGGER: privoxy-control Creates tags with the content of X-Privoxy-Control headers.
+
+s@^X-Privoxy-Control:\s*@@i
+
+CLIENT-HEADER-FILTER: privoxy-control Removes X-Privoxy-Control headers.
+
+s@^X-Privoxy-Control:.*@@i
+
+SERVER-HEADER-TAGGER: privoxy-control Creates tags with the content of X-Privoxy-Control headers.
+
+s@^X-Privoxy-Control:\s*@@i
+
+SERVER-HEADER-FILTER: privoxy-control Removes X-Privoxy-Control headers.
+
+s@^X-Privoxy-Control:.*@@i
+
##############################################################################
#
# Revisions :
# $Log: default.filter,v $
+# Revision 1.70 2009/02/21 13:01:51 fabiankeil
+# Make blogspot's feed magic slightly more reliable.
+#
+# Revision 1.69 2009/02/12 15:40:11 ler762
+# more yahoo email ad blocking
+#
+# Revision 1.68 2008/09/19 13:26:04 fabiankeil
+# s@tounge@tongue@. Anonymously reported in #1648657.
+#
+# Revision 1.67 2008/08/06 17:38:06 fabiankeil
+# In banners-by-size, make sure white-space around the height
+# attribute is removed as well and replace two spaces with
+# "\s" so we don't get fooled by tabs. Fixes #2036125.
+#
+# Revision 1.66 2008/08/03 17:27:47 fabiankeil
+# Teach msn filter to catch a few new ad classes.
+#
+# Revision 1.65 2008/07/21 13:43:44 fabiankeil
+# Fix img-reorder regression introduced with my last commit.
+# Some tags were terminated too soon, letting the browser render
+# some of their arguments as text. Oops.
+#
+# Revision 1.64 2008/07/12 15:49:09 fabiankeil
+# - Don't let img-reorder touch width attributes
+# that aren't followed by either whitespace or '>',
+# as those usually indicate onclick nonsense.
+# Problem and solution reported by Glenn Washburn in #2014552.
+# - While at it, don't use more groups than necessary.
+#
+# Revision 1.63 2008/06/27 12:53:41 fabiankeil
+# Make sure the taggers css-requests and image-requests
+# only match at the beginning of the header.
+#
+# Revision 1.62 2008/06/21 17:02:03 fabiankeil
+# Fix typo.
+#
+# Revision 1.61 2008/05/21 18:44:43 fabiankeil
+# - Let the content-type tagger ignore headers without value.
+# - Remove a few unused lines at the end of the file.
+#
+# Revision 1.60 2008/04/26 10:36:41 fabiankeil
+# Let the msn filter hide another class.
+#
+# Revision 1.59 2008/04/23 16:18:18 fabiankeil
+# s@declarded@declared@
+#
+# Revision 1.58 2008/02/02 15:27:19 fabiankeil
+# Yet another yahoo update to get the width limitation removal working again.
+#
+# Revision 1.57 2008/01/26 15:45:39 fabiankeil
+# Don't let the less-download-windows filter mess up
+# "Content-Type: application/x-shockwave-flash" headers.
+#
+# Revision 1.56 2008/01/25 19:12:40 fabiankeil
+# - Add yet another new yahoo ad id.
+# - Don't let the first banners-by-link job punish URLs for merely
+# containing the pattern "/jump/" when it should really look for
+# "doubleclick\.net/jump/".
+#
+# Revision 1.55 2007/12/31 19:53:59 fabiankeil
+# Let the msn filter remove the width limitation again.
+#
+# Revision 1.54 2007/12/31 19:11:31 fabiankeil
+# - Let the yahoo filter remove the width limitation again.
+# - Teach the blogspot filter to remove useless feed comment
+# titles that only contain the beginning of the actual comment.
+#
+# Revision 1.53 2007/12/23 15:48:12 fabiankeil
+# - Lo and behold, the CSS fix for the MSN buttons is no longer necessary.
+# - Add some new selectors the msn filter should hide.
+# - Add the two yahoo selectors Lee reported in #1856574.
+# - Add comments that the width limitation fixes stopped
+# working for the msn and yahoo filter.
+#
+# Revision 1.52 2007/11/27 18:35:48 fabiankeil
+# Update CSS for the yahoo filter.
+#
+# Revision 1.51 2007/11/04 16:15:11 fabiankeil
+# - Add client-header taggers: client-ip-address,
+# http-method, allow-post, complete-url and user-agent.
+# - Add server-header tagger: content-type.
+#
+# Revision 1.50 2007/11/03 15:05:30 fabiankeil
+# Consistently use an empty line between the description and the PCRS code
+# and end descriptions with dots. Patch submitted by Simon Ruderich.
+#
+# Revision 1.49 2007/11/03 14:29:41 fabiankeil
+# Spelling fixes mostly submitted by Simon Ruderich.
+#
+# Revision 1.48 2007/10/17 18:11:32 fabiankeil
+# Add privoxy-control header filters and taggers.
+#
+# Revision 1.47 2007/10/06 15:45:25 fabiankeil
+# Let msn hide sponsored links in #at divs.
+#
+# Revision 1.46 2007/10/06 09:54:13 fabiankeil
+# - Let msn hide sponsored links in #ar divs.
+# - Teach banners-by-link not to block the graphs for sf's tracker statistics.
+#
+# Revision 1.45 2007/08/11 16:54:12 fabiankeil
+# - Complete the changes from r1.42.
+# - Make crude-parental less sensitive to the amount of white-space,
+# add the note that it doesn't work too well again and replace the
+# DMOZ link with a less confusing explanation.
+#
+# Revision 1.44 2007/07/18 11:06:56 hal9
+# Replace notarget with '' in all popups filter to keep from breaking xhmtl per
+# report from Siegfried Gipp.
+#
+# Revision 1.43 2007/06/01 14:17:04 fabiankeil
+# Mention possible delimiter conflicts with variables in dynamic pcrs commands.
+#
+# Revision 1.42 2007/05/17 15:55:36 fabiankeil
+# Undo an improperly tested last-minute change
+# and turn "text-requests" back into "css-requests".
+#
+# Revision 1.41 2007/05/17 15:45:41 fabiankeil
+# - Mention new filter types and the 'D' option.
+# - Header filters are now case-insensitive and accept a
+# varying amount of whitespace after the colon.
+# - Add another selector for yahoo ads.
+# - New server-header filter: less-download-windows
+# - New client-header taggers: text-requests and image-requests.
+#
+# Revision 1.40 2007/03/20 15:40:00 fabiankeil
+# Adjust to new world order with dedicated header-filter actions.
+#
+# Revision 1.39 2007/02/21 14:10:23 fabiankeil
+# - Fix a js-annoyances pcrs command that broke
+# evaluated code. (BR #1124071, thanks to Bor Gergely)
+# - Have unsolicited-popups and all-popups catch the
+# wheather.com popup reported in in AF #1640173.
+#
# Revision 1.38 2007/02/19 11:22:48 hal9
# Adding back the orginal filter content to offset problems found by Fabian.
#
# Revision 1.6 2001/06/09 14:01:57 swa
# header. cosmetics. default: no messing ala microsuck.
#
-#
-#
-
-