+ Generally, a pattern has the form <domain>/<path>, where both the
+ <domain> and <path> part are optional. If you only specify a domain
+ part, the "/" can be left out:
+
+ www.example.com - is a domain only pattern and will match any request
+ to "www.example.com".
+
+ www.example.com/ - means exactly the same.
+
+ www.example.com/index.html - matches only the single document
+ "/index.html" on "www.example.com".
+
+ /index.html - matches the document "/index.html", regardless of the
+ domain.
+
+ index.html - matches nothing, since it would be interpreted as a
+ domain name and there is no top-level domain called ".html".
+
+ The matching of the domain part offers some flexible options: if the
+ domain starts or ends with a dot, it becomes unanchored at that end.
+ For example:
+
+ .example.com - matches any domain that ENDS in ".example.com".
+
+ www. - matches any domain that STARTS with "www".
+
+ Additionally, there are wildcards that you can use in the domain names
+ themselves. They work pretty similar to shell wildcards: "*" stands
+ for zero or more arbitrary characters, "?" stands for any single
+ character. And you can define charachter classes in square brackets
+ and they can be freely mixed:
+
+ ad*.example.com - matches "adserver.example.com", "ads.example.com",
+ etc but not "sfads.example.com".
+
+ *ad*.example.com - matches all of the above, and then some.
+
+ .?pix.com - matches "www.ipix.com", "pictures.epix.com",
+ "a.b.c.d.e.upix.com", etc.
+
+ www[1-9a-ez].example.com - matches "www1.example.com",
+ "www4.example.com", "wwwd.example.com", "wwwz.example.com", etc., but
+ not "wwww.example.com".
+
+ If Junkbuster was compiled with "pcre" support (default), Perl
+ compatible regular expressions can be used. See the pcre/docs/
+ direcory or "man perlre" (also available on
+ [31]http://www.perldoc.com/perl5.6/pod/perlre.html) for details. A
+ brief discussion of regular expressions is in the [32]Appendix. For
+ instance:
+
+ /.*/advert[0-9]+\.jpe?g - would match a URL from any domain, with any
+ path that includes "advert" followed immediately by one or more
+ digits, then a "." and ending in either "jpeg" or "jpg". So we match
+ "example.com/ads/advert2.jpg", and
+ "www.example.com/ads/banners/advert39.jpeg", but not
+ "www.example.com/ads/banners/advert39.gif" (no gifs in the example
+ pattern).
+
+ Please note that matching in the path is case INSENSITIVE by default,
+ but you can switch to case sensitive at any point in the pattern by
+ using the "(?-i)" switch:
+
+ www.example.com/(?-i)PaTtErN.* - will match only documents whose path
+ starts with "PaTtErN" in exactly this capitalization.
+ _________________________________________________________________
+
+3.2.2. Actions
+
+ Actions are enabled if preceded with a "+", and disabled if preceded
+ with a "-". Actions are invoked by enclosing the action name in curly
+ braces (e.g. {+some_action}), followed by a list of URLs to which the
+ action applies. There are three classes of actions:
+
+ * Boolean (e.g. "+/-block"):
+ {+name} # enable this action
+ {-name} # disable this action
+
+ * Parameterized (e.g. "+/-hide-user-agent"):
+ {+name{param}} # enable action and set parameter to "param"
+ {-name} # disable action
+
+ * Multi-value (e.g. "{+/-add-header{Name: value}}",
+ "{+/-wafer{name=value}}"):
+ {+name{param}} # enable action and add parameter "param"
+ {-name{param}} # remove the parameter "param"
+ {-name} # disable this action totally
+
+ If nothing is specified in this file, no "actions" are taken. So in
+ this case JunkBuster would just be a normal, non-blocking,
+ non-anonymizing proxy. You must specifically enable the privacy and
+ blocking features you need (although the provided default actionsfile
+ file will give a good starting point).
+
+ Later defined actions always over-ride earlier ones. For multi-valued
+ actions, the actions are applied in the order they are specified.
+
+ The list of valid Junkbuster "actions" are:
+
+ * Add the specified HTTP header, which is not checked for validity.
+ You may specify this many times to specify many different headers:
+ +add-header{Name: value}
+
+ * Block this URL totally.
+ +block
+
+ * De-animate all animated GIF images, i.e. reduce them to their last
+ frame. This will also shrink the images considerably (in bytes,
+ not pixels!). If the option "first" is given, the first frame of
+ the animation is used as the replacement. If "last" is given, the
+ last frame of the animation is used instead, which propably makes
+ more sense for most banner animations, but also has the risk of
+ not showing the entire last frame (if it is only a delta to an
+ earlier frame).
+ +deanimate-gifs{last}
+ +deanimate-gifs{first}
+
+ * "+downgrade" will downgrade HTTP/1.1 client requests to HTTP/1.0
+ and downgrade the responses as well. Use this action for servers
+ that use HTTP/1.1 protocol features that Junkbuster doesn't handle
+ well yet. HTTP/1.1 is only partially implemented. Default is not
+ to downgrade requests.
+ +downgrade
+
+ * Many sites, like yahoo.com, don't just link to other sites.
+ Instead, they will link to some script on their own server, giving
+ the destination as a parameter, which will then redirect you to
+ the final target. URLs resulting from this scheme typically look
+ like: http://some.place/some_script?http://some.where-else.
+ Sometimes, there are even multiple consecutive redirects encoded
+ in the URL. These redirections via scripts make your web browing
+ more traceable, since the server from which you follow such a link
+ can see where you go to. Apart from that, valuable bandwidth and
+ time is wasted, while your browser ask the server for one redirect
+ after the other. Plus, it feeds the advertisers.
+ The "+fast-redirects" option enables interception of these
+ requests by Junkbuster, who will cut off all but the last valid
+ URL in the request and send a local redirect back to your browser
+ without contacting the remote site.
+ +fast-redirects
+
+ * Filter the website through the re_filterfile:
+ +filter{filename}
+
+ * Block any existing X-Forwarded-for header, and do not add a new
+ one:
+ +hide-forwarded
+
+ * If the browser sends a "From:" header containing your e-mail
+ address, this either completely removes the header ("block"), or
+ changes it to the specified e-mail address.
+ +hide-from{block}
+ +hide-from{spam@sittingduck.xqq}
+
+ * Don't send the "Referer:" (sic) header to the web site. You can
+ block it, forge a URL to the same server as the request (which is
+ preferred because some sites will not send images otherwise) or
+ set it to a constant string of your choice.
+ +hide-referer{block}
+ +hide-referer{forge}
+ +hide-referer{http://nowhere.com}
+
+ * Alternative spelling of "+hide-referer". It has the same
+ parameters, and can be freely mixed with, "+hide-referer".
+ ("referrer" is the correct English spelling, however the HTTP
+ specification has a bug - it requires it to be spelled "referer".)
+ +hide-referrer{...}
+
+ * Change the "User-Agent:" header so web servers can't tell your
+ browser type. Warning! This breaks many web sites. Specify the
+ user-agent value you want. Example, pretend to be using Netscape
+ on Linux:
+ +hide-user-agent{Mozilla (X11; I; Linux 2.0.32 i586)}
+
+ * Treat this URL as an image. This only matters if it's also
+ "+block"ed, in which case a "blocked" image can be sent rather
+ than a HTML page. See "+image-blocker{}" below for the control
+ over what is actually sent.
+ +image
+
+ * Decides what to do with URLs that end up tagged with "{+block
+ +image}". There are 4 options. "-image-blocker" will send a HTML
+ "blocked" page, usually resulting in a "broken image" icon.
+ "+image-blocker{logo}" will send a "JunkBuster" image.
+ "+image-blocker{blank}" will send a 1x1 transparent GIF image. And
+ finally, "+image-blocker{http://xyz.com}" will send a HTTP
+ temporary redirect to the specified image. This has the advantage
+ of the icon being being cached by the browser, which will speed up
+ the display.
+ +image-blocker{logo}
+ +image-blocker{blank}
+ +image-blocker{http://i.j.b/send-banner}
+
+ * By default (i.e. in the absence of a "+limit-connect" action),
+ Junkbuster will only allow CONNECT requests to port 443, which is
+ the standard port for https as a precaution.
+ The CONNECT methods exists in HTTP to allow access to secure
+ websites (https:// URLs) through proxies. It works very simply:
+ the proxy connects to the server on the specified port, and then
+ short-circuits its connections to the client and to the remote
+ proxy. This can be a big security hole, since CONNECT-enabled
+ proxies can be abused as TCP relays very easily.
+ If you want to allow CONNECT for more ports than this, or want to
+ forbid CONNECT altogether, you can specify a comma separated list
+ of ports and port ranges (the latter using dashes, with the
+ minimum defaulting to 0 and max to 65K):
+ +limit-connect{443} # This is the default and need no be
+ specified.
+ +limit-connect{80,443} # Ports 80 and 443 are OK.
+ +limit-connect{-3, 7, 20-100, 500-} # Port less than 3, 7, 20 to
+ 100
+ #and above 500 are OK.
+
+ * "+no-compression" prevents the website from compressing the data.
+ Some websites do this, which can be a problem for Junkbuster,
+ since "+filter", "+no-popup" and "+gif-deanimate" will not work on
+ compressed data. This will slow down connections to those
+ websites, though. Default is "nocompression" is turned on.
+ +nocompression
+
+ * Prevent the website from reading cookies:
+ +no-cookies-read
+
+ * Prevent the website from setting cookies:
+ +no-cookies-set
+
+ * Filter the website through a built-in filter to disable those
+ obnoxious JavaScript pop-up windows via window.open(), etc. The
+ two alternative spellings are equivalent.
+ +no-popup
+ +no-popups
+
+ * This action only applies if you are using a jarfile for saving
+ cookies. It sends a cookie to every site stating that you do not
+ accept any copyright on cookies sent to you, and asking them not
+ to track you. Of course, this is a (relatively) unique header they
+ could use to track you.
+ +vanilla-wafer
+
+ * This allows you to add an arbitrary cookie. It can be specified
+ multiple times in order to add as many cookies as you like.
+ +wafer{name=value}
+
+ The meaning of any of the above is reversed by preceding the action
+ with a "-", in place of the "+".
+
+ Some examples:
+
+ Turn off cookies by default, then allow a few through for specified
+ sites:
+
+ # Turn off all cookies
+ { +no-cookies-read }
+ { +no-cookies-set }
+ # Execeptions to the above, sites that need cookies
+ { -no-cookies-read }
+ { -no-cookies-set }
+ .javasoft.com
+ .sun.com
+ .yahoo.com
+ .msdn.microsoft.com
+ .redhat.com
+ # Alternative way of saying the same thing
+ {-no-cookies-set -no-cookies-read}
+ .sourceforge.net
+ .sf.net
+
+ Now turn off "fast redirects", and then we allow two exceptions:
+
+ # Turn them off!
+ {+fast-redirects}
+
+ # Reverse it for these two sites, which don't work right without it.
+ {-fast-redirects}
+ www.ukc.ac.uk/cgi-bin/wac\.cgi\?
+ login.yahoo.com
+
+ Turn on page filtering, with one exception for sourceforge:
+
+ # Run everything through the default filter file (re_filterfile):
+ {+filter}
+
+ # But please don't re_filter code from sourceforge!
+ {-filter}
+ .cvs.sourceforge.net
+
+ Now some URLs that we want "blocked", ie we won't see them. Many of
+ these use regular expressions that will expand to match multiple URLs:
+
+ # Blocklist:
+ {+block}
+ /.*/(.*[-_.])?ads?[0-9]?(/|[-_.].*|\.(gif|jpe?g))
+ /.*/(.*[-_.])?count(er)?(\.cgi|\.dll|\.exe|[?/])
+ /.*/(ng)?adclient\.cgi
+ /.*/(plain|live|rotate)[-_.]?ads?/
+ /.*/(sponsor)s?[0-9]?/
+ /.*/_?(plain|live)?ads?(-banners)?/
+ /.*/abanners/
+ /.*/ad(sdna_image|gifs?)/
+ /.*/ad(server|stream|juggler)\.(cgi|pl|dll|exe)
+ /.*/adbanners/
+ /.*/adserver
+ /.*/adstream\.cgi
+ /.*/adv((er)?ts?|ertis(ing|ements?))?/
+ /.*/banner_?ads/
+ /.*/banners?/
+ /.*/banners?\.cgi/
+ /.*/cgi-bin/centralad/getimage
+ /.*/images/addver\.gif
+ /.*/images/marketing/.*\.(gif|jpe?g)
+ /.*/popupads/
+ /.*/siteads/
+ /.*/sponsor.*\.gif
+ /.*/sponsors?[0-9]?/
+ /.*/advert[0-9]+\.jpg
+ /Media/Images/Adds/
+ /ad_images/
+ /adimages/
+ /.*/ads/
+ /bannerfarm/
+ /grafikk/annonse/
+ /graphics/defaultAd/
+ /image\.ng/AdType
+ /image\.ng/transactionID
+ /images/.*/.*_anim\.gif # alvin brattli
+ /ip_img/.*\.(gif|jpe?g)
+ /rotateads/
+ /rotations/
+ /worldnet/ad\.cgi
+ /cgi-bin/nph-adclick.exe/
+ /.*/Image/BannerAdvertising/
+ /.*/ad-bin/
+ /.*/adlib/server\.cgi
+ /autoads/
+ _________________________________________________________________
+
+3.2.3. Aliases
+
+ Custom "actions", known to Junkbuster as "aliases", can be defined by
+ combining other "actions". These can in turn be invoked just like the
+ built-in "actions". Currently, an alias can contain any character
+ except space, tab, "=", "{" or "}". But please use only "a"- "z",
+ "0"-"9", "+", and "-". Alias names are not case sensitive, and must be
+ defined before anything else in actionsfile! And there can only be one
+ set of "aliases" of defined.
+
+ Now let's define a few aliases:
+
+ # Useful customer aliases we can use later. These must come first!
+ {{alias}}
+ +no-cookies = +no-cookies-set +no-cookies-read
+ -no-cookies = -no-cookies-set -no-cookies-read
+ fragile = -block -no-cookies -filter -fast-redirects -hide-refere
+ r -no-popups
+ shop = -no-cookies -filter -fast-redirects
+ +imageblock = +block +image
+ #For people who don't like to type too much: ;-)
+ c0 = +no-cookies
+ c1 = -no-cookies
+ c2 = -no-cookies-set +no-cookies-read
+ c3 = +no-cookies-set -no-cookies-read
+ #... etc. Customize to your heart's content.
+
+ Some examples using our "shop" and "fragile" aliases from above:
+
+ # These sites are very complex and require
+ # minimal interference.
+ {fragile}
+ .office.microsoft.com
+ .windowsupdate.microsoft.com
+ .nytimes.com
+ # Shopping sites - still want to block ads.
+ {shop}
+ .quietpc.com
+ .worldpay.com # for quietpc.com
+ .jungle.com
+ .scan.co.uk
+ # These shops require pop-ups
+ {shop -no-popups}
+ .dabs.com
+ .overclockers.co.uk
+ _________________________________________________________________
+
+3.3. The Filter File
+
+ The filter file defines what filtering of web pages Junkbuster does.
+ The default filter file is re_filterfile, located in the config
+ directory. In this file, any document content, whether viewable text
+ or embedded non-visible content, can be changed.
+
+ This file uses regular expressions to alter or remove any string in
+ the target page. Some examples from the included default
+ re_filterfile:
+
+ Stop web pages from displaying annoying messages in the status bar by
+ deleting such references:
+
+ # The status bar is for displaying link targets, not pointless buzzwo
+ rds.
+ # Again, check it out on http://www.airport-cgn.de/.
+ s/status='.*?';*//ig
+
+ Just for kicks, replace any occurrence of "Microsoft" with
+ "MicroSuck":
+
+ s/microsoft(?!.com)/MicroSuck/ig
+
+ Kill those auto-refresh tags:
+
+ # Kill refresh tags. I like to refresh myself. Manually.
+ # check it out on http://www.airport-cgn.de/ and go to the arrivals p
+ age.
+ #
+ s/<meta[^>]*http-equiv[^>]*refresh.*URL=([^>]*?)"?>/<link rev="x-refr
+ esh" href=$1>/i
+ s/<meta[^>]*http-equiv="?page-enter"?[^>]*content=[^>]*>/<!--no page
+ enter for me-->/i
+ _________________________________________________________________
+
+4. Quickstart to Using Junkbuster
+
+ Install package, then run and enjoy! Junbuster accepts only one
+ command line option -- the configuration file to be used. Example Unix
+ startup command:
+
+
+ # /usr/sbin/junkbuster /etc/junkbuster/config &
+
+
+ If no configuration file is specified on the command line, Junkbuster
+ will look for a file named config in the current directory. Except on
+ Amiga where it will look for AmiTCP:db/junkbuster/config and Win32
+ where it will try junkbstr.txt. If no file is specified on the command
+ line and no default configuration file can be found, Junkbuster will
+ fail to start.
+
+ Be sure your browser is set to use the proxy which is by default at
+ localhost, port 8000. With Netscape (and Mozilla), this can be set
+ under Edit -> Preferences -> Advanced -> Proxies -> HTTP Proxy. For
+ Internet Explorer: Tools > Internet Properties -> Connections -> LAN
+ Setting. Then, check "Use Proxy" and fill in the appropriate info
+ (Address: localhost, Port: 8000). Include if HTTPS proxy support too.
+
+ The included default configuration files should give a reasonable
+ starting point, though may be somewhat aggressive in blocking junk.
+ You will probably want to keep an eye out for sites that require
+ cookies, and add these to actionsfile as needed. By default, most of
+ these will be blocked until you add them to the configuration. If you
+ want the browser to handle this instead, you will need to edit
+ actionsfile and disable this feature. If you use more than one
+ browser, it would make more sense to let Junkbuster handle this. In
+ which case, the browser(s) should be set to accept all cookies.
+
+ If a particular site shows problems loading properly, try adding it to
+ the {fragile} section of actionsfile. This will turn off most actions
+ for this site.
+
+ HTTP/1.1 support is not fully implemented. If browsers that support
+ HTTP/1.1 (like Mozilla or recent versions of I.E.) experience
+ problems, you might try to force HTTP/1.0 compatiblity. For Mozilla,
+ look under Edit -> Preferences -> Debug -> Networking. Or set the
+ "+downgrade" config option in actionsfile.
+
+ After running Junkbuster for a while, you can start to fine tune the
+ configuration to suit your personal, or site, preferences and
+ requirements. There are many, many aspects that can be customized.
+
+ If you encounter problems, please verify it is a Junkbuster bug, by
+ disabling Junkbuster, and then trying the same page. Also, try another
+ browser if possible to eliminate browser or site problems. Before
+ reporting it as a bug, see if there is not a configuration option that
+ is enabled that is causing the page not to load. You can then add an
+ exception for that page or site. If a bug, please report it to the
+ developers (see below).
+ _________________________________________________________________
+
+5. Contact the Developers
+
+ Feature requests and other questions should be posted to the
+ [33]Feature request page at SourceForge. There is also an archive
+ there.
+
+ Anyone interested in actively participating in development and related
+ discussions can join the appropriate mailing list [34]here. Archives
+ are available here too.
+
+ Please report bugs, using the form at [35]Sourceforge. Please try to
+ verify that it is a Junkbuster bug, and not a browser or site bug
+ first. Also, check to make sure this is not already a known bug.
+ _________________________________________________________________
+
+6. Copyright and History