1 ////////////////////////////////////////////////////////////////////////////// 2 // 3 // John's No-ADS proxy auto configuration script 4 // http://www.schooner.com/~loverso/no-ads/ 5 // loverso (a] 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_server.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/reference/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/script56/html/js56jsobjRegExpression.asp 468 // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/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|adview|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|cash|[^.]*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/wxbanner*") 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&rating=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=cynicism&mode=books&p=11&o=1&bg1=CEE7FF&fc1=000000&lc1=083194<1=_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 1363