1 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
2 <!entity % dummy "INCLUDE">
3 <!entity supported SYSTEM "supported.sgml">
4 <!entity newfeatures SYSTEM "newfeatures.sgml">
5 <!entity p-intro SYSTEM "privoxy.sgml">
6 <!entity seealso SYSTEM "seealso.sgml">
7 <!entity buildsource SYSTEM "buildsource.sgml">
8 <!entity contacting SYSTEM "contacting.sgml">
9 <!entity history SYSTEM "history.sgml">
10 <!entity copyright SYSTEM "copyright.sgml">
11 <!entity p-version "2.9.13">
12 <!entity p-status "beta">
13 <!entity % p-not-stable "INCLUDE">
14 <!entity % p-stable "IGNORE">
15 <!entity % p-text "IGNORE"> <!-- define we are not a text only doc -->
16 <!entity % p-doc "INCLUDE"> <!-- and we are a formal doc -->
17 <!entity % p-readme "IGNORE">
18 <!entity % p-supp-userman "IGNORE"> <!-- Omit some from supported.sgml -->
21 File : $Source: /cvsroot/ijbswa/current/doc/source/user-manual.sgml,v $
24 This file belongs into
25 ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/
27 $Id: user-manual.sgml,v 1.72 2002/04/10 04:06:19 hal9 Exp $
29 Written by and Copyright (C) 2001 the SourceForge
30 Privoxy team. http://www.privoxy.org/
32 Based on the Internet Junkbuster originally written
33 by and Copyright (C) 1997 Anonymous Coders and
34 Junkbusters Corporation. http://www.junkbusters.com
37 ========================================================================
38 NOTE: Please read developer-manual/documentation.html before touching
39 anything in this, or other Privoxy documentation. You have been warned!
40 Failure to abide by this rule will result in the revocation of your license
41 to live a peaceful existence!
42 ========================================================================
48 <title>Privoxy User Manual</title>
50 <pubdate>$Id: user-manual.sgml,v 1.72 2002/04/10 04:06:19 hal9 Exp $</pubdate>
55 <orgname>By: Privoxy Developers</orgname>
64 This is here to keep vim syntax file from breaking :/
65 If I knew enough to fix it, I would.
66 PLEASE DO NOT REMOVE! HB: hal@foobox.net
72 The user manual gives users information on how to install, configure and use
73 <application>Privoxy</application>.
77 Include privoxy.sgml boilerplate:
82 You can find the latest version of the user manual at <ulink
83 url="http://www.privoxy.org/user-manual/">http://www.privoxy.org/user-manual/</ulink>.
84 Please see the <ulink url="contact.html">Contact section</ulink> on how to
85 contact the developers.
89 <!-- Feel free to send a note to the developers at <email>ijbswa-developers@lists.sourceforge.net</email>. -->
95 <!-- ~~~~~ New section ~~~~~ -->
96 <sect1 id="intro" label=""><title></title>
97 <!-- dummy section to force TOC on page by itself -->
98 <!-- DO NOT REMOVE! please ;) -->
102 <!-- ~~~~~ New section ~~~~~ -->
104 <sect1 label="1" id="introduction"><title>Introduction</title>
107 This documentation is included with the current &p-status; version of
108 <application>Privoxy</application>, v.&p-version;<![%p-not-stable;[,
109 and is mostly complete at this point. The most up to date reference for the
110 time being is still the comments in the source files and in the individual
111 configuration files. Development of version 3.0 is currently nearing
112 completion, and includes many significant changes and enhancements over
113 earlier versions. The target release date for
114 stable v3.0 is <quote>soon</quote> ;-)]]>.
118 <!-- include only in non-stable versions -->
120 Since this is a &p-status; version, not all new features are well tested. This
121 documentation may be slightly out of sync as a result (especially with
122 CVS sources). And there <emphasis>may be</emphasis> bugs, though hopefully
127 <!-- ~~~~~ New section ~~~~~ -->
129 <title>New Features</title>
131 In addition to <application>Internet Junkbuster's</application> traditional
132 feature of ad and banner blocking and cookie management,
133 <application>Privoxy</application> provides new features<![%p-not-stable;[,
134 some of them currently under development]]>:
137 <!-- Include newfeatures.sgml boilerplate here: -->
139 <!-- end boilerplate -->
145 <!-- ~ End section ~ -->
148 <!-- ~~~~~ New section ~~~~~ -->
149 <sect1 id="installation"><title>Installation</title>
151 <application>Privoxy</application> is available as raw source code (tarball
152 or via CVS), or pre-compiled binaries for various platforms. See the <ulink
153 url="http://sourceforge.net/projects/ijbswa/">Privoxy Project Page</ulink> for
154 the most up to date release information.
155 <application>Privoxy</application> is also available via <ulink
156 url="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/ijbswa/current/">CVS</ulink>.
157 <![%p-not-stable;[This is the recommended approach at this time.]]> But
158 please be aware that CVS is constantly changing, and it may break in
162 <!-- Include supported.sgml boilerplate -->
164 <!-- end boilerplate -->
166 <!-- ~~~~~ New section ~~~~~ -->
167 <sect2 id="installation-source"><title>Source</title>
170 <!-- include buildsource.sgml boilerplate: -->
172 <!-- end boilerplate -->
175 For Redhat and SuSE Linux RPM packages, see below.
179 <!-- ~~~~~ New section ~~~~~ -->
180 <sect3 id="installation-rh"><title>Red Hat</title>
182 To build Redhat RPM packages from source, install source as above. Then:
195 This will create both binary and src RPMs in the usual places. Example:
199 /usr/src/redhat/RPMS/i686/privoxy-&p-version;-1.i686.rpm
202 /usr/src/redhat/SRPMS/privoxy-&p-version;-1.src.rpm
206 To install, of course:
211 rpm -Uvv /usr/src/redhat/RPMS/i686/privoxy-&p-version;-1.i686.rpm
216 This will place the <application>Privoxy</application> configuration
217 files in <filename>/etc/privoxy/</filename>, and log files in
218 <filename>/var/log/privoxy/</filename>. Run
219 <quote><command>chkconfig privoxy on</command></quote> to have
220 <application>Privoxy</application> start automatically during init.
226 <!-- ~~~~~ New section ~~~~~ -->
227 <sect3 id="installation-suse"><title>SuSE</title>
229 To build SuSE RPM packages, install source as above. Then:
242 This will create both binary and src RPMs in the usual places. Example:
246 /usr/src/packages/RPMS/i686/privoxy-&p-version;-1.i686.rpm
249 /usr/src/packages/SRPMS/privoxy-&p-version;-1.src.rpm
253 To install, of course:
258 rpm -Uvv /usr/src/packages/RPMS/i686/privoxy-&p-version;-1.i686.rpm
263 This will place the <application>Privoxy</application> configuration
264 files in <filename>/etc/privoxy/</filename>, and log files in
265 <filename>/var/log/privoxy/</filename>.
271 <!-- ~~~~~ New section ~~~~~ -->
272 <sect3 id="installation-os2"><title>OS/2</title>
279 <application>Privoxy</application> is packaged in a WarpIN self-
280 installing archive. The self-installing program will be named depending
281 on the release version, something like:
282 <filename>privoxyos2_setup_&p-version;.exe</filename>. In order to install it, simply
283 run this executable or double-click on its icon and follow the WarpIN
284 installation panels. A shadow of the <application>Privoxy</application>
285 executable will be placed in your startup folder so it will start
286 automatically whenever OS/2 starts.
290 The directory you choose to install <application>Privoxy</application>
291 into will contain all of the configuration files.
295 If you would like to build binary images on OS/2 yourself, you will need
296 a few Unix-like tools: autoconf, autoheader and sh. These tools will be
297 used to create the required config.h file, which is not part of the
298 source distribution because it differs based on platform. You will also
300 The distribution has been created using IBM VisualAge compilers, but you
301 can use any compiler you like. GCC/EMX has the disadvantage of needing
302 to be single-threaded due to a limitation of EMX's implementation of the
303 <function>select()</function> socket call.
307 In addition to needing the source code distribution as outlined earlier,
308 you will want to extract the <filename>os2seutp</filename> directory from CVS:
310 cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
311 cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co os2setup
313 This will create a directory named os2setup/, which will contain the
314 <filename>Makefile.vac</filename> makefile and <filename>os2build.cmd</filename>
315 which is used to completely create the binary distribution. The sequence
316 of events for building the executable for yourself goes something like this:
323 nmake -f Makefile.vac
325 You will see this sequence laid out in <filename>os2build.cmd</filename>.
331 <!-- ~~~~~ New section ~~~~~ -->
332 <sect3 id="installation-win"><title>Windows</title>
333 <para>Click-click. (I need help on this. Not a clue here. Also for
334 configuration section below. HB.)
338 <!-- ~~~~~ New section ~~~~~ -->
339 <sect3 id="installation-other"><title>Other</title>
341 Some quick notes on other Operating Systems.
345 For FreeBSD (and other *BSDs?), the build will require <command>gmake</command>
346 instead of the included <command>make</command>. <command>gmake</command> is
347 available from <ulink url="http://www.gnu.org">http://www.gnu.org</ulink>.
348 The rest should be the same as above for Linux/Unix.
356 <!-- ~ End section ~ -->
359 <!-- ~~~~~ New section ~~~~~ -->
361 <sect1 id="quickstart"><title>Quickstart to Using <application>Privoxy</application></title>
363 Before launching <application>Privoxy</application> for the first time, you
364 will want to configure your browser(s) to use <application>Privoxy</application>
365 as a HTTP and HTTPS proxy. The default is localhost for the proxy address,
366 and port 8118 (earlier versions used port 800). This is the one required
367 configuration that must be done!
371 With <application>Netscape</application> (and
372 <application>Mozilla</application>), this can be set under <literal>Edit
373 -> Preferences -> Advanced -> Proxies -> HTTP Proxy</literal>.
374 For <application>Internet Explorer</application>: <literal>Tools ->
375 Internet Properties -> Connections -> LAN Setting</literal>. Then,
376 check <quote>Use Proxy</quote> and fill in the appropriate info (Address:
377 localhost, Port: 8118). Include if HTTPS proxy support too.
381 After doing this, flush your browser's disk and memory caches to force a
382 re-reading of all pages and get rid of any ads that may be cached. You
383 are now ready to start enjoying the benefits of using
384 <application>Privoxy</application>.
389 <application>Privoxy</application> is typically started by specifying the
390 main configuration file to be used on the command line. Example Unix startup
397 # /usr/sbin/privoxy /etc/privoxy/config
403 An init script is provided for SuSE and Redhat.
407 For for SuSE: <command>/etc/rc.d/privoxy start</command>
411 For RedHat: <command>/etc/rc.d/init.d/privoxy start</command>
416 If no configuration file is specified on the command line,
417 <application>Privoxy</application> will look for a file named
418 <filename>config</filename> in the current directory. Except on Win32 where
419 it will try <filename>config.txt</filename>. If no file is specified on the
420 command line and no default configuration file can be found,
421 <application>Privoxy</application> will fail to start.
426 The included default configuration files should give a reasonable starting
427 point, though may be somewhat aggressive in blocking junk. Most of the
428 per site configuration is done in the <quote>actions</quote> files. These
429 are where various cookie actions are defined, ad and banner blocking,
430 and other aspects of <application>Privoxy</application> configuration. There
431 are several such files included, with varying levels of aggressiveness.
435 You will probably want to keep an eye out for sites that require persistent
436 cookies, and add these to <filename>default.action</filename> as needed. By
437 default, most of these will be accepted only during the current browser
438 session, until you add them to the configuration. If you want the browser to
439 handle this instead, you will need to edit
440 <filename>default.action</filename> and disable this feature. If you use more
441 than one browser, it would make more sense to let
442 <application>Privoxy</application> handle this. In which case, the browser(s)
443 should be set to accept all cookies.
447 <application>Privoxy</application> is HTTP/1.1 compliant, but not all 1.1
448 features are as yet implemented. If browsers that support HTTP/1.1 (like
449 <application>Mozilla</application> or recent versions of I.E.) experience
450 problems, you might try to force HTTP/1.0 compatibility. For Mozilla, look
451 under <literal>Edit -> Preferences -> Debug -> Networking</literal>.
452 Or set the <quote>+downgrade</quote> config option in
453 <filename>default.action</filename>.
457 After running <application>Privoxy</application> for a while, you can
458 start to fine tune the configuration to suit your personal, or site,
459 preferences and requirements. There are many, many aspects that can
460 be customized. <quote>Actions</quote> (as specified in <filename>default.action</filename>)
461 can be adjusted by pointing your browser to
462 <ulink url="http://p.p/">http://p.p/</ulink>,
463 and then follow the link to <quote>edit the actions list</quote>.
464 (This is an internal page and does not require Internet access.)
468 In fact, various aspects of <application>Privoxy</application>
469 configuration can be viewed from this page, including
470 current configuration parameters, source code version numbers,
471 the browser's request headers, and <quote>actions</quote> that apply
472 to a given URL. In addition to the <filename>default.action</filename> file
473 editor mentioned above, <application>Privoxy</application> can also
474 be turned <quote>on</quote> and <quote>off</quote> from this page.
478 If you encounter problems, please verify it is a
479 <application>Privoxy</application> bug, by disabling
480 <application>Privoxy</application>, and then trying the same page.
481 Also, try another browser if possible to eliminate browser or site
482 problems. Before reporting it as a bug, see if there is not a configuration
483 option that is enabled that is causing the page not to load. You can then add
484 an exception for that page or site. For instance, try adding it to the
485 <literal>{fragile}</literal> section of <filename>default.action</filename>.
486 This will turn off most actions for this site. For more on troubleshooting
487 problem sites, see the <ulink
488 url="appendix.html#ACTIONSANAT">Appendix</ulink>. If a bug, please report it
489 to the developers (see below).
493 <!-- ~~~~~ New section ~~~~~ -->
496 <title>Command Line Options</title>
498 <application>Privoxy</application> may be invoked with the following
499 command-line options:
507 <emphasis>--version</emphasis>
510 Print version info and exit, Unix only.
515 <emphasis>--help</emphasis>
518 Print a short usage info and exit, Unix only.
523 <emphasis>--no-daemon</emphasis>
526 Don't become a daemon, i.e. don't fork and become process group
527 leader, don't detach from controlling tty. Unix only.
532 <emphasis>--pidfile FILE</emphasis>
536 On startup, write the process ID to <emphasis>FILE</emphasis>. Delete the
537 <emphasis>FILE</emphasis> on exit. Failiure to create or delete the
538 <emphasis>FILE</emphasis> is non-fatal. If no <emphasis>FILE</emphasis>
539 option is given, no PID file will be used. Unix only.
544 <emphasis>--user USER[.GROUP]</emphasis>
548 After (optionally) writing the PID file, assume the user ID of
549 <emphasis>USER</emphasis>, and if included the GID of GROUP. Exit if the
550 privileges are not sufficient to do so. Unix only.
555 <emphasis>configfile</emphasis>
558 If no <emphasis>configfile</emphasis> is included on the command line,
559 <application>Privoxy</application> will look for a file named
560 <quote>config</quote> in the current directory (except on Win32
561 where it will look for <quote>config.txt</quote> instead). Specify
562 full path to avoid confusion.
573 <!-- ~ End section ~ -->
576 <!-- ~~~~~ New section ~~~~~ -->
577 <sect1 id="configuration"><title><application>Privoxy</application> Configuration</title>
579 All <application>Privoxy</application> configuration is stored
580 in text files. These files can be edited with a text editor.
581 Many important aspects of <application>Privoxy</application> can
582 also be controlled easily with a web browser.
587 <!-- ~~~~~ New section ~~~~~ -->
590 <title>Controlling <application>Privoxy</application> with Your Web Browser</title>
592 <application>Privoxy</application> can be reached by the special
593 URL <ulink url="http://p.p/">http://p.p/</ulink> (or alternately
594 <ulink url="http://config.privoxy.org/">http://config.privoxy.org/</ulink>),
595 which is an internal page. You will see the following section:
602 Please choose from the following options:
604 * Show information about the current configuration
605 * Show the source code version numbers
606 * Show the client's request headers.
607 * Show which actions apply to a URL and why
608 * Toggle Privoxy on or off
609 * Edit the actions list
615 This should be self-explanatory. Note the last item is an editor for the
616 <quote>actions list</quote>, which is where much of the ad, banner, cookie,
617 and URL blocking magic is configured as well as other advanced features of
618 <application>Privoxy</application>. This is an easy way to adjust various
619 aspects of <application>Privoxy</application> configuration. The actions
620 file, and other configuration files, are explained in detail below.
621 <application>Privoxy</application> will automatically detect any changes
626 <quote>Toggle Privoxy On or Off</quote> is handy for sites that might
627 have problems with your current actions and filters, or just to test if
628 a site misbehaves, whether it is <application>Privoxy</application>
629 causing the problem or not. <application>Privoxy</application> continues
630 to run as a proxy in this case, but all filtering is disabled.
636 <!-- ~ End section ~ -->
641 <!-- ~~~~~ New section ~~~~~ -->
644 <title>Configuration Files Overview</title>
646 For Unix, *BSD and Linux, all configuration files are located in
647 <filename>/etc/privoxy/</filename> by default. For MS Windows, OS/2, and
648 AmigaOS these are all in the same directory as the
649 <application>Privoxy</application> executable. <![%p-not-stable;[ The name
650 and number of configuration files has changed from previous versions, and is
651 subject to change as development progresses.]]>
655 The installed defaults provide a reasonable starting point, though possibly
656 aggressive by some standards. For the time being, there are only three
657 default configuration files (this may change in time):
665 The main configuration file is named <filename>config</filename>
666 on Linux, Unix, BSD, OS/2, and AmigaOS and <filename>config.txt</filename>
673 The <filename>default.action</filename> file is used to define various
674 <quote>actions</quote> relating to images, banners, pop-ups, access
675 restrictions, banners and cookies. There is a CGI based editor for this
676 file that can be accessed via <ulink
677 url="http://p.p">http://p.p</ulink>. (Other actions
678 files are included as well with differing levels of filtering
679 and blocking, e.g. <filename>basic.action</filename>.)
685 The <filename>default.filter</filename> file can be used to re-write the raw
686 page content, including viewable text as well as embedded HTML and JavaScript,
687 and whatever else lurks on any given web page.
695 <filename>default.action</filename> and <filename>default.filter</filename>
696 can use Perl style regular expressions for maximum flexibility. All files use
697 the <quote><literal>#</literal></quote> character to denote a comment. Such
698 lines are not processed by <application>Privoxy</application>. After
699 making any changes, there is no need to restart
700 <application>Privoxy</application> in order for the changes to take
701 effect. <application>Privoxy</application> should detect such changes
707 While under development, the configuration content is subject to change.
708 The below documentation may not be accurate by the time you read this.
709 Also, what constitutes a <quote>default</quote> setting, may change, so
710 please check all your configuration files on important issues.
716 <!-- ~~~~~ New section ~~~~~ -->
719 <title>The Main Configuration File</title>
721 Again, the main configuration file is named <filename>config</filename> on
722 Linux/Unix/BSD and OS/2, and <filename>config.txt</filename> on Windows.
723 Configuration lines consist of an initial keyword followed by a list of
724 values, all separated by whitespace (any number of spaces or tabs). For
732 <emphasis>blockfile blocklist.ini</emphasis>
739 Indicates that the blockfile is named <quote>blocklist.ini</quote>. (A
740 default installation does not use this.)
744 A <quote><literal>#</literal></quote> indicates a comment. Any part of a
745 line following a <quote><literal>#</literal></quote> is ignored, except if
746 the <quote><literal>#</literal></quote> is preceded by a
747 <quote><literal>\</literal></quote>.
751 Thus, by placing a <quote><literal>#</literal></quote> at the start of an
752 existing configuration line, you can make it a comment and it will be treated
753 as if it weren't there. This is called <quote>commenting out</quote> an
754 option and can be useful to turn off features: If you comment out the
755 <quote>logfile</quote> line, <application>Privoxy</application> will not
756 log to a file at all. Watch for the <quote>default:</quote> section in each
757 explanation to see what happens if the option is left unset (or commented
762 Long lines can be continued on the next line by using a
763 <quote><literal>\</literal></quote> as the very last character.
767 There are various aspects of <application>Privoxy</application> behavior
772 <!-- ~~~~~ New section ~~~~~ -->
775 <title>Defining Other Configuration Files</title>
778 <application>Privoxy</application> can use a number of other files to tell it
779 what ads to block, what cookies to accept, and perform other functions. This
780 section of the configuration file tells <application>Privoxy</application>
781 where to find all those other files.
785 On <application>Windows</application> and <application>AmigaOS</application>,
786 <application>Privoxy</application> looks for these files in the same
787 directory as the executable. On Unix and OS/2,
788 <application>Privoxy</application> looks for these files in the current
789 working directory. In either case, an absolute path name can be used to
794 When development goes modular and multi-user, the blocker, filter, and
795 per-user config will be stored in subdirectories of <quote>confdir</quote>.
796 For now, only <filename>confdir/templates</filename> is used for storing HTML
797 templates for CGI results.
801 The location of the configuration files:
808 <emphasis>confdir /etc/privoxy</emphasis> # No trailing /, please.
815 The directory where all logging (i.e. <filename>logfile</filename> and
816 <filename>jarfile</filename>) takes place. No trailing
817 <quote><literal>/</literal></quote>, please:
824 <emphasis>logdir /var/log/privoxy</emphasis>
831 Note that all file specifications below are relative to
832 the above two directories!
836 The <quote>default.action</quote> file contains patterns to specify the
837 actions to apply to requests for each site. Default: Cookies to and from all
838 destinations are kept only during the current browser session (i.e. they are
839 not saved to disk). Pop-ups are disabled for all sites. All sites are
840 filtered through selected sections of <quote>default.filter</quote>. No sites
841 are blocked. <application>Privoxy</application> displays a checkboard type
842 pattern for filtered ads and other images. The syntax of this file is
843 explained in detail <link linkend="actionsfile">below</link>. Other
844 <quote>actions</quote> files are included, and you are free to use any of
845 them. They have varying degrees of aggressiveness.
852 <emphasis>actionsfile default.action</emphasis>
859 The <quote>default.filter</quote> file contains content modification rules
860 that use <quote>regular expressions</quote>. These rules permit powerful
861 changes on the content of Web pages, e.g., you could disable your favorite
862 JavaScript annoyances, re-write the actual displayed text, or just have some
863 fun replacing <quote>Microsoft</quote> with <quote>MicroSuck</quote> wherever
864 it appears on a Web page. Default: whatever the developers are playing with
869 Filtering requires buffering the page content, which may appear to slow down
870 page rendering since nothing is displayed until all content has passed
871 the filters. (It does not really take longer, but seems that way since
872 the page is not incrementally displayed.) This effect will be more noticeable
873 on slower connections.
881 <emphasis>filterfile default.filter</emphasis>
888 The logfile is where all logging and error messages are written. The logfile
889 can be useful for tracking down a problem with
890 <application>Privoxy</application> (e.g., it's not blocking an ad you
891 think it should block) but in most cases you probably will never look at it.
895 Your logfile will grow indefinitely, and you will probably want to
896 periodically remove it. On Unix systems, you can do this with a cron job
897 (see <quote>man cron</quote>). For Redhat, a <command>logrotate</command>
898 script has been included.
902 On SuSE Linux systems, you can place a line like <quote>/var/log/privoxy.*
903 +1024k 644 nobody.nogroup</quote> in <filename>/etc/logfiles</filename>, with
904 the effect that cron.daily will automatically archive, gzip, and empty the
905 log, when it exceeds 1M size.
909 Default: Log to the a file named <filename>logfile</filename>.
910 Comment out to disable logging.
917 <emphasis>logfile logfile</emphasis>
924 The <quote>jarfile</quote> defines where
925 <application>Privoxy</application> stores the cookies it intercepts. Note
926 that if you use a <quote>jarfile</quote>, it may grow quite large. Default:
927 Don't store intercepted cookies.
934 <emphasis>#jarfile jarfile</emphasis>
941 If you specify a <quote>trustfile</quote>,
942 <application>Privoxy</application> will only allow access to sites that
943 are named in the trustfile. You can also mark sites as trusted referrers,
944 with the effect that access to untrusted sites will be granted, if a link
945 from a trusted referrer was used. The link target will then be added to the
946 <quote>trustfile</quote>. This is a very restrictive feature that typical
947 users most probably want to leave disabled. Default: Disabled, don't use the
955 <emphasis>#trustfile trust</emphasis>
962 If you use the trust mechanism, it is a good idea to write up some on-line
963 documentation about your blocking policy and to specify the URL(s) here. They
964 will appear on the page that your users receive when they try to access
965 untrusted content. Use multiple times for multiple URLs. Default: Don't
966 display links on the <quote>untrusted</quote> info page.
973 <emphasis>trust-info-url http://www.example.com/why_we_block.html</emphasis>
974 <emphasis>trust-info-url http://www.example.com/what_we_allow.html</emphasis>
982 <!-- ~ End section ~ -->
986 <!-- ~~~~~ New section ~~~~~ -->
989 <title>Other Configuration Options</title>
992 This part of the configuration file contains options that control how
993 <application>Privoxy</application> operates.
997 <quote>Admin-address</quote> should be set to the email address of the proxy
998 administrator. It is used in many of the proxy-generated pages. Default:
1006 <emphasis>#admin-address fill@me.in.please</emphasis>
1013 <quote>Proxy-info-url</quote> can be set to a URL that contains more info
1014 about this <application>Privoxy</application> installation, it's
1015 configuration and policies. It is used in many of the proxy-generated pages
1016 and its use is highly recommended in multi-user installations, since your
1017 users will want to know why certain content is blocked or modified. Default:
1018 Don't show a link to on-line documentation.
1025 <emphasis>proxy-info-url http://www.example.com/proxy.html</emphasis>
1032 <quote>Listen-address</quote> specifies the address and port where
1033 <application>Privoxy</application> will listen for connections from your
1034 Web browser. The default is to listen on the localhost port 8118, and
1035 this is suitable for most users. (In your web browser, under proxy
1036 configuration, list the proxy server as <quote>localhost</quote> and the
1037 port as <quote>8118</quote>).
1041 If you already have another service running on port 8118, or if you want to
1042 serve requests from other machines (e.g. on your local network) as well, you
1043 will need to override the default. The syntax is
1044 <quote>listen-address [<ip-address>]:<port></quote>. If you leave
1045 out the IP address, <application>Privoxy</application> will bind to all
1046 interfaces (addresses) on your machine and may become reachable from the
1047 Internet. In that case, consider using access control lists (acl's) (see
1048 <quote>aclfile</quote> above), or a firewall.
1052 For example, suppose you are running <application>Privoxy</application> on
1053 a machine which has the address 192.168.0.1 on your local private network
1054 (192.168.0.0) and has another outside connection with a different address.
1055 You want it to serve requests from inside only:
1062 <emphasis>listen-address 192.168.0.1:8118</emphasis>
1069 If you want it to listen on all addresses (including the outside
1077 <emphasis>listen-address :8118</emphasis>
1084 If you do this, consider using ACLs (see <quote>aclfile</quote> above). Note:
1085 you will need to point your browser(s) to the address and port that you have
1086 configured here. Default: localhost:8118 (127.0.0.1:8118).
1090 The debug option sets the level of debugging information to log in the
1091 logfile (and to the console in the Windows version). A debug level of 1 is
1092 informative because it will show you each request as it happens. Higher
1093 levels of debug are probably only of interest to developers.
1100 debug 1 # GPC = show each GET/POST/CONNECT request
1101 debug 2 # CONN = show each connection status
1102 debug 4 # IO = show I/O status
1103 debug 8 # HDR = show header parsing
1104 debug 16 # LOG = log all data into the logfile
1105 debug 32 # FRC = debug force feature
1106 debug 64 # REF = debug regular expression filter
1107 debug 128 # = debug fast redirects
1108 debug 256 # = debug GIF de-animation
1109 debug 512 # CLF = Common Log Format
1110 debug 1024 # = debug kill pop-ups
1111 debug 4096 # INFO = Startup banner and warnings.
1112 debug 8192 # ERROR = Non-fatal errors
1120 It is <emphasis>highly recommended</emphasis> that you enable ERROR
1121 reporting (debug 8192), at least until v3.0 is released.
1126 The reporting of FATAL errors (i.e. ones which crash
1127 <application>Privoxy</application>) is always on and cannot be disabled.
1131 If you want to use CLF (Common Log Format), you should set <quote>debug
1132 512</quote> ONLY, do not enable anything else.
1136 Multiple <quote>debug</quote> directives, are OK - they're logical-OR'd
1144 <emphasis>debug 15 # same as setting the first 4 listed above</emphasis>
1158 <emphasis>debug 1 # URLs</emphasis>
1159 <emphasis>debug 4096 # Info</emphasis>
1160 <emphasis>debug 8192 # Errors - *we highly recommended enabling this*</emphasis>
1167 <application>Privoxy</application> normally uses
1168 <quote>multi-threading</quote>, a software technique that permits it to
1169 handle many different requests simultaneously. In some cases you may wish to
1170 disable this -- particularly if you're trying to debug a problem. The
1171 <quote>single-threaded</quote> option forces
1172 <application>Privoxy</application> to handle requests sequentially.
1173 Default: Multi-threaded mode.
1180 <emphasis>#single-threaded</emphasis>
1187 <quote>toggle</quote> allows you to temporarily disable all
1188 <application>Privoxy's</application> filtering. Just set <quote>toggle
1193 The Windows version of <application>Privoxy</application> puts an icon in
1194 the system tray, which also allows you to change this option. If you
1195 right-click on that icon (or select the <quote>Options</quote> menu), one
1196 choice is <quote>Enable</quote>. Clicking on enable toggles
1197 <application>Privoxy</application> on and off. This is useful if you want
1198 to temporarily disable <application>Privoxy</application>, e.g., to access
1199 a site that requires cookies which you would otherwise have blocked. This can also
1200 be toggled via a web browser at the <application>Privoxy</application>
1201 internal address of <ulink url="http://p.p">http://p.p</ulink> on
1206 <quote>toggle 1</quote> means <application>Privoxy</application> runs
1207 normally, <quote>toggle 0</quote> means that
1208 <application>Privoxy</application> becomes a non-anonymizing non-blocking
1209 proxy. Default: 1 (on).
1216 <emphasis>toggle 1</emphasis>
1223 For content filtering, i.e. the <quote>+filter</quote> and
1224 <quote>+deanimate-gif</quote> actions, it is necessary that
1225 <application>Privoxy</application> buffers the entire document body.
1226 This can be potentially dangerous, since a server could just keep sending
1227 data indefinitely and wait for your RAM to exhaust. With nasty consequences.
1231 The <application>buffer-limit</application> option lets you set the maximum
1232 size in Kbytes that each buffer may use. When the documents buffer exceeds
1233 this size, it is flushed to the client unfiltered and no further attempt to
1234 filter the rest of it is made. Remember that there may multiple threads
1235 running, which might require increasing the <quote>buffer-limit</quote>
1236 Kbytes <emphasis>each</emphasis>, unless you have enabled
1237 <quote>single-threaded</quote> above.
1244 <emphasis>buffer-limit 4069</emphasis>
1251 To enable the web-based <filename>default.action</filename> file editor set
1252 <application>enable-edit-actions</application> to 1, or 0 to disable. Note
1253 that you must have compiled <application>Privoxy</application> with
1254 support for this feature, otherwise this option has no effect. This
1255 internal page can be reached at <ulink
1256 url="http://p.p">http://p.p</ulink>.
1260 Security note: If this is enabled, anyone who can use the proxy
1261 can edit the actions file, and their changes will affect all users.
1262 For shared proxies, you probably want to disable this. Default: enabled.
1269 <emphasis>enable-edit-actions 1</emphasis>
1276 Allow <application>Privoxy</application> to be toggled on and off
1277 remotely, using your web browser. Set <quote>enable-remote-toggle</quote>to
1278 1 to enable, and 0 to disable. Note that you must have compiled
1279 <application>Privoxy</application> with support for this feature,
1280 otherwise this option has no effect.
1284 Security note: If this is enabled, anyone who can use the proxy can toggle
1285 it on or off (see <ulink url="http://p.p">http://p.p</ulink>), and
1286 their changes will affect all users. For shared proxies, you probably want to
1287 disable this. Default: enabled.
1294 <emphasis>enable-remote-toggle 1</emphasis>
1302 <!-- ~ End section ~ -->
1305 <!-- ~~~~~ New section ~~~~~ -->
1308 <title>Access Control List (ACL)</title>
1310 Access controls are included at the request of some ISPs and systems
1311 administrators, and are not usually needed by individual users. Please note
1312 the warnings in the FAQ that this proxy is not intended to be a substitute
1313 for a firewall or to encourage anyone to defer addressing basic security
1318 If no access settings are specified, the proxy talks to anyone that
1319 connects. If any access settings file are specified, then the proxy
1320 talks only to IP addresses permitted somewhere in this file and not
1321 denied later in this file.
1325 Summary -- if using an ACL:
1330 Client must have permission to receive service.
1335 LAST match in ACL wins.
1340 Default behavior is to deny service.
1345 The syntax for an entry in the Access Control List is:
1352 ACTION SRC_ADDR[/SRC_MASKLEN] [ DST_ADDR[/DST_MASKLEN] ]
1359 Where the individual fields are:
1366 <emphasis>ACTION</emphasis> = <quote>permit-access</quote> or <quote>deny-access</quote>
1368 <emphasis>SRC_ADDR</emphasis> = client hostname or dotted IP address
1369 <emphasis>SRC_MASKLEN</emphasis> = number of bits in the subnet mask for the source
1371 <emphasis>DST_ADDR</emphasis> = server or forwarder hostname or dotted IP address
1372 <emphasis>DST_MASKLEN</emphasis> = number of bits in the subnet mask for the target
1380 The field separator (FS) is whitespace (space or tab).
1384 IMPORTANT NOTE: If <application>Privoxy</application> is using a
1385 forwarder (see below) or a gateway for a particular destination URL, the
1386 <literal>DST_ADDR</literal> that is examined is the address of the forwarder
1387 or the gateway and <emphasis>NOT</emphasis> the address of the ultimate
1388 target. This is necessary because it may be impossible for the local
1389 <application>Privoxy</application> to determine the address of the
1390 ultimate target (that's often what gateways are used for).
1394 Here are a few examples to show how the ACL features work:
1398 <quote>localhost</quote> is OK -- no DST_ADDR implies that
1399 <emphasis>ALL</emphasis> destination addresses are OK:
1406 <emphasis>permit-access localhost</emphasis>
1413 A silly example to illustrate permitting any host on the class-C subnet with
1414 <application>Privoxy</application> to go anywhere:
1421 <emphasis>permit-access www.privoxy.com/24</emphasis>
1428 Except deny one particular IP address from using it at all:
1435 <emphasis>deny-access ident.privoxy.com</emphasis>
1442 You can also specify an explicit network address and subnet mask.
1443 Explicit addresses do not have to be resolved to be used.
1450 <emphasis>permit-access 207.153.200.0/24</emphasis>
1457 A subnet mask of 0 matches anything, so the next line permits everyone.
1464 <emphasis>permit-access 0.0.0.0/0</emphasis>
1471 Note, you <emphasis>cannot</emphasis> say:
1478 <emphasis>permit-access .org</emphasis>
1485 to allow all *.org domains. Every IP address listed must resolve fully.
1489 An ISP may want to provide a <application>Privoxy</application> that is
1490 accessible by <quote>the world</quote> and yet restrict use of some of their
1491 private content to hosts on its internal network (i.e. its own subscribers).
1492 Say, for instance the ISP owns the Class-B IP address block 123.124.0.0 (a 16
1493 bit netmask). This is how they could do it:
1500 <emphasis>permit-access 0.0.0.0/0 0.0.0.0/0</emphasis> # other clients can go anywhere
1501 # with the following exceptions:
1503 <emphasis>deny-access</emphasis> 0.0.0.0/0 123.124.0.0/16 # block all external requests for
1504 # sites on the ISP's network
1506 <emphasis>permit 0.0.0.0/0 www.my_isp.com</emphasis> # except for the ISP's main
1509 <emphasis>permit 123.124.0.0/16 0.0.0.0/0</emphasis> # the ISP's clients can go
1517 Note that if some hostnames are listed with multiple IP addresses,
1518 the primary value returned by DNS (via gethostbyname()) is used. Default:
1519 Anyone can access the proxy.
1524 <!-- ~ End section ~ -->
1527 <!-- ~~~~~ New section ~~~~~ -->
1529 <sect3 id="forwarding">
1530 <title>Forwarding</title>
1533 This feature allows chaining of HTTP requests via multiple proxies.
1534 It can be used to better protect privacy and confidentiality when
1535 accessing specific domains by routing requests to those domains
1536 to a special purpose filtering proxy such as lpwa.com. Or to use
1537 a caching proxy to speed up browsing.
1541 It can also be used in an environment with multiple networks to route
1542 requests via multiple gateways allowing transparent access to multiple
1543 networks without having to modify browser configurations.
1547 Also specified here are SOCKS proxies. <application>Privoxy</application>
1548 SOCKS 4 and SOCKS 4A. The difference is that SOCKS 4A will resolve the target
1549 hostname using DNS on the SOCKS server, not our local DNS client.
1553 The syntax of each line is:
1560 <emphasis>forward target_domain[:port] http_proxy_host[:port]</emphasis>
1561 <emphasis>forward-socks4 target_domain[:port] socks_proxy_host[:port] http_proxy_host[:port]</emphasis>
1562 <emphasis>forward-socks4a target_domain[:port] socks_proxy_host[:port] http_proxy_host[:port]</emphasis>
1569 If http_proxy_host is <quote>.</quote>, then requests are not forwarded to a
1570 HTTP proxy but are made directly to the web servers.
1574 Lines are checked in sequence, and the last match wins.
1578 There is an implicit line equivalent to the following, which specifies that
1579 anything not finding a match on the list is to go out without forwarding
1580 or gateway protocol, like so:
1587 <emphasis>forward .* . </emphasis># implicit
1594 In the following common configuration, everything goes to Lucent's LPWA,
1595 except SSL on port 443 (which it doesn't handle):
1602 <emphasis>forward .* lpwa.com:8000</emphasis>
1603 <emphasis>forward :443 .</emphasis>
1611 See the FAQ for instructions on how to automate the login procedure for LPWA.
1613 Some users have reported difficulties related to LPWA's use of
1614 <quote>.</quote> as the last element of the domain, and have said that this
1615 can be fixed with this:
1622 <emphasis>forward lpwa. lpwa.com:8000</emphasis>
1629 (NOTE: the syntax for specifying target_domain has changed since the
1630 previous paragraph was written -- it will not work now. More information
1635 In this fictitious example, everything goes via an ISP's caching proxy,
1636 except requests to that ISP:
1643 <emphasis>forward .* caching.myisp.net:8000</emphasis>
1644 <emphasis>forward myisp.net .</emphasis>
1651 For the @home network, we're told the forwarding configuration is this:
1659 <emphasis>forward .* proxy:8080</emphasis>
1666 Also, we're told they insist on getting cookies and JavaScript, so you should
1667 allow cookies from home.com. We consider JavaScript a potential security risk.
1668 Java need not be enabled.
1672 In this example direct connections are made to all <quote>internal</quote>
1673 domains, but everything else goes through Lucent's LPWA by way of the
1674 company's SOCKS gateway to the Internet.
1681 <emphasis>forward-socks4 .* lpwa.com:8000 firewall.my_company.com:1080</emphasis>
1682 <emphasis>forward my_company.com .</emphasis>
1689 This is how you could set up a site that always uses SOCKS but no forwarders:
1696 <emphasis>forward-socks4a .* . firewall.my_company.com:1080</emphasis>
1703 An advanced example for network administrators:
1707 If you have links to multiple ISPs that provide various special content to
1708 their subscribers, you can configure forwarding to pass requests to the
1709 specific host that's connected to that ISP so that everybody can see all
1710 of the content on all of the ISPs.
1714 This is a bit tricky, but here's an example:
1719 host-a has a PPP connection to isp-a.com. And host-b has a PPP connection to
1720 isp-b.com. host-a can run a <application>Privoxy</application> proxy with
1721 forwarding like this:
1728 <emphasis>forward .* .</emphasis>
1729 <emphasis>forward isp-b.com host-b:8118</emphasis>
1736 host-b can run a <application>Privoxy</application> proxy with forwarding
1744 <emphasis>forward .* .</emphasis>
1745 <emphasis>forward isp-a.com host-a:8118</emphasis>
1752 Now, <emphasis>anyone</emphasis> on the Internet (including users on host-a
1753 and host-b) can set their browser's proxy to <emphasis>either</emphasis>
1754 host-a or host-b and be able to browse the content on isp-a or isp-b.
1758 Here's another practical example, for University of Kent at
1759 Canterbury students with a network connection in their room, who
1760 need to use the University's Squid web cache.
1767 <emphasis>forward *. ssbcache.ukc.ac.uk:3128</emphasis> # Use the proxy, except for:
1768 <emphasis>forward .ukc.ac.uk . </emphasis> # Anything on the same domain as us
1769 <emphasis>forward * . </emphasis> # Host with no domain specified
1770 <emphasis>forward 129.12.*.* . </emphasis> # A dotted IP on our /16 network.
1771 <emphasis>forward 127.*.*.* . </emphasis> # Loopback address
1772 <emphasis>forward localhost.localdomain . </emphasis> # Loopback address
1773 <emphasis>forward www.ukc.mirror.ac.uk . </emphasis> # Specific host
1780 If you intend to chain <application>Privoxy</application> and
1781 <application>squid</application> locally, then chain as
1782 <literal>browser -> squid -> privoxy</literal> is the recommended way.
1786 Your squid configuration could then look like this (assuming that the IP
1787 address of the box is <literal>192.168.0.1</literal> ):
1794 # Define Privoxy as parent cache
1795 <!-- per feedback from user...
1796 cache_peer 127.0.0.1 8118 parent 0 no-query
1798 cache_peer 192.168.0.1 parent 8118 0 no-query
1800 # don't listen to the whole world
1801 http_port 192.168.0.1:3128
1803 # define the local lan
1804 acl mylocallan src 192.168.0.1-192.168.0.5/255.255.255.255
1806 # grant access for http to local lan
1807 http_access allow mylocallan
1809 # Define ACL for protocol FTP
1812 # Do not forward ACL FTP to privoxy
1813 always_direct allow FTP
1815 # Do not forward ACL CONNECT (https) to privoxy
1816 always_direct allow CONNECT
1818 # Forward the rest to privoxy
1819 never_direct allow all
1827 <!-- ~ End section ~ -->
1830 <!-- ~~~~~ New section ~~~~~ -->
1833 <title>Windows GUI Options</title>
1835 Removed references to Win32. HB 09/23/01
1838 <application>Privoxy</application> has a number of options specific to the
1839 Windows GUI interface:
1843 If <quote>activity-animation</quote> is set to 1, the
1844 <application>Privoxy</application> icon will animate when
1845 <quote>Privoxy</quote> is active. To turn off, set to 0.
1852 <emphasis>activity-animation 1</emphasis>
1859 If <quote>log-messages</quote> is set to 1,
1860 <application>Privoxy</application> will log messages to the console
1868 <emphasis>log-messages 1</emphasis>
1875 If <quote>log-buffer-size</quote> is set to 1, the size of the log buffer,
1876 i.e. the amount of memory used for the log messages displayed in the
1877 console window, will be limited to <quote>log-max-lines</quote> (see below).
1881 Warning: Setting this to 0 will result in the buffer to grow infinitely and
1882 eat up all your memory!
1889 <emphasis>log-buffer-size 1</emphasis>
1896 <application>log-max-lines</application> is the maximum number of lines held
1897 in the log buffer. See above.
1904 <emphasis>log-max-lines 200</emphasis>
1911 If <quote>log-highlight-messages</quote> is set to 1,
1912 <application>Privoxy</application> will highlight portions of the log
1913 messages with a bold-faced font:
1920 <emphasis>log-highlight-messages 1</emphasis>
1927 The font used in the console window:
1934 <emphasis>log-font-name Comic Sans MS</emphasis>
1941 Font size used in the console window:
1948 <emphasis>log-font-size 8</emphasis>
1955 <quote>show-on-task-bar</quote> controls whether or not
1956 <application>Privoxy</application> will appear as a button on the Task bar
1964 <emphasis>show-on-task-bar 0</emphasis>
1971 If <quote>close-button-minimizes</quote> is set to 1, the Windows close
1972 button will minimize <application>Privoxy</application> instead of closing
1973 the program (close with the exit option on the File menu).
1980 <emphasis>close-button-minimizes 1</emphasis>
1987 The <quote>hide-console</quote> option is specific to the MS-Win console
1988 version of <application>Privoxy</application>. If this option is used,
1989 <application>Privoxy</application> will disconnect from and hide the
2006 <!-- ~ End section ~ -->
2009 <!-- ~~~~~ New section ~~~~~ -->
2010 <sect2 id="actionsfile">
2011 <title>The Actions File</title>
2014 The <quote>default.action</quote> file (formerly
2015 <filename>actionsfile</filename> or <filename>ijb.action</filename>) is used
2016 to define what actions <application>Privoxy</application> takes, and thus
2017 determines how ad images, cookies and various other aspects of HTTP content
2018 and transactions are handled. These can be accepted or rejected for all
2019 sites, or just those sites you choose. See below for a complete list of
2023 Anything you want can blocked, including ads, banners, or just some obnoxious
2024 URL that you would rather not see. Cookies can be accepted or rejected, or
2025 accepted only during the current browser session (i.e. not written to disk).
2026 Changes to <filename>default.action</filename> should be immediately visible
2027 to <application>Privoxy</application> without the need to restart.
2031 Note that some sites may misbehave, or possibly not work at all with some
2032 actions. This may require some tinkering with the rules to get the most
2033 mileage of <application>Privoxy's</application> features, and still be
2034 able to see and enjoy just what you want to. There is no general rule of
2035 thumb on these things. There just are too many variables, and sites are
2041 The easiest way to edit the <quote>actions</quote> file is with a browser by
2042 loading <ulink url="http://p.p/">http://p.p/</ulink>, and then select
2043 <quote>Edit Actions List</quote>. A text editor can also be used.
2047 To determine which actions apply to a request, the URL of the request is
2048 compared to all patterns in this file. Every time it matches, the list of
2049 applicable actions for the URL is incrementally updated. You can trace
2050 this process by visiting <ulink
2051 url="http://p.p/show-url-info">http://p.p/show-url-info</ulink>.
2056 There are four types of lines in this file: comments (begin with a
2057 <quote>#</quote> character), actions, aliases and patterns, all of which are
2058 explained below, as well as the configuration file syntax that
2059 <application>Privoxy</application> understands.
2064 <!-- ~~~~~ New section ~~~~~ -->
2066 <title>URL Domain and Path Syntax</title>
2068 Generally, a pattern has the form <domain>/<path>, where both the
2069 <domain> and <path> part are optional. If you only specify a
2070 domain part, the <quote>/</quote> can be left out:
2074 <emphasis>www.example.com</emphasis> - is a domain only pattern and will match any request to
2075 <quote>www.example.com</quote>.
2079 <emphasis>www.example.com/</emphasis> - means exactly the same.
2083 <emphasis>www.example.com/index.html</emphasis> - matches only the single
2084 document <quote>/index.html</quote> on <quote>www.example.com</quote>.
2088 <emphasis>/index.html</emphasis> - matches the document <quote>/index.html</quote>,
2089 regardless of the domain. So would match any page named <quote>index.html</quote>
2094 <emphasis>index.html</emphasis> - matches nothing, since it would be
2095 interpreted as a domain name and there is no top-level domain called
2096 <quote>.html</quote>.
2100 The matching of the domain part offers some flexible options: if the
2101 domain starts or ends with a dot, it becomes unanchored at that end.
2106 <emphasis>.example.com</emphasis> - matches any domain or sub-domain that
2107 <emphasis>ENDS</emphasis> in <quote>.example.com</quote>.
2111 <emphasis>www.</emphasis> - matches any domain that <emphasis>STARTS</emphasis> with
2116 Additionally, there are wild-cards that you can use in the domain names
2117 themselves. They work pretty similar to shell wild-cards: <quote>*</quote>
2118 stands for zero or more arbitrary characters, <quote>?</quote> stands for
2119 any single character. And you can define character classes in square
2120 brackets and they can be freely mixed:
2124 <emphasis>ad*.example.com</emphasis> - matches <quote>adserver.example.com</quote>,
2125 <quote>ads.example.com</quote>, etc but not <quote>sfads.example.com</quote>.
2129 <emphasis>*ad*.example.com</emphasis> - matches all of the above, and then some.
2133 <emphasis>.?pix.com</emphasis> - matches <quote>www.ipix.com</quote>,
2134 <quote>pictures.epix.com</quote>, <quote>a.b.c.d.e.upix.com</quote>, etc.
2138 <emphasis>www[1-9a-ez].example.com</emphasis> - matches <quote>www1.example.com</quote>,
2139 <quote>www4.example.com</quote>, <quote>wwwd.example.com</quote>,
2140 <quote>wwwz.example.com</quote>, etc., but <emphasis>not</emphasis>
2141 <quote>wwww.example.com</quote>.
2145 If <application>Privoxy</application> was compiled with
2146 <quote>pcre</quote> support (the default), Perl compatible regular expressions
2147 can be used. These are more flexible and powerful than other types
2148 of <quote>regular expressions</quote>. See the <filename>pcre/docs/</filename> directory or <quote>man
2149 perlre</quote> (also available on <ulink
2150 url="http://www.perldoc.com/perl5.6/pod/perlre.html">http://www.perldoc.com/perl5.6/pod/perlre.html</ulink>)
2151 for details. A brief discussion of regular expressions is in the
2152 <link linkend="regex">Appendix</link>. For instance:
2156 <emphasis>/.*/advert[0-9]+\.jpe?g</emphasis> - would match a URL from any
2157 domain, with any path that includes <quote>advert</quote> followed
2158 immediately by one or more digits, then a <quote>.</quote> and ending in
2159 either <quote>jpeg</quote> or <quote>jpg</quote>. So we match
2160 <quote>example.com/ads/advert2.jpg</quote>, and
2161 <quote>www.example.com/ads/banners/advert39.jpeg</quote>, but not
2162 <quote>www.example.com/ads/banners/advert39.gif</quote> (no gifs in the
2167 Please note that matching in the path is case
2168 <emphasis>INSENSITIVE</emphasis> by default, but you can switch to case
2169 sensitive at any point in the pattern by using the
2170 <quote>(?-i)</quote> switch:
2174 <emphasis>www.example.com/(?-i)PaTtErN.*</emphasis> - will match only
2175 documents whose path starts with <quote>PaTtErN</quote> in
2176 <emphasis>exactly</emphasis> this capitalization.
2181 <!-- ~ End section ~ -->
2185 <!-- ~~~~~ New section ~~~~~ -->
2188 <title>Actions</title>
2190 Actions are enabled if preceded with a <quote>+</quote>, and disabled if
2191 preceded with a <quote>-</quote>. Actions are invoked by enclosing the
2192 action name in curly braces (e.g. {+some_action}), followed by a list of
2193 URLs to which the action applies. There are three classes of actions:
2201 Boolean (e.g. <quote>+/-block</quote>):
2207 <emphasis>{+name}</emphasis> # enable this action
2208 <emphasis>{-name}</emphasis> # disable this action
2218 parameterized (e.g. <quote>+/-hide-user-agent</quote>):
2224 <emphasis>{+name{param}}</emphasis> # enable action and set parameter to <quote>param</quote>
2225 <emphasis>{-name}</emphasis> # disable action
2234 Multi-value (e.g. <quote>{+/-add-header{Name: value}}</quote>, <quote>{+/-wafer{name=value}}</quote>):
2240 <emphasis>{+name{param}}</emphasis> # enable action and add parameter <quote>param</quote>
2241 <emphasis>{-name{param}}</emphasis> # remove the parameter <quote>param</quote>
2242 <emphasis>{-name}</emphasis> # disable this action totally
2253 If nothing is specified in this file, no <quote>actions</quote> are taken.
2254 So in this case <application>Privoxy</application> would just be a
2255 normal, non-blocking, non-anonymizing proxy. You must specifically
2256 enable the privacy and blocking features you need (although the
2257 provided default <filename>default.action</filename> file will
2258 give a good starting point).
2262 Later defined actions always over-ride earlier ones. So exceptions
2263 to any rules you make, should come in the latter part of the file. For
2264 multi-valued actions, the actions are applied in the order they are
2269 The list of valid <application>Privoxy</application> <quote>actions</quote> are:
2277 Add the specified HTTP header, which is not checked for validity.
2278 You may specify this many times to specify many different headers:
2284 <emphasis>+add-header{Name: value}</emphasis>
2294 Block this URL totally. In a default installation, a <quote>blocked</quote>
2295 URL will result in bright red banner that says <quote>BLOCKED</quote>,
2296 with a reason why it is being blocked, and an option to see it anyway.
2297 The page displayed for this is the <quote>blocked</quote> template
2304 <emphasis>+block</emphasis>
2314 De-animate all animated GIF images, i.e. reduce them to their last frame.
2315 This will also shrink the images considerably (in bytes, not pixels!). If
2316 the option <quote>first</quote> is given, the first frame of the animation
2317 is used as the replacement. If <quote>last</quote> is given, the last frame
2318 of the animation is used instead, which probably makes more sense for most
2319 banner animations, but also has the risk of not showing the entire last
2320 frame (if it is only a delta to an earlier frame).
2326 <emphasis>+deanimate-gifs{last}</emphasis>
2327 <emphasis>+deanimate-gifs{first}</emphasis>
2336 <quote>+downgrade</quote> will downgrade HTTP/1.1 client requests to
2337 HTTP/1.0 and downgrade the responses as well. Use this action for servers
2338 that use HTTP/1.1 protocol features that
2339 <application>Privoxy</application> doesn't handle well yet. HTTP/1.1
2340 is only partially implemented. Default is not to downgrade requests.
2346 <emphasis>+downgrade</emphasis>
2355 Many sites, like yahoo.com, don't just link to other sites. Instead, they
2356 will link to some script on their own server, giving the destination as a
2357 parameter, which will then redirect you to the final target. URLs resulting
2358 from this scheme typically look like:
2359 <emphasis>http://some.place/some_script?http://some.where-else</emphasis>.
2362 Sometimes, there are even multiple consecutive redirects encoded in the
2363 URL. These redirections via scripts make your web browsing more traceable,
2364 since the server from which you follow such a link can see where you go to.
2365 Apart from that, valuable bandwidth and time is wasted, while your browser
2366 ask the server for one redirect after the other. Plus, it feeds the
2370 The <quote>+fast-redirects</quote> option enables interception of these
2371 types of requests by <application>Privoxy</application>, who will cut off
2372 all but the last valid URL in the request and send a local redirect back to
2373 your browser without contacting the intermediate site(s).
2379 <emphasis>+fast-redirects</emphasis>
2388 Apply the filters in the <literal>section_header</literal>
2389 section of the <filename>default.filter</filename> file to the site(s).
2390 <filename>default.filter</filename> sections are grouped according to like
2391 functionality. <application>Filters</application> can be used to
2392 re-write any of the raw page content. This is a potentially a
2393 very powerful feature!
2400 <emphasis>+filter{section_header}</emphasis>
2407 Filter sections that are pre-defined in the supplied
2408 <filename>default.filter</filename> include:
2414 <emphasis>html-annoyances</emphasis>: Get rid of particularly annoying HTML abuse.
2419 <emphasis>js-annoyances</emphasis>: Get rid of particularly annoying JavaScript abuse
2424 <emphasis>no-poups</emphasis>: Kill all popups in JS and HTML
2429 <emphasis>frameset-borders</emphasis>: Give frames a border
2434 <emphasis>webbugs</emphasis>: Squish WebBugs (1x1 invisible GIFs used for user tracking)
2439 <emphasis>no-refresh</emphasis>: Automatic refresh sucks on auto-dialup lines
2444 <emphasis>fun</emphasis>: Text replacements for subversive browsing fun!
2449 <emphasis>nimda</emphasis>: Remove (virus) Nimda code.
2454 <emphasis>banners-by-size</emphasis>: Kill banners by size
2459 <emphasis>crude-parental</emphasis>: Kill all web pages that contain the words "sex" or "warez"
2468 Block any existing X-Forwarded-for header, and do not add a new one:
2474 <emphasis>+hide-forwarded</emphasis>
2483 If the browser sends a <quote>From:</quote> header containing your e-mail
2484 address, this either completely removes the header (<quote>block</quote>), or
2485 changes it to the specified e-mail address.
2491 <emphasis>+hide-from{block}</emphasis>
2492 <emphasis>+hide-from{spam@sittingduck.xqq}</emphasis>
2501 Don't send the <quote>Referer:</quote> (sic) header to the web site. You
2502 can block it, forge a URL to the same server as the request (which is
2503 preferred because some sites will not send images otherwise) or set it to a
2504 constant, user defined string of your choice.
2510 <emphasis>+hide-referer{block}</emphasis>
2511 <emphasis>+hide-referer{forge}</emphasis>
2512 <emphasis>+hide-referer{http://nowhere.com}</emphasis>
2521 Alternative spelling of <quote>+hide-referer</quote>. It has the same
2522 parameters, and can be freely mixed with, <quote>+hide-referer</quote>.
2523 (<quote>referrer</quote> is the correct English spelling, however the HTTP
2524 specification has a bug - it requires it to be spelled <quote>referer</quote>.)
2530 <emphasis>+hide-referrer{...}</emphasis>
2539 Change the <quote>User-Agent:</quote> header so web servers can't tell your
2540 browser type. Warning! This breaks many web sites. Specify the
2541 user-agent value you want. Example, pretend to be using Netscape on
2548 <emphasis>+hide-user-agent{Mozilla (X11; I; Linux 2.0.32 i586)}</emphasis>
2555 Or to identify yourself explicitly as a <application>Privoxy</application> user:
2561 <emphasis>+hide-user-agent{Privoxy/1.0}</emphasis>
2566 (Don't change the version number from 1.0 - after all, why tell them?)
2573 <emphasis>+hide-user-agent{browser-type}</emphasis>
2583 Treat this URL as an image. This only matters if it's also <quote>+block</quote>ed,
2584 in which case a <quote>blocked</quote> image can be sent rather than a HTML page.
2585 See <quote>+image-blocker{}</quote> below for the control over what is actually sent.
2586 If you want <emphasis>invisible</emphasis> ads, they should be defined as
2587 <emphasis>images</emphasis> and <emphasis>blocked</emphasis>. And also,
2588 <quote>image-blocker</quote> should be set to <quote>blank</quote>. Note you
2589 cannot treat HTML pages as images in most cases. For instance, frames
2590 require an HTML page to display. So a frame that is an ad, cannot be
2591 treated as an image. Forcing an <quote>image</quote> in this
2592 situation just will not work.
2598 <emphasis>+image</emphasis>
2606 <para> Decides what to do with URLs that end up tagged with <quote>{+block
2607 +image}</quote>, e.g an advertizement. There are five options.
2608 <quote>-image-blocker</quote> will send a HTML <quote>blocked</quote> page,
2609 usually resulting in a <quote>broken image</quote> icon.
2610 <!-- <quote>+image-blocker{logo}</quote> will send a -->
2611 <!-- <application>Privoxy</application> logo -->
2613 <quote>+image-blocker{blank}</quote> will send a 1x1 transparent GIF
2614 image. And finally, <quote>+image-blocker{http://xyz.com}</quote> will send a
2615 HTTP temporary redirect to the specified image. This has the advantage of the
2616 icon being being cached by the browser, which will speed up the display.
2617 <quote>+image-blocker{pattern}</quote> will send a checkboard type pattern
2619 <!-- which scales better than the logo (which can get blocky if the browser -->
2620 <!-- enlarges it too much). -->
2626 <!-- <emphasis>+image-blocker{logo}</emphasis> -->
2627 <emphasis>+image-blocker{blank}</emphasis>
2628 <emphasis>+image-blocker{pattern}</emphasis>
2629 <emphasis>+image-blocker{http://p.p/send-banner}</emphasis>
2638 By default (i.e. in the absence of a <quote>+limit-connect</quote>
2639 action), <application>Privoxy</application> will only allow CONNECT
2640 requests to port 443, which is the standard port for https as a
2645 The CONNECT methods exists in HTTP to allow access to secure websites
2646 (https:// URLs) through proxies. It works very simply: the proxy
2647 connects to the server on the specified port, and then short-circuits
2648 its connections to the client <emphasis>and</emphasis> to the remote proxy.
2649 This can be a big security hole, since CONNECT-enabled proxies can
2650 be abused as TCP relays very easily.
2654 If you want to allow CONNECT for more ports than this, or want to forbid
2655 CONNECT altogether, you can specify a comma separated list of ports and
2656 port ranges (the latter using dashes, with the minimum defaulting to 0 and
2664 <emphasis>+limit-connect{443} # This is the default and need no be specified.</emphasis>
2665 <emphasis>+limit-connect{80,443} # Ports 80 and 443 are OK.</emphasis>
2666 <emphasis>+limit-connect{-3, 7, 20-100, 500-} # Port less than 3, 7, 20 to 100</emphasis>
2667 <emphasis> #and above 500 are OK.</emphasis>
2677 <quote>+no-compression</quote> prevents the website from compressing the
2678 data. Some websites do this, which can be a problem for
2679 <application>Privoxy</application>, since <quote>+filter</quote>,
2680 <quote>+no-popup</quote> and <quote>+gif-deanimate</quote> will not work on
2681 compressed data. This will slow down connections to those websites,
2682 though. Default is <quote>no-compression</quote> is turned on.
2689 <emphasis>+nocompression</emphasis>
2698 If the website sets cookies, <quote>no-cookies-keep</quote> will make sure
2699 they are erased when you exit and restart your web browser. This makes
2700 profiling cookies useless, but won't break sites which require cookies so
2701 that you can log in for transactions. Default: on.
2707 <emphasis>+no-cookies-keep</emphasis>
2716 Prevent the website from reading cookies:
2722 <emphasis>+no-cookies-read</emphasis>
2731 Prevent the website from setting cookies:
2737 <emphasis>+no-cookies-set</emphasis>
2746 Filter the website through a built-in filter to disable those obnoxious
2747 JavaScript pop-up windows via window.open(), etc. The two alternative
2748 spellings are equivalent.
2754 <emphasis>+no-popup</emphasis>
2755 <emphasis>+no-popups</emphasis>
2764 This action only applies if you are using a <filename>jarfile</filename>
2765 for saving cookies. It sends a cookie to every site stating that you do not
2766 accept any copyright on cookies sent to you, and asking them not to track
2767 you. Of course, this is a (relatively) unique header they could use to
2774 <emphasis>+vanilla-wafer</emphasis>
2783 This allows you to add an arbitrary cookie. It can be specified multiple
2784 times in order to add as many cookies as you like.
2790 <emphasis>+wafer{name=value}</emphasis>
2801 The meaning of any of the above is reversed by preceding the action with a
2802 <quote>-</quote>, in place of the <quote>+</quote>.
2810 Turn off cookies by default, then allow a few through for specified sites:
2817 # Turn off all persistent cookies
2818 { +no-cookies-read }
2820 # Allow cookies for this browser session ONLY
2821 { +no-cookies-keep }
2823 # Exceptions to the above, sites that benefit from persistent cookies
2824 { -no-cookies-read }
2826 { -no-cookies-keep }
2833 # Alternative way of saying the same thing
2834 {-no-cookies-set -no-cookies-read -no-cookies-keep}
2843 Now turn off <quote>fast redirects</quote>, and then we allow two exceptions:
2853 # Reverse it for these two sites, which don't work right without it.
2855 www.ukc.ac.uk/cgi-bin/wac\.cgi\?
2863 Turn on page filtering according to rules in the defined sections
2864 of <filename>refilterfile</filename>, and make one exception for
2872 # Run everything through the filter file, using only the
2873 # specified sections:
2874 +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups}\
2875 +filter{webbugs} +filter{nimda} +filter{banners-by-size}
2877 # Then disable filtering of code from sourceforge!
2879 .cvs.sourceforge.net
2886 Now some URLs that we want <quote>blocked</quote> (normally generates
2887 the <quote>blocked</quote> banner). Many of these use regular expressions
2888 that will expand to match multiple URLs:
2897 /.*/(.*[-_.])?ads?[0-9]?(/|[-_.].*|\.(gif|jpe?g))
2898 /.*/(.*[-_.])?count(er)?(\.cgi|\.dll|\.exe|[?/])
2899 /.*/(ng)?adclient\.cgi
2900 /.*/(plain|live|rotate)[-_.]?ads?/
2901 /.*/(sponsor)s?[0-9]?/
2902 /.*/_?(plain|live)?ads?(-banners)?/
2904 /.*/ad(sdna_image|gifs?)/
2905 /.*/ad(server|stream|juggler)\.(cgi|pl|dll|exe)
2909 /.*/adv((er)?ts?|ertis(ing|ements?))?/
2913 /.*/cgi-bin/centralad/getimage
2914 /.*/images/addver\.gif
2915 /.*/images/marketing/.*\.(gif|jpe?g)
2919 /.*/sponsors?[0-9]?/
2920 /.*/advert[0-9]+\.jpg
2927 /graphics/defaultAd/
2929 /image\.ng/transactionID
2930 /images/.*/.*_anim\.gif # alvin brattli
2931 /ip_img/.*\.(gif|jpe?g)
2935 /cgi-bin/nph-adclick.exe/
2936 /.*/Image/BannerAdvertising/
2938 /.*/adlib/server\.cgi
2946 Note that many of these actions have the potential to cause a page to
2947 misbehave, possibly even not to display at all. There are many ways
2948 a site designer may choose to design his site, and what HTTP header
2949 content he may depend on. There is no way to have hard and fast rules
2950 for all sites. See the <link linkend="ACTIONSANAT">Appendix</link>
2951 for a brief example on troubleshooting actions.
2956 <!-- ~ End section ~ -->
2959 <!-- ~~~~~ New section ~~~~~ -->
2961 <title>Aliases</title>
2963 Custom <quote>actions</quote>, known to <application>Privoxy</application>
2964 as <quote>aliases</quote>, can be defined by combining other <quote>actions</quote>.
2965 These can in turn be invoked just like the built-in <quote>actions</quote>.
2966 Currently, an alias can contain any character except space, tab, <quote>=</quote>,
2967 <quote>{</quote> or <quote>}</quote>. But please use only <quote>a</quote>-
2968 <quote>z</quote>, <quote>0</quote>-<quote>9</quote>, <quote>+</quote>, and
2969 <quote>-</quote>. Alias names are not case sensitive, and
2970 <emphasis>must be defined before anything</emphasis> else in the
2971 <filename>default.action</filename>file! And there can only be one set of
2972 <quote>aliases</quote> defined.
2976 Now let's define a few aliases:
2983 # Useful custom aliases we can use later. These must come first!
2985 +no-cookies = +no-cookies-set +no-cookies-read
2986 -no-cookies = -no-cookies-set -no-cookies-read
2987 fragile = -block -no-cookies -filter -fast-redirects -hide-referer -no-popups
2988 shop = -no-cookies -filter -fast-redirects
2989 +imageblock = +block +image
2991 #For people who don't like to type too much: ;-)
2994 c2 = -no-cookies-set +no-cookies-read
2995 c3 = +no-cookies-set -no-cookies-read
2996 #... etc. Customize to your heart's content.
3003 Some examples using our <quote>shop</quote> and <quote>fragile</quote>
3011 # These sites are very complex and require
3012 # minimal interference.
3014 .office.microsoft.com
3015 .windowsupdate.microsoft.com
3018 # Shopping sites - still want to block ads.
3021 .worldpay.com # for quietpc.com
3025 # These shops require pop-ups
3035 The <quote>shop</quote> and <quote>fragile</quote> aliases are often used for
3036 <quote>problem</quote> sites that require most actions to be disabled
3037 in order to function properly.
3044 <!-- ~ End section ~ -->
3047 <!-- ~~~~~ New section ~~~~~ -->
3048 <sect2 id="filterfile">
3049 <title>The Filter File</title>
3051 Any web page can be dynamically modified with the filter file. This
3052 modification can be removal, or re-writing, of any web page content,
3053 including tags and non-visible content. The default filter file is
3054 <filename>default.filter</filename>, located in the config directory.
3058 This is potentially a very powerful feature, and requires knowledge of both
3059 <quote>regular expression</quote> and HTML in order create custom
3060 filters. But, there are a number of useful filters included with
3061 <application>Privoxy</application> for many common situations.
3065 The included example file is divided into sections. Each section begins
3066 with the <literal>FILTER</literal> keyword, followed by the identifier
3067 for that section, e.g. <quote>FILTER: webbugs</quote>. Each section performs
3068 a similar type of filtering, such as <quote>html-annoyances</quote>.
3072 This file uses regular expressions to alter or remove any string in the
3073 target page. The expressions can only operate on one line at a time. Some
3074 examples from the included default <filename>default.filter</filename>:
3078 Stop web pages from displaying annoying messages in the status bar by
3079 deleting such references:
3086 FILTER: html-annoyances
3088 # New browser windows should be resizeable and have a location and status
3091 s/resizable="?(no|0)"?/resizable=1/ig s/noresize/yesresize/ig
3092 s/location="?(no|0)"?/location=1/ig s/status="?(no|0)"?/status=1/ig
3093 s/scrolling="?(no|0|Auto)"?/scrolling=1/ig
3094 s/menubar="?(no|0)"?/menubar=1/ig
3096 # The <BLINK> tag was a crime!
3098 s*<blink>|</blink>**ig
3102 #s/framespacing="?(no|0)"?//ig
3103 #s/margin(height|width)=[0-9]*//gi
3110 Just for kicks, replace any occurrence of <quote>Microsoft</quote> with
3111 <quote>MicroSuck</quote>, and have a little fun with topical buzzwords:
3120 s/microsoft(?!.com)/MicroSuck/ig
3124 s/industry-leading|cutting-edge|award-winning/<font color=red><b>BINGO!</b></font>/ig
3131 Kill those pesky little web-bugs:
3138 # webbugs: Squish WebBugs (1x1 invisible GIFs used for user tracking)
3141 s/<img\s+[^>]*?(width|height)\s*=\s*['"]?1\D[^>]*?(width|height)\s*=\s*['"]?1(\D[^>]*?)?>/<!-- Squished WebBug -->/sig
3149 <!-- ~ End section ~ -->
3153 <!-- ~~~~~ New section ~~~~~ -->
3156 <title>Templates</title>
3158 When <application>Privoxy</application> displays one of its internal
3159 pages, such as a 404 Not Found error page, it uses the appropriate template.
3160 On Linux, BSD, and Unix, these are located in
3161 <filename>/etc/privoxy/templates</filename> by default. These may be
3162 customized, if desired. <filename>cgi-style.css</filename> is
3163 used to control the HTML attributes (fonts, etc).
3166 The default <quote>Blocked</quote> banner page with the bright red top
3167 banner, is called just <quote><filename>blocked</filename></quote>. This
3168 may be customized or replaced with something else if desired.
3175 <!-- ~ End section ~ -->
3179 <!-- ~~~~~ New section ~~~~~ -->
3181 <sect1 id="contact"><title>Contacting the Developers, Bug Reporting and Feature
3184 <!-- Include contacting.sgml boilerplate: -->
3188 <!-- end boilerplate -->
3193 <!-- ~~~~~ New section ~~~~~ -->
3194 <sect1 id="copyright"><title>Copyright and History</title>
3196 <sect2><title>Copyright</title>
3197 <!-- Include copyright.sgml: -->
3199 <!-- end copyright -->
3202 <!-- ~ End section ~ -->
3205 <!-- ~~~~~ New section ~~~~~ -->
3207 <sect2 id="history"><title>History</title>
3208 <!-- Include history.sgml: -->
3210 <!-- end history -->
3214 <!-- ~~~~~ New section ~~~~~ -->
3215 <sect1 id="seealso"><title>See Also</title>
3216 <!-- Include seealso.sgml: -->
3218 <!-- end seealso -->
3223 <!-- ~~~~~ New section ~~~~~ -->
3224 <sect1 id="appendix"><title>Appendix</title>
3227 <!-- ~~~~~ New section ~~~~~ -->
3229 <title>Regular Expressions</title>
3231 <application>Privoxy</application> can use <quote>regular expressions</quote>
3232 in various config files. Assuming support for <quote>pcre</quote> (Perl
3233 Compatible Regular Expressions) is compiled in, which is the default. Such
3234 configuration directives do not require regular expressions, but they can be
3235 used to increase flexibility by matching a pattern with wild-cards against
3240 If you are reading this, you probably don't understand what <quote>regular
3241 expressions</quote> are, or what they can do. So this will be a very brief
3242 introduction only. A full explanation would require a book ;-)
3246 <quote>Regular expressions</quote> is a way of matching one character
3247 expression against another to see if it matches or not. One of the
3248 <quote>expressions</quote> is a literal string of readable characters
3249 (letter, numbers, etc), and the other is a complex string of literal
3250 characters combined with wild-cards, and other special characters, called
3251 meta-characters. The <quote>meta-characters</quote> have special meanings and
3252 are used to build the complex pattern to be matched against. Perl Compatible
3253 Regular Expressions is an enhanced form of the regular expression language
3254 with backward compatibility.
3258 To make a simple analogy, we do something similar when we use wild-card
3259 characters when listing files with the <command>dir</command> command in DOS.
3260 <literal>*.*</literal> matches all filenames. The <quote>special</quote>
3261 character here is the asterisk which matches any and all characters. We can be
3262 more specific and use <literal>?</literal> to match just individual
3263 characters. So <quote>dir file?.text</quote> would match
3264 <quote>file1.txt</quote>, <quote>file2.txt</quote>, etc. We are pattern
3265 matching, using a similar technique to <quote>regular expressions</quote>!
3269 Regular expressions do essentially the same thing, but are much, much more
3270 powerful. There are many more <quote>special characters</quote> and ways of
3271 building complex patterns however. Let's look at a few of the common ones,
3272 and then some examples:
3277 <emphasis>.</emphasis> - Matches any single character, e.g. <quote>a</quote>,
3278 <quote>A</quote>, <quote>4</quote>, <quote>:</quote>, or <quote>@</quote>.
3284 <emphasis>?</emphasis> - The preceding character or expression is matched ZERO or ONE
3291 <emphasis>+</emphasis> - The preceding character or expression is matched ONE or MORE
3298 <emphasis>*</emphasis> - The preceding character or expression is matched ZERO or MORE
3305 <emphasis>\</emphasis> - The <quote>escape</quote> character denotes that
3306 the following character should be taken literally. This is used where one of the
3307 special characters (e.g. <quote>.</quote>) needs to be taken literally and
3308 not as a special meta-character.
3314 <emphasis>[]</emphasis> - Characters enclosed in brackets will be matched if
3315 any of the enclosed characters are encountered.
3321 <emphasis>()</emphasis> - parentheses are used to group a sub-expression,
3322 or multiple sub-expressions.
3328 <emphasis>|</emphasis> - The <quote>bar</quote> character works like an
3329 <quote>or</quote> conditional statement. A match is successful if the
3330 sub-expression on either side of <quote>|</quote> matches.
3336 <emphasis>s/string1/string2/g</emphasis> - This is used to rewrite strings of text.
3337 <quote>string1</quote> is replaced by <quote>string2</quote> in this
3343 These are just some of the ones you are likely to use when matching URLs with
3344 <application>Privoxy</application>, and is a long way from a definitive
3345 list. This is enough to get us started with a few simple examples which may
3346 be more illuminating:
3350 <emphasis><literal>/.*/banners/.*</literal></emphasis> - A simple example
3351 that uses the common combination of <quote>.</quote> and <quote>*</quote> to
3352 denote any character, zero or more times. In other words, any string at all.
3353 So we start with a literal forward slash, then our regular expression pattern
3354 (<quote>.*</quote>) another literal forward slash, the string
3355 <quote>banners</quote>, another forward slash, and lastly another
3356 <quote>.*</quote>. We are building
3357 a directory path here. This will match any file with the path that has a
3358 directory named <quote>banners</quote> in it. The <quote>.*</quote> matches
3359 any characters, and this could conceivably be more forward slashes, so it
3360 might expand into a much longer looking path. For example, this could match:
3361 <quote>/eye/hate/spammers/banners/annoy_me_please.gif</quote>, or just
3362 <quote>/banners/annoying.html</quote>, or almost an infinite number of other
3363 possible combinations, just so it has <quote>banners</quote> in the path
3368 A now something a little more complex:
3372 <emphasis><literal>/.*/adv((er)?ts?|ertis(ing|ements?))?/</literal></emphasis> -
3373 We have several literal forward slashes again (<quote>/</quote>), so we are
3374 building another expression that is a file path statement. We have another
3375 <quote>.*</quote>, so we are matching against any conceivable sub-path, just so
3376 it matches our expression. The only true literal that <emphasis>must
3377 match</emphasis> our pattern is <application>adv</application>, together with
3378 the forward slashes. What comes after the <quote>adv</quote> string is the
3383 Remember the <quote>?</quote> means the preceding expression (either a
3384 literal character or anything grouped with <quote>(...)</quote> in this case)
3385 can exist or not, since this means either zero or one match. So
3386 <quote>((er)?ts?|ertis(ing|ements?))</quote> is optional, as are the
3387 individual sub-expressions: <quote>(er)</quote>,
3388 <quote>(ing|ements?)</quote>, and the <quote>s</quote>. The <quote>|</quote>
3389 means <quote>or</quote>. We have two of those. For instance,
3390 <quote>(ing|ements?)</quote>, can expand to match either <quote>ing</quote>
3391 <emphasis>OR</emphasis> <quote>ements?</quote>. What is being done here, is an
3392 attempt at matching as many variations of <quote>advertisement</quote>, and
3393 similar, as possible. So this would expand to match just <quote>adv</quote>,
3394 or <quote>advert</quote>, or <quote>adverts</quote>, or
3395 <quote>advertising</quote>, or <quote>advertisement</quote>, or
3396 <quote>advertisements</quote>. You get the idea. But it would not match
3397 <quote>advertizements</quote> (with a <quote>z</quote>). We could fix that by
3398 changing our regular expression to:
3399 <quote>/.*/adv((er)?ts?|erti(s|z)(ing|ements?))?/</quote>, which would then match
3404 <emphasis><literal>/.*/advert[0-9]+\.(gif|jpe?g)</literal></emphasis> - Again
3405 another path statement with forward slashes. Anything in the square brackets
3406 <quote>[]</quote> can be matched. This is using <quote>0-9</quote> as a
3407 shorthand expression to mean any digit one through nine. It is the same as
3408 saying <quote>0123456789</quote>. So any digit matches. The <quote>+</quote>
3409 means one or more of the preceding expression must be included. The preceding
3410 expression here is what is in the square brackets -- in this case, any digit
3411 one through nine. Then, at the end, we have a grouping: <quote>(gif|jpe?g)</quote>.
3412 This includes a <quote>|</quote>, so this needs to match the expression on
3413 either side of that bar character also. A simple <quote>gif</quote> on one side, and the other
3414 side will in turn match either <quote>jpeg</quote> or <quote>jpg</quote>,
3415 since the <quote>?</quote> means the letter <quote>e</quote> is optional and
3416 can be matched once or not at all. So we are building an expression here to
3417 match image GIF or JPEG type image file. It must include the literal
3418 string <quote>advert</quote>, then one or more digits, and a <quote>.</quote>
3419 (which is now a literal, and not a special character, since it is escaped
3420 with <quote>\</quote>), and lastly either <quote>gif</quote>, or
3421 <quote>jpeg</quote>, or <quote>jpg</quote>. Some possible matches would
3422 include: <quote>//advert1.jpg</quote>,
3423 <quote>/nasty/ads/advert1234.gif</quote>,
3424 <quote>/banners/from/hell/advert99.jpg</quote>. It would not match
3425 <quote>advert1.gif</quote> (no leading slash), or
3426 <quote>/adverts232.jpg</quote> (the expression does not include an
3427 <quote>s</quote>), or <quote>/advert1.jsp</quote> (<quote>jsp</quote> is not
3428 in the expression anywhere).
3432 <emphasis><literal>s/microsoft(?!.com)/MicroSuck/i</literal></emphasis> - This is
3433 a substitution. <quote>MicroSuck</quote> will replace any occurrence of
3434 <quote>microsoft</quote>. The <quote>i</quote> at the end of the expression
3435 means ignore case. The <quote>(?!.com)</quote> means
3436 the match should fail if <quote>microsoft</quote> is followed by
3437 <quote>.com</quote>. In other words, this acts like a <quote>NOT</quote>
3438 modifier. In case this is a hyperlink, we don't want to break it ;-).
3442 We are barely scratching the surface of regular expressions here so that you
3443 can understand the default <application>Privoxy</application>
3444 configuration files, and maybe use this knowledge to customize your own
3445 installation. There is much, much more that can be done with regular
3446 expressions. Now that you know enough to get started, you can learn more on
3451 More reading on Perl Compatible Regular expressions:
3452 <ulink url="http://www.perldoc.com/perl5.6/pod/perlre.html">http://www.perldoc.com/perl5.6/pod/perlre.html</ulink>
3457 <!-- ~ End section ~ -->
3460 <!-- ~~~~~ New section ~~~~~ -->
3462 <title><application>Privoxy</application>'s Internal Pages</title>
3465 Since <application>Privoxy</application> proxies each requested
3466 web page, it is easy for <application>Privoxy</application> to
3467 trap certain special URLs. In this way, we can talk directly to
3468 <application>Privoxy</application>, and see how it is
3469 configured, see how our rules are being applied, change these
3470 rules and other configuration options, and even turn
3471 <application>Privoxy's</application> filtering off, all with
3477 The URLs listed below are the special ones that allow direct access
3478 to <application>Privoxy</application>. Of course,
3479 <application>Privoxy</application> must be running to access these. If
3480 not, you will get a friendly error message. Internet access is not
3493 <ulink url="http://config.privoxy.org/">http://config.privoxy.org/</ulink>
3497 Alternately, this may be reached at <ulink
3498 url="http://p.p/">http://p.p/</ulink>, but this
3499 variation may not work as reliably as the above in some configurations.
3505 Show information about the current configuration:
3509 <ulink url="http://config.privoxy.org/show-status">http://config.privoxy.org/show-status</ulink>
3516 Show the source code version numbers:
3520 <ulink url="http://config.privoxy.org/show-version">http://config.privoxy.org/show-version</ulink>
3527 Show the client's request headers:
3531 <ulink url="http://config.privoxy.org/show-request">http://config.privoxy.org/show-request</ulink>
3538 Show which actions apply to a URL and why:
3542 <ulink url="http://config.privoxy.org/show-url-info">http://config.privoxy.org/show-url-info</ulink>
3549 Toggle Privoxy on or off. In this case, <quote>Privoxy</quote> continues
3550 to run, but only as a pass-through proxy, with no actions taking place:
3554 <ulink url="http://config.privoxy.org/toggle">http://config.privoxy.org/toggle</ulink>
3558 Short cuts. Turn off, then on:
3562 <ulink url="http://config.privoxy.org/toggle?set=disable">http://config.privoxy.org/toggle?set=disable</ulink>
3567 <ulink url="http://config.privoxy.org/toggle?set=enable">http://config.privoxy.org/toggle?set=enable</ulink>
3574 Edit the actions list file:
3578 <ulink url="http://config.privoxy.org/edit-actions">http://config.privoxy.org/edit-actions</ulink>
3587 These may be bookmarked for quick reference.
3591 <sect3 id="bookmarklets">
3592 <title>Bookmarklets</title>
3594 Below are some <quote>bookmarklets</quote> to allow you to easily access a
3595 <quote>mini</quote> version of some of <application>Privoxy's</application>
3596 special pages. They are designed for MS Internet Explorer, but should work
3597 equally well in Netscape, Mozilla, and other browsers which support
3598 JavaScript. They are designed to run directly from your bookmarks - not by
3599 clicking the links below (although that should work for testing).
3602 To save them, right-click the link and choose <quote>Add to Favorites</quote>
3603 (IE) or <quote>Add Bookmark</quote> (Netscape). You will get a warning that
3604 the bookmark <quote>may not be safe</quote> - just click OK. Then you can run the
3605 Bookmarklet directly from your favourites/bookmarks. For even faster access,
3606 you can put them on the <quote>Links</quote> bar (IE) or the <quote>Personal
3607 Toolbar</quote> (Netscape), and run them with a single click.
3615 <ulink url="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=enabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());">Enable Privoxy</ulink>
3621 <ulink url="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=disabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());">Disable Privoxy</ulink>
3627 <ulink url="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=toggle','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());">Toggle Privoxy</ulink> (Toggles between enabled and disabled)
3633 <ulink url="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y','ijbstatus','width=250,height=2,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());">View Privoxy Status</ulink>
3639 <ulink url="javascript:w=Math.floor(screen.width/2);h=Math.floor(screen.height*0.9);void(window.open('http://www.privoxy.org/actions','Feedback','screenx='+w+',width='+w+',height='+h+',scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());">Actions file feedback system</ulink>
3649 Credit: The site which gave me the general idea for these bookmarklets is
3650 <ulink url="http://www.bookmarklets.com">www.bookmarklets.com</ulink>. They
3651 have more information about bookmarklets.
3660 <!-- ~~~~~ New section ~~~~~ -->
3661 <sect2 id="actionsanat">
3662 <title>Anatomy of an Action</title>
3665 The way <application>Privoxy</application> applies <quote>actions</quote>
3666 and <quote>filters</quote> to any given URL can be complex, and not always so
3667 easy to understand what is happening. And sometimes we need to be able to
3668 <emphasis>see</emphasis> just what <application>Privoxy</application> is
3669 doing. Especially, if something <application>Privoxy</application> is doing
3670 is causing us a problem inadvertantly. It can be a little daunting to look at
3671 the actions and filters files themselves, since they tend to be filled with
3672 <quote>regular expressions</quote> whose consequences are not always
3673 so obvious. <application>Privoxy</application> provides the
3674 <ulink url="http://config.privoxy.org/show-url-info">http://config.privoxy.org/show-url-info</ulink>
3675 page that can show us very specifically how <application>actions</application>
3676 are being applied to any given URL. This is a big help for troubleshooting.
3680 First, enter one URL (or partial URL) at the prompt, and then
3681 <application>Privoxy</application> will tell us
3682 how the current configuration will handle it. This will not
3683 help with filtering effects from the <filename>default.filter</filename> file! It
3684 also will not tell you about any other URLs that may be embedded within the
3685 URL you are testing. For instance, images such as ads are expressed as URLs
3686 within the raw page source of HTML pages. So you will only get info for the
3687 actual URL that is pasted into the prompt area -- not any sub-URLs. If you
3688 want to know about embedded URLs like ads, you will have to dig those out of
3689 the HTML source. Use your browser's <quote>View Page Source</quote> option
3690 for this. Or right click on the ad, and grab the URL.
3694 Let's look at an example, <ulink url="http://google.com">google.com</ulink>,
3695 one section at a time:
3700 System default actions:
3702 { -add-header -block -deanimate-gifs -downgrade -fast-redirects -filter
3703 -hide-forwarded -hide-from -hide-referer -hide-user-agent -image
3704 -image-blocker -limit-connect -no-compression -no-cookies-keep
3705 -no-cookies-read -no-cookies-set -no-popups -vanilla-wafer -wafer }
3711 This is the top section, and only tells us of the compiled in defaults. This
3712 is basically what <application>Privoxy</application> would do if there
3713 were not any <quote>actions</quote> defined, i.e. it does nothing. Every action
3714 is disabled. This is not particularly informative for our purposes here. OK,
3721 Matches for http://google.com:
3723 { -add-header -block +deanimate-gifs -downgrade +fast-redirects
3724 +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups}
3725 +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal}
3726 +filter{fun} +hide-forwarded +hide-from{block} +hide-referer{forge}
3727 -hide-user-agent -image +image-blocker{blank} +no-compression
3728 +no-cookies-keep -no-cookies-read -no-cookies-set +no-popups
3729 -vanilla-wafer -wafer }
3732 { -no-cookies-keep -no-cookies-read -no-cookies-set }
3742 This is much more informative, and tells us how we have defined our
3743 <quote>actions</quote>, and which ones match for our example,
3744 <quote>google.com</quote>. The first grouping shows our default
3745 settings, which would apply to all URLs. If you look at your <quote>actions</quote>
3746 file, this would be the section just below the <quote>aliases</quote> section
3747 near the top. This applies to all URLs as signified by the single forward
3748 slash -- <quote>/</quote>.
3753 These are the default actions we have enabled. But we can define additional
3754 actions that would be exceptions to these general rules, and then list
3755 specific URLs that these exceptions would apply to. Last match wins.
3756 Just below this then are two explict matches for <quote>.google.com</quote>.
3757 The first is negating our various cookie blocking actions (i.e. we will allow
3758 cookies here). The second is allowing <quote>fast-redirects</quote>. Note
3759 that there is a leading dot here -- <quote>.google.com</quote>. This will
3760 match any hosts and sub-domains, in the google.com domain also, such as
3761 <quote>www.google.com</quote>. So, apparently, we have these actions defined
3762 somewhere in the lower part of our actions file, and
3763 <quote>google.com</quote> is referenced in these sections.
3768 And now we pull it altogether in the bottom section and summarize how
3769 <application>Privoxy</application> is appying all its <quote>actions</quote>
3770 to <quote>google.com</quote>:
3779 -add-header -block -deanimate-gifs -downgrade -fast-redirects
3780 +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups}
3781 +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal}
3782 +filter{fun} +hide-forwarded +hide-from{block} +hide-referer{forge}
3783 -hide-user-agent -image +image-blocker{blank} -limit-connect +no-compression
3784 -no-cookies-keep -no-cookies-read -no-cookies-set +no-popups -vanilla-wafer
3791 Now another example, <quote>ad.doubleclick.net</quote>:
3810 We'll just show the interesting part here, the explicit matches. It is
3811 matched three different times. Each as an <quote>+block +image</quote>,
3812 which is the expanded form of one of our aliases that had been defined as:
3813 <quote>+imageblock</quote>. (<quote>Aliases</quote> are defined in the
3814 first section of the actions file and typically used to combine more
3819 Any one of these would have done the trick and blocked this as an unwanted
3820 image. This is unnecessarily redundant since the last case effectively
3821 would also cover the first. No point in taking chances with these guys
3822 though ;-) Note that if you want an ad or obnoxious
3823 URL to be invisible, it should be defined as <quote>ad.doubleclick.net</quote>
3824 is done here -- as both a <quote>+block</quote> <emphasis>and</emphasis> an
3825 <quote>+image</quote>. The custom alias <quote>+imageblock</quote> does this
3830 One last example. Let's try <quote>http://www.rhapsodyk.net/adsl/HOWTO/</quote>.
3831 This one is giving us problems. We are getting a blank page. Hmmm...
3837 Matches for http://www.rhapsodyk.net/adsl/HOWTO/:
3839 { -add-header -block +deanimate-gifs -downgrade +fast-redirects
3840 +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups}
3841 +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal}
3842 +filter{fun} +hide-forwarded +hide-from{block} +hide-referer{forge}
3843 -hide-user-agent -image +image-blocker{blank} +no-compression
3844 +no-cookies-keep -no-cookies-read -no-cookies-set +no-popups
3845 -vanilla-wafer -wafer }
3855 Ooops, the <quote>/adsl/</quote> is matching <quote>/ads</quote>! But
3856 we did not want this at all! Now we see why we get the blank page. We could
3857 now add a new action below this that explictly does <emphasis>not</emphasis>
3858 block (-block) pages with <quote>adsl</quote>. There are various ways to
3859 handle such exceptions. Example:
3872 Now the page displays ;-) Be sure to flush your browser's caches when
3873 making such changes. Or, try using <literal>Shift+Reload</literal>.
3877 But now what about a situation where we get no explicit matches like
3891 That actually was very telling and pointed us quickly to where the problem
3892 was. If you don't get this kind of match, then it means one of the default
3893 rules in the first section is causing the problem. This would require some
3894 guesswork, and maybe a little trial and error to isolate the offending rule.
3895 One likely cause would be one of the <quote>{+filter}</quote> actions. Try
3896 adding the URL for the site to one of aliases that turn off <quote>+filter</quote>:
3904 .worldpay.com # for quietpc.com
3913 <quote>{shop}</quote> is an <quote>alias</quote> that expands to
3914 <quote>{ -filter -no-cookies -no-cookies-keep }</quote>. Or you could do
3915 your own exception to negate filtering:
3929 <quote>{fragile}</quote> is an alias that disables most actions. This can be
3930 used as a last resort for problem sites. Remember to flush caches! If this
3931 still does not work, you will have to go through the remaining actions one by
3932 one to find which one(s) is causing the problem.
3941 This program is free software; you can redistribute it
3942 and/or modify it under the terms of the GNU General
3943 Public License as published by the Free Software
3944 Foundation; either version 2 of the License, or (at
3945 your option) any later version.
3947 This program is distributed in the hope that it will
3948 be useful, but WITHOUT ANY WARRANTY; without even the
3949 implied warranty of MERCHANTABILITY or FITNESS FOR A
3950 PARTICULAR PURPOSE. See the GNU General Public
3951 License for more details.
3953 The GNU General Public License should be included with
3954 this file. If not, you can view it at
3955 http://www.gnu.org/copyleft/gpl.html
3956 or write to the Free Software Foundation, Inc., 59
3957 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
3959 $Log: user-manual.sgml,v $
3960 Revision 1.72 2002/04/10 04:06:19 hal9
3961 Added actions feedback to Bookmarklets section
3963 Revision 1.71 2002/04/08 22:59:26 hal9
3964 Version update. Spell chkconfig correctly :)
3966 Revision 1.70 2002/04/08 20:53:56 swa
3969 Revision 1.69 2002/04/06 05:07:29 hal9
3970 -Add privoxy-man-page.sgml, for man page.
3971 -Add authors.sgml for AUTHORS (and p-authors.sgml)
3972 -Reworked various aspects of various docs.
3973 -Added additional comments to sub-docs.
3975 Revision 1.68 2002/04/04 18:46:47 swa
3976 consistent look. reuse of copyright, history et. al.
3978 Revision 1.67 2002/04/04 17:27:57 swa
3979 more single file to be included at multiple points. make maintaining easier
3981 Revision 1.66 2002/04/04 06:48:37 hal9
3982 Structural changes to allow for conditional inclusion/exclusion of content
3983 based on entity toggles, e.g. 'entity % p-not-stable "INCLUDE"'. And
3984 definition of internal entities, e.g. 'entity p-version "2.9.13"' that will
3985 eventually be set by Makefile.
3986 More boilerplate text for use across multiple docs.
3988 Revision 1.65 2002/04/03 19:52:07 swa
3989 enhance squid section due to user suggestion
3991 Revision 1.64 2002/04/03 03:53:43 hal9
3992 A few minor bug fixes, and touch ups. Ready for review.
3994 Revision 1.63 2002/04/01 16:24:49 hal9
3995 Define entities to include boilerplate text. See doc/source/*.
3997 Revision 1.62 2002/03/30 04:15:53 hal9
3998 - Fix privoxy.org/config links.
3999 - Paste in Bookmarklets from Toggle page.
4000 - Move Quickstart nearer top, and minor rework.
4002 Revision 1.61 2002/03/29 01:31:08 hal9
4005 Revision 1.60 2002/03/27 01:57:34 hal9
4006 Added more to Anatomy section.
4008 Revision 1.59 2002/03/27 00:54:33 hal9
4009 Touch up intro for new name.
4011 Revision 1.58 2002/03/26 22:29:55 swa
4012 we have a new homepage!
4014 Revision 1.57 2002/03/24 20:33:30 hal9
4015 A few minor catch ups with name change.
4017 Revision 1.56 2002/03/24 16:17:06 swa
4018 configure needs to be generated.
4020 Revision 1.55 2002/03/24 16:08:08 swa
4021 we are too lazy to make a block-built
4022 privoxy logo. hence removed the option.
4024 Revision 1.54 2002/03/24 15:46:20 swa
4025 name change related issue.
4027 Revision 1.53 2002/03/24 11:51:00 swa
4028 name change. changed filenames.
4030 Revision 1.52 2002/03/24 11:01:06 swa
4033 Revision 1.51 2002/03/23 15:13:11 swa
4034 renamed every reference to the old name with foobar.
4035 fixed "application foobar application" tag, fixed
4036 "the foobar" with "foobar". left junkbustser in cvs
4037 comments and remarks to history untouched.
4039 Revision 1.50 2002/03/23 05:06:21 hal9
4042 Revision 1.49 2002/03/21 17:01:05 hal9
4043 New section in Appendix.
4045 Revision 1.48 2002/03/12 06:33:01 hal9
4046 Catching up to Andreas and re_filterfile changes.
4048 Revision 1.47 2002/03/11 13:13:27 swa
4049 correct feedback channels
4051 Revision 1.46 2002/03/10 00:51:08 hal9
4052 Added section on JB internal pages in Appendix.
4054 Revision 1.45 2002/03/09 17:43:53 swa
4057 Revision 1.44 2002/03/09 17:08:48 hal9
4058 New section on Jon's actions file editor, and move some stuff around.
4060 Revision 1.43 2002/03/08 00:47:32 hal9
4061 Added imageblock{pattern}.
4063 Revision 1.42 2002/03/07 18:16:55 swa
4066 Revision 1.41 2002/03/07 16:46:43 hal9
4067 Fix a few markup problems for jade.
4069 Revision 1.40 2002/03/07 16:28:39 swa
4070 provide correct feedback channels
4072 Revision 1.39 2002/03/06 16:19:28 hal9
4073 Note on perceived filtering slowdown per FR.
4075 Revision 1.38 2002/03/05 23:55:14 hal9
4076 Stupid I did it again. Double hyphen in comment breaks jade.
4078 Revision 1.37 2002/03/05 23:53:49 hal9
4079 jade barfs on '- -' embedded in comments. - -user option broke it.
4081 Revision 1.36 2002/03/05 22:53:28 hal9
4082 Add new - - user option.
4084 Revision 1.35 2002/03/05 00:17:27 hal9
4085 Added section on command line options.
4087 Revision 1.34 2002/03/04 19:32:07 oes
4088 Changed default port to 8118
4090 Revision 1.33 2002/03/03 19:46:13 hal9
4091 Emphasis on where/how to report bugs, etc
4093 Revision 1.32 2002/03/03 09:26:06 joergs
4094 AmigaOS changes, config is now loaded from PROGDIR: instead of
4095 AmiTCP:db/junkbuster/ if no configuration file is specified on the
4098 Revision 1.31 2002/03/02 22:45:52 david__schmidt
4101 Revision 1.30 2002/03/02 22:00:14 hal9
4102 Updated 'New Features' list. Ran through spell-checker.
4104 Revision 1.29 2002/03/02 20:34:07 david__schmidt
4105 Update OS/2 build section
4107 Revision 1.28 2002/02/24 14:34:24 jongfoster
4108 Formatting changes. Now changing the doctype to DocBook XML 4.1
4109 will work - no other changes are needed.
4111 Revision 1.27 2002/01/11 14:14:32 hal9
4112 Added a very short section on Templates
4114 Revision 1.26 2002/01/09 20:02:50 hal9
4115 Fix bug re: auto-detect config file changes.
4117 Revision 1.25 2002/01/09 18:20:30 hal9
4118 Touch ups for *.action files.
4120 Revision 1.24 2001/12/02 01:13:42 hal9
4123 Revision 1.23 2001/12/02 00:20:41 hal9
4124 Updates for recent changes.
4126 Revision 1.22 2001/11/05 23:57:51 hal9
4127 Minor update for startup now daemon mode.
4129 Revision 1.21 2001/10/31 21:11:03 hal9
4130 Correct 2 minor errors
4132 Revision 1.18 2001/10/24 18:45:26 hal9
4133 *** empty log message ***
4135 Revision 1.17 2001/10/24 17:10:55 hal9
4136 Catching up with Jon's recent work, and a few other things.
4138 Revision 1.16 2001/10/21 17:19:21 swa
4139 wrong url in documentation
4141 Revision 1.15 2001/10/14 23:46:24 hal9
4142 Various minor changes. Fleshed out SEE ALSO section.
4144 Revision 1.13 2001/10/10 17:28:33 hal9
4147 Revision 1.12 2001/09/28 02:57:04 hal9
4150 Revision 1.11 2001/09/28 02:25:20 hal9
4153 Revision 1.9 2001/09/27 23:50:29 hal9
4154 A few changes. A short section on regular expression in appendix.
4156 Revision 1.8 2001/09/25 00:34:59 hal9
4157 Some additions, and re-arranging.
4159 Revision 1.7 2001/09/24 14:31:36 hal9
4162 Revision 1.6 2001/09/24 14:10:32 hal9
4163 Including David's OS/2 installation instructions.
4165 Revision 1.2 2001/09/13 15:27:40 swa
4168 Revision 1.1 2001/09/12 15:36:41 swa
4169 source files for junkbuster documentation
4171 Revision 1.3 2001/09/10 17:43:59 swa
4172 first proposal of a structure.
4174 Revision 1.2 2001/06/13 14:28:31 swa
4175 docs should have an author.
4177 Revision 1.1 2001/06/13 14:20:37 swa
4178 first import of project's documentation for the webserver.