Incorporate recent changes from Jon's new stuff.
[privoxy.git] / doc / text / user-manual.txt
1
2    output  is  user-manual Using catalogs: /etc/sgml/sgml-docbook-3.1.cat
3    Using stylesheet:
4    /usr/share/sgml/docbook/utils-0.6/docbook-utils.dsl#html  Working  on:
5    /home/hal/junkbuster/current/doc/source/user-manual.sgml
6
7 Junkbuster User Manual
8
9    By: Junkbuster Developers
10
11                                   Abstract
12
13      The user manual gives the users information on how to install and
14     configure Internet Junkbuster. Internet Junkbuster is an application
15      that provides privacy and security to users of the World Wide Web.
16
17            You can find the latest version of the user manual at
18                [1]http://ijbswa.sourceforge.net/user-manual/.
19
20                Feel free to send a note to the developers at
21
22    ijbswa-developers@lists.sourceforge.net
23
24                                      .
25             ____________________________________________________
26
27    Table of Contents
28    [2]Introduction
29    [3]Installation
30    [4]Junkbuster Configuration
31    [5]Quickstart to Using Junkbuster
32    [6]Contact the Developers
33    [7]Copyright and History
34    [8]See also
35    [9]Appendix
36
37 Introduction
38
39    Internet   Junkbuster   is   a   web  proxy  with  advanced  filtering
40    capabilities  for  protecting  privacy,  filtering  web  page content,
41    managing  cookies,  controlling  access,  and  removing  ads, banners,
42    pop-ups  and  other  obnoxious  Internet  Junk.  Junkbuster has a very
43    flexible  configuration and can be customized to suit individual needs
44    and  tastes.  Internet Junkbuster has application for both stand-alone
45    systems and multi-user networks.
46
47    This documentation is included with the current development version of
48    Internet  Junkbuster  and  is incomplete at this point. The most up to
49    date  reference for the time being is still the comments in the source
50    files  and  in  the  individual  configuration  files.  Development of
51    version  3.0  is  currently  underway,  and  includes many significant
52    changes and enhancements over earlier verions. The target release date
53    for stable v3.0 is December 2001.
54
55    Since  this is a development version, some features are in the process
56    of  being  implemented. This documentation may be slightly out of sync
57    as a result. And there are bugs, though hopefully not many!
58      _________________________________________________________________
59
60 New Features
61
62    In  addition  to  Junkbuster's  traditional  features of ad and banner
63    blocking  and  cookie  management,  this  is  a  list  of new features
64    currently under development:
65
66      * Modularized   configuration   that  will  allow  for  system  wide
67        settings, and individual user settings.
68      * A browser based GUI configuration utility (not finished).
69      * Blocking  of annoying pop-up browser windows (previously available
70        as a patch).
71      * Partial support for HTTP/1.1.
72      * Support   for   Perl   Compatible   Regular   Expressions  in  the
73        configuration   files,   and   generally   a   more  sophisticated
74        configuration syntax over previous versions.
75      * Web page content filtering.
76      * Multi-threaded.
77      _________________________________________________________________
78
79 Installation
80
81    Junkbuster  is available as raw source code, or pre-compiled binaries.
82    See  the [10]Junkbuster Home Page for current release info. Junkbuster
83    is  also  available  via  [11]CVS. This is the recommended approach at
84    this time. But please be aware that CVS is constantly changing, and it
85    may break in mysterious ways.
86      _________________________________________________________________
87
88 Source
89
90    For gzipped tar archives, unpack the source:
91
92  tar zxvf ijb_source_2.9*
93  cd ijb_source_2.9*
94
95    For  retrieving  the  current CVS sources, you'll need the CVS package
96    installed first. To download CVS source:
97
98   cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
99   cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co cu
100 rrent
101   cd current
102
103    This  will  create  a directory named current/, which will contain the
104    source tree.
105
106    Then, in either case, to build from source:
107
108  autoconf       #recommended for CVS source
109  ./configure
110  make
111  su
112  make install
113
114    For Redhat and SuSE Linux RPM packages, see below.
115      _________________________________________________________________
116
117 Red Hat
118
119    To build Redhat RPM packages, install source as above. Then:
120
121  autoconf       #recommended for CVS source
122  ./configure
123  make redhat-dist
124
125    This  will  create  both  binary  and  src  RPMs  in the usual places.
126    Example:
127
128       /usr/src/redhat/RPMS/i686/junkbuster-2.9.8-1.i686.rpm
129
130       /usr/src/redhat/SRPMS/junkbuster-2.9.9-1.src.rpm
131
132    To install, of course:
133
134  rpm -Uvv /usr/src/redhat/RPMS/i686/junkbuster-2.9.9-1.i686.rpm
135
136    This    will    place    the   Junkbuster   configuration   files   in
137    /etc/junkbuster/, and log files in /var/log/junkbuster/.
138      _________________________________________________________________
139
140 SuSE
141
142    To build SuSE RPM packages, install source as above. Then:
143
144  autoconf       #recommended for CVS source
145  ./configure
146  make suse-dist
147
148    This  will  create  both  binary  and  src  RPMs  in the usual places.
149    Example:
150
151       /usr/src/suse/RPMS/i686/junkbuster-2.9.9-1.i686.rpm
152
153       /usr/src/suse/SRPMS/junkbuster-2.9.9-1.src.rpm
154
155    To install, of course:
156
157  rpm -Uvv /usr/src/suse/RPMS/i686/junkbuster-2.9.9-1.i686.rpm
158
159    This    will    place    the   Junkbuster   configuration   files   in
160    /etc/junkbuster/, and log files in /var/log/junkbuster/.
161      _________________________________________________________________
162
163 OS/2
164
165    The  OS/2 version of Junkbuster requires the EMX runtime library to be
166    installed.  The  EMX  runtime  library is available on the hobbes OS/2
167    archive, among many other locations:
168    [12]http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=emx
169    rt.zip&stype=all&sort=type&dir=%2Fpub%2Fos2%2Fdev%2Femx%2Fv0.9d
170
171    Junkbuster  is  packaged  in  a  WarpIN  self- installing archive. The
172    self-installing  program  will  be  named  depending  on  the  release
173    version,  something like: ijbos123.exe. In order to install it, simply
174    run  this executable or double-click on its icon and follow the WarpIN
175    installation  panels.  A  shadow  of the Junkbuster executable will be
176    placed  in your startup folder so it will start automatically whenever
177    OS/2 starts.
178
179    The  directory  you choose to install Junkbuster into will contain all
180    of the configuration files.
181
182    If  you  would  like to build binary images on OS/2 yourself, you will
183    need  a working EMX/GCC environment, plus several Unix-like tools. The
184    Hobbes  OS/2  archive  is  a good place to start when building such an
185    environment.  A  set of Unix-like tools named gnupack is located here:
186    [13]http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&key=gnupack&stype=all
187    &sort=type&dir=%2Fpub%2Fos2%2Fapps
188
189    Once  you  have  the  source code unpacked as above, you can build the
190    binaries from the current/ directory:
191
192  autoconf
193  sh configure
194  make
195      _________________________________________________________________
196
197 Windows
198
199    Click-click.  (I  need  help  on  this.  Not  a  clue  here.  Also for
200    configuration section below. HB.)
201      _________________________________________________________________
202
203 Other
204
205    Some quick notes on other Operating Systems.
206
207    For  FreeBSD  (and other *BSDs?), the build will need gmake instead of
208    the included make. gmake is available from [14]http://www.gnu.org. The
209    rest should be the same as above for Linux/Unix.
210      _________________________________________________________________
211
212 Junkbuster Configuration
213
214    For  Unix,  *BSD  and  Linux,  all  configuraton  files are located in
215    /etc/junkbuster/ by default. For MS Windows and OS/2, these are all in
216    the  same  directory as the Junkbuster executable. The name and number
217    of  configuration  files  has  changed  from previous versions, and is
218    subject to change as development progresses.
219
220    The  installed  defaults  provide a reasonable starting point. For the
221    time  being,  there  are  only three default configuration files (this
222    will change in time):
223
224      * The  main  configuration file is named config on Linux, Unix, BSD,
225        and   OS/2,   and  junkbustr.txt  on  Windows.  On  Amiga,  it  is
226        AmiTCP:db/junkbuster/config.
227      * The actionsfile file is used to define various actions relating to
228        images,  banners,  pop-ups,  banners  and  cookies. There is a CGI
229        based   editor   for   this   file   that   can  be  accessed  via
230        [15]http://ijbswa.sourceforge.net/config/.   (Still  under  active
231        development.)
232      * The  re_filterfile  file  can  be  used  to  rewrite  the raw page
233        content, including text as well as embedded HTML and JavaScript.
234
235    actionsfile  and  re_filterfile can use Perl style regular expressions
236    for  maximum  flexibility. All files use the "#" character to denote a
237    comment.  Such lines are not processed by Junkbuster. After making any
238    changes, restart Junkbuster in order for the changes to take effect.
239      _________________________________________________________________
240
241 The Main Configuration File
242
243    Again,  the  main configuration file is named config on Linux/Unix/BSD
244    and OS/2, and junkbustr.txt on Windows. Configuration lines consist of
245    an  initial  keyword  followed  by  a list of values, all separated by
246    whitespace (any number of spaces or tabs). For example:
247
248      blockfile blocklist.ini
249
250    Indicates that the blockfile is named "blocklist.ini".
251
252    A  "#"  indicates  a  comment.  Any  part of a line following a "#" is
253    ignored, except if the "#" is preceded by a "\".
254
255    Thus, by placing a "#" at the start of an existing configuration line,
256    you  can  make  it  a  comment and it will be treated as if it weren't
257    there.  This is called "commenting out" an option and can be useful to
258    turn  off  features: If you comment out the "logfile" line, junkbuster
259    will  not  log  to  a file at all. Watch for the "default:" section in
260    each  explanation  to see what happens if the option is left unset (or
261    commented out).
262
263    Long  lines  can  be  continued on the next line by using a "\" as the
264    very last character.
265
266    There are various aspects of Junkbuster behavior that can be tuned.
267      _________________________________________________________________
268
269 Defining Other Configuration Files
270
271    Junkbuster  can  use  a  number  of other files to tell it what ads to
272    block,  what cookies to accept, etc. This section of the configuration
273    file tells Junkbuster where to find all those other files.
274
275    On  Windows, Junkbuster looks for these files in the same directory as
276    the  executable. On Unix and OS/2, Junkbuster looks for these files in
277    the  current  working directory. In either case, an absolute path name
278    can be used to avoid problems.
279
280    When  development goes modular and multiuser, the blocker, filter, and
281    per-user  config  will  be  stored in subdirectories of "confdir". For
282    now, only confdir/templates is used for storing HTML templates for CGI
283    results.
284
285    The location of the configuration files:
286
287      confdir /etc/junkbuster       # No trailing /, please.
288
289    The  directory  where  all  logging  (i.e.  logfile and jarfile) takes
290    place. No trailing "/", please:
291
292      logdir /var/log/junkbuster
293
294    Note  that all file specifications below are relative to the above two
295    directories!
296
297    The "actionsfile" contains patterns to specify the actions to apply to
298    requests  for each site. Default: Cookies to and from all destinations
299    are  filtered.  Popups  are  disabled  for  all  sites.  All sites are
300    filtered  if  re_filterfile  specified. No sites are blocked. An empty
301    image  is  displayed  for  filtered  ads  and  other  images (formerly
302    "tinygif"). The syntax of this file is explained in detail [16]below.
303
304      actionsfile actionsfile
305
306    The  "re_filterfile"  file  contains content modification rules. These
307    rules  permit  powerful changes on the content of Web pages, e.g., you
308    could disable your favourite JavaScript annoyances, rewrite the actual
309    content,  or just have some fun replacing "Microsoft" with "MicroSuck"
310    wherever  it  appears on a Web page. Default: No content modification,
311    or whatever the developers are playing with :-/
312
313      re_filterfile re_filterfile
314
315    The  logfile  is where all logging and error messages are written. The
316    logfile  can  be  useful  for  tracking down a problem with Junkbuster
317    (e.g.,  it's not blocking an ad you think it should block) but in most
318    cases you probably will never look at it.
319
320    Your  logfile  will  grow  indefinitely, and you will probably want to
321    periodically  remove  it. On Unix systems, you can do this with a cron
322    job  (see  "man  cron").  For  Redhat,  a  logrotate  script  has been
323    included.
324
325    On    SuSE    Linux    systems,    you   can   place   a   line   like
326    "/var/log/junkbuster.*  +1024k  644  nobody.nogroup" in /etc/logfiles,
327    with  the effect that cron.daily will automatically archive, gzip, and
328    empty the log, when it exceeds 1M size.
329
330    Default:  Log  to  the  a  file  named logfile. Comment out to disable
331    logging.
332
333      logfile logfile
334
335    The   "jarfile"   defines  where  Junkbuster  stores  the  cookies  it
336    intercepts. Note that if you use a "jarfile", it may grow quite large.
337    Default: Don't store intercepted cookies.
338
339      #jarfile jarfile
340
341    If  you  specify  a  "trustfile", Junkbuster will only allow access to
342    sites  that  are  named  in  the trustfile. You can also mark sites as
343    trusted referrers, with the effect that access to untrusted sites will
344    be  granted,  if  a  link  from  a trusted referrer was used. The link
345    target  will  then  be  added  to  the  "trustfile".  This  is  a very
346    restrictive  feature  that  typical  users most propably want to leave
347    disabled. Default: Disabled, don't use the trust mechanism.
348
349      #trustfile trust
350
351    If  you  use  the  trust mechanism, it is a good idea to write up some
352    online  documentation  about  your  blocking policy and to specify the
353    URL(s) here. They will appear on the page that your users receive when
354    they  try to access untrusted content. Use multiple times for multiple
355    URLs. Default: Don't display links on the "untrusted" info page.
356
357      trust-info-url http://www.your-site.com/why_we_block.html
358      trust-info-url http://www.your-site.com/what_we_allow.html
359      _________________________________________________________________
360
361 Other Configuration Options
362
363    This  part of the configuration file contains options that control how
364    Junkbuster operates.
365
366    "Admin-address"  should  be  set  to  the  email  address of the proxy
367    administrator.  It  is  used  in  many  of  the proxy-generated pages.
368    Default: fill@me.in.please.
369
370      #admin-address fill@me.in.please
371
372    "Proxy-info-url"  can  be  set  to a URL that contains more info about
373    this  Junkbuster  installation, it's configuration and policies. It is
374    used  in  many  of  the  proxy-generated  pages  and its use is highly
375    recommended in multi-user installations, since your users will want to
376    know why certain content is blocked or modified. Default: Don't show a
377    link to online documentation.
378
379      proxy-info-url http://www.your-site.com/proxy.html
380
381    "Listen-address"  specifies the address and port where Junkbuster will
382    listen for connections from your Web browser. The default is to listen
383    on  the  localhost port 8000, and this is suitable for most users. (In
384    your  web browser, under proxy configuration, list the proxy server as
385    "localhost" and the port as "8000").
386
387    If  you  already  have another service running on port 8000, or if you
388    want  to  serve  requests  from  other  machines  (e.g.  on your local
389    network) as well, you will need to override the default. The syntax is
390    "listen-address  [<ip-address>]:<port>".  If  you  leave  out  the  IP
391    adress,  junkbuster  will  bind  to all interfaces (addresses) on your
392    machine  and  may  become  reachable  from the internet. In that case,
393    consider using access control lists (acl's) (see "aclfile" above).
394
395    For example, suppose you are running Junkbuster on a machine which has
396    the  address  192.168.0.1  on your local private network (192.168.0.0)
397    and  has another outside connection with a different address. You want
398    it to serve requests from inside only:
399
400      listen-address 192.168.0.1:8000
401
402    If  you  want  it  to  listen  on all addresses (including the outside
403    connection):
404
405      listen-address :8000
406
407    If  you  do this, consider using ACLs (see "aclfile" above). Note: you
408    will  need  to  point your browser(s) to the address and port that you
409    have configured here. Default: localhost:8000 (127.0.0.1:8000).
410
411    The debug option sets the level of debugging information to log in the
412    logfile  (and to the console in the Windows version). A debug level of
413    1  is informative because it will show you each request as it happens.
414    Higher levels of debug are probably only of interest to developers.
415
416      debug         1 # GPC   = show each GET/POST/CONNECT request
417      debug         2 # CONN  = show each connection status
418      debug         4 # IO    = show I/O status
419      debug         8 # HDR   = show header parsing
420      debug        16 # LOG   = log all data into the logfile
421      debug        32 # FRC   = debug force feature
422      debug        64 # REF   = debug regular expression filter
423      debug       128 #       = debug fast redirects
424      debug       256 #       = debug GIF deanimation
425      debug       512 # CLF   = Common Log Format
426      debug      1024 #       = debug kill popups
427      debug      4096 # INFO  = Startup banner and warnings.
428      debug      8192 # ERROR = Non-fatal errors
429
430    It is highly recommended that you enable ERROR reporting (debug 8192),
431    at least until the next stable release.
432
433    The  reporting  of  FATAL errors (i.e. ones which crash JunkBuster) is
434    always on and cannot be disabled.
435
436    If you want to use CLF (Common Log Format), you should set "debug 512"
437    ONLY, do not enable anything else.
438
439    Multiple "debug" directives, are OK - they're logical-OR'd together.
440
441      debug 15 # same as setting the first 4 listed above
442
443    Default:
444
445      debug 1 # URLs
446      debug 4096 # Info
447      debug 8192 # Errors - *we highly recommended enabling this*
448
449    Junkbuster  normally uses "multi-threading", a software technique that
450    permits  it  to handle many different requests simultaneously. In some
451    cases you may wish to disable this -- particularly if you're trying to
452    debug  a  problem.  The  "single-threaded" option forces Junkbuster to
453    handle requests sequentially. Default: Multi-threaded mode.
454
455      #single-threaded
456
457    "toggle" allows you to temporarily disable all Junkbuster's filtering.
458    Just set "toggle 0".
459
460    The  Windows  version  of  Junkbuster puts an icon in the system tray,
461    which  allows  you  to  change this option without having to edit this
462    file.  If you right-click on that icon (or select the "Options" menu),
463    one  choice  is "Enable". Clicking on enable toggles Junkbuster on and
464    off.  This  is  useful  if you want to temporarily disable Junkbuster,
465    e.g.,  to  access a site that requires cookies which you normally have
466    blocked.
467
468    "toggle  1"  means  Junkbuster  runs  normally,  "toggle 0" means that
469    Junkbuster becomes a non-anonymizing non-blocking proxy. Default: 1.
470
471      toggle 1
472
473    For   content  filtering,  i.e.  the  "+filter"  and  "+deanimate-gif"
474    actions,  it  is  neccessary  that  Junkbuster  buffers  up the entire
475    document body. This can be potentially dangerous, since a server could
476    just keep sending data indefinitely and wait for your RAM to exhaust.
477
478    The  buffer-limit  option lets you set the maximum size in Kbytes that
479    each  buffer  may use. When the documents buffer exceeds this size, it
480    is  flushed  to the client unfiltered and no further attempt to filter
481    the  rest  of  it  is  made.  Remember that there may multiple threads
482    running,  which  might  require  increasing  the "buffer-limit" Kbytes
483    each, unless you have enabled "single-threaded" above.
484
485      buffer-limit 4069
486
487    To  enable the web-based actionsfile editor set enable-edit-actions to
488    1,  or  0 to disable. Note that you must have compiled JunkBuster with
489    support  for  this  feature, otherwise this option has no effect. This
490    internal page can be reached at
491    [17]http://ijbswa.sourceforge.net/config/.
492
493    Security  note:  If  this is enabled, anyone who can use the proxy can
494    edit  the  actions  file, and their changes will affect all users. For
495    shared proxies, you probably want to disable this. Default: enabled.
496
497      enable-edit-actions 1
498
499    Allow  JunkBuster  to  be  toggled on and off remotely, using your web
500    browser.  Set  "enable-remote-toggle"to 1 to enable, and 0 to disable.
501    Note  that  you  must  have  compiled JunkBuster with support for this
502    feature, otherwise this option has no effect.
503
504    Security  note:  If  this is enabled, anyone who can use the proxy can
505    toggle  it  on  or  off,  and their changes will affect all users. For
506    shared proxies, you probably want to disable this. Default: enabled.
507
508      enable-remote-toggle 1
509      _________________________________________________________________
510
511 Access Control List (ACL)
512
513    Access  controls  are included at the request of some ISPs and systems
514    administrators, and are not usually needed by individual users. Please
515    note  the  warnings in the FAQ that this proxy is not intended to be a
516    substitute  for  a firewall or to encourage anyone to defer addressing
517    basic security weaknesses.
518
519    If  no  access  settings are specified, the proxy talks to anyone that
520    connects.  If  any  access settings file are specified, then the proxy
521    talks  only  to  IP addresses permitted somewhere in this file and not
522    denied later in this file.
523
524    Summary -- if using an ACL:
525
526    Client must have permission to receive service.
527
528    LAST match in ACL wins.
529
530    Default behavior is to deny service.
531
532    The syntax for an entry in the Access Control List is:
533
534      ACTION    SRC_ADDR[/SRC_MASKLEN]    [ DST_ADDR[/DST_MASKLEN] ]
535
536    Where the individual fields are:
537
538     ACTION      = "permit-access" or "deny-access"
539     SRC_ADDR    = client hostname or dotted IP address
540     SRC_MASKLEN = number of bits in the subnet mask for the source
541     DST_ADDR    = server or forwarder hostname or dotted IP address
542     DST_MASKLEN = number of bits in the subnet mask for the target
543
544    The field separator (FS) is whitespace (space or tab).
545
546    IMPORTANT  NOTE: If the junkbuster is using a forwarder (see below) or
547    a  gateway  for  a  particular  destination  URL, the DST_ADDR that is
548    examined  is  the  address of the forwarder or the gateway and NOT the
549    address  of  the  ultimate target. This is necessary because it may be
550    impossible  for  the  local Junkbuster to determine the address of the
551    ultimate target (that's often what gateways are used for).
552
553    Here are a few examples to show how the ACL features work:
554
555    "localhost"  is  OK  --  no  DST_ADDR  implies  that  ALL  destination
556    addresses are OK:
557
558      permit-access localhost
559
560    A  silly  example  to  illustrate  permitting  any host on the class-C
561    subnet with Junkbuster to go anywhere:
562
563      permit-access www.junkbusters.com/24
564
565    Except deny one particular IP address from using it at all:
566
567      deny-access ident.junkbusters.com
568
569    You  can  also  specify  an  explicit network address and subnet mask.
570    Explicit addresses do not have to be resolved to be used.
571
572      permit-access 207.153.200.0/24
573
574    A  subnet  mask  of  0  matches  anything,  so  the  next line permits
575    everyone.
576
577      permit-access 0.0.0.0/0
578
579    Note, you cannot say:
580
581      permit-access .org
582
583    to  allow  all  *.org  domains.  Every  IP address listed must resolve
584    fully.
585
586    An  ISP  may  want  to provide a Junkbuster that is accessible by "the
587    world"  and yet restrict use of some of their private content to hosts
588    on  its internal network (i.e. its own subscribers). Say, for instance
589    the  ISP  owns  the  Class-B  IP  address  block 123.124.0.0 (a 16 bit
590    netmask). This is how they could do it:
591
592     permit-access 0.0.0.0/0 0.0.0.0/0   # other clients can go anywhere
593                                           # with the following exceptions
594    :
595
596     deny-access   0.0.0.0/0   123.124.0.0/16 # block all external request
597    s for
598                                              # sites on the ISP's network
599     permit 0.0.0.0/0 www.my_isp.com        # except for the ISP's main
600                                              # web site
601     permit 123.124.0.0/16 0.0.0.0/0          # the ISP's clients can go
602                                              # anywhere
603
604    Note that if some hostnames are listed with multiple IP addresses, the
605    primary  value returned by DNS (via gethostbyname()) is used. Default:
606    Anyone can access the proxy.
607      _________________________________________________________________
608
609 Forwarding
610
611    This feature allows chaining of HTTP requests via multiple proxies. It
612    can  be  used  to  better  protect  privacy  and  confidentiality when
613    accessing  specific  domains by routing requests to those domains to a
614    special  purpose filtering proxy such as lpwa.com. Or to use a caching
615    proxy to speed up browsing.
616
617    It  can also be used in an environment with multiple networks to route
618    requests via multiple gateways allowing transparent access to multiple
619    networks without having to modify browser configurations.
620
621    Also  specified  here  are SOCKS proxies. Junkbuster SOCKS 4 and SOCKS
622    4A.  The  difference is that SOCKS 4A will resolve the target hostname
623    using DNS on the SOCKS server, not our local DNS client.
624
625    The syntax of each line is:
626
627     forward target_domain[:port] http_proxy_host[:port]
628     forward-socks4      target_domain[:port]      socks_proxy_host[:port]
629    http_proxy_host[:port]
630     forward-socks4a      target_domain[:port]     socks_proxy_host[:port]
631    http_proxy_host[:port]
632
633    If  http_proxy_host  is ".", then requests are not forwarded to a HTTP
634    proxy but are made directly to the web servers.
635
636    Lines are checked in sequence, and the last match wins.
637
638    There is an implicit line equivalent to the following, which specifies
639    that  anything  not  finding  a match on the list is to go out without
640    forwarding or gateway protocol, like so:
641
642      forward .* . # implicit
643
644    In  the  following  common  configuration, everything goes to Lucent's
645    LPWA, except SSL on port 443 (which it doesn't handle):
646
647     forward .* lpwa.com:8000
648     forward :443 .
649
650    See  the  FAQ  for instructions on how to automate the login procedure
651    for  LPWA. Some users have reported difficulties related to LPWA's use
652    of  "." as the last element of the domain, and have said that this can
653    be fixed with this:
654
655      forward lpwa. lpwa.com:8000
656
657    (NOTE:  the syntax for specifiying target_domain has changed since the
658    previous  paragraph  was  written  --  it  will  not  work  now.  More
659    information is welcome.)
660
661    In  this  fictitious  example,  everything  goes  via an ISP's caching
662    proxy, except requests to that ISP:
663
664     forward .* caching.myisp.net:8000
665     forward myisp.net .
666
667    For  the  @home  network,  we're  told the forwarding configuration is
668    this:
669
670      forward .* proxy:8080
671
672    Also, we're told they insist on getting cookies and JavaScript, so you
673    need  to  add  home.com  to  the cookie file. We consider JavaScript a
674    security risk. Java need not be enabled.
675
676    In this example direct connections are made to all "internal" domains,
677    but everything else goes through Lucent's LPWA by way of the company's
678    SOCKS gateway to the Internet.
679
680     forward_socks4 .* lpwa.com:8000 firewall.my_company.com:1080
681     forward my_company.com .
682
683    This  is  how  you  could  set up a site that always uses SOCKS but no
684    forwarders:
685
686      forward_socks4a .* . firewall.my_company.com:1080
687
688    An advanced example for network administrators:
689
690    If  you  have  links  to  multiple  ISPs  that provide various special
691    content  to  their  subscribers,  you can configure forwarding to pass
692    requests  to  the  specific  host that's connected to that ISP so that
693    everybody can see all of the content on all of the ISPs.
694
695    This is a bit tricky, but here's an example:
696
697    host-a  has  a  PPP  connection  to  isp-a.com.  And  host-b has a PPP
698    connection  to  isp-b.com.  host-a  can  run  a  Junkbuster proxy with
699    forwarding like this:
700
701     forward .* .
702     forward isp-b.com host-b:8000
703
704    host-b can run a Junkbuster proxy with forwarding like this:
705
706     forward .* .
707     forward isp-a.com host-a:8000
708
709    Now, anyone on the Internet (including users on host-a and host-b) can
710    set  their  browser's  proxy to either host-a or host-b and be able to
711    browse the content on isp-a or isp-b.
712
713    Here's another practical example, for University of Kent at Canterbury
714    students  with a network connection in their room, who need to use the
715    University's Squid web cache.
716
717     forward *. ssbcache.ukc.ac.uk:3128  # Use the proxy, except for:
718     forward .ukc.ac.uk .  # Anything on the same domain as us
719     forward * .  # Host with no domain specified
720     forward 129.12.*.* .  # A dotted IP on our /16 network.
721     forward 127.*.*.* .  # Loopback address
722     forward localhost.localdomain .  # Loopback address
723     forward www.ukc.mirror.ac.uk .  # Specific host
724
725    If  you  intend  to  chain Junkbuster and squid locally, then chain as
726    browser -> squid -> junkbuster is the recommended way.
727
728    Your squid configuration could then look like this:
729
730      # Define junkbuster as parent cache
731
732      cache_peer 127.0.0.1 parent 8000 0 no-query
733
734      # Define ACL for protocol FTP
735      acl FTP proto FTP
736      # Do not forward ACL FTP to junkbuster
737      always_direct allow FTP
738      # Do not forward ACL CONNECT (https) to junkbuster
739      always_direct allow CONNECT
740      # Forward the rest to junkbuster
741      never_direct allow all
742      _________________________________________________________________
743
744 Windows GUI Options
745
746    Junkbuster  has  a  number  of  options  specific  to  the Windows GUI
747    interface:
748
749    If  "activity-animation" is set to 1, the Junkbuster icon will animate
750    when "Junkbuster" is active. To turn off, set to 0.
751
752      activity-animation 1
753
754    If  "log-messages"  is  set  to 1, Junkbuster will log messages to the
755    console window:
756
757      log-messages 1
758
759    If "log-buffer-size" is set to 1, the size of the log buffer, i.e. the
760    amount  of  memory  used for the log messages displayed in the console
761    window, will be limited to "log-max-lines" (see below).
762
763    Warning:  Setting  this  to  0  will  result  in  the  buffer  to grow
764    infinitely and eat up all your memory!
765
766      log-buffer-size 1
767
768    log-max-lines  is  the maximum number of lines held in the log buffer.
769    See above.
770
771      log-max-lines 200
772
773    If  "log-highlight-messages"  is  set  to 1, Junkbuster will highlight
774    portions of the log messages with a bold-faced font:
775
776      log-highlight-messages 1
777
778    The font used in the console window:
779
780      log-font-name Comic Sans MS
781
782    Font size used in the console window:
783
784      log-font-size 8
785
786    "show-on-task-bar" controls whether or not Junkbuster will appear as a
787    button on the Task bar when minimized:
788
789      show-on-task-bar 0
790
791    If "close-button-minimizes" is set to 1, the Windows close button will
792    minimize  Junkbuster  instead  of  closing the program (close with the
793    exit option on the File menu).
794
795      close-button-minimizes 1
796
797    The "hide-console" option is specific to the MS-Win console version of
798    JunkBuster.  If  this  option is used, Junkbuster will disconnect from
799    and hide the command console.
800
801      #hide-console
802      _________________________________________________________________
803
804 The Actions File
805
806    The "actionsfile" is used to define what actions Junkbuster takes, and
807    thus  determines how images, cookies and various other aspects of HTTP
808    content and transactions are handled. Images can be anything you want,
809    including  ads,  banners,  or just some obnoxious image that you would
810    rather  not see. Cookies can be accepted or rejected. The default file
811    is in fact named actionsfile.
812
813    To  determine which actions apply to a request, the URL of the request
814    is  compared  to all patterns in this file. Every time it matches, the
815    list  of  applicable actions for the URL is incrementally updated. You
816    can trace this process by visiting [18]http://i.j.b/show-url-info.
817
818    There are four types of lines in this file: comments (begin with a "#"
819    character),  actions, aliases and patterns, all of which are explained
820    below.
821      _________________________________________________________________
822
823 URL Domain and Path Syntax
824
825    Generally,  a  pattern  has  the  form <domain>/<path>, where both the
826    <domain>  and  <path>  part are optional. If you only specify a domain
827    part, the "/" can be left out:
828
829    www.example.com  - is a domain only pattern and will match any request
830    to "www.example.com".
831
832    www.example.com/ - means exactly the same.
833
834    www.example.com/index.html   -   matches   only  the  single  document
835    "/index.html" on "www.example.com".
836
837    /index.html  -  matches  the document "/index.html", regardless of the
838    domain.
839
840    index.html  -  matches  nothing,  since  it  would be interpreted as a
841    domain name and there is no top-level domain called ".html".
842
843    The  matching  of the domain part offers some flexible options: if the
844    domain  starts  or ends with a dot, it becomes unanchored at that end.
845    For example:
846
847    .example.com - matches any domain that ENDS in ".example.com".
848
849    www. - matches any domain that STARTS with "www".
850
851    Additionally, there are wildcards that you can use in the domain names
852    themselves.  They  work  pretty similar to shell wildcards: "*" stands
853    for  zero  or  more  arbitrary  characters,  "?" stands for any single
854    character.  And  you  can define charachter classes in square brackets
855    and they can be freely mixed:
856
857    ad*.example.com  -  matches "adserver.example.com", "ads.example.com",
858    etc but not "sfads.example.com".
859
860    *ad*.example.com - matches all of the above, and then some.
861
862    .?pix.com     -     matches    "www.ipix.com",    "pictures.epix.com",
863    "a.b.c.d.e.upix.com", etc.
864
865    www[1-9a-ez].example.com       -      matches      "www1.example.com",
866    "www4.example.com",  "wwwd.example.com", "wwwz.example.com", etc., but
867    not "wwww.example.com".
868
869    If  Junkbuster  was  compiled  with  "pcre"  support  (default),  Perl
870    compatible  regular  expressions  can  be  used.  See  the  pcre/docs/
871    direcory or "man perlre" (also available on
872    [19]http://www.perldoc.com/perl5.6/pod/perlre.html)   for  details.  A
873    brief  discussion  of  regular expressions is in the [20]Appendix. For
874    instance:
875
876    /.*/advert[0-9]+\.jpe?g  - would match a URL from any domain, with any
877    path  that  includes  "advert"  followed  immediately  by  one or more
878    digits,  then  a "." and ending in either "jpeg" or "jpg". So we match
879    "example.com/ads/advert2.jpg", and
880    "www.example.com/ads/banners/advert39.jpeg",          but          not
881    "www.example.com/ads/banners/advert39.gif"  (no  gifs  in  the example
882    pattern).
883
884    Please  note that matching in the path is case INSENSITIVE by default,
885    but  you  can  switch to case sensitive at any point in the pattern by
886    using the "(?-i)" switch:
887
888    www.example.com/(?-i)PaTtErN.*  - will match only documents whose path
889    starts with "PaTtErN" in exactly this capitalization.
890      _________________________________________________________________
891
892 Actions
893
894    Actions  are  enabled if preceded with a "+", and disabled if preceded
895    with  a "-". Actions are invoked by enclosing the action name in curly
896    braces  (e.g. {+some_action}), followed by a list of URLs to which the
897    action applies. There are three classes of actions:
898
899      * Boolean (e.g. "+/-block"):
900          {+name}        # enable this action
901          {-name}        # disable this action
902
903      * Parameterized (e.g. "+/-hide-user-agent"):
904          {+name{param}}  # enable action and set parameter to "param"
905          {-name}         # disable action
906
907      * Multi-value       (e.g.       "{+/-add-header{Name:      value}}",
908        "{+/-wafer{name=value}}"):
909          {+name{param}}   # enable action and add parameter "param"
910          {-name{param}}   # remove the parameter "param"
911          {-name}          # disable this action totally
912
913    If  nothing  is  specified in this file, no "actions" are taken. So in
914    this   case   JunkBuster   would   just  be  a  normal,  non-blocking,
915    non-anonymizing  proxy.  You  must specifically enable the privacy and
916    blocking  features you need (although the provided default actionsfile
917    file will give a good starting point).
918
919    Later  defined actions always over-ride earlier ones. For multi-valued
920    actions, the actions are applied in the order they are specified.
921
922    The list of valid Junkbuster "actions" are:
923
924      * Add  the specified HTTP header, which is not checked for validity.
925        You may specify this many times to specify many different headers:
926          +add-header{Name: value}
927
928      * Block this URL totally.
929          +block
930
931      * De-animate all animated GIF images, i.e. reduce them to their last
932        frame.  This  will  also shrink the images considerably (in bytes,
933        not  pixels!).  If the option "first" is given, the first frame of
934        the  animation is used as the replacement. If "last" is given, the
935        last  frame of the animation is used instead, which propably makes
936        more  sense  for  most banner animations, but also has the risk of
937        not  showing  the  entire  last frame (if it is only a delta to an
938        earlier frame).
939          +deanimate-gifs{last}
940          +deanimate-gifs{first}
941
942      * "+downgrade"  will  downgrade HTTP/1.1 client requests to HTTP/1.0
943        and  downgrade  the responses as well. Use this action for servers
944        that use HTTP/1.1 protocol features that Junkbuster doesn't handle
945        well  yet.  HTTP/1.1 is only partially implemented. Default is not
946        to downgrade requests.
947          +downgrade
948
949      * Many  sites,  like  yahoo.com,  don't  just  link  to other sites.
950        Instead, they will link to some script on their own server, giving
951        the  destination  as  a parameter, which will then redirect you to
952        the  final  target. URLs resulting from this scheme typically look
953        like: http://some.place/some_script?http://some.where-else.
954        Sometimes,  there  are even multiple consecutive redirects encoded
955        in  the  URL. These redirections via scripts make your web browing
956        more traceable, since the server from which you follow such a link
957        can  see  where you go to. Apart from that, valuable bandwidth and
958        time is wasted, while your browser ask the server for one redirect
959        after the other. Plus, it feeds the advertisers.
960        The   "+fast-redirects"   option  enables  interception  of  these
961        requests  by  Junkbuster,  who will cut off all but the last valid
962        URL  in the request and send a local redirect back to your browser
963        without contacting the remote site.
964          +fast-redirects
965
966      * Filter the website through the re_filterfile:
967         +filter{filename}
968
969      * Block  any  existing  X-Forwarded-for header, and do not add a new
970        one:
971          +hide-forwarded
972
973      * If  the  browser  sends  a  "From:"  header containing your e-mail
974        address,  this  either completely removes the header ("block"), or
975        changes it to the specified e-mail address.
976          +hide-from{block}
977          +hide-from{spam@sittingduck.xqq}
978
979      * Don't  send  the  "Referer:" (sic) header to the web site. You can
980        block  it, forge a URL to the same server as the request (which is
981        preferred  because  some  sites will not send images otherwise) or
982        set it to a constant string of your choice.
983          +hide-referer{block}
984          +hide-referer{forge}
985          +hide-referer{http://nowhere.com}
986
987      * Alternative   spelling   of   "+hide-referer".  It  has  the  same
988        parameters,   and  can  be  freely  mixed  with,  "+hide-referer".
989        ("referrer"  is  the  correct  English  spelling, however the HTTP
990        specification has a bug - it requires it to be spelled "referer".)
991          +hide-referrer{...}
992
993      * Change  the  "User-Agent:"  header  so web servers can't tell your
994        browser  type.  Warning!  This  breaks many web sites. Specify the
995        user-agent  value  you want. Example, pretend to be using Netscape
996        on Linux:
997          +hide-user-agent{Mozilla (X11; I; Linux 2.0.32 i586)}
998
999      * Treat  this  URL  as  an  image.  This  only  matters if it's also
1000        "+block"ed,  in  which  case  a "blocked" image can be sent rather
1001        than  a  HTML  page.  See "+image-blocker{}" below for the control
1002        over what is actually sent.
1003          +image
1004
1005      * Decides  what  to  do  with  URLs that end up tagged with "{+block
1006        +image}".  There  are 4 options. "-image-blocker" will send a HTML
1007        "blocked"  page,  usually  resulting  in  a  "broken  image" icon.
1008        "+image-blocker{logo}"    will    send   a   "JunkBuster"   image.
1009        "+image-blocker{blank}" will send a 1x1 transparent GIF image. And
1010        finally,   "+image-blocker{http://xyz.com}"   will   send  a  HTTP
1011        temporary  redirect to the specified image. This has the advantage
1012        of the icon being being cached by the browser, which will speed up
1013        the display.
1014          +image-blocker{logo}
1015          +image-blocker{blank}
1016          +image-blocker{http://i.j.b/send-banner}
1017
1018      * By  default  (i.e.  in  the absence of a "+limit-connect" action),
1019        Junkbuster  will only allow CONNECT requests to port 443, which is
1020        the standard port for https as a precaution.
1021        The  CONNECT  methods  exists  in  HTTP  to allow access to secure
1022        websites  (https://  URLs)  through proxies. It works very simply:
1023        the  proxy  connects to the server on the specified port, and then
1024        short-circuits  its  connections  to  the client and to the remote
1025        proxy.  This  can  be  a  big security hole, since CONNECT-enabled
1026        proxies can be abused as TCP relays very easily.
1027        If  you want to allow CONNECT for more ports than this, or want to
1028        forbid  CONNECT altogether, you can specify a comma separated list
1029        of  ports  and  port  ranges  (the  latter  using dashes, with the
1030        minimum defaulting to 0 and max to 65K):
1031          +limit-connect{443}  #  This  is  the  default  and  need  no be
1032        specified.
1033          +limit-connect{80,443} # Ports 80 and 443 are OK.
1034          +limit-connect{-3, 7, 20-100, 500-} # Port less than 3, 7, 20 to
1035        100
1036           #and above 500 are OK.
1037
1038      * "+no-compression"  prevents the website from compressing the data.
1039        Some  websites  do  this,  which  can be a problem for Junkbuster,
1040        since "+filter", "+no-popup" and "+gif-deanimate" will not work on
1041        compressed   data.  This  will  slow  down  connections  to  those
1042        websites, though. Default is "nocompression" is turned on.
1043          +nocompression
1044
1045      * Prevent the website from reading cookies:
1046          +no-cookies-read
1047
1048      * Prevent the website from setting cookies:
1049          +no-cookies-set
1050
1051      * Filter  the  website  through  a  built-in filter to disable those
1052        obnoxious  JavaScript  pop-up  windows via window.open(), etc. The
1053        two alternative spellings are equivalent.
1054          +no-popup
1055          +no-popups
1056
1057      * This  action  only  applies  if you are using a jarfile for saving
1058        cookies.  It  sends a cookie to every site stating that you do not
1059        accept  any  copyright on cookies sent to you, and asking them not
1060        to track you. Of course, this is a (relatively) unique header they
1061        could use to track you.
1062          +vanilla-wafer
1063
1064      * This  allows  you  to add an arbitrary cookie. It can be specified
1065        multiple times in order to add as many cookies as you like.
1066          +wafer{name=value}
1067
1068    The  meaning  of  any of the above is reversed by preceding the action
1069    with a "-", in place of the "+".
1070
1071    Some examples:
1072
1073    Turn  off  cookies  by default, then allow a few through for specified
1074    sites:
1075
1076     # Turn off all cookies
1077     { +no-cookies-read }
1078     { +no-cookies-set }
1079     # Execeptions to the above, sites that need cookies
1080     { -no-cookies-read }
1081     { -no-cookies-set }
1082     .javasoft.com
1083     .sun.com
1084     .yahoo.com
1085     .msdn.microsoft.com
1086     .redhat.com
1087     # Alternative way of saying the same thing
1088     {-no-cookies-set -no-cookies-read}
1089     .sourceforge.net
1090     .sf.net
1091
1092    Now turn off "fast redirects", and then we allow two exceptions:
1093
1094     # Turn them off!
1095     {+fast-redirects}
1096
1097     # Reverse it for these two sites, which don't work right without it.
1098     {-fast-redirects}
1099     www.ukc.ac.uk/cgi-bin/wac\.cgi\?
1100     login.yahoo.com
1101
1102    Turn on page filtering, with one exception for sourceforge:
1103
1104     # Run everything through the default filter file (re_filterfile):
1105     {+filter}
1106
1107     # But please don't re_filter code from sourceforge!
1108     {-filter}
1109     .cvs.sourceforge.net
1110
1111    Now  some  URLs  that we want "blocked", ie we won't see them. Many of
1112    these use regular expressions that will expand to match multiple URLs:
1113
1114      # Blocklist:
1115      {+block}
1116      /.*/(.*[-_.])?ads?[0-9]?(/|[-_.].*|\.(gif|jpe?g))
1117      /.*/(.*[-_.])?count(er)?(\.cgi|\.dll|\.exe|[?/])
1118      /.*/(ng)?adclient\.cgi
1119      /.*/(plain|live|rotate)[-_.]?ads?/
1120      /.*/(sponsor)s?[0-9]?/
1121      /.*/_?(plain|live)?ads?(-banners)?/
1122      /.*/abanners/
1123      /.*/ad(sdna_image|gifs?)/
1124      /.*/ad(server|stream|juggler)\.(cgi|pl|dll|exe)
1125      /.*/adbanners/
1126      /.*/adserver
1127      /.*/adstream\.cgi
1128      /.*/adv((er)?ts?|ertis(ing|ements?))?/
1129      /.*/banner_?ads/
1130      /.*/banners?/
1131      /.*/banners?\.cgi/
1132      /.*/cgi-bin/centralad/getimage
1133      /.*/images/addver\.gif
1134      /.*/images/marketing/.*\.(gif|jpe?g)
1135      /.*/popupads/
1136      /.*/siteads/
1137      /.*/sponsor.*\.gif
1138      /.*/sponsors?[0-9]?/
1139      /.*/advert[0-9]+\.jpg
1140      /Media/Images/Adds/
1141      /ad_images/
1142      /adimages/
1143      /.*/ads/
1144      /bannerfarm/
1145      /grafikk/annonse/
1146      /graphics/defaultAd/
1147      /image\.ng/AdType
1148      /image\.ng/transactionID
1149      /images/.*/.*_anim\.gif # alvin brattli
1150      /ip_img/.*\.(gif|jpe?g)
1151      /rotateads/
1152      /rotations/
1153      /worldnet/ad\.cgi
1154      /cgi-bin/nph-adclick.exe/
1155      /.*/Image/BannerAdvertising/
1156      /.*/ad-bin/
1157      /.*/adlib/server\.cgi
1158      /autoads/
1159      _________________________________________________________________
1160
1161 Aliases
1162
1163    Custom  "actions", known to Junkbuster as "aliases", can be defined by
1164    combining  other "actions". These can in turn be invoked just like the
1165    built-in  "actions".  Currently,  an  alias  can contain any character
1166    except  space,  tab,  "=",  "{"  or "}". But please use only "a"- "z",
1167    "0"-"9", "+", and "-". Alias names are not case sensitive, and must be
1168    defined before anything else in actionsfile! And there can only be one
1169    set of "aliases" defined.
1170
1171    Now let's define a few aliases:
1172
1173     # Useful customer aliases we can use later. These must come first!
1174     {{alias}}
1175     +no-cookies = +no-cookies-set +no-cookies-read
1176     -no-cookies = -no-cookies-set -no-cookies-read
1177     fragile     = -block -no-cookies -filter -fast-redirects -hide-refere
1178    r -no-popups
1179     shop        = -no-cookies -filter -fast-redirects
1180     +imageblock = +block +image
1181     #For people who don't like to type too much:  ;-)
1182     c0 = +no-cookies
1183     c1 = -no-cookies
1184     c2 = -no-cookies-set +no-cookies-read
1185     c3 = +no-cookies-set -no-cookies-read
1186     #... etc.  Customize to your heart's content.
1187
1188    Some examples using our "shop" and "fragile" aliases from above:
1189
1190     # These sites are very complex and require
1191     # minimal interference.
1192     {fragile}
1193     .office.microsoft.com
1194     .windowsupdate.microsoft.com
1195     .nytimes.com
1196     # Shopping sites - still want to block ads.
1197     {shop}
1198     .quietpc.com
1199     .worldpay.com   # for quietpc.com
1200     .jungle.com
1201     .scan.co.uk
1202     # These shops require pop-ups
1203     {shop -no-popups}
1204     .dabs.com
1205     .overclockers.co.uk
1206      _________________________________________________________________
1207
1208 The Filter File
1209
1210    The  filter  file defines what filtering of web pages Junkbuster does.
1211    The  default  filter  file  is  re_filterfile,  located  in the config
1212    directory.  In  this file, any document content, whether viewable text
1213    or embedded non-visible content, can be changed.
1214
1215    This  file  uses  regular expressions to alter or remove any string in
1216    the   target   page.   Some   examples   from   the  included  default
1217    re_filterfile:
1218
1219    Stop  web pages from displaying annoying messages in the status bar by
1220    deleting such references:
1221
1222     # The status bar is for displaying link targets, not pointless buzzwo
1223    rds.
1224     # Again, check it out on http://www.airport-cgn.de/.
1225     s/status='.*?';*//ig
1226
1227    Just   for   kicks,   replace   any  occurrence  of  "Microsoft"  with
1228    "MicroSuck":
1229
1230     s/microsoft(?!.com)/MicroSuck/ig
1231
1232    Kill those auto-refresh tags:
1233
1234     # Kill refresh tags. I like to refresh myself. Manually.
1235     # check it out on http://www.airport-cgn.de/ and go to the arrivals p
1236    age.
1237     #
1238     s/<meta[^>]*http-equiv[^>]*refresh.*URL=([^>]*?)"?>/<link rev="x-refr
1239    esh" href=$1>/i
1240     s/<meta[^>]*http-equiv="?page-enter"?[^>]*content=[^>]*>/<!--no page
1241    enter for me-->/i
1242      _________________________________________________________________
1243
1244 Quickstart to Using Junkbuster
1245
1246    Install  package,  then  run  and  enjoy!  Junbuster  accepts only one
1247    command line option -- the configuration file to be used. Example Unix
1248    startup command:
1249
1250
1251  # /usr/sbin/junkbuster /etc/junkbuster/config &
1252
1253
1254    If  no configuration file is specified on the command line, Junkbuster
1255    will  look for a file named config in the current directory. Except on
1256    Amiga  where  it  will  look for AmiTCP:db/junkbuster/config and Win32
1257    where it will try junkbstr.txt. If no file is specified on the command
1258    line  and  no default configuration file can be found, Junkbuster will
1259    fail to start.
1260
1261    Be  sure  your  browser is set to use the proxy which is by default at
1262    localhost,  port  8000.  With  Netscape (and Mozilla), this can be set
1263    under  Edit  ->  Preferences -> Advanced -> Proxies -> HTTP Proxy. For
1264    Internet  Explorer:  Tools > Internet Properties -> Connections -> LAN
1265    Setting.  Then,  check  "Use  Proxy"  and fill in the appropriate info
1266    (Address: localhost, Port: 8000). Include if HTTPS proxy support too.
1267
1268    The  included  default  configuration  files  should give a reasonable
1269    starting  point,  though  may be somewhat aggressive in blocking junk.
1270    You  will  probably  want  to  keep  an eye out for sites that require
1271    cookies,  and  add these to actionsfile as needed. By default, most of
1272    these  will be blocked until you add them to the configuration. If you
1273    want  the  browser  to  handle  this  instead,  you  will need to edit
1274    actionsfile  and  disable  this  feature.  If  you  use  more than one
1275    browser,  it  would  make more sense to let Junkbuster handle this. In
1276    which case, the browser(s) should be set to accept all cookies.
1277
1278    If a particular site shows problems loading properly, try adding it to
1279    the  {fragile} section of actionsfile. This will turn off most actions
1280    for this site.
1281
1282    HTTP/1.1  support  is  not fully implemented. If browsers that support
1283    HTTP/1.1   (like  Mozilla  or  recent  versions  of  I.E.)  experience
1284    problems,  you  might try to force HTTP/1.0 compatiblity. For Mozilla,
1285    look  under  Edit  ->  Preferences  -> Debug -> Networking. Or set the
1286    "+downgrade" config option in actionsfile.
1287
1288    After  running  Junkbuster for a while, you can start to fine tune the
1289    configuration   to  suit  your  personal,  or  site,  preferences  and
1290    requirements.  There  are  many,  many aspects that can be customized.
1291    "Actions"  (from actionsfile) can be adjusted by pointing your browser
1292    to [21]http://ijbswa.sourceforge.net/config/, and then follow the link
1293    to  "edit  the  actions  list". (This is an internal page and does not
1294    require Internet access.)
1295
1296    In  fact,  various  aspects  of Junkbuster configuration can be viewed
1297    from  this  page,  including  current configuration parameters, source
1298    code  version  numbers,  the  browser's request headers, and "actions"
1299    that  apply  to  a  given  URL.  In addition to the actionsfile editor
1300    mentioned  above,  Junkbuster  can  also be turned "on" and "off" from
1301    this page.
1302
1303    If  you  encounter  problems, please verify it is a Junkbuster bug, by
1304    disabling Junkbuster, and then trying the same page. Also, try another
1305    browser  if  possible  to  eliminate  browser or site problems. Before
1306    reporting it as a bug, see if there is not a configuration option that
1307    is  enabled  that is causing the page not to load. You can then add an
1308    exception  for  that  page  or site. If a bug, please report it to the
1309    developers (see below).
1310      _________________________________________________________________
1311
1312 Contact the Developers
1313
1314    Feature   requests  and  other  questions  should  be  posted  to  the
1315    [22]Feature  request  page  at  SourceForge.  There is also an archive
1316    there.
1317
1318    Anyone interested in actively participating in development and related
1319    discussions  can  join the appropriate mailing list [23]here. Archives
1320    are available here too.
1321
1322    Please  report  bugs, using the form at [24]Sourceforge. Please try to
1323    verify  that  it  is  a  Junkbuster bug, and not a browser or site bug
1324    first. Also, check to make sure this is not already a known bug.
1325      _________________________________________________________________
1326
1327 Copyright and History
1328
1329 License
1330
1331    Internet  Junkbuster  is free software; you can redistribute it and/or
1332    modify  it  under  the  terms  of  the  GNU  General Public License as
1333    published  by  the  Free  Software Foundation; either version 2 of the
1334    License, or (at your option) any later version.
1335
1336    This  program  is  distributed in the hope that it will be useful, but
1337    WITHOUT   ANY   WARRANTY;   without   even  the  implied  warranty  of
1338    MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE. See the GNU
1339    General  Public  License  for  more  details,  which is available from
1340    [25]the  Free  Software  Foundation, Inc, 59 Temple Place - Suite 330,
1341    Boston, MA 02111-1307, USA.
1342      _________________________________________________________________
1343
1344 History
1345
1346    Junkbuster   was   originally   written   by   Anonymous   Coders  and
1347    [26]JunkBusters  Corporation,  and  was  released  as free open-source
1348    software   under   the   GNU   GPL.   [27]Stefan  Waldherr  made  many
1349    improvements,  and  started  the  [28]SourceForge  project to rekindle
1350    development.  The  last stable release was v2.0.2, which has now grown
1351    whiskers ;-).
1352      _________________________________________________________________
1353
1354 See also
1355
1356      [29]http://sourceforge.net/projects/ijbswa
1357
1358      [30]http://ijbswa.sourceforge.net/
1359
1360      [31]http://ijbswa.sourceforge.net/config/
1361
1362      [32]http://www.junkbusters.com/ht/en/cookies.html
1363
1364      [33]http://www.waldherr.org/junkbuster/
1365
1366      [34]http://privacy.net/analyze/
1367
1368     [35]http://www.squid-cache.org/
1369      _________________________________________________________________
1370
1371 Appendix
1372
1373 Regular Expressions
1374
1375    Junkbuster  can  use  "regular  expressions"  in various config files.
1376    Assuming  support  for "pcre" (Perl Compatible Regular Expressions) is
1377    compiled  in,  which  is the default. Such configuration directives do
1378    not  require  regular  expressions,  but  they can be used to increase
1379    flexibility by matching a pattern with wildcards against URLs.
1380
1381    If  you  are reading this, you probably don't understand what "regular
1382    expressions"  are,  or  what they can do. So this will be a very brief
1383    introduction only. A full explanation would require a book ;-)
1384
1385    "Regular  expressions"  is  a way of matching one character expression
1386    against  another to see if it matches or not. One of the "expressions"
1387    is a literal string of readable characters (letter, numbers, etc), and
1388    the  other  is  a  complex  string of literal characters combined with
1389    wildcards,  and  other  special characters, called metacharacters. The
1390    "metacharacters"  have  special  meanings  and  are  used to build the
1391    complex  pattern  to  be  matched  against.  Perl  Compatible  Regular
1392    Expressions  is  an  enhanced  form of the regular expression language
1393    with backward compatibility.
1394
1395    To make a simple analogy, we do something similar when we use wildcard
1396    characters when listing files with the dir command in DOS. *.* matches
1397    all  filenames.  The  "special"  character  here  is the asterik which
1398    matches  any  and all characters. We can be more specific and use ? to
1399    match  just  individual  characters.  So  "dir file?.text" would match
1400    "file1.txt",  "file2.txt",  etc.  We  are  pattern  matching,  using a
1401    similar technique to "regular expressions"!
1402
1403    Regular  expressions do essentially the same thing, but are much, much
1404    more  powerful.  There  are many more "special characters" and ways of
1405    building  complex  patterns however. Let's look at a few of the common
1406    ones, and then some examples:
1407
1408    . - Matches any single character, e.g. "a", "A", "4", ":", or "@".
1409
1410    ?  -  The  preceding  character  or  expression is matched ZERO or ONE
1411    times. Either/or.
1412
1413    +  -  The  preceding  character  or  expression is matched ONE or MORE
1414    times.
1415
1416    *  -  The  preceding  character  or expression is matched ZERO or MORE
1417    times.
1418
1419    \ - The "escape" character denotes that the following character should
1420    be  taken  literally. This is used where one of the special characters
1421    (e.g.  ".")  needs  to  be  taken  literally  and  not  as  a  special
1422    metacharacter.
1423
1424    []  -  Characters  enclosed  in brackets will be matched if any of the
1425    enclosed characters are encountered.
1426
1427    ()  -  Pararentheses  are  used to group a sub-expression, or multiple
1428    sub-expressions.
1429
1430    |  -  The  "bar" character works like an "or" conditional statement. A
1431    match  is  successful  if  the  sub-expression  on  either side of "|"
1432    matches.
1433
1434    s/string1/string2/g  -  This  is  used  to  rewrite  strings  of text.
1435    "string1" is replaced by "string2" in this example.
1436
1437    These  are  just  some of the ones you are likely to use when matching
1438    URLs  with  Junkbuster, and is a long way from a definitive list. This
1439    is  enough  to  get us started with a few simple examples which may be
1440    more illuminating:
1441
1442    /.*/banners/.*  - A simple example that uses the common combination of
1443    "."  and  "*"  to  denote  any character, zero or more times. In other
1444    words,  any  string  at all. So we start with a literal forward slash,
1445    then  our  regular  expression  pattern (".*") another literal forward
1446    slash, the string "banners", another forward slash, and lastly another
1447    ".*".  We are building a directory path here. This will match any file
1448    with  the  path  that  has a directory named "banners" in it. The ".*"
1449    matches  any  characters,  and  this could conceivably be more forward
1450    slashes,  so  it  might  expand  into  a much longer looking path. For
1451    example, this could match:
1452    "/eye/hate/spammers/banners/annoy_me_please.gif",        or       just
1453    "/banners/annoying.html",  or  almost  an  infinite  number  of  other
1454    possible combinations, just so it has "banners" in the path somewhere.
1455
1456    A now something a little more complex:
1457
1458    /.*/adv((er)?ts?|ertis(ing|ements?))?/   -  We  have  several  literal
1459    forward  slashes  again  ("/"),  so we are building another expression
1460    that  is  a  file  path  statement.  We  have  another ".*", so we are
1461    matching  against  any  conceivable  sub-path,  just so it matches our
1462    expression.  The only true literal that must match our pattern is adv,
1463    together  with  the forward slashes. What comes after the "adv" string
1464    is the interesting part.
1465
1466    Remember  the  "?"  means  the  preceding expression (either a literal
1467    character  or anything grouped with "(...)" in this case) can exist or
1468    not,    since    this   means   either   zero   or   one   match.   So
1469    "((er)?ts?|ertis(ing|ements?))"  is  optional,  as  are the individual
1470    sub-expressions:  "(er)",  "(ing|ements?)", and the "s". The "|" means
1471    "or".  We have two of those. For instance, "(ing|ements?)", can expand
1472    to  match  either  "ing"  OR "ements?". What is being done here, is an
1473    attempt  at  matching  as  many  variations  of  "advertisement",  and
1474    similar,  as  possible.  So  this would expand to match just "adv", or
1475    "advert",  or  "adverts",  or  "advertising",  or  "advertisement", or
1476    "advertisements".   You   get   the  idea.  But  it  would  not  match
1477    "advertizements"  (with  a  "z").  We  could  fix that by changing our
1478    regular  expression  to: "/.*/adv((er)?ts?|erti(s|z)(ing|ements?))?/",
1479    which would then match either spelling.
1480
1481    /.*/advert[0-9]+\.(gif|jpe?g)  -  Again  another  path  statement with
1482    forward  slashes. Anything in the square brackets "[]" can be matched.
1483    This  is  using  "0-9" as a shorthand expression to mean any digit one
1484    through  nine.  It  is  the  same as saying "0123456789". So any digit
1485    matches. The "+" means one or more of the preceding expression must be
1486    included.  The  preceding  expression  here  is  what is in the square
1487    brackets  --  in  this  case, any digit one through nine. Then, at the
1488    end,  we  have a grouping: "(gif|jpe?g)". This includes a "|", so this
1489    needs  to  match  the  expression on either side of that bar character
1490    also.  A  simple  "gif"  on  one side, and the other side will in turn
1491    match  either  "jpeg"  or "jpg", since the "?" means the letter "e" is
1492    optional  and can be matched once or not at all. So we are building an
1493    expression  here  to  match image GIF or JPEG type image file. It must
1494    include  the  literal  string "advert", then one or more digits, and a
1495    "."  (which is now a literal, and not a special character, since it is
1496    escaped  with "\"), and lastly either "gif", or "jpeg", or "jpg". Some
1497    possible       matches       would      include:      "//advert1.jpg",
1498    "/nasty/ads/advert1234.gif",   "/banners/from/hell/advert99.jpg".   It
1499    would not match "advert1.gif" (no leading slash), or "/adverts232.jpg"
1500    (the  expression does not include an "s"), or "/advert1.jsp" ("jsp" is
1501    not in the expression anywhere).
1502
1503    s/microsoft(?!.com)/MicroSuck/i  - This is a substitution. "MicroSuck"
1504    will  replace  any occurence of "microsoft". The "i" at the end of the
1505    expression  means  ignore  case. The "(?!.com)" means the match should
1506    fail  if  "microsoft" is followed by ".com". In other words, this acts
1507    like  a  "NOT" modifier. In case this is a hyperlink, we don't want to
1508    break it ;-).
1509
1510    We  are  barely  scratching the surface of regular expressions here so
1511    that  you  can  understand the default Junkbuster configuration files,
1512    and maybe use this knowledge to customize your own installation. There
1513    is much, much more that can be done with regular expressions. Now that
1514    you know enough to get started, you can learn more on your own :/
1515
1516    More    reading    on    Perl    Compatible    Regular    expressions:
1517    [36]http://www.perldoc.com/perl5.6/pod/perlre.html
1518
1519    Done.
1520
1521 References
1522
1523    1. http://ijbswa.sourceforge.net/user-manual/
1524    2. file://localhost/home/hal/junkbuster/current/doc/source/tmp.html#INTRODUCTION
1525    3. file://localhost/home/hal/junkbuster/current/doc/source/tmp.html#INSTALLATION
1526    4. file://localhost/home/hal/junkbuster/current/doc/source/tmp.html#CONFIGURATION
1527    5. file://localhost/home/hal/junkbuster/current/doc/source/tmp.html#QUICKSTART
1528    6. file://localhost/home/hal/junkbuster/current/doc/source/tmp.html#CONTACT
1529    7. file://localhost/home/hal/junkbuster/current/doc/source/tmp.html#COPYRIGHT
1530    8. file://localhost/home/hal/junkbuster/current/doc/source/tmp.html#SEEALSO
1531    9. file://localhost/home/hal/junkbuster/current/doc/source/tmp.html#APPENDIX
1532   10. http://sourceforge.net/projects/ijbswa/
1533   11. http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/ijbswa/current/
1534   12. http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=emxrt.zip&stype=all&sort=type&dir=%2Fpub%2Fos2%2Fdev%2Femx%2Fv0.9d
1535   13. http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&key=gnupack&stype=all&sort=type&dir=%2Fpub%2Fos2%2Fapps
1536   14. http://www.gnu.org/
1537   15. http://ijbswa.sourceforge.net/config/
1538   16. file://localhost/home/hal/junkbuster/current/doc/source/tmp.html#ACTIONSFILE
1539   17. http://ijbswa.sourceforge.net/config/
1540   18. http://i.j.b/show-url-info
1541   19. http://www.perldoc.com/perl5.6/pod/perlre.html
1542   20. file://localhost/home/hal/junkbuster/current/doc/source/tmp.html#REGEX
1543   21. http://ijbswa.sourceforge.net/config/
1544   22. http://sourceforge.net/tracker/?atid=361118&group_id=11118&func=browse
1545   23. http://sourceforge.net/mail/?group_id=11118
1546   24. http://sourceforge.net/tracker/?group_id=11118&atid=111118
1547   25. http://www.gnu.org/copyleft/gpl.html
1548   26. http://www.junkbusters.com/ht/en/ijbfaq.html
1549   27. http://www.waldherr.org/junkbuster/
1550   28. http://sourceforge.net/projects/ijbswa/
1551   29. http://sourceforge.net/projects/ijbswa
1552   30. http://ijbswa.sourceforge.net/
1553   31. http://ijbswa.sourceforge.net/config/
1554   32. http://www.junkbusters.com/ht/en/cookies.html
1555   33. http://www.waldherr.org/junkbuster/
1556   34. http://privacy.net/analyze/
1557   35. http://www.squid-cache.org/
1558   36. http://www.perldoc.com/perl5.6/pod/perlre.html