OLD | NEW |
| (Empty) |
1 ////////////////////////////////////////////////////////////////////////////// | |
2 // | |
3 // John's No-ADS proxy auto configuration script | |
4 // http://www.schooner.com/~loverso/no-ads/ | |
5 // loverso@schooner.com | |
6 // Questions/help web forum at http://www.network54.com/Hide/Forum/223428 | |
7 // | |
8 // Copyright 1996-2004, John LoVerso. All Rights Reserved. | |
9 // | |
10 // Permission is given to use and distribute this file, as long as this | |
11 // copyright message and author notice are not removed. | |
12 // | |
13 // No responsibility is taken for any errors on inaccuracies inherent | |
14 // either to the comments or the code of this program, but if reported | |
15 // to me, then an attempt will be made to fix them. | |
16 // | |
17 // ("no monies exchanged" in Copyright clause removed 11/2001) | |
18 // | |
19 var noadsver = "$Id: no-ads.pac,v 5.70 2007/05/11 16:56:01 loverso Exp loverso $
"; | |
20 | |
21 // **** | |
22 // **** If you do not use a proxy to access the Internet, then the following | |
23 // **** line is already fine. | |
24 // **** | |
25 // **** If you use an a proxy to access the Internet, as required by your | |
26 // **** ISP or firewall, then change the line below, replacing | |
27 // **** "DIRECT" with "PROXY hostname:port", using the correct hostname:port | |
28 // **** for your proxy server. | |
29 // **** | |
30 var normal = "DIRECT"; | |
31 | |
32 // *** | |
33 // *** If you are not using a blackhold proxy, then you can leave this | |
34 // *** setting as is. | |
35 // *** | |
36 // *** Otherwise, update the next line with the correct hostname:port | |
37 // *** of your blackhole proxy server. If you are using Larry Wang's | |
38 // *** BHP for Windows, you need to change the "0.0.0.0" to "127.0.0.1" | |
39 // *** | |
40 var blackhole = "PROXY 0.0.0.0:3421"; | |
41 | |
42 // *** | |
43 // *** If you need a different proxy to access local/internal hosts vs. | |
44 // *** the rest of the Internet, set 'localproxy' to that value. Otherwise, | |
45 // *** 'localproxy' defaults to the same value as 'normal', so you do | |
46 // *** not need to change anything in the normal case. | |
47 // *** | |
48 // *** Some typical cases: | |
49 // *** - 'normal' might be one proxy, and 'localproxy' might be another | |
50 // *** - 'normal' might be a proxy, and 'localproxy' might be "DIRECT" | |
51 // *** | |
52 // *** You will also need to change the LOCAL section below by adding | |
53 // *** rules to match your local/internal hosts. | |
54 // *** | |
55 var localproxy = normal; | |
56 | |
57 // *** | |
58 // *** 'bypass' is the preferred proxy setting for when no-ads is inactive. | |
59 // *** Either use '= normal' or '= localproxy' (or perhaps just "DIRECT"). | |
60 // *** This only matters when you need to use a localproxy. | |
61 // *** (You probably don't need to care about this) | |
62 // *** | |
63 var bypass = normal; | |
64 | |
65 /////////////////////////////////////////////////////////////////////////////// | |
66 // | |
67 // This simple kludge uses a mechanism built into most browsers (IE, Netscape, | |
68 // Mozilla, Firefox, and Opera) on most platforms to block connections to | |
69 // banner ad servers. | |
70 // | |
71 // This mechanism uses the "proxy auto configuration" to blackhole requests | |
72 // to load ad images without forcing all your traffic through an ad-blocking | |
73 // proxy server. Of course, unlike ad-blocking proxy servers, this does not | |
74 // otherwise not strip cookies. | |
75 // | |
76 // "Proxy auto configuration" invokes the JavaScript FindProxyForURL function | |
77 // below each time your browser requests a URL. This works even if you have | |
78 // JavaScript otherwise disabled in your browser! (Which you should!) | |
79 // | |
80 | |
81 // | |
82 // Send me your additions or comments. I'll credit you in the file. | |
83 // (But I've removed all email addresses to stop spam harvesters). | |
84 // | |
85 | |
86 | |
87 /////////////////////////////////////////////////////////////////////////////// | |
88 // | |
89 // These are the basic steps needed to use "no-ads.pac". | |
90 // Detailed instructions follow below! | |
91 // | |
92 // 1. Save this as a file (no-ads.pac) on your local disk | |
93 // (or, add it to your home page, if you have one) | |
94 // 2. Select a no-ads "blackhole". | |
95 // 3. Configure your browser to use this file as its auto proxy configuration. | |
96 // 4. Clear your browser's cache | |
97 // (or else it may still show you ads it has saved on your disk). | |
98 // | |
99 | |
100 | |
101 /////////////////////////////////////////////////////////////////////////////// | |
102 // | |
103 // 1. SAVE THIS FILE | |
104 // | |
105 // Copy this file to your local machine; use your home directory (UNIX) | |
106 // or your Desktop or C:\ directory (Windows). | |
107 // | |
108 | |
109 | |
110 | |
111 /////////////////////////////////////////////////////////////////////////////// | |
112 // | |
113 // 2. SELECT A NO-ADS BLACKHOLE | |
114 // | |
115 // You can skip this section if you are using any version of Internet Explorer. | |
116 // You can also skip this section for Netscape 7.1, Mozilla 1.4, or | |
117 // Firefox 1.0 (or later), as they include PAC failover support (but do | |
118 // read the note in section "2a" below). | |
119 // | |
120 // | |
121 // The basic trick of no-ads is to match the site or URL of annoying web content | |
122 // and tell your browser to use a proxy that will deny loading of that resource | |
123 // (image, page, etc). | |
124 // | |
125 // A "black-hole" proxy server is one that always denies loading a web page. | |
126 // ("send it off to a blackhole"). | |
127 // | |
128 // When you initially get "no-ads.pac", it is using this as the blackhole: | |
129 // | |
130 // "PROXY 0.0.0.0:3421" | |
131 // | |
132 // This says to use the local host at a port which nothing should be listening | |
133 // on. Thus, this is "a server that doesn't repond." | |
134 // | |
135 // This is a good default for all systems, and especially Windows. | |
136 // However, if you are using the Blackhole Proxy Server on Windows, | |
137 // be sure to change it to "PROXY 127.0.0.1:3421" | |
138 // | |
139 // | |
140 // Some possibilities for the blackhole: | |
141 // | |
142 // a. A server that doesn't respond. | |
143 // | |
144 // *** This works for all versions of Internet Explorer. | |
145 // *** This mostly works for Mozilla, Firefox, and Netscape. | |
146 // | |
147 // If you do nothing, then this is configured to direct annoying | |
148 // content to the proxy running on your own host at port 3421. | |
149 // Since you shouldn't have anything running on that port, that | |
150 // connection will timeout and the annoying content will never be | |
151 // loaded. | |
152 // | |
153 // Older versions of Netscape wait to connect to the proxy server | |
154 // (usually it needs to load part of the image to layout the web | |
155 // page), and then asks if you want to disable the proxy that | |
156 // doesn't answer. | |
157 // | |
158 // Older versions of Mozilla will give an alert saying it couldn't | |
159 // connect to the proxy server. | |
160 // | |
161 // Mozilla 1.4+, Firefox 1.0+ and Netscape 7.1 will only give | |
162 // you this alert if the whole page being display is blocked, | |
163 // rather than just an image on that page. Thus, I still | |
164 // recommend a blackhole proxy even though it isn't needed. | |
165 // | |
166 // Opera will disable your auto proxy config if the proxy server | |
167 // doesn't respond. | |
168 // | |
169 // IE doesn't care that the proxy server isn't responding. As | |
170 // this avoids a connection for annoying content, it is fastest. | |
171 // | |
172 // b. A simple, blackhole server | |
173 // | |
174 // When needed, I run a simple "server" at port 3421 that denies | |
175 // all requests. Some options you can use for this: | |
176 // | |
177 // - On Windows, you can try Larry Wang's black-hole proxy program: | |
178 // | |
179 // http://leisuresuit10.tripod.com/BlackHoleProxy/ | |
180 // | |
181 // I can not vouch that his binaries are virus free, but he does | |
182 // offer the source code. | |
183 // | |
184 // - I use this shell script on UNIX; it is invoked via inetd. | |
185 // /usr/local/lib/noproxy: | |
186 // | |
187 // #!/bin/sh | |
188 // read a | |
189 // read b | |
190 // echo HTTP/1.0 501 No Ads Accepted | |
191 // echo "" | |
192 // exit | |
193 // | |
194 // Add this line to inetd.conf ('kill -HUP' inetd afterwards): | |
195 // | |
196 // 3421 stream tcp nowait nobody /usr/local/lib/noproxy noproxy | |
197 // | |
198 // This simple script doesn't work on Linux because of the | |
199 // (IMHO) broken way its TCP stack works. See the bottom of | |
200 // http://www.schooner.com/~loverso/no-ads/ for a complete copy | |
201 // of the `noproxy' shell script. | |
202 // | |
203 // If always exec'ing a shell was expensive on your computer | |
204 // (it isn't on mine), then you could use a "wait"-style Perl | |
205 // script that would accept() incoming connections. | |
206 // | |
207 // - Sean Burke has a black-hole proxy written in Perl script: | |
208 // | |
209 // http://www.speech.cs.cmu.edu/~sburke/pub/black_hole_http_serve
r.pl | |
210 // (This is a standalone server, not run from inetd). | |
211 // | |
212 // e. A trick: use an HTTP/1.0 non-proxy server | |
213 // | |
214 // An HTTP/1.0 non-proxy server will return a 501 error when | |
215 // given a proxy request. Thus, just use the address of your | |
216 // local intranet web server as your blackhole PROXY. | |
217 // The downside of this is that it will probably also log an | |
218 // error, which wastes a small amount of resources. | |
219 // | |
220 // *** | |
221 // *** Be sure to update the "blackhole" variable above with a setting of | |
222 // *** "PROXY hostname:port" that matches your blackhole server!! | |
223 // *** | |
224 // | |
225 // *** | |
226 // *** If you already use a proxy server to access the WWW, | |
227 // *** change the "normal" variable above from "DIRECT" to | |
228 // *** be "PROXY proxy:port" to match your proxy server. | |
229 // *** | |
230 | |
231 | |
232 /////////////////////////////////////////////////////////////////////////////// | |
233 // | |
234 // 3. TO CONFIGURE YOUR BROWSER | |
235 // | |
236 // The Proxy Auto Configuration file can be either on the local disk or | |
237 // accessed from a web server, with the following constraints: | |
238 // | |
239 // a. IE4 can only load the PAC from a web server (http:// URL) | |
240 // b. Netscape, Mozilla, Firefox and IE (5 or later) can load the | |
241 // PAC from anywhere. | |
242 // c. Netscape, Mozilla, Firefox and (probably) Opera require the correct | |
243 // MIME type when loading the PAC from a web server. | |
244 // | |
245 // | |
246 // To set the Proxy Auto Configuration with Netscape, Mozilla, or Firefox: | |
247 // | |
248 // 1. Enable Proxy Auto Config: | |
249 // | |
250 // For Netsacpe/Mozilla: | |
251 // | |
252 // Open "Edit->Preferences" | |
253 // Select "Advanced" | |
254 // Select "Proxies" | |
255 // | |
256 // For Firefox (1.0): | |
257 // | |
258 // Open "Tools->Options" | |
259 // Select "Coonection Settings" on the General tab: | |
260 // | |
261 // Select the "Auto proxy configuration URL" option. | |
262 // Enter URL or path of where you've saved this file, such as: | |
263 // | |
264 // http://yourserver/no-ads.pac | |
265 // | |
266 // If you place this on your local disk, you should use a | |
267 // file: URL such as: | |
268 // | |
269 // file:/home/loverso/no-ads.pac (UNIX) | |
270 // file:///c:/windows/desktop/no-ads.pac (Windows) | |
271 // | |
272 // (file:/ and file:// will work in Mozilla, but file:/// is correct | |
273 // required for Firefox) | |
274 // | |
275 // 2. If you are serving this from a web server, these browsers require | |
276 // the correct MIME type on the file before using it. You must configure | |
277 // your web server to provide a "application/x-ns-proxy-autoconfig" | |
278 // MIME type. | |
279 // | |
280 // a. For Apache, name the file with a ".pac" extension and add this | |
281 // line to the http.conf (or the .htaccess file in the same directory): | |
282 // | |
283 // AddType application/x-ns-proxy-autoconfig .pac | |
284 // | |
285 // b. For IIS (instructions from Kevin Roth) | |
286 // | |
287 // Open Internet Services Manager | |
288 // Right click on the web site (or directory) you wish to change. | |
289 // Choose Properties | |
290 // Click the "HTTP Headers" tab | |
291 // Click the "File Types" button in the "MIME Map" section | |
292 // Click the "New Type..." button | |
293 // Enter "pac" for "Associated Extension" | |
294 // Enter "application/x-ns-proxy-autoconfig" for "Content Type (MIME)" | |
295 // Click OK to close the Add type dialog, the MIME types dialog, | |
296 // and the main properties dialog. | |
297 // | |
298 // (This is definately needed for NS, but not for IE) | |
299 // | |
300 // | |
301 // To set the Proxy Auto Configuration with IE: | |
302 // | |
303 // 1. Enable Proxy Auto Config: | |
304 // | |
305 // Open "Tools->Internet Options" | |
306 // Select "Connections" tab | |
307 // Click "LAN Settings" | |
308 // or Choose an entry from "Dial-up settings" and click "Settings" | |
309 // | |
310 // On the settings dialog, select "Use automatic configuration script" | |
311 // Enter the URL of this file in Address field. | |
312 // | |
313 // http://yourserver/no-ads.pac | |
314 // file:///c:/windows/desktop/no-ads.pac (Windows) | |
315 // | |
316 // You can only use a file: URL with IE5 (or later). | |
317 // ("file:///" with with IE versions after 5.0 SP2) | |
318 // | |
319 // 2. Fix Security Settings (IMPORTANT): | |
320 // | |
321 // Select "Security" tab | |
322 // Select "Local intranet" | |
323 // Click "Sites" box | |
324 // Unselect "include all sites that bypass the proxy server" option | |
325 // | |
326 // 3. Disable "Auto Proxy Caching" (IMPORTANT): | |
327 // (thanks to Kevin Roth for alerting me of this!) | |
328 // | |
329 // IE contains a proxy result caching mechanism that will defeat the | |
330 // ability to block servers that server both ad and non-ad content. | |
331 // To prevent this, add the registry key described in this MS KB article: | |
332 // | |
333 // http://support.microsoft.com/?kbid=271361 | |
334 // | |
335 // You can do so by downloading this file and clicking on it to load | |
336 // it into the registry. This must be done on a per-user basis. | |
337 // http://www.schooner.com/~loverso/no-ads/IE-no-auto-proxy-cache.reg | |
338 // | |
339 // IE doesn't currently check the MIME type of the PAC file. | |
340 // | |
341 // To see some notes from MS on PAC in IE, see | |
342 // http://msdn.microsoft.com/library/periodic/period99/faq0599.htm | |
343 // (they seem to have removed this URL) | |
344 // | |
345 // | |
346 // To set the Proxy Auto Configuration with Opera 6 (6.04 on Windows tested): | |
347 // | |
348 // 1. Enable Proxy Auto Config: | |
349 // Open the Preferences (Alt-P) | |
350 // Select "Network" | |
351 // Click the "Proxy servers" box | |
352 // Select "Use automatic proxy configuration" | |
353 // Enter the URL of this file as | |
354 // | |
355 // http://yourserver/no-ads.pac | |
356 // file://c:/windows/desktop/no-ads.pac | |
357 // | |
358 // (file:/// might be needed; I've not tested Opera lately) | |
359 // | |
360 // 2. You must use a blackhole proxy for Opera (it will not work with an | |
361 // address of a server that does not respond). | |
362 // | |
363 // 3. Be sure to clear the cache and exit/restart Opera. | |
364 // | |
365 | |
366 | |
367 /////////////////////////////////////////////////////////////////////////////// | |
368 // | |
369 // 4. CLEAR YOUR BROWSER'S CACHE | |
370 // | |
371 // For Internet Explorer: | |
372 // | |
373 // Open "Tools->Internet Options" | |
374 // Select "Delete Files" under "Temporary Internet Files" | |
375 // Click "OK" | |
376 // | |
377 // For Mozilla/Netscape Navigator: | |
378 // | |
379 // Open "Edit->Preferences" | |
380 // Select "Advanced" | |
381 // Select "Proxies" | |
382 // Click "Clear Disk Cache" | |
383 // Click "Clear Memory Cache" | |
384 // | |
385 // For Firefox: | |
386 // | |
387 // Open "Tools->Options" | |
388 // Select the "Privay" tab | |
389 // Scroll down or go to the "Cache" section | |
390 // Click "Clear" | |
391 // | |
392 // For Opera: | |
393 // | |
394 // Open "File->Preferences" | |
395 // Select "History and cache" | |
396 // Click "Empty now" | |
397 // | |
398 | |
399 | |
400 /////////////////////////////////////////////////////////////////////////////// | |
401 // | |
402 // To see the definition of this page's JavaScript contents, see | |
403 // | |
404 // http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html | |
405 // | |
406 // Microsoft includes this in their KB article: | |
407 // | |
408 // http://support.microsoft.com/support/kb/articles/Q209/2/66.ASP | |
409 // | |
410 // Special PAC functions: | |
411 // Hostname: | |
412 // isPlainHostName(host) | |
413 // dnsDomainIs(host, domain) | |
414 // localHostOrDomainIs(host, hostdom) | |
415 // isResolvable(host) | |
416 // isInNet(host, pattern, mask) | |
417 // Utility: | |
418 // dnsResolve(host) | |
419 // myIpAddress() | |
420 // dnsDomainLevels(host) | |
421 // URL: | |
422 // shExpMatch(str, shexp) | |
423 // Time: | |
424 // weekdayRange(wd1, wd2, gmt) | |
425 // dateRange(...) | |
426 // timeRange(...) | |
427 // | |
428 // Other functions and methods that may work: | |
429 // http://developer.netscape.com/docs/manuals/communicator/jsref/win1.htm | |
430 // Note that "alert()" only works with Netscape4 and IE, and Mozilla 1.4+. | |
431 // | |
432 // NOTE: | |
433 // isInNet() will resolve a hostname to an IP address, and cause | |
434 // hangs on Mozilla/Firefox. Currently, these are stubbed out and replaced | |
435 // with shExpMatch(host, "a.b.c.*"), which doesn't do the same thing, | |
436 // but is sufficient for these purposes. | |
437 // | |
438 // Additional Mozilla/Firefox comments: | |
439 // | |
440 // All the above PAC functions are implemented in JavaScript, | |
441 // and are added to the body of your PAC file when it is loaded. | |
442 // See the "components/nsProxyAutoConfig.js" browser install | |
443 // directory. | |
444 // | |
445 // - shExpMatch() is implemented as three pattern.replaces() | |
446 // followed by a call to RegExp() (SLOW) | |
447 // - isPlainHostname() just checks for lack of "." in the string | |
448 // - dnsDomainIs() just matches strings exactly | |
449 // - alert() is bound to this.proxyAlert(), which displays a message | |
450 // in the JavaScript console window | |
451 | |
452 /////////////////////////////////////////////////////////////////////////////// | |
453 // | |
454 // Regular Expressions | |
455 // | |
456 // Angus Turnbull pointed out the JavaScript 1.2 RE operators to me. | |
457 // These should work in NS4 and IE4 (or later), but I have only tested on | |
458 // Mozilla (1.3), IE5.5, and IE6. PLEASE TELL ME IF IT WORKS FOR YOU! | |
459 // | |
460 // A good introduction is at: | |
461 // http://www.evolt.org/article/Regular_Expressions_in_JavaScript/17/36435/ | |
462 // Some references: | |
463 // (old Netscape documentation is gone) | |
464 // http://devedge.netscape.com/library/manuals/2000/javascript/1.5/referenc
e/regexp.html | |
465 // http://developer.netscape.com/docs/manuals/js/client/jsref/regexp.htm | |
466 // http://www.webreference.com/js/column5/ | |
467 // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script5
6/html/js56jsobjRegExpression.asp | |
468 // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script5
6/html/js56jsgrpRegExpSyntax.asp | |
469 // Real-time evaluator: | |
470 // http://www.cuneytyilmaz.com/prog/jrx/ | |
471 // | |
472 // I'm slowly replacing multiple glob patterns with regexps. | |
473 // By using RE literals of /.../ rather than the constructor 'new RegExp()', | |
474 // the regexps should be compiled as no-ads.pac is loaded. | |
475 // | |
476 // Important notes: | |
477 // - if using the constructor, \ needs to be quoted; thus "\\." is used | |
478 // to match a literal '.'. In the RE literal form, I need to end up | |
479 // quoting any / for a URL path. | |
480 // - Avoid these for now; they are broken or not supported in "older" | |
481 // browsers such as NS4 and IE4: | |
482 // - look-aheads (?=pat) | |
483 // - non-greedy ? - a ? that follows *,+,?, and {}; (s)? is NOT non-greedy | |
484 // | |
485 | |
486 // matches several common URL paths for ad images: | |
487 // such as: /banner/ /..._banner/ /banner_... | |
488 // but matches several words and includes plurals | |
489 var re_banner = /\/(.*_){0,1}(ad|adverts?|adimage|adframe|adserver|admentor|advi
ew|banner|popup|popunder)(s)?[_.\/]/i; | |
490 | |
491 // matches host names staring with "ad" but not (admin|add|adsl) | |
492 // or any hostname starting with "pop", "clicks", and "cash" | |
493 // or any hostname containing "banner" | |
494 // ^(ad(s)?.{0,4}\.|pop|click|cash|[^.]*banner|[^.]*adserv) | |
495 // ^(ad(?!(min|sl|d\.))|pop|click|cash|[^.]*banner|[^.]*adserv) | |
496 // ^(ad(?!(min|sl|d\.))|pop|click|cash|[^.]*banner|[^.]*adserv|.*\.ads\.) | |
497 var re_adhost = /^(www\.)?(ad(?!(ult|obe.*|min|sl|d|olly.*))|tology|pop|click|ca
sh|[^.]*banner|[^.]*adserv|.+\.ads?\.)/i; | |
498 | |
499 // neg: | |
500 // admin.foobar.com | |
501 // add.iahoo.com | |
502 // adsl.allow.com | |
503 // administration.all.net | |
504 // pos: | |
505 // fire.ads.ighoo.com | |
506 // ads.foo.org | |
507 // ad0121.aaaa.com | |
508 // adserver.goo.biz | |
509 // popup.foo.bar | |
510 | |
511 /////////////////////////////////////////////////////////////////////////////// | |
512 | |
513 var isActive = 1; | |
514 | |
515 function FindProxyForURL(url, host) | |
516 { | |
517 // debug | |
518 // alert("checking: url=" + url + ", host=" + host); | |
519 | |
520 // Excellent kludge from Sean M. Burke: | |
521 // Enable or disable no-ads for the current browser session. | |
522 // | |
523 // To disable, visit this URL: http://no-ads.int/off | |
524 // To re-enable, visit this URL: http://no-ads.int/on | |
525 // | |
526 // (this will not work with Mozilla or Opera if the alert()s are present) | |
527 // | |
528 // This happens before lowercasing the URL, so make sure you use lowercase! | |
529 // | |
530 if (shExpMatch(host, "no-ads.int")) { | |
531 if (shExpMatch(url, "*/on*")) { | |
532 isActive = 1; | |
533 //alert("no-ads is enabled.\n" + url); | |
534 } else if (shExpMatch(url, "*/off*")) { | |
535 isActive = 0; | |
536 //alert("no-ads has been disabled.\n" + url); | |
537 } else if (shExpMatch(url, "*no-ads.int/")) { | |
538 alert("no-ads is "+(isActive ? "enabled" : "disabled")+".\n" + url); | |
539 } else { | |
540 alert("no-ads unknown option.\n" + url); | |
541 } | |
542 | |
543 return blackhole; | |
544 } | |
545 | |
546 if (!isActive) { | |
547 // alert("allowing (not active): return " + bypass); | |
548 return bypass; | |
549 } | |
550 | |
551 // Suggestion from Quinten Martens | |
552 // Make everything lower case. | |
553 // WARNING: all shExpMatch rules following MUST be lowercase! | |
554 url = url.toLowerCase(); | |
555 host = host.toLowerCase(); | |
556 | |
557 // | |
558 // Local/Internal rule | |
559 // matches to this rule get the 'local' proxy. | |
560 // Adding rules here enables the use of 'local' | |
561 // | |
562 if (0 | |
563 // LOCAL | |
564 // add rules such as: | |
565 // || dnsDomainIs(host, "schooner.com") | |
566 // || isPlainHostName(host) | |
567 // or for a single host | |
568 // || (host == "some-local-host") | |
569 ) { | |
570 // alert("allowing (local): return " + localproxy); | |
571 return localproxy; | |
572 } | |
573 | |
574 // | |
575 // Whitelist section from InvisiBill | |
576 // | |
577 // Add sites here that should never be matched for ads. | |
578 // | |
579 if (0 | |
580 // WHITELIST | |
581 // To add whitelist domains, simple add a line such as: | |
582 // || dnsDomainIs(host, "schooner.com") | |
583 // or for a single host | |
584 // || (host == "some-host-name") | |
585 | |
586 // Note: whitelisting schooner.com will defeat the "is-it-working" | |
587 // test page at http://www.schooner.com/~loverso/no-ads/ads/ | |
588 | |
589 // Apple.com "Switch" ads | |
590 || shExpMatch(url, "*.apple.com/switch/ads/*") | |
591 | |
592 // SprintPCS | |
593 || dnsDomainIs(host, ".sprintpcs.com") | |
594 | |
595 // Lego | |
596 || dnsDomainIs(host, ".lego.com") | |
597 | |
598 // Dell login popups | |
599 || host == "ecomm.dell.com" | |
600 | |
601 || host == "click2tab.mozdev.org" | |
602 || host == "addons.mozilla.org" | |
603 | |
604 // Uncomment for metacrawler | |
605 // || (host == "clickit.go2net.com") | |
606 | |
607 // Wunderground weather station banners | |
608 || shExpMatch(url, "*banners.wunderground.com/cgi-bin/banner/ban/wxbanne
r*") | |
609 || shExpMatch(url, "*banners.wunderground.com/weathersticker/*") | |
610 ) { | |
611 // alert("allowing (whitelist): return " + normal); | |
612 return normal; | |
613 } | |
614 | |
615 // To add more sites, simply include them in the correct format. | |
616 // | |
617 // The sites below are ones I currently block. Tell me of others you add! | |
618 | |
619 if (0 | |
620 // BLOCK | |
621 // Block IE4/5 "favicon.ico" fetches | |
622 // (to avoid being tracked as having bookmarked the site) | |
623 || shExpMatch(url, "*/favicon.ico") | |
624 | |
625 ////// | |
626 // | |
627 // Global Section | |
628 // tries to match common names | |
629 // | |
630 | |
631 // RE for common URL paths | |
632 || re_banner.test(url) | |
633 | |
634 // RE for common adserver hostnames. | |
635 // The regexp matches all hostnames starting with "ad" that are not | |
636 // admin|add|adsl | |
637 // (replaces explicit shExpMatch's below) | |
638 || re_adhost.test(host) | |
639 | |
640 // || (re_adhost.test(host) | |
641 // && !( | |
642 // shExpMatch(host, "add*") | |
643 // || shExpMatch(host, "admin*") | |
644 // || shExpMatch(host, "adsl*") | |
645 // ) | |
646 // ) | |
647 // // or any subdomain "ads" | |
648 // || (dnsDomainLevels(host) > 2 && shExpMatch(host, "*.ads.*")) | |
649 | |
650 ////// | |
651 // | |
652 // banner/ad organizations | |
653 // Just delete the entire namespace | |
654 // | |
655 | |
656 // doubleclick | |
657 || dnsDomainIs(host, ".doubleclick.com") | |
658 || dnsDomainIs(host, ".doubleclick.net") | |
659 || dnsDomainIs(host, ".rpts.net") | |
660 || dnsDomainIs(host, ".2mdn.net") | |
661 || dnsDomainIs(host, ".2mdn.com") | |
662 | |
663 // these set cookies | |
664 || dnsDomainIs(host, ".globaltrack.com") | |
665 || dnsDomainIs(host, ".burstnet.com") | |
666 || dnsDomainIs(host, ".adbureau.net") | |
667 || dnsDomainIs(host, ".targetnet.com") | |
668 || dnsDomainIs(host, ".humanclick.com") | |
669 || dnsDomainIs(host, ".linkexchange.com") | |
670 | |
671 || dnsDomainIs(host, ".fastclick.com") | |
672 || dnsDomainIs(host, ".fastclick.net") | |
673 | |
674 // one whole class C full of ad servers (fastclick) | |
675 // XXX this might need the resolver | |
676 // || isInNet(host, "205.180.85.0", "255.255.255.0") | |
677 || shExpMatch(host, "205.180.85.*") | |
678 | |
679 // these use 1x1 images to track you | |
680 || dnsDomainIs(host, ".admonitor.com") | |
681 || dnsDomainIs(host, ".focalink.com") | |
682 | |
683 || dnsDomainIs(host, ".websponsors.com") | |
684 || dnsDomainIs(host, ".advertising.com") | |
685 || dnsDomainIs(host, ".cybereps.com") | |
686 || dnsDomainIs(host, ".postmasterdirect.com") | |
687 || dnsDomainIs(host, ".mediaplex.com") | |
688 || dnsDomainIs(host, ".adtegrity.com") | |
689 || dnsDomainIs(host, ".bannerbank.ru") | |
690 || dnsDomainIs(host, ".bannerspace.com") | |
691 || dnsDomainIs(host, ".theadstop.com") | |
692 || dnsDomainIs(host, ".l90.com") | |
693 || dnsDomainIs(host, ".webconnect.net") | |
694 || dnsDomainIs(host, ".avenuea.com") | |
695 || dnsDomainIs(host, ".flycast.com") | |
696 || dnsDomainIs(host, ".engage.com") | |
697 || dnsDomainIs(host, ".imgis.com") | |
698 || dnsDomainIs(host, ".datais.com") | |
699 || dnsDomainIs(host, ".link4ads.com") | |
700 || dnsDomainIs(host, ".247media.com") | |
701 || dnsDomainIs(host, ".hightrafficads.com") | |
702 || dnsDomainIs(host, ".tribalfusion.com") | |
703 || dnsDomainIs(host, ".rightserve.net") | |
704 || dnsDomainIs(host, ".admaximize.com") | |
705 || dnsDomainIs(host, ".valueclick.com") | |
706 || dnsDomainIs(host, ".adlibris.se") | |
707 || dnsDomainIs(host, ".vibrantmedia.com") | |
708 || dnsDomainIs(host, ".coremetrics.com") | |
709 || dnsDomainIs(host, ".vx2.cc") | |
710 || dnsDomainIs(host, ".webpower.com") | |
711 || dnsDomainIs(host, ".everyone.net") | |
712 || dnsDomainIs(host, ".zedo.com") | |
713 || dnsDomainIs(host, ".bigbangmedia.com") | |
714 || dnsDomainIs(host, ".ad-annex.com") | |
715 || dnsDomainIs(host, ".iwdirect.com") | |
716 || dnsDomainIs(host, ".adlink.de") | |
717 || dnsDomainIs(host, ".bidclix.net") | |
718 || dnsDomainIs(host, ".webclients.net") | |
719 || dnsDomainIs(host, ".linkcounter.com") | |
720 || dnsDomainIs(host, ".sitetracker.com") | |
721 || dnsDomainIs(host, ".adtrix.com") | |
722 || dnsDomainIs(host, ".netshelter.net") | |
723 || dnsDomainIs(host, ".rn11.com") | |
724 // http://vpdc.ru4.com/content/images/66/011.gif | |
725 || dnsDomainIs(host, ".ru4.com") | |
726 // no '.' for rightmedia.net | |
727 || dnsDomainIs(host, "rightmedia.net") | |
728 || dnsDomainIs(host, ".casalemedia.com") | |
729 || dnsDomainIs(host, ".casalemedia.com") | |
730 | |
731 // C-J | |
732 || dnsDomainIs(host, ".commission-junction.com") | |
733 || dnsDomainIs(host, ".qkimg.net") | |
734 // emjcd.com ... many others | |
735 | |
736 // */adv/* | |
737 || dnsDomainIs(host, ".bluestreak.com") | |
738 | |
739 // Virtumundo -- as annoying as they get | |
740 || dnsDomainIs(host, ".virtumundo.com") | |
741 || dnsDomainIs(host, ".treeloot.com") | |
742 || dnsDomainIs(host, ".memberprize.com") | |
743 | |
744 // internetfuel and _some_ of the sites they redirect to | |
745 // (more internetfuel - from Sam G) | |
746 || dnsDomainIs(host, ".internetfuel.net") | |
747 || dnsDomainIs(host, ".internetfuel.com") | |
748 || dnsDomainIs(host, ".peoplecaster.com") | |
749 || dnsDomainIs(host, ".cupidsdatabase.com") | |
750 || dnsDomainIs(host, ".automotive-times.com") | |
751 || dnsDomainIs(host, ".healthy-lifetimes.com") | |
752 || dnsDomainIs(host, ".us-world-business.com") | |
753 || dnsDomainIs(host, ".internet-2-web.com") | |
754 || dnsDomainIs(host, ".my-job-careers.com") | |
755 || dnsDomainIs(host, ".freeonline.com") | |
756 || dnsDomainIs(host, ".exitfuel.com") | |
757 || dnsDomainIs(host, ".netbroadcaster.com") | |
758 || dnsDomainIs(host, ".spaceports.com") | |
759 || dnsDomainIs(host, ".mircx.com") | |
760 || dnsDomainIs(host, ".exitchat.com") | |
761 || dnsDomainIs(host, ".atdmt.com") | |
762 || dnsDomainIs(host, ".partner2profit.com") | |
763 || dnsDomainIs(host, ".centrport.net") | |
764 || dnsDomainIs(host, ".centrport.com") | |
765 || dnsDomainIs(host, ".rampidads.com") | |
766 | |
767 ////// | |
768 // | |
769 // banner servers | |
770 // (typically these set cookies or serve animated ads) | |
771 // | |
772 | |
773 || dnsDomainIs(host, "commonwealth.riddler.com") | |
774 || dnsDomainIs(host, "banner.freeservers.com") | |
775 || dnsDomainIs(host, "usads.futurenet.com") | |
776 || dnsDomainIs(host, "banners.egroups.com") | |
777 || dnsDomainIs(host, "ngadclient.hearme.com") | |
778 || dnsDomainIs(host, "affiliates.allposters.com") | |
779 || dnsDomainIs(host, "adincl.go2net.com") | |
780 || dnsDomainIs(host, "webads.bizservers.com") | |
781 || dnsDomainIs(host, ".addserv.com") | |
782 || dnsDomainIs(host, ".falkag.net") | |
783 || (host == "promote.pair.com") | |
784 | |
785 // marketwatch.com (flash ads), but CSS get loaded | |
786 || (dnsDomainIs(host, ".mktw.net") | |
787 && !shExpMatch(url, "*/css/*")) | |
788 || dnsDomainIs(host, ".cjt1.net") | |
789 || dnsDomainIs(host, ".bns1.net") | |
790 | |
791 // "undergroundonline" | |
792 // comes from iframe with this url: http://mediamgr.ugo.com/html.ng/size
=728x90&affiliate=megagames&channel=games&subchannel=pc&Network=affiliates&ratin
g=g | |
793 || dnsDomainIs(host, "image.ugo.com") | |
794 || dnsDomainIs(host, "mediamgr.ugo.com") | |
795 | |
796 // web ads and "cheap Long Distance" | |
797 || dnsDomainIs(host, "zonecms.com") | |
798 || dnsDomainIs(host, "zoneld.com") | |
799 | |
800 // AOL | |
801 || dnsDomainIs(host, ".atwola.com") | |
802 || dnsDomainIs(host, "toolbar.aol.com") | |
803 | |
804 // animated ads shown at techbargains | |
805 || (dnsDomainIs(host, ".overstock.com") | |
806 && shExpMatch(url, "*/linkshare/*")) | |
807 || (dnsDomainIs(host, ".supermediastore.com") | |
808 && shExpMatch(url, "*/lib/supermediastore/*")) | |
809 || (dnsDomainIs(host, ".shop4tech.com") | |
810 && shExpMatch(url, "*/assets/*")) | |
811 || (dnsDomainIs(host, ".softwareandstuff.com") | |
812 && shExpMatch(url, "*/media/*")) | |
813 || (dnsDomainIs(host, ".buy.com") | |
814 && shExpMatch(url, "*/affiliate/*")) | |
815 | |
816 || (dnsDomainIs(host, "pdaphonehome.com") | |
817 && (shExpMatch(url, "*/pocketpcmagbest.gif") | |
818 || shExpMatch(url, "*/link-msmobiles.gif"))) | |
819 || (dnsDomainIs(host, "ppc4you.com") | |
820 && shExpMatch(url, "*/ppc_top_sites.gif")) | |
821 | |
822 // more animated ads... these really drive me crazy | |
823 || (dnsDomainIs(host, ".freewarepalm.com") | |
824 && shExpMatch(url, "*/sponsors/*")) | |
825 | |
826 ////// | |
827 // | |
828 // popups/unders | |
829 // | |
830 | |
831 || dnsDomainIs(host, "remotead.cnet.com") | |
832 || dnsDomainIs(host, ".1st-dating.com") | |
833 || dnsDomainIs(host, ".mousebucks.com") | |
834 || dnsDomainIs(host, ".yourfreedvds.com") | |
835 || dnsDomainIs(host, ".popupsavings.com") | |
836 || dnsDomainIs(host, ".popupmoney.com") | |
837 || dnsDomainIs(host, ".popuptraffic.com") | |
838 || dnsDomainIs(host, ".popupnation.com") | |
839 || dnsDomainIs(host, ".infostart.com") | |
840 || dnsDomainIs(host, ".popupad.net") | |
841 || dnsDomainIs(host, ".usapromotravel.com") | |
842 || dnsDomainIs(host, ".goclick.com") | |
843 || dnsDomainIs(host, ".trafficwave.net") | |
844 || dnsDomainIs(host, ".popupad.net") | |
845 || dnsDomainIs(host, ".paypopup.com") | |
846 | |
847 // Popups from ezboard | |
848 || dnsDomainIs(host, ".greenreaper.com") | |
849 || dnsDomainIs(host, ".spewey.com") | |
850 || dnsDomainIs(host, ".englishharbour.com") | |
851 || dnsDomainIs(host, ".casino-trade.com") | |
852 || dnsDomainIs(host, "got2goshop.com") | |
853 // more ezboard crud (from Miika Asunta) | |
854 || dnsDomainIs(host, ".addynamix.com") | |
855 || dnsDomainIs(host, ".trafficmp.com") | |
856 || dnsDomainIs(host, ".makingmoneyfromhome.net") | |
857 || dnsDomainIs(host, ".leadcart.com") | |
858 | |
859 // http://www.power-mark.com/js/popunder.js | |
860 || dnsDomainIs(host, ".power-mark.com") | |
861 | |
862 ////// | |
863 // | |
864 // User tracking (worse than ads) && hit counting "services" | |
865 // | |
866 | |
867 // "web trends live" | |
868 || dnsDomainIs(host, ".webtrendslive.com") | |
869 || dnsDomainIs(host, ".wtlive.com") | |
870 | |
871 // 1x1 tracking images | |
872 // ** (but also used in some pay-for-clicks that I want to follow, | |
873 // ** so disabled for now. 9/2001) | |
874 // || dnsDomainIs(host, "service.bfast.com") | |
875 | |
876 // one whole class C full of ad servers | |
877 // XXX this might need the resolver | |
878 // || isInNet(host, "66.40.16.0", "255.255.255.0") | |
879 || shExpMatch(host, "66.40.16.*") | |
880 | |
881 || dnsDomainIs(host, ".web-stat.com") | |
882 || dnsDomainIs(host, ".superstats.com") | |
883 || dnsDomainIs(host, ".allhits.ru") | |
884 || dnsDomainIs(host, ".list.ru") | |
885 || dnsDomainIs(host, ".counted.com") | |
886 || dnsDomainIs(host, ".rankyou.com") | |
887 || dnsDomainIs(host, ".clickcash.com") | |
888 || dnsDomainIs(host, ".clickbank.com") | |
889 || dnsDomainIs(host, ".paycounter.com") | |
890 || dnsDomainIs(host, ".cashcount.com") | |
891 || dnsDomainIs(host, ".clickedyclick.com") | |
892 || dnsDomainIs(host, ".clickxchange.com") | |
893 || dnsDomainIs(host, ".sitestats.com") | |
894 || dnsDomainIs(host, ".site-stats.com") | |
895 || dnsDomainIs(host, ".hitbox.com") | |
896 || dnsDomainIs(host, ".exitdirect.com") | |
897 || dnsDomainIs(host, ".realtracker.com") | |
898 || dnsDomainIs(host, ".etracking.com") | |
899 || dnsDomainIs(host, ".livestat.com") | |
900 || dnsDomainIs(host, ".spylog.com") | |
901 || dnsDomainIs(host, ".freestats.com") | |
902 || dnsDomainIs(host, ".addfreestats.com") | |
903 || dnsDomainIs(host, ".topclicks.net") | |
904 || dnsDomainIs(host, ".mystat.pl") | |
905 || dnsDomainIs(host, ".hitz4you.de") | |
906 || dnsDomainIs(host, ".hitslink.com") | |
907 || dnsDomainIs(host, ".thecounter.com") | |
908 || dnsDomainIs(host, ".roiservice.com") | |
909 || dnsDomainIs(host, ".overture.com") | |
910 || dnsDomainIs(host, ".xiti.com") | |
911 || dnsDomainIs(host, ".cj.com") | |
912 || dnsDomainIs(host, ".anrdoezrs.net") | |
913 || dnsDomainIs(host, ".hey.it") | |
914 || dnsDomainIs(host, ".ppctracking.net") | |
915 || dnsDomainIs(host, ".darkcounter.com") | |
916 || dnsDomainIs(host, ".2o7.com") | |
917 || dnsDomainIs(host, ".2o7.net") | |
918 || dnsDomainIs(host, ".gostats.com") | |
919 || dnsDomainIs(host, ".everstats.com") | |
920 || dnsDomainIs(host, ".onestat.com") | |
921 || dnsDomainIs(host, ".statcounter.com") | |
922 || dnsDomainIs(host, ".trafic.ro") | |
923 || dnsDomainIs(host, ".exitexchange.com") | |
924 | |
925 // clickability, via CNN | |
926 || dnsDomainIs(host, ".clickability.com") | |
927 || dnsDomainIs(host, ".savethis.com") | |
928 | |
929 ////// | |
930 // | |
931 // Dead domain parking | |
932 // | |
933 || dnsDomainIs(host, ".netster.com") | |
934 | |
935 ////// | |
936 // | |
937 // Search engine "optimizers" | |
938 // | |
939 || dnsDomainIs(host, ".searchmarketing.com") | |
940 | |
941 ////// | |
942 // | |
943 // Spyware/worms | |
944 // | |
945 | |
946 || dnsDomainIs(host, ".friendgreetings.com") | |
947 || dnsDomainIs(host, ".permissionedmedia.com") | |
948 || dnsDomainIs(host, ".searchbarcash.com") | |
949 | |
950 ////// | |
951 // | |
952 // "Surveys" | |
953 // | |
954 | |
955 || dnsDomainIs(host, ".zoomerang.com") | |
956 | |
957 ////// | |
958 // | |
959 // "Casino" ads (scams) | |
960 // | |
961 | |
962 || dnsDomainIs(host, ".aceshigh.com") | |
963 || dnsDomainIs(host, ".idealcasino.net") | |
964 || dnsDomainIs(host, ".casinobar.net") | |
965 || dnsDomainIs(host, ".casinoionair.com") | |
966 | |
967 || (dnsDomainIs(host, ".go2net.com") | |
968 && shExpMatch(url, "*adclick*") | |
969 ) | |
970 | |
971 ////// | |
972 // | |
973 // Spammers | |
974 // | |
975 | |
976 || dnsDomainIs(host, ".licensed-collectibles.com") | |
977 || dnsDomainIs(host, ".webdesignprofessional.com") | |
978 | |
979 ////// | |
980 // | |
981 // Directed at extra annoying places | |
982 // | |
983 | |
984 // Attempts to download ad-supported spyware without asking first | |
985 || dnsDomainIs(host, ".gator.com") | |
986 | |
987 // ebay | |
988 || ((dnsDomainIs(host, "pics.ebay.com") | |
989 || dnsDomainIs(host, "pics.ebaystatic.com")) | |
990 && shExpMatch(url, "*/pics/mops/*/*[0-9]x[0-9]*") | |
991 ) | |
992 || (dnsDomainIs(host, "ebayobjects.com") | |
993 && shExpMatch(url, "*search/keywords*") | |
994 ) | |
995 || dnsDomainIs(host, "admarketplace.com") | |
996 || dnsDomainIs(host, "admarketplace.net") | |
997 | |
998 // Bravenet & Ezboard | |
999 || (dnsDomainIs(host, ".ezboard.com") | |
1000 && shExpMatch(url, "*/bravenet/*") | |
1001 ) | |
1002 || (dnsDomainIs(host, ".bravenet.com") | |
1003 && ( shExpMatch(host, "*counter*") | |
1004 || shExpMatch(url, "*/jsbanner*") | |
1005 || shExpMatch(url, "*/bravenet/*") | |
1006 ) | |
1007 ) | |
1008 | |
1009 // GeoCities | |
1010 // (checking "toto" from Prakash Persaud) | |
1011 || (( dnsDomainIs(host,"geo.yahoo.com") | |
1012 || dnsDomainIs(host,".geocities.com")) | |
1013 && ( | |
1014 shExpMatch(url,"*/toto?s*") | |
1015 || shExpMatch(url, "*geocities.com/js_source*") | |
1016 || dnsDomainIs(host, "visit.geocities.com") | |
1017 ) | |
1018 ) | |
1019 | |
1020 // Yahoo ads (direct and via Akamai) | |
1021 // http://us.a1.yimg.com/us.yimg.com/a/... | |
1022 || (dnsDomainIs(host,"yimg.com") | |
1023 && ( shExpMatch(url,"*yimg.com/a/*") | |
1024 || shExpMatch(url,"*yimg.com/*/adv/*") | |
1025 ) | |
1026 ) | |
1027 // "eyewonder" ads at Yahoo | |
1028 || dnsDomainIs(host,"qz3.net") | |
1029 || dnsDomainIs(host,".eyewonder.com") | |
1030 | |
1031 // background ad images | |
1032 || dnsDomainIs(host,"buzzcity.com") | |
1033 | |
1034 // FortuneCity - ads and tracking | |
1035 || (dnsDomainIs(host,".fortunecity.com") | |
1036 && ( shExpMatch(url,"*/js/adscript*") | |
1037 || shExpMatch(url,"*/js/fctrack*") | |
1038 ) | |
1039 ) | |
1040 | |
1041 // zdnet | |
1042 // tracking webbugs: | |
1043 // http://gserv.zdnet.com/clear/ns.gif?a000009999999999999+2093 | |
1044 || (dnsDomainIs(host, ".zdnet.com") | |
1045 && ( dnsDomainIs(host, "ads3.zdnet.com") | |
1046 || host == "gserv.zdnet.com" | |
1047 || shExpMatch(url, "*/texis/cs/ad.html") | |
1048 || shExpMatch(url, "*/adverts") | |
1049 ) | |
1050 ) | |
1051 | |
1052 // cnet | |
1053 // web bugs and ad redirections | |
1054 // taken care of by hostname rules: | |
1055 // http://adimg.com.com/... | |
1056 // http://adlog.com.com/... | |
1057 // http://dw.com.com/clear/c.gif | |
1058 // http://dw.com.com/redir?astid=2&destUrl=http%3A%2F%2Fwww.buy ... | |
1059 // http://mads.com.com/mac-ad?... | |
1060 || (host == "dw.com.com" || host == "mads.com.com") | |
1061 || (dnsDomainIs(host, ".com.com") | |
1062 && ( host == "dw.com.com" | |
1063 || host == "mads.com.com" | |
1064 ) | |
1065 ) | |
1066 | |
1067 // nytimes | |
1068 || (dnsDomainIs(host, ".nytimes.com") | |
1069 && shExpMatch(url,"*/adx/*") | |
1070 ) | |
1071 | |
1072 // pop-after | |
1073 || dnsDomainIs(host, ".unicast.net") | |
1074 | |
1075 | |
1076 // Be Free affiliate ads | |
1077 || dnsDomainIs(host, ".reporting.net") | |
1078 || dnsDomainIs(host, ".affliate.net") | |
1079 || (dnsDomainIs(host, ".akamai.net") | |
1080 && shExpMatch(url, "*.affiliate.net/*") | |
1081 ) | |
1082 | |
1083 // Infospace.com popunder | |
1084 // for "webmarket.com" & "shopping.dogpile.com" -- just say no! | |
1085 || (dnsDomainIs(host, ".infospace.com") | |
1086 && shExpMatch(url, "*/goshopping/*") | |
1087 ) | |
1088 || dnsDomainIs(host, ".webmarket.com") | |
1089 || dnsDomainIs(host, "shopping.dogpile.com") | |
1090 | |
1091 // goto.com popunder for information.gopher.com | |
1092 || dnsDomainIs(host, "information.gopher.com") | |
1093 | |
1094 // About.com popunder and floating ad bar | |
1095 || (dnsDomainIs(host, ".about.com") | |
1096 && (0 | |
1097 || shExpMatch(url, "*/sprinks/*") | |
1098 || shExpMatch(url, "*about.com/0/js/*") | |
1099 || shExpMatch(url, "*about.com/f/p/*") | |
1100 ) | |
1101 ) | |
1102 | |
1103 // Dell | |
1104 || (dnsDomainIs(host, ".dell.com") | |
1105 && shExpMatch(url, "*/images/affiliates/*") | |
1106 ) | |
1107 | |
1108 // IFilm iframes | |
1109 || (dnsDomainIs(host, ".ifilm.com") | |
1110 && (shExpMatch(url, "*/partners/*") | |
1111 || shExpMatch(url, "*/redirect*") | |
1112 ) | |
1113 ) | |
1114 | |
1115 // tomshardware | |
1116 // they are most annoying: | |
1117 // - cookies on their background images to track you | |
1118 // - looping shockwave ads | |
1119 // this kills most of the crud | |
1120 // || isInNet(host, "216.92.21.0", "255.255.255.0") | |
1121 || ((dnsDomainIs(host, ".tomshardware.com") | |
1122 || shExpMatch(host, "216.92.21.*")) | |
1123 && ( shExpMatch(url, "*/cgi-bin/banner*") | |
1124 || shExpMatch(url, "*/cgi-bin/bd.m*") | |
1125 || shExpMatch(url, "*/images/banner/*") | |
1126 ) | |
1127 ) | |
1128 | |
1129 || shExpMatch(url, "*mapsonus.com/ad.images*") | |
1130 | |
1131 // Slashdot: added these when I saw hidden 1x1 images with cookies | |
1132 || dnsDomainIs(host, "adfu.blockstackers.com") | |
1133 || (dnsDomainIs(host, "slashdot.org") | |
1134 && ( | |
1135 shExpMatch(url, "*/slashdot/pc.gif*") | |
1136 || shExpMatch(url, "*/pagecount.gif*") | |
1137 || shExpMatch(url, "*/adlog.pl*") | |
1138 ) | |
1139 ) | |
1140 || dnsDomainIs(host, "googlesyndication.com") | |
1141 || dnsDomainIs(host, "google-analytics.com") | |
1142 | |
1143 // it-aint-cool.com | |
1144 || (dnsDomainIs(host, "aintitcool.com") | |
1145 && ( | |
1146 shExpMatch(url, "*/newline/*") | |
1147 || shExpMatch(url, "*/drillteammedia/*") | |
1148 || shExpMatch(url, "*/foxsearchlight/*") | |
1149 || shExpMatch(url, "*/media/aol*") | |
1150 || shExpMatch(url, "*swf") | |
1151 ) | |
1152 ) | |
1153 | |
1154 // Staples & CrossMediaServices | |
1155 || (dnsDomainIs(host, ".staples.com") | |
1156 && shExpMatch(url, "*/pixeltracker/*") | |
1157 ) | |
1158 || dnsDomainIs(host, "pt.crossmediaservices.com") | |
1159 | |
1160 // OfficeMax affiliate art (affArt->affart because of toLowerCase) | |
1161 || (dnsDomainIs(host, ".officemax.com") | |
1162 && shExpMatch(url, "*/affart/*") | |
1163 ) | |
1164 | |
1165 // complicated JavaScript for directed ads! | |
1166 // 1/5/2004: allow /js/ as they now use it for graphs | |
1167 // || (dnsDomainIs(host, ".anandtech.com") | |
1168 // && (shExpMatch(url,"*/js/*") | |
1169 // || shExpMatch(url,"*/bnr_*") | |
1170 // ) | |
1171 // ) | |
1172 | |
1173 // hardocp | |
1174 // http://65.119.30.151/UploadFilesForNewegg/onlineads/newegg728hardocp.
swf | |
1175 || (host == "hera.hardocp.com") | |
1176 || shExpMatch(url,"*/onlineads/*") | |
1177 | |
1178 // complicated JavaScript for gliding ads! | |
1179 || (dnsDomainIs(host, ".fatwallet.com") | |
1180 && shExpMatch(url,"*/js/*") | |
1181 ) | |
1182 | |
1183 // cnet ads | |
1184 || dnsDomainIs(host, "promo.search.com") | |
1185 | |
1186 // IMDB celeb photos | |
1187 // (Photos/CMSIcons->photos/cmsicons because of toLowerCase) | |
1188 || (dnsDomainIs(host, "imdb.com") | |
1189 && ( shExpMatch(url, "*/photos/cmsicons/*") | |
1190 || shExpMatch(url, "*/icons/*/celeb/*") | |
1191 || shExpMatch(url, "*.swf") | |
1192 ) | |
1193 ) | |
1194 // incredibly annoying IMDB shock/flash ads | |
1195 || dnsDomainIs(host, "kliptracker.com") | |
1196 || dnsDomainIs(host, "klipmart.com") | |
1197 | |
1198 || host == "spinbox.techtracker.com" | |
1199 | |
1200 // Amazon affiliate 'search'. retrieves a JS that writes new HTML | |
1201 // that references one or more images "related to your search". | |
1202 // (If there is a real use for rcm.amazon.com, let me know) | |
1203 // http://rcm.amazon.com/e/cm?t=starlingtechnolo&l=st1&search=cy
nicism&mode=books&p=11&o=1&bg1=CEE7FF&fc1=000000&lc1=083
194&lt1=_blank | |
1204 || host == "rcm.amazon.com" | |
1205 | |
1206 ////// | |
1207 // | |
1208 // "Other Scum And Villainry" | |
1209 // | |
1210 | |
1211 // Popup from "reserved" domains at register.com | |
1212 // (I considered blocking all of register.com) | |
1213 || (dnsDomainIs(host, ".register.com") | |
1214 && (shExpMatch(url,"*.js") | |
1215 || shExpMatch(host, "searchtheweb*") | |
1216 || shExpMatch(host, "futuresite*") | |
1217 ) | |
1218 ) | |
1219 | |
1220 || dnsDomainIs(host, ".oingo.com") | |
1221 || dnsDomainIs(host, ".namingsolutions.com") | |
1222 | |
1223 // "Data collection" | |
1224 || dnsDomainIs(host, ".coremetrics.com") | |
1225 | |
1226 // Sets your home page | |
1227 || dnsDomainIs(host, ".firehunt.com") | |
1228 | |
1229 // tracking | |
1230 || dnsDomainIs(host, ".appliedsemantics.com") | |
1231 | |
1232 // Scum who buy ad space from the above | |
1233 // || dnsDomainIs(host, ".hartfordrents.com") | |
1234 // || dnsDomainIs(host, ".chicagocomputerrentals.com") | |
1235 // || dnsDomainIs(host, ".ccrsolutions.com") | |
1236 // || dnsDomainIs(host, ".rushcomputer.com") | |
1237 // || dnsDomainIs(host, ".localesimates.com") | |
1238 // || dnsDomainIs(host, ".unitedvision.com") | |
1239 // XXX this might need the resolver | |
1240 // || isInNet(host, "216.216.246.31", "255.255.255.255") | |
1241 || (host == "216.216.246.31") | |
1242 | |
1243 // avsforum ads | |
1244 // || isInNet(host, "216.66.21.35", "255.255.255.255") | |
1245 || (host == "216.66.21.35") | |
1246 || dnsDomainIs(host, ".avsads.com") | |
1247 | |
1248 // bogus "search" sites at non-existent sites | |
1249 || dnsDomainIs(host, ".search411.com") | |
1250 | |
1251 // palmgear.com | |
1252 || (dnsDomainIs(host, ".palmgear.com") | |
1253 && ( shExpMatch(url, "*/adsales/*") | |
1254 || shExpMatch(url, "*/emailblast*") | |
1255 ) | |
1256 ) | |
1257 | |
1258 ////// | |
1259 // | |
1260 // Contributed adult sites | |
1261 // | |
1262 | |
1263 || dnsDomainIs(host, ".porntrack.com") | |
1264 || dnsDomainIs(host, ".sexe-portail.com") | |
1265 || dnsDomainIs(host, ".sextracker.com") | |
1266 || dnsDomainIs(host, ".sexspy.com") | |
1267 || dnsDomainIs(host, ".offshoreclicks.com") | |
1268 || dnsDomainIs(host, ".exxxit.com") | |
1269 || dnsDomainIs(host, "private-dailer.biz") | |
1270 || shExpMatch(url, "*retestrak.nl/misc/reet.gif") | |
1271 || shExpMatch(url, "*dontstayin.com/*.swf") | |
1272 | |
1273 // debug | |
1274 // || (alertmatch("NOT:" + url) && 0) | |
1275 | |
1276 ) { | |
1277 | |
1278 // alert("blackholing: " + url); | |
1279 | |
1280 // deny this request | |
1281 return blackhole; | |
1282 | |
1283 } else { | |
1284 // debug | |
1285 // alert("allowing: " + url); | |
1286 | |
1287 // all other requests go direct and avoid any overhead | |
1288 return normal; | |
1289 } | |
1290 } | |
1291 | |
1292 /////////////////////////////////////////////////////////////////////////////// | |
1293 // | |
1294 // This line is just for testing; you can ignore it. But, if you are having | |
1295 // problems where you think this PAC file isn't being loaded, then change this | |
1296 // to read "if (1)" and the alert box should appear when the browser loads this | |
1297 // file. | |
1298 // | |
1299 // This works for IE4, IE5, IE5.5, IE6 and Netscape 2.x, 3.x, and 4.x. | |
1300 // (For IE6, tested on Win2K) | |
1301 // This does not work for Mozilla before 1.4 (and not for Netscape 6.x). | |
1302 // In Mozilla 1.4+ and Fireox, this will write to the JavaScript console. | |
1303 // | |
1304 if (0) { | |
1305 alert("no-ads.pac: LOADED:\n" + | |
1306 " version: "+noadsver+"\n" + | |
1307 " normal: "+normal+"\n" + | |
1308 " blackhole: "+blackhole+"\n" + | |
1309 " localproxy: "+localproxy+"\n" + | |
1310 " bypass: "+bypass+"\n" | |
1311 // MSG | |
1312 ); | |
1313 } | |
1314 | |
1315 // The above should show you that this JavaScript is executed in an | |
1316 // unprotected global context. NEVER point at someone elses autoconfig file; | |
1317 // always load from your own copy! | |
1318 | |
1319 // an alert that returns true | |
1320 function alertmatch(str) | |
1321 { | |
1322 // alert("match: "+str); | |
1323 return 1; | |
1324 } | |
1325 | |
1326 /////////////////////////////////////////////////////////////////////////////// | |
1327 // | |
1328 // Replacement function for dnsDomainIs(). This is to replace the | |
1329 // prefix problem, which a leading '.' used to be used for. | |
1330 // | |
1331 // dnsDomainIs("bar.com", "bar.com") => true | |
1332 // dnsDomainIs("www.bar.com", "bar.com") => true | |
1333 // dnsDomainIs("www.foobar.com", "bar.com") => true <<< incorrect | |
1334 // | |
1335 // isInDomain("bar.com", "bar.com") => true | |
1336 // isInDomain("www.bar.com", "bar.com") => true | |
1337 // isInDomain("www.foobar.com", "bar.com") => false <<< correct | |
1338 // | |
1339 function isInDomain(host, domain) { | |
1340 if (host.length > domain.length) { | |
1341 return (host.substring(host.length - domain.length - 1) == "."+domain); | |
1342 } | |
1343 return (host == domain); | |
1344 } | |
1345 | |
1346 /////////////////////////////////////////////////////////////////////////////// | |
1347 // | |
1348 // Tired of reading boring comments? Try reading today's comics: | |
1349 // http://www.schooner.com/~loverso/comics/ | |
1350 // | |
1351 // or getting a quote from my collection: | |
1352 // http://www.schooner.com/~loverso/quote/ | |
1353 // | |
1354 | |
1355 // eof | |
1356 //intelliserv.net | |
1357 //intellisrv.net | |
1358 //rambler.ru | |
1359 //rightmedia.net | |
1360 //calloffate.com | |
1361 //fairmeasures.com | |
1362 | |
OLD | NEW |