Created
February 23, 2025 15:59
-
-
Save arinoki/e601de21c13b665967ff1d8065d10a87 to your computer and use it in GitHub Desktop.
default.filter for privoxy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ################################################################################# | |
| # | |
| # File : default.filter | |
| # | |
| # Purpose : Rules to process the content of web pages | |
| # | |
| # Copyright : Written by and Copyright (C) 2001-2022 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. | |
| # | |
| ################################################################################# | |
| # | |
| # Syntax: | |
| # | |
| # 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 delimiter as you see fit. | |
| # | |
| # 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, $listen-address, $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. | |
| # | |
| ################################################################################# | |
| 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 occurrence of | |
| # nasty-item in each <script>. We need nestable jobs! | |
| # Get rid of Javascript referrer tracking. | |
| # Test page: http://www.javascript-page.com/referrer.html | |
| # | |
| s|(?:\w+\.)+referrer|false.toString()|gisU | |
| # The status bar is for displaying link targets, not pointless blahblah | |
| # | |
| s@([\W]\s*)((?:this|window)\.(?:default)?status)\s*=\s*((['"]).*?\4)@$1$2 =\ | |
| (typeof(this.href) != 'undefined')?($3 + ' URL: ' + this.href):($2)@ig | |
| s/(?:(?:this|window)\.(?:default)?status)\s*=\s*\w*\s*;//ig | |
| # Kill OnUnload popups. Yummy. | |
| # Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html | |
| # | |
| s/(<body\s+[^>]*)onunload/$1never/siU | |
| s|(<script.*)window\.onunload(?=.*</script>)|$1never|sigU | |
| # If we allow window.open, we want normal window features: | |
| # Test: http://www.htmlgoodies.com/beyond/notitle.html | |
| # | |
| 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 | |
| ################################################################################# | |
| # | |
| # 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 | |
| ################################################################################# | |
| # | |
| # 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/(<a\s+href[^>]+resizable=)(['"]?)(?:no|0)\2/$1$2yes$2/igU | |
| s/(<a\s+href[^>]+location=)(['"]?)(?:no|0)\2/$1$2yes$2/igU | |
| s/(<a\s+href[^>]+status=)(['"]?)(?:no|0)\2/$1$2yes$2/igU | |
| s/(<a\s+href[^>]+scrolling=)(['"]?)(?:no|0)\2/$1$2auto$2/igU | |
| s/(<a\s+href[^>]+menubar=)(['"]?)(?:no|0)\2/$1$2yes$2/igU | |
| # The <BLINK> and <MARQUEE> tags were crimes! | |
| # | |
| s-</?(blink|marquee).*>--sigU | |
| ################################################################################# | |
| # | |
| # 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: | |
| # | |
| s|(\w+\.)+cookie(?=[ \t\r\n]*=)(?!='aab)|ZappedCookie|ig | |
| # HTML cookies: | |
| # | |
| s|<meta\s+http-equiv=['"]?set-cookie.*>|<!-- ZappedCookie -->|igU | |
| ################################################################################# | |
| # | |
| # refresh-tags: Kill automatic refresh tags if refresh time is larger than 9 seconds. | |
| # | |
| ################################################################################# | |
| FILTER: refresh-tags Kill automatic refresh tags if refresh time is larger than 9 seconds. | |
| # Note: Only deactivates refreshes with more than 9 seconds delay to | |
| # preserve monster-stupid but common redirections via meta tags. | |
| # | |
| s@<meta\s+http-equiv\s*=\s*(['"]?)refresh\1\s+content\s*=\s*(['"]?)\d{2,}\s*(;(?:\s*url\s*=\s*)?([^>\2]*))?\2@<link rev="x-refresh" href="$4"@ig | |
| ################################################################################# | |
| # | |
| # unsolicited-popups: Disable 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 | |
| s+([^'"]\s*</html>)(?!\s*(\\n|'|"))+$1<script>function PrivoxyWindowOpen(a, b, c){return(window.open(a, b, c));}</script>+iU | |
| ################################################################################## | |
| # | |
| # 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?/ /ig # (X)HTML | |
| ################################################################################## | |
| # | |
| # 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. 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+?([^>]*)\ssrc\s*=\s*(['"])([^>'" ]+)\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=|siUg | |
| s|<img (src=(?:(['"])[^>'" ]*\2\|[^'">\\\s]+?))([^>]*)\s+width\s*=\s*((["']?)\d+?\5)(?=[\s>])|<img $1 width=$4$3|siUg | |
| ################################################################################# | |
| # | |
| # banners-by-size: Kill banners by size. | |
| # | |
| ################################################################################# | |
| # | |
| # Standard banner sizes taken from http://www.iab.net/iab_banner_standards/bannersizes.html | |
| # | |
| # Note: Use http://config.privoxy.org/send-banner?type=trans for a transparent 1x1 image | |
| # Use http://config.privoxy.org/send-banner?type=pattern for a grey/white pattern image | |
| # Use http://config.privoxy.org/send-banner?type=auto to auto-select. | |
| # | |
| # Note2: Use img-reorder before this filter to ensure maximum matching success | |
| # | |
| ################################################################################# | |
| 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)[^>]*?(?=/?>)@\ | |
| <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-$2-by-size" $3 $5@sig | |
| # 120*60, 120*90, 120*240, 120*600 | |
| s@<img\s+(?:src\s*=\s*(['"]?)([^>\\\1\s]+)\1)?[^>]*?(width=(['"]?)120\4)[^>]*?(height=(['"]?)(?:600?|90|240)\6)[^>]*?(?=/?>)@\ | |
| <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-$2-by-size" $3 $5@sig | |
| # 125*125 | |
| s@<img\s+(?:src\s*=\s*(['"]?)([^>\\\1\s]+)\1)?[^>]*?(width=(['"]?)125\4)[^>]*?(height=(['"]?)125\6)[^>]*?(?=/?>)@\ | |
| <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-$2-by-size" $3 $5@sig | |
| # 160*600 | |
| s@<img\s+(?:src\s*=\s*(['"]?)([^>\\\1\s]+)\1)?[^>]*?(width=(['"]?)160\4)[^>]*?(height=(['"]?)600\6)[^>]*?(?=/?>)@\ | |
| <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-$2-by-size" $3 $5@sig | |
| # 180*150 | |
| s@<img\s+(?:src\s*=\s*(['"]?)([^>\\\1\s]+)\1)?[^>]*?(width=(['"]?)180\4)[^>]*?(height=(['"]?)150\6)[^>]*?(?=/?>)@\ | |
| <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-$2-by-size" $3 $5@sig | |
| # 234*60, 468*60 (Most Banners!) | |
| s@<img\s+(?:src\s*=\s*(['"]?)([^>\\\1\s]+)\1)?[^>]*?(width=(['"]?)(?:234|468)\4)[^>]*?(height=(['"]?)60\6)[^>]*?(?=/?>)@\ | |
| <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-$2-by-size" $3 $5@sig | |
| # 240*400 | |
| s@<img\s+(?:src\s*=\s*(['"]?)([^>\\\1\s]+)\1)?[^>]*?(width=(['"]?)240\4)[^>]*?(height=(['"]?)400\6)[^>]*?(?=/?>)@\ | |
| <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-$2-by-size" $3 $5@sig | |
| # 250*250, 300*250 | |
| s@<img\s+(?:src\s*=\s*(['"]?)([^>\\\1\s]+)\1)?[^>]*?(width=(['"]?)(?:250|300)\4)[^>]*?(height=(['"]?)250\6)[^>]*?(?=/?>)@\ | |
| <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-$2-by-size" $3 $5@sig | |
| # 336*280 | |
| s@<img\s+(?:src\s*=\s*(['"]?)([^>\\\1\s]+)\1)?[^>]*?(width=(['"]?)336\4)[^>]*?(height=(['"]?)280\6)[^>]*?(?=/?>)@\ | |
| <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-$2-by-size" $3 $5@sig | |
| # Note: 200*50 was also proposed, but it probably causes too much collateral damage: | |
| # | |
| #s@<img\s+(?:src\s*=\s*(['"]?)([^>\\\1\s]+)\1)?[^>]*?(width=(['"]?)200\4)[^>]*?(height=(['"]?)50\6)[^>]*?(?=/?>)@\ | |
| # <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-$2-by-size" $3 $5@sig | |
| ################################################################################# | |
| # | |
| # 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@<a\s+href\s*=\s*(['"]?)([^>\1\s]*?(?:\ | |
| adclick # See www.dn.se \ | |
| | advert # see dict.leo.org \ | |
| | atwola\.com/(?:link|redir) # see www.cnn.com \ | |
| | 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/|(?<!&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). | |
| # | |
| ################################################################################# | |
| 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. | |
| # | |
| ################################################################################# | |
| 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. | |
| # | |
| ################################################################################# | |
| 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. | |
| # | |
| ################################################################################# | |
| 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 | |
| s/(<frameset\s+[^>]*)border=(['"]?)(no|0)\2/$1/igU | |
| s/(<frame\s+[^>]*)noresize/$1/igU | |
| s/(<frame\s+[^>]*)frameborder=(['"]?)(no|0)\2/$1/igU | |
| s/(<frame\s+[^>]*)scrolling=(['"]?)(no|0)\2/$1/igU | |
| ################################################################################# | |
| # | |
| # iframes: Remove all detected iframes. Should only be enabled for | |
| # individual sites after testing that the iframes are optional. | |
| # | |
| ################################################################################# | |
| FILTER: iframes Removes all detected iframes. Should only be enabled for individual sites. | |
| s@<iframe.*</iframe>@<!-- iframe removed by Privoxy's iframe filter -->@Uisg | |
| ################################################################################# | |
| # | |
| # demoronizer: Correct Microsoft's abuse of standardized character sets, which | |
| # leave the browser to (mis)-interpret unknown characters, with | |
| # sometimes bizarre results on non-MS platforms. | |
| # | |
| # credit: ripped from the demoroniser.pl script by: | |
| # John Walker -- January 1998, http://www.fourmilab.ch/webtools/demoroniser | |
| # | |
| ################################################################################# | |
| 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. | |
| # Must come before x94 below. | |
| s/\xE2\x80\x94/ -- /g | |
| s/\x82/,/g | |
| #s-\x83-<em>f</em>-g | |
| s/\x84/,,/g | |
| s/\x85/.../g | |
| #s/\x88/^/g | |
| #s-\x89- °/°°-g | |
| s/\x8B/</g | |
| s/\x8C/Oe/g | |
| s/\x91/`/g | |
| s/\x92/'/g | |
| s/(\x93|\x94)/"/g | |
| # Bullet type character. | |
| s/\x95/·/g | |
| s/\x96/-/g | |
| s/\x97/--/g | |
| #s-\x98-<sup>~</sup>-g | |
| #s-\x99-<sup>TM</sup>-g | |
| # per Robert Lynch. | |
| s/\x9B/>/g # 155 | |
| ################################################################################# | |
| # | |
| # shockwave-flash: Kill embedded Shockwave Flash objects. | |
| # Note: Better just block "/.*\.swf$"! | |
| # | |
| ################################################################################# | |
| 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. | |
| # | |
| ################################################################################# | |
| FILTER: quicktime-kioskmode Make Quicktime movies saveable. | |
| s/(<embed\s+[^>]*)kioskmode\s*=\s*(["']?)true\2/$1/ig | |
| ################################################################################# | |
| # | |
| # fun: Text replacements for subversive browsing fun! | |
| # | |
| ################################################################################# | |
| FILTER: fun Text replacements for subversive browsing fun! | |
| # SCNR | |
| # | |
| s/microsoft(?!\.[^\s])/MicroSuck/ig | |
| # Buzzword Bingo (example for extended regex syntax) | |
| # | |
| s* (?:industry|world)[ -]leading \ | |
| | cutting[ -]edge \ | |
| | customer[ -]focused \ | |
| | market[ -]driven \ | |
| | award[ -]winning # Comments are OK, too! \ | |
| | high[ -]performance \ | |
| | solutions[ -]based \ | |
| | unmatched \ | |
| | unparalleled \ | |
| | unrivalled \ | |
| *$0<sup><font color="red"><b>Bingo!</b></font></sup> \ | |
| *igx | |
| # For Germans only | |
| # | |
| s/(M|m)edien(?![^<]*>)/$1ädchen/Ug | |
| ################################################################################# | |
| # | |
| # crude-parental: Crude parental filtering. Use with a suitable blocklist. | |
| # Pages are "blocked" based on keyword matching. | |
| # | |
| ################################################################################# | |
| 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 by <a href="http://p.p/">Privoxy's</a> crude-parental filter due to possible adult content.</h3></body></html>\n%is | |
| s+^.*warez.*$+<html><head><title>No Warez</title></head><body><h3>You're not searching for illegal stuff, are you?</h3></body></html>\n+is | |
| # Remove by description | |
| s@^.*\ | |
| (?:(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 <a href="http://p.p/">Privoxy's</a> crude-parental \ | |
| content filter based on the description.\n\ | |
| @is | |
| #Remove by link text | |
| s@^.*\ | |
| (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 <a href="http://p.p/">Privoxy's</a> crude-parental \ | |
| content filter based on link text.\n\ | |
| @is | |
| #Remove by age disclaimer | |
| s@^.*\ | |
| (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 <a href="http://p.p/">Privoxy's</a> crude-parental \ | |
| content filter because of an age disclaimer.\n\ | |
| @is | |
| #Remove by regulations | |
| s@^.*(Section 2257|18 U.?S.?C.? 2257).*$\ | |
| @This page has been blocked by <a href="http://p.p/">Privoxy's</a> crude-parental \ | |
| content filter because of an regulations text.\n\ | |
| @is | |
| ################################################################################# | |
| # | |
| # 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. | |
| # Cross-site-scripting: | |
| # | |
| s%f\("javascript:location.replace\('mk:@MSITStore:C:'\)"\);%alert\("This page looks like it tries to use a vulnerability described here:\n http://online.securityfocus.com/archive/1/298748/2002-11-02/2002-11-08/2"\);%siU | |
| # Address bar spoofing (http://www.secunia.com/advisories/10395/): | |
| # | |
| s/(<a[^>]*href[^>]*)(?:\x01|\x02|\x03|%0[012])@/$1MALICIOUS-LINK@/ig | |
| # Nimda: | |
| # | |
| s%<script language="JavaScript">(window\.open|1;''\.concat)\("readme\.eml", null, "resizable=no,top=6000,left=6000"\)</script>%<br><font size="7"> WARNING: This Server is infected with <a href="http://www.cert.org/advisories/CA-2001-26.html">Nimda</a>!</font>%g | |
| ################################################################################# | |
| # | |
| # | |
| # site-specifics: Cure for site-specific problems. Don't apply generally! | |
| # | |
| # Note: The fixes contained here are so specific to the problems of the | |
| # particular web sites they are designed for that they would be a | |
| # waste of CPU cycles (or even destructive!) on 99.9% of the web | |
| # sites where they don't apply. | |
| # | |
| ################################################################################# | |
| FILTER: site-specifics Cure for site-specific problems. Don't apply generally! | |
| # www.spiegel.de excludes X11 users from viewing Flash5 objects - shame. | |
| # Apply to: www.spiegel.de/static/js/flash-plugin.js | |
| # | |
| s/indexOf\("x11"\)/indexOf("x13")/ | |
| # www.quelle-bausparkasse.de uses a very stupid redirect mechanism that | |
| # relies on a webbug being present. Can we tolerate that? No! | |
| # Apply to: www.quelle-bausparkasse.de/$ | |
| # | |
| s/mylogfunc()//g | |
| # groups.yahoo.com has splash pages that one needs to click through in | |
| # order to access the actual messages. Let the browser do that. Thanks | |
| # to Paul Jobson for this one: | |
| # | |
| s|<a href="(.+?)">(?:Continue to message\|Weiter zu Nachricht)</a>|<meta http-equiv="refresh" content="0; URL=$1">|ig | |
| # monster.com has two very similar gimmicks: | |
| # | |
| s|<input type="hidden" name="REDIRECT" value="(.+?)">|<meta http-equiv="refresh" content="0; URL=$1">|i | |
| s|<IMG SRC="http://media.monster.com/mm/usen/my/no_thanks_211x40.gif".+?>|<meta http-equiv="refresh" content="0; URL=http://my.monster.com/resume.asp">|i | |
| # nytimes.com triggers popups through the onload handler of dummy images | |
| # to fool popup-blockers. | |
| # | |
| s|(<img [^>]*)onload|$1never|sig | |
| # Pre-check all the "Discard" buttons in GNU Mailman's web interface. | |
| # (This saves a lot of mouse aiming practice when flushing spamtraps) | |
| # | |
| s|(<INPUT name="\d{2,4}" type="RADIO" value="0") CHECKED |$1|g | |
| s|<INPUT name="\d{2,4}" type="RADIO" value="3" |$0 checked|g | |
| ################################################################################# | |
| # | |
| # no-ping: Removes non-standard ping attributes in <a> and <area> tags. | |
| # | |
| ################################################################################# | |
| FILTER: no-ping Removes non-standard ping attributes in <a> and <area> tags. | |
| s@(<a(?:rea)?[^>]*?)\sping=(['"]?)([^"'>]+)\2([>\s]?)@\ | |
| <strong style="color:white; background-color:red;" title="Privoxy removed ping target '$3'">PING!</strong>\n$1$4@ig | |
| ################################################################################# | |
| # | |
| # allow-autocompletion: Changes autocomplete="off" on form and input fields | |
| # to "on" to allow autocompletion. | |
| # | |
| ################################################################################# | |
| FILTER: allow-autocompletion Changes autocomplete="off" on form and input fields to "on" to allow autocompletion. | |
| s@(<(?:input|form|select|textarea)\s[^>]+autocomplete=)(['"]?)(?:off|0)\2@$1$2on$2@igsU | |
| ################################################################################# | |
| # | |
| # github: Removes the annoying "Sign-Up" banner and the Cookie disclaimer. | |
| # | |
| ################################################################################# | |
| FILTER: github Removes the annoying "Sign-Up" banner and the Cookie disclaimer. | |
| s@<signup-prompt.*</signup-prompt>@@Uis | |
| s@(<div) (class="hx_cookie-banner)@$1 style="display:none;" $2@ | |
| ################################################################################# | |
| # | |
| # imdb: Removes some ads on IMDb. | |
| # | |
| ################################################################################# | |
| FILTER: imdb Removes some ads on IMDb. | |
| s@(<div id="top_ad_wrapper")@$1 style="display:none"@ | |
| s@<iframe[^>]*id="top_ad"[^>]*>.*</iframe>@<!-- Iframe removed by Privoxy's imdb filter -->@ | |
| s@<iframe[^>]*onload="doWithAds.call[^>]*></iframe>@<!-- Iframe removed by Privoxy's imdb filter -->@g | |
| ################################################################################# | |
| # | |
| # google: CSS-based block for Google text ads. Also removes | |
| # a width limitation and the toolbar advertisement. | |
| # | |
| ################################################################################# | |
| FILTER: google CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement. | |
| s@</head>[^\\]@<style type="text/css">\n\ | |
| /* Style sheet inserted by Privoxy's google filter. */\n\ | |
| \#fbc, \#fbl, \#ra, .rhh {visibility: hidden !important;}\n\ | |
| \#tpa1,\#tpa2,\#tpa3,\#tpa4,\#tpa5,\#tpa5, \#spl, .ch, \#ads,\ | |
| \#toolbar, \#google_ads_frame, \#mbEnd {display: none !important;}\n\ | |
| .main_body, .j, \#res, .med, .hd, .g, .s\n\ | |
| {width: 99%; max-width: 100%; margin-left: 0; margin-right: 0;}\n\ | |
| </style>\n$0@ | |
| s@<div style=\"padding-top:11px;min-width:500px\">@<div id="main_body">@ | |
| s@(<table cellspacing=0 cellpadding=0 width=25% align=right bgcolor=\#ffffff border=0\ | |
| |</font></td></tr></tbody></table><table align=\"right\" bgcolor=\"\#ffffff\"\ | |
| |<table cellspacing=0 cellpadding=0 align=right bgcolor=\#ffffff border=0\ | |
| |<table style=\"clear:both\" align=right width=25% cellspacing=\"0\" cellpadding=\"0\"\ | |
| border=\"0\" bgcolor=\"\#ffffff\")@$0 id="ads"@ | |
| s@(<br clear=all><table)( border=0 cellpadding=9><tr><td)@$1 id="toolbar"$2@ | |
| ################################################################################# | |
| # | |
| # yahoo: CSS-based block for Yahoo text ads. Also removes a width limitation. | |
| # | |
| ################################################################################# | |
| FILTER: yahoo CSS-based block for Yahoo text ads. Also removes a width limitation. | |
| s@</head>@\n<style type="text/css">\n\ | |
| /* Style sheet inserted by Privoxy's yahoo filter. */\n\ | |
| \#symadbn, \#ymadbn, .yschbox, .yschhd, .bbox, \#yschsec, \#sec,\ | |
| \#yschanswr, .yschftad, .yschspn, .yschspns, \#ygrp-sponsored-links,\ | |
| \#nwad, \#MWA2, \#MSCM, \#yregad, \#sponsored-links,\ | |
| \#ks-ypn-ads, .ad, \#east, \#ygrp-vital, .ads {display: none !important;}\n\ | |
| \#yschpri, \#yschweb, \#pri, \#web, \#main, .yschttl, .abstr, .res \n\ | |
| {width: 99% !important; max-width: 100% !important;}\n\ | |
| .yschttl, .res, .res.indent, \#web {padding: 0px; margin: 0px !important;}\n\ | |
| \#web {padding-left: 0.5em}\n\ | |
| \#yschqcon, \#yschtg {width: auto !important; /* No useless horizontal scrollbar please */}\n\ | |
| \#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 | |
| ################################################################################# | |
| # | |
| # msn: CSS-based block for MSN text ads. Also removes tracking URLs | |
| # and a width limitation. | |
| # | |
| ################################################################################# | |
| FILTER: msn CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation. | |
| s@</head>@<style type="text/css">\n\ | |
| /* Style sheet inserted by Privoxy's msn filter. */\n\ | |
| .msn_ads, \#at, \#ar, .mktmsg {display: none !important;}\n\ | |
| \#results, \#b_results, .flank, .results_area_flank, .results_area_stroke,\n\ | |
| \#results_area, \#content, .sb_tlst, .sa_cc, .sb_ph, \#sw_main,\n\ | |
| .content, .b_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\ | |
| /* Remove 'related' ads */\n\ | |
| .b_ad, .b_adlabel {clear: both; display:none;}\n\ | |
| /* Remove "suggestions". They are next to worthless but partly overlap with the search results */\n\ | |
| .suggestion, \#nys_right, \#nys {clear: both; display:none;}\n\ | |
| /* Remove "Related searches" at the left side of the main results.\n\ | |
| They are next to worthless, too, and also are still present below the main search results */\n\ | |
| \#b_results > .b_ans {clear: both; display:none;}\n\ | |
| \#s_notf_div,\n \ | |
| /* Overlay ads to enable Facebook 'likes' in search results. */\n\ | |
| .sn_container {display:none !important;}\n\ | |
| \#content, \#b_content {padding: 0px 0px 0px 0px}\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 | |
| ################################################################################# | |
| # | |
| # blogspot: Cleans up some Blogspot blogs. Read the fine print before using this. | |
| # | |
| # This filter also intentionally removes some navigation stuff and | |
| # sets the page width to 100%. As a result, some rounded "corners" would | |
| # 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\ | |
| \#wrap4, \#wrapper {margin-top: 0px }\n\ | |
| \#blogheader, \#header {margin-top: 0.5em !important}\n\ | |
| \#content {width: 98% }\n\ | |
| \#main {width: 70% }\n\ | |
| \#sidebar {width: 29% }\n\ | |
| .post-body {overflow: auto;}\n\ | |
| .blogComments {width: 100%; overflow: auto;}\n</style>\n$0@ | |
| s@<body.*(?:<div id="space-for-ie"></div>|(<div id="(?:content|wrap4|wrapper)))@<body>\ | |
| <!-- Privoxy's blogspot filter ditched some garbage here -->$1@Us | |
| 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 | |
| ################################################################################# | |
| # | |
| # bundeswehr.de: Hide the cookie and privacy info banner on bundeswehr.de. | |
| # | |
| # The relevant parts of the page work without accepting cookies. | |
| # | |
| ################################################################################# | |
| FILTER: bundeswehr.de Hide the cookie and privacy info banner on bundeswehr.de | |
| s@<div class="privacy-protection-banner__container"@$0 style="display: none"@ | |
| ################################################################################# | |
| # | |
| # sourceforge: Reduces the amount of ads for proprietary software on SourceForge. | |
| # | |
| ################################################################################# | |
| FILTER: sourceforge Reduces the amount of ads for proprietary software on SourceForge. | |
| s@<div id="banner-sterling"@$0 style="display:none;"@ | |
| s@<section id="nels"@$0 style="display:none;"@ | |
| s@<aside class="m-wide-widget m-wide-projects-widget "@$0 style="display:none;"@ | |
| s@<div id="newsletter-floating"@$0 style="display:none;"@ | |
| s@<div class="sterling" id="banner-sterling"@$0 style="display:none;"@ | |
| ################################################################################# | |
| # | |
| # 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. | |
| # | |
| ################################################################################# | |
| 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: Changes the Content-Type header from html to xml. | |
| # | |
| ################################################################################# | |
| 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: Changes the Content-Type header from xml to html. | |
| # | |
| ################################################################################# | |
| 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: 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/ | |
| # to access the host www.example.org through Tor exit node foobar. | |
| # | |
| # As the HTTP client isn't aware of this notation, it treats the | |
| # whole string "www.example.org.foobar.exit" as host and uses it | |
| # for the "Host" and "Referer" headers. From the server's point of | |
| # view the resulting headers are invalid and can cause problems. | |
| # | |
| # An invalid "Referer" header can trigger "hot-linking" protections, | |
| # an invalid "Host" header will make it impossible for the server to | |
| # find the right vhost (several domains hosted on the same IP address). | |
| # | |
| # This filter removes the "foo.exit" part in those headers | |
| # to prevent the mentioned problems. Note that it only modifies | |
| # the HTTP headers, it doesn't make it impossible for the server | |
| # to detect your Tor exit node based on the IP address the request is | |
| # coming from. | |
| # | |
| ################################################################################# | |
| 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 | |
| ################################################################################# | |
| # | |
| # no-brotli-accepted: Strips "br" from the Accept-Encoding header as Privoxy | |
| # currently doesn't support Brotli. | |
| # | |
| ################################################################################# | |
| CLIENT-HEADER-FILTER: no-brotli-accepted Strip "br" from Accept-Encoding header | |
| s@(^Accept-Encoding:.*?)(?:br, |, br|br)@$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 | |
| ################################################################################# | |
| # | |
| # range-requests: Tags range requests as "RANGE-REQUEST". | |
| # | |
| # By default Privoxy removes Range headers for requests to | |
| # ressources that will be filtered to make sure the filters | |
| # get the whole picture. Otherwise Range requests could be | |
| # intentionally used to circumvent filters or, less likely, | |
| # filtering a partial response may damage it because it matched | |
| # a pattern that the ressource as a whole wouldn't. | |
| # | |
| # Range requests can be useful and save bandwidth so instead | |
| # of removing Range headers for requests to ressources that | |
| # will be filtered, you may prefer to simply disable filtering | |
| # for those requests. | |
| # | |
| # That's what this tagger is all about. After enabling it, | |
| # you can disable filtering for range requests using the following | |
| # action section: | |
| # | |
| # {-filter -deanimate-gifs} | |
| # TAG:^RANGE-REQUEST | |
| # | |
| ################################################################################# | |
| CLIENT-HEADER-TAGGER: range-requests Tags range requests as "RANGE-REQUEST". | |
| s@^Range:.*@RANGE-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 | |
| ################################################################################# | |
| # | |
| # listen-address: Tags the request with the listen-address on which the request | |
| # came in. | |
| # | |
| ################################################################################# | |
| CLIENT-HEADER-TAGGER: listen-address Tags the request with the listen-address on which the request came in. | |
| s@^\w*\s+.*\s+HTTP/\d\.\d\s*@LISTEN-ADDRESS: $listen-address@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 | |
| ################################################################################# | |
| # | |
| # referer: Tags the request with the complete Referer header. | |
| # | |
| ################################################################################# | |
| CLIENT-HEADER-TAGGER: referer Tags the request with the complete Referer header. | |
| s@^Referer:.*@$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 | |
| ################################################################################# | |
| # | |
| # client-body: Modify client request body | |
| # | |
| ################################################################################# | |
| CLIENT-BODY-FILTER: remove-first-byte Removes the first byte from the request body | |
| s@^.@@ | |
| CLIENT-BODY-FILTER: remove-test Removes "test" everywhere in the request body | |
| s@test@@g | |
| CLIENT-BODY-FILTER: overwrite-test-value Overwrites the value of the "test" variable with blafasel | |
| s@(test=)[^&\s]*@$1blafasel@g |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment