X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=default.filter;h=53777fc029d609494ed4254e1b08867782c36ca8;hb=9fd58c0d;hp=a2c80906ac86544f0bb6cc0696ba75242c8ce448;hpb=7cd903996c3e567ee4dbcabb3ded2c30cdf00bf2;p=privoxy.git
diff --git a/default.filter b/default.filter
index a2c80906..53777fc0 100644
--- a/default.filter
+++ b/default.filter
@@ -1,235 +1,418 @@
-# ********************************************************************
+#################################################################################
#
-# File : $Source: /cvsroot/ijbswa/current/default.filter,v $
+# File : default.filter
#
# Purpose : Rules to process the content of web pages
#
-# Copyright : Written by and Copyright (C) 2001 the SourceForge
-# Privoxy team. http://ijbswa.sourceforge.net
-#
+# Copyright : Written by and Copyright (C) 2001-2018 the
+# Privoxy team. https://www.privoxy.org/
+#
# This program is free software; you can redistribute it
# and/or modify it under the terms of the GNU General
# Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at
# your option) any later version.
-#
+#
# This program is distributed in the hope that it will
# be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
-#
+#
# The GNU General Public License should be included with
# this file. If not, you can view it at
# http://www.gnu.org/copyleft/gpl.html
# or write to the Free Software Foundation, Inc., 59
# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# Revisions :
-# $Log: default.filter,v $
-# Revision 1.2 2002/03/24 13:02:18 swa
-# name change related issues.
#
-# Revision 1.1 2002/03/24 11:37:39 jongfoster
-# Name change
+#################################################################################
#
-# Revision 1.24 2002/03/16 20:39:54 oes
-# - Added descriptions to the filters so users will know what they select in the cgi editor
-# - Added content-cookies filter
-# - Bugfixed many jobs (Thanks to Al for some hints)
+# Syntax:
#
-# Revision 1.22 2002/03/12 13:42:50 oes
-# Fixing & Optimizing REs
+# Generally filters start with a line like "FILTER: name description".
+# They are then referrable from the actionsfile with +filter{name}
#
-# Revision 1.21 2002/03/12 11:59:20 oes
-# Beefed up Buzzword Bingo
+# FILTER marks a filter as content filter, other filter
+# types are CLIENT-HEADER-FILTER, CLIENT-HEADER-TAGGER,
+# SERVER-HEADER-FILTER and SERVER-HEADER-TAGGER.
#
-# Revision 1.20 2002/03/12 01:42:50 oes
-# Introduced modular filters
+# Inside the filters, write one Perl-Style substitution (job) per line.
+# Jobs that precede the first FILTER: line are ignored.
#
-# Revision 1.19 2002/03/10 19:49:24 oes
-# Added expression to kill referer tracking in JavaScripts
+# For Details see the pcrs manpage contained in this distribution.
+# (and the perlre, perlop and pcre manpages)
#
-# Revision 1.18 2002/03/08 17:14:12 oes
-# PNG -> image in comments
+# Note that you are free to choose the delimiter as you see fit.
#
-# Revision 1.17 2002/03/07 03:50:54 oes
-# Adapted comments to new built-in images
+# 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.
#
-# Revision 1.16 2002/02/21 00:12:19 jongfoster
-# Modifying the banner regexps to use long URLS and to autodetect
-# whether to show a logo or a transparent GIF, based on actionsfile
-# setting.
+# 'T' (trivial) prevents parsing for backreferences in the substitute.
+# Use if you want to include text like '$&' in your substitute without
+# quoting.
#
-# Revision 1.15 2001/12/28 23:54:20 steudten
-# Fix for feature Req #495374: http-equiv problem
+# 'D' (Dynamic) allows the use of variables. Supported variables are:
+# $host, $listen-address, $origin (the IP address the request came
+# from), $path and $url.
#
-# Revision 1.14 2001/12/09 18:55:11 david__schmidt
-# Updated CODE_STATUS to beta, commented out microsuck line in re_filterfile
-# for 2.9.10 beta
+# 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.
+#
+#################################################################################
+
+
+#################################################################################
#
-# Revision 1.13 2001/10/13 13:11:20 joergs
-# Fixed WebBug filter.
+# js-annoyances: Get rid of particularly annoying JavaScript abuse.
#
-# Revision 1.12 2001/10/07 15:46:42 oes
-# Followed Guy's proposal to change the document.cookie job
+#################################################################################
+FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse.
+
+# Note: Most of these jobs would be safer if restricted to a
+# )|$1never|sigU
+
+# If we allow window.open, we want normal window features:
+# Test: http://www.htmlgoodies.com/beyond/notitle.html
#
-# Revision 1.6 2001/06/09 14:01:57 swa
-# header. cosmetics. default: no messing ala microsuck.
+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-events: Kill JavaScript event bindings and timers (Radically destructive! Only for extra nasty sites).
#
-#
+#################################################################################
+FILTER: js-events Kill JavaScript event bindings and timers (Radically destructive! Only for extra nasty sites).
+
+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/set(timeout|interval)\(/concat(/ig
#################################################################################
#
-# Syntax:
+# 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
+#
+s/(]+resizable=)(['"]?)(?:no|0)\2/$1$2yes$2/igU
+s/(]+location=)(['"]?)(?:no|0)\2/$1$2yes$2/igU
+s/(]+status=)(['"]?)(?:no|0)\2/$1$2yes$2/igU
+s/(]+scrolling=)(['"]?)(?:no|0)\2/$1$2auto$2/igU
+s/(]+menubar=)(['"]?)(?:no|0)\2/$1$2yes$2/igU
+
+# The