X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=default.filter;h=f4d1b1a756732d710dcff356c3c92e3625f265cc;hp=485033a2cfd68db756494bb75c04e246dde4892a;hb=5278ae2df1958d47a7e5cdc666601c02d081e0a8;hpb=bbf475b8a0ad0101711e542e3ae60dd54359a568
diff --git a/default.filter b/default.filter
index 485033a2..f4d1b1a7 100644
--- a/default.filter
+++ b/default.filter
@@ -2,11 +2,11 @@
#
# File : $Source: /cvsroot/ijbswa/current/default.filter,v $
#
-# $Id: default.filter,v 1.10 2002/04/18 10:14:19 oes Exp $
+# $Id: default.filter,v 1.11.2.23 2004/02/17 13:34:01 oes Exp $
#
# Purpose : Rules to process the content of web pages
#
-# Copyright : Written by and Copyright
+# Copyright : Written by and Copyright (C) 2001 - 2004 the
# Privoxy team. http://www.privoxy.org/
#
# We value your feedback. However, to provide you with the best support,
@@ -62,43 +62,83 @@
#################################################################################
#
-# html-annoyances: Get rid of particularly annoying HTML abuse
+# js-annoyances: Get rid of particularly annoying JavaScript abuse
#
#################################################################################
-FILTER: html-annoyances Get rid of particularly annoying HTML abuse
+FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse
-# New browser windows (if allowed -- see no-popups filter below) should be
-# resizeable and have a location and status bar
+# Note: Most of these jobs would be safer if restricted to a
+# )|$1never|sigU
-# The tag was a crime!
+# If we allow window.open, we want normal window features:
+# Test: http://www.htmlgoodies.com/beyond/notitle.html
#
-s*| **ig
+s/(open\s*\([^\)]+resizable=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
+s/(open\s*\([^\)]+location=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
+s/(open\s*\([^\)]+status=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
+s/(open\s*\([^\)]+scroll(?:ing|bars)=)(["']?)(?:no|0)\2/$1$2auto$2/sigU
+s/(open\s*\([^\)]+menubar=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
+s/(open\s*\([^\)]+toolbar=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
+s/(open\s*\([^\)]+directories=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
+s/(open\s*\([^\)]+fullscreen=)(["']?)(?:yes|1)\2/$1$2no$2/sigU
+s/(open\s*\([^\)]+always(?:raised|lowered)=)(["']?)(?:yes|1)\2/$1$2no$2/sigU
+s/(open\s*\([^\)]+z-?lock=)(["']?)(?:yes|1)\2/$1$2no$2/sigU
+s/(open\s*\([^\)]+hotkeys=)(["']?)(?:yes|1)\2/$1$2no$2/sigU
+s/(open\s*\([^\)]+titlebar=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
+s/(open\s*\([^\)]+always(?:raised|lowered)=)(["']?)(?:yes|1)\2/$1$2no$2/sigU
#################################################################################
#
-# js-annoyances: Get rid of particularly annoying JavaScript abuse
+# js-events: Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites)
#
#################################################################################
-FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse
+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:
+s/(alert|confirm)\s*\(/concat(/ig
+s/settimeout\(/concat(/ig
-# Get rid of Javascript referrer tracking. Test page: http://www.randomoddness.com/untitled.htm
+#################################################################################
#
-s|()|$1"Not Your Business!"$2|Usg
+# html-annoyances: Get rid of particularly annoying HTML abuse
+#
+#################################################################################
+FILTER: html-annoyances Get rid of particularly annoying HTML abuse
-# The status bar is for displaying link targets, not pointless blahblah
+# New browser windows (if allowed -- see no-popups filter below) should be
+# resizeable and have a location and status bar
#
-s/window.status\s*=\s*['"].*?['"]/dUmMy=1/ig
+s/(]+resizable=)(['"]?)(?:no|0)\2/$1$2yes$2/igU
+s/( ]+location=)(['"]?)(?:no|0)\2/$1$2yes$2/igU
+s/( ]+status=)(['"]?)(?:no|0)\2/$1$2yes1$2/igU
+s/( ]+scrolling=)(['"]?)(?:no|0)\2/$1$2auto$2/igU
+s/( ]+menubar=)(['"]?)(?:no|0)\2/$1$2yes$2/igU
-# Kill OnUnload popups. Yummy. Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html
+# The and tags were crimes!
#
-s/()/$1never$2/iU
+s-?(blink|marquee).*>--sigU
#################################################################################
@@ -108,61 +148,237 @@ s/()/$1never$2/iU
#################################################################################
FILTER: content-cookies Kill cookies that come in the HTML or JS content
-# JS cookies, like found on privacy.net:
+# JS cookies, except those used by antiadbuster.com to detect us:
#
-s|(document\.cookie)([ \t\r\n]*=)|documenZapCooky$2|g
+s|(\w+\.)+cookie(?=[ \t\r\n]*=)(?!='aab)|ZappedCookie|ig
# HTML cookies:
#
-s| ].*>||iUT
+s| ||igU
+
+
+#################################################################################
+#
+# 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.
+#
+s/ \2]*))?\2/ )(?=\s*[^'"])+$1+isU
+s+([^\w\s.]\s*)((window|this|parent)\.)?open\s*\(+$1PrivoxyWindowOpen(+ig
+s+([^'"]\s*)(?!\s*(\\n|'|"))+$1+iU
+
+
+##################################################################################
+#
+# all-popups: Kill all popups in JavaScript and HTML
+#
+#################################################################################
+FILTER: all-popups Kill all popups in JavaScript and HTML
+
+s/((\W\s*)(window|this|parent)\.)open\s*\\?\(/$1concat(/ig # JavaScript
+s/\starget\s*=\s*(['"]?)_?(blank|new)\1?/ notarget/ig # HTML
##################################################################################
#
-# popups: Kill all popups in JS and HTML
+# img-reorder: Reorder attributes in tags to make the banners-by-* filters more effective
#
#################################################################################
-FILTER: popups Kill all popups in JS and HTML
+FILTER: img-reorder Reorder attributes in 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.
+# 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/window\.open\s*\(/concat(/ig # JavaScript
-s/([ =;])open\s*\(/$1concat(/ig # JavaScript alternative
-s/target=['"]?(_blank|_new)['"]?/notarget/ig # HTML
+s| ]*) src\s*=\s*(['"])([^>\\\2]+)\2| ]*) src\s*=\s*([^'">\\\s]+)| \\\\2]+\2\|[^'">\\\s]+?))([^>]*)width\s*=\s*(["']?)(\d+?)\4| ]+)framespacing=['"]?(no|0)['"]?(.*>)/$1$3/igU
-s/(]+)(frame)?border=['"]?(no|0)['"]?(.*>)/$1$4/igU
+# 88*31
+s@ \\\1\s]+)\1)?[^>]*?(width=(['"]?)88\4)[^>]*?(height=(['"]?)31\6)[^>]*>@ @sig
+# 120*60, 120*90, 120*240, 120*600
+s@ \\\1\s]+)\1)?[^>]*?(width=(['"]?)120\4)[^>]*?(height=(['"]?)(?:600?|90|240)\6)[^>]*>@ @sig
+# 125*125
+s@ \\\1\s]+)\1)?[^>]*?(width=(['"]?)125\4)[^>]*?(height=(['"]?)125\6)[^>]*>@ @sig
+# 160*600
+s@ \\\1\s]+)\1)?[^>]*?(width=(['"]?)160\4)[^>]*?(height=(['"]?)600\6)[^>]*>@ @sig
+# 180*150
+s@ \\\1\s]+)\1)?[^>]*?(width=(['"]?)180\4)[^>]*?(height=(['"]?)150\6)[^>]*>@ @sig
+# 234*60, 468*60 (Most Banners!)
+s@ \\\1\s]+)\1)?[^>]*?(width=(['"]?)(?:234|468)\4)[^>]*?(height=(['"]?)60\6)[^>]*>@ @sig
+# 240*400
+s@ \\\1\s]+)\1)?[^>]*?(width=(['"]?)240\4)[^>]*?(height=(['"]?)400\6)[^>]*>@ @sig
+# 250*250, 300*250
+s@ \\\1\s]+)\1)?[^>]*?(width=(['"]?)(?:250|300)\4)[^>]*?(height=(['"]?)250\6)[^>]*>@ @sig
+# 336*280
+s@ \\\1\s]+)\1)?[^>]*?(width=(['"]?)336\4)[^>]*?(height=(['"]?)280\6)[^>]*>@ @sig
+
+# Note: 200*50 was also proposed, but it probably causes too much collateral damage:
+#
+#s@ \\\1\s]+)\1)?[^>]*?(width=(['"]?)200\4)[^>]*?(height=(['"]?)50\6)[^>]*>@ @sig
-s/( ]+)frameborder=['"]?(no|0)['"]?(.*>)/$1$3/igU
-s/( ]+)noresize(.*>)/$1$2/igU
-s/( ]+)resizable=['"]?(no)['"]?(.*>)/$1$3/igU
-s/( ]+)scrolling=['"]?(no)['"]?(.*>)/$1$3/igU
#################################################################################
#
+# banners-by-link: Kill banners by their links to known clicktrackers (Experimental)
+#
+#################################################################################
+FILTER: banners-by-link Kill banners by their links to known clicktrackers
+
+# Common case with width and height attributes:
+#
+s@\1\s]*?(?:\
+ adclick # See www.dn.se \
+| atwola\.com/(?:link|redir) # see www.cnn.com \
+| /jump/ # redirs for doublecklick.net ads \
+| tracker | counter # common \
+| adlog\.pl # see sf.net \
+)[^>\1\s]*)\1[^>]*>\s* \\\3\s]+)\3)?[^>]*((?:width|height)\s*=\s*(['"]?)\d+?\6)[^>]*((?:width|height)\s*=\s*(['"]?)\d+?\8)[^>]*>\
+@ @sigx
+
+# Rare case w/o explicit dimensions:
+#
+s@ \1\s]*?(?:adclick|atwola\.com/(?:link|redir)|doubleclick\.net/jump/|tracker|counter|adlog\.pl)[^>\1\s]*)\1[^>]*>\s* \\\3\s]+)\3)?[^>]*>@ @sig
+
+
+################################################################################
+#
# webbugs: Squish WebBugs (1x1 invisible GIFs used for user tracking)
#
#################################################################################
FILTER: webbugs Squish WebBugs (1x1 invisible GIFs used for user tracking)
-s/ ]*?(width|height)\s*=\s*['"]?1\D[^>]*?(width|height)\s*=\s*['"]?1(\D[^>]*?)?>//siUg
+s/ ]*(?:width|height)\s*=\s*['"]?[01](?=\D)[^>]*(?:width|height)\s*=\s*['"]?[01](?=\D)[^>]*?>//siUg
#################################################################################
#
-# refresh-tags: Kill automatic refresh tags (for dial-on-demand setups)
+# tiny-textforms: Extend those tiny textareas up to 40x80 and kill the hard wrap
#
#################################################################################
-FILTER: refresh-tags Kill automatic refresh tags (for dial-on-demand setups)
+FILTER: tiny-textforms Extend those tiny textareas up to 40x80 and kill the hard wrap
+
+s/(