generated
[privoxy.git] / doc / webserver / user-manual / configuration.html
1 <HTML
2 ><HEAD
3 ><TITLE
4 >Privoxy Configuration</TITLE
5 ><META
6 NAME="GENERATOR"
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.64
8 "><LINK
9 REL="HOME"
10 TITLE="Privoxy User Manual"
11 HREF="index.html"><LINK
12 REL="PREVIOUS"
13 TITLE="Quickstart to Using Privoxy"
14 HREF="quickstart.html"><LINK
15 REL="NEXT"
16 TITLE="Contacting the Developers, Bug Reporting and Feature
17 Requests"
18 HREF="contact.html"><LINK
19 REL="STYLESHEET"
20 TYPE="text/css"
21 HREF="../p_doc.css"></HEAD
22 ><BODY
23 CLASS="SECT1"
24 BGCOLOR="#EEEEEE"
25 TEXT="#000000"
26 LINK="#0000FF"
27 VLINK="#840084"
28 ALINK="#0000FF"
29 ><DIV
30 CLASS="NAVHEADER"
31 ><TABLE
32 WIDTH="100%"
33 BORDER="0"
34 CELLPADDING="0"
35 CELLSPACING="0"
36 ><TR
37 ><TH
38 COLSPAN="3"
39 ALIGN="center"
40 >Privoxy User Manual</TH
41 ></TR
42 ><TR
43 ><TD
44 WIDTH="10%"
45 ALIGN="left"
46 VALIGN="bottom"
47 ><A
48 HREF="quickstart.html"
49 >Prev</A
50 ></TD
51 ><TD
52 WIDTH="80%"
53 ALIGN="center"
54 VALIGN="bottom"
55 ></TD
56 ><TD
57 WIDTH="10%"
58 ALIGN="right"
59 VALIGN="bottom"
60 ><A
61 HREF="contact.html"
62 >Next</A
63 ></TD
64 ></TR
65 ></TABLE
66 ><HR
67 ALIGN="LEFT"
68 WIDTH="100%"></DIV
69 ><DIV
70 CLASS="SECT1"
71 ><H1
72 CLASS="SECT1"
73 ><A
74 NAME="CONFIGURATION"
75 >5. <SPAN
76 CLASS="APPLICATION"
77 >Privoxy</SPAN
78 > Configuration</A
79 ></H1
80 ><P
81 >  All <SPAN
82 CLASS="APPLICATION"
83 >Privoxy</SPAN
84 > configuration is stored  
85   in text files. These files can be edited with a text editor.
86   Many important aspects of <SPAN
87 CLASS="APPLICATION"
88 >Privoxy</SPAN
89 > can 
90   also be controlled easily with a web browser.
91
92  </P
93 ><DIV
94 CLASS="SECT2"
95 ><H2
96 CLASS="SECT2"
97 ><A
98 NAME="AEN324"
99 >5.1. Controlling <SPAN
100 CLASS="APPLICATION"
101 >Privoxy</SPAN
102 > with Your Web Browser</A
103 ></H2
104 ><P
105 > <SPAN
106 CLASS="APPLICATION"
107 >Privoxy</SPAN
108 >'s user interface can be reached through the special 
109  URL <A
110 HREF="http://config.privoxy.org/"
111 TARGET="_top"
112 >http://config.privoxy.org/</A
113 >
114  (shortcut: <A
115 HREF="http://p.p/"
116 TARGET="_top"
117 >http://p.p/</A
118 >), 
119  which is a built-in page and works without Internet access.
120  You will see the following section:&#13;</P
121 ><P
122 > <TABLE
123 BORDER="0"
124 BGCOLOR="#E0E0E0"
125 WIDTH="100%"
126 ><TR
127 ><TD
128 ><PRE
129 CLASS="SCREEN"
130 >&#13;Please choose from the following options:
131
132     * Privoxy main page
133     * Show information about the current configuration
134     * Show the source code version numbers
135     * Show the request headers.
136     * Show which actions apply to a URL and why
137     * Toggle Privoxy on or off
138     * Edit the actions list
139
140  </PRE
141 ></TD
142 ></TR
143 ></TABLE
144 ></P
145 ><P
146 > This should be self-explanatory. Note the last item is an editor for the
147  <SPAN
148 CLASS="QUOTE"
149 >"actions list"</SPAN
150 >, which is where much of the ad, banner, cookie,
151  and URL blocking magic is configured as well as other advanced features of
152  <SPAN
153 CLASS="APPLICATION"
154 >Privoxy</SPAN
155 >. This is an easy way to adjust various
156  aspects of <SPAN
157 CLASS="APPLICATION"
158 >Privoxy</SPAN
159 > configuration. The actions
160  file, and other configuration files, are explained in detail below. </P
161 ><P
162 > <SPAN
163 CLASS="QUOTE"
164 >"Toggle Privoxy On or Off"</SPAN
165 > is handy for sites that might 
166  have problems with your current actions and filters. You can in fact use
167  it as a test to see whether it is <SPAN
168 CLASS="APPLICATION"
169 >Privoxy</SPAN
170
171  causing the problem or not. <SPAN
172 CLASS="APPLICATION"
173 >Privoxy</SPAN
174 > continues 
175  to run as a proxy in this case, but all filtering is disabled. There
176  is even a toggle <A
177 HREF="appendix.html#BOOKMARKLETS"
178 >Bookmarklet</A
179 > offered, so
180  that you can toggle <SPAN
181 CLASS="APPLICATION"
182 >Privoxy</SPAN
183 > with one click from
184  your browser.</P
185 ></DIV
186 ><DIV
187 CLASS="SECT2"
188 ><H2
189 CLASS="SECT2"
190 ><A
191 NAME="AEN343"
192 >5.2. Configuration Files Overview</A
193 ></H2
194 ><P
195 > For Unix, *BSD and Linux, all configuration files are located in
196  <TT
197 CLASS="FILENAME"
198 >/etc/privoxy/</TT
199 > by default. For MS Windows, OS/2, and
200  AmigaOS these are all in the same directory as the 
201  <SPAN
202 CLASS="APPLICATION"
203 >Privoxy</SPAN
204 > executable.  The name
205  and number of configuration files has changed from previous versions, and is
206  subject to change as development progresses.</P
207 ><P
208 > The installed defaults provide a reasonable starting point, though possibly
209  aggressive by some standards. For the time being, there are only three
210  default configuration files (this may change in time):</P
211 ><P
212 > <P
213 ></P
214 ><UL
215 ><LI
216 ><P
217 >     The main configuration file is named <TT
218 CLASS="FILENAME"
219 >config</TT
220 >
221      on Linux, Unix, BSD, OS/2, and AmigaOS and <TT
222 CLASS="FILENAME"
223 >config.txt</TT
224 >
225      on Windows.
226    </P
227 ></LI
228 ><LI
229 ><P
230 >    <TT
231 CLASS="FILENAME"
232 >default.action</TT
233 > (the actions file) is used to define
234     which of a set of various <SPAN
235 CLASS="QUOTE"
236 >"actions"</SPAN
237 > relating to images, banners, 
238     pop-ups, access restrictions, banners and cookies are to be applied, and where.
239     There is a web based editor for this file that can be accessed at <A
240 HREF="http://config.privoxy.org/edit-actions/"
241 TARGET="_top"
242 >http://config.privoxy.org/edit-actions/</A
243 >
244     (Shortcut: <A
245 HREF="http://p.p/edit-actions/"
246 TARGET="_top"
247 >http://p.p/edit-actions/</A
248 >).
249     (Other actions files are included as well with differing levels of filtering 
250     and blocking, e.g. <TT
251 CLASS="FILENAME"
252 >basic.action</TT
253 >.)
254    </P
255 ></LI
256 ><LI
257 ><P
258 >    <TT
259 CLASS="FILENAME"
260 >default.filter</TT
261 > (the filter file) can be used to re-write the raw
262     page content, including viewable text as well as embedded HTML and JavaScript,
263     and whatever else lurks on any given web page. The filtering jobs are only
264     pre-defined here; whether to apply them or not is up to the actions file.
265    </P
266 ></LI
267 ></UL
268 ></P
269 ><P
270 > All files use the <SPAN
271 CLASS="QUOTE"
272 >"<TT
273 CLASS="LITERAL"
274 >#</TT
275 >"</SPAN
276 > character to denote a
277  comment (the rest of the line will be ignored) and understand line continuation
278  through placing a backslash ("<TT
279 CLASS="LITERAL"
280 >\</TT
281 >") as the very last character
282  in a line. If the <TT
283 CLASS="LITERAL"
284 >#</TT
285 > is preceded by a backslash, it looses
286  its special function. Placing a <TT
287 CLASS="LITERAL"
288 >#</TT
289 > in front of an otherwise
290  valid configuration line to prevent it from being interpreted is called "commenting
291  out" that line.</P
292 ><P
293 > <TT
294 CLASS="FILENAME"
295 >default.action</TT
296 > and <TT
297 CLASS="FILENAME"
298 >default.filter</TT
299
300  can use Perl style <A
301 HREF="appendix.html#REGEX"
302 >regular expressions</A
303 > for
304  maximum flexibility. </P
305 ><P
306 > After making any changes, there is no need to restart
307  <SPAN
308 CLASS="APPLICATION"
309 >Privoxy</SPAN
310 > in order for the changes to take
311  effect. <SPAN
312 CLASS="APPLICATION"
313 >Privoxy</SPAN
314 > detects such changes 
315  automatically. Note, however, that it may take one or two additional
316  requests for the change to take effect. When changing the listening address
317  of <SPAN
318 CLASS="APPLICATION"
319 >Privoxy</SPAN
320 >, these <SPAN
321 CLASS="QUOTE"
322 >"wake up"</SPAN
323 > requests
324  must obviously be sent to the <I
325 CLASS="EMPHASIS"
326 >old</I
327 > listening address.</P
328 ><P
329 > While under development, the configuration content is subject to change. 
330  The below documentation may not be accurate by the time you read this. 
331  Also, what constitutes a <SPAN
332 CLASS="QUOTE"
333 >"default"</SPAN
334 > setting, may change, so 
335  please check all your configuration files on important issues.</P
336 ></DIV
337 ><DIV
338 CLASS="SECT2"
339 ><H2
340 CLASS="SECT2"
341 ><A
342 NAME="AEN383"
343 >5.3. The Main Configuration File</A
344 ></H2
345 ><P
346 > Again, the main configuration file is named <TT
347 CLASS="FILENAME"
348 >config</TT
349 > on
350  Linux/Unix/BSD and OS/2, and <TT
351 CLASS="FILENAME"
352 >config.txt</TT
353 > on Windows.
354  Configuration lines consist of an initial keyword followed by a list of
355  values, all separated by whitespace (any number of spaces or tabs). For
356  example:</P
357 ><P
358 > <TT
359 CLASS="LITERAL"
360 >  <P
361 CLASS="LITERALLAYOUT"
362 >&nbsp;&nbsp;<I
363 CLASS="EMPHASIS"
364 >confdir /etc/privoxy</I
365 ><br>
366 &nbsp;&nbsp;&nbsp;</P
367 >
368  </TT
369 > </P
370 ><P
371 > Assigns the value <TT
372 CLASS="LITERAL"
373 >/etc/privoxy</TT
374 > to the option
375  <TT
376 CLASS="LITERAL"
377 >confdir</TT
378 > and thus indicates that the configuration
379  directory is named <SPAN
380 CLASS="QUOTE"
381 >"/etc/privoxy/"</SPAN
382 >.</P
383 ><P
384 > All options in the config file except for <TT
385 CLASS="LITERAL"
386 >confdir</TT
387 > and
388  <TT
389 CLASS="LITERAL"
390 >logdir</TT
391 > are optional. Watch out in the below description
392  for what happens if you leave them unset.</P
393 ><P
394 > The main config file controls all aspects of <SPAN
395 CLASS="APPLICATION"
396 >Privoxy</SPAN
397 >'s
398  operation that are not location dependent (i.e. they apply universally, no matter
399  where you may be surfing).</P
400 ><DIV
401 CLASS="SECT3"
402 ><H3
403 CLASS="SECT3"
404 ><A
405 NAME="AEN402"
406 >5.3.1. Configuration and Log File Locations</A
407 ></H3
408 ><P
409 > <SPAN
410 CLASS="APPLICATION"
411 >Privoxy</SPAN
412 > can (and normally does) use a number of
413  other files for additional configuration and logging.
414  This section of the configuration file tells <SPAN
415 CLASS="APPLICATION"
416 >Privoxy</SPAN
417 >
418  where to find those other files. </P
419 ><DIV
420 CLASS="SECT4"
421 ><H4
422 CLASS="SECT4"
423 ><A
424 NAME="AEN407"
425 >5.3.1.1. confdir</A
426 ></H4
427 ><P
428 ></P
429 ><DIV
430 CLASS="VARIABLELIST"
431 ><DL
432 ><DT
433 >Specifies:</DT
434 ><DD
435 ><P
436 >The directory where the other configuration files are located</P
437 ></DD
438 ><DT
439 >Type of value:</DT
440 ><DD
441 ><P
442 >Path name</P
443 ></DD
444 ><DT
445 >Default value:</DT
446 ><DD
447 ><P
448 >/etc/privoxy (Unix) <I
449 CLASS="EMPHASIS"
450 >or</I
451 > <SPAN
452 CLASS="APPLICATION"
453 >Privoxy</SPAN
454 > installation dir (Windows) </P
455 ></DD
456 ><DT
457 >Effect if unset:</DT
458 ><DD
459 ><P
460 ><I
461 CLASS="EMPHASIS"
462 >Mandatory</I
463 ></P
464 ></DD
465 ><DT
466 >Notes:</DT
467 ><DD
468 ><P
469 >    No trailing <SPAN
470 CLASS="QUOTE"
471 >"<TT
472 CLASS="LITERAL"
473 >/</TT
474 >"</SPAN
475 >, please
476    </P
477 ><P
478 >    When development goes modular and multi-user, the blocker, filter, and
479     per-user config will be stored in subdirectories of <SPAN
480 CLASS="QUOTE"
481 >"confdir"</SPAN
482 >.
483     For now, the configuration directory structure is flat, except for 
484     <TT
485 CLASS="FILENAME"
486 >confdir/templates</TT
487 >, where the HTML templates for CGI 
488     output reside (e.g. <SPAN
489 CLASS="APPLICATION"
490 >Privoxy's</SPAN
491 > 404 error page). 
492    </P
493 ></DD
494 ></DL
495 ></DIV
496 ></DIV
497 ><DIV
498 CLASS="SECT4"
499 ><H4
500 CLASS="SECT4"
501 ><A
502 NAME="AEN439"
503 >5.3.1.2. logdir</A
504 ></H4
505 ><P
506 ></P
507 ><DIV
508 CLASS="VARIABLELIST"
509 ><DL
510 ><DT
511 >Specifies:</DT
512 ><DD
513 ><P
514 >    The directory where all logging takes place (i.e. where <TT
515 CLASS="FILENAME"
516 >logfile</TT
517 > and 
518     <TT
519 CLASS="FILENAME"
520 >jarfile</TT
521 > are located) 
522    </P
523 ></DD
524 ><DT
525 >Type of value:</DT
526 ><DD
527 ><P
528 >Path name</P
529 ></DD
530 ><DT
531 >Default value:</DT
532 ><DD
533 ><P
534 >/var/log/privoxy (Unix) <I
535 CLASS="EMPHASIS"
536 >or</I
537 > <SPAN
538 CLASS="APPLICATION"
539 >Privoxy</SPAN
540 > installation dir (Windows) </P
541 ></DD
542 ><DT
543 >Effect if unset:</DT
544 ><DD
545 ><P
546 ><I
547 CLASS="EMPHASIS"
548 >Mandatory</I
549 ></P
550 ></DD
551 ><DT
552 >Notes:</DT
553 ><DD
554 ><P
555 >    No trailing <SPAN
556 CLASS="QUOTE"
557 >"<TT
558 CLASS="LITERAL"
559 >/</TT
560 >"</SPAN
561 >, please
562    </P
563 ></DD
564 ></DL
565 ></DIV
566 ></DIV
567 ><DIV
568 CLASS="SECT4"
569 ><H4
570 CLASS="SECT4"
571 ><A
572 NAME="AEN469"
573 >5.3.1.3. actionsfile</A
574 ></H4
575 ><P
576 ></P
577 ><DIV
578 CLASS="VARIABLELIST"
579 ><DL
580 ><DT
581 >Specifies:</DT
582 ><DD
583 ><P
584 >    The actions file to use
585    </P
586 ></DD
587 ><DT
588 >Type of value:</DT
589 ><DD
590 ><P
591 >File name, relative to <TT
592 CLASS="LITERAL"
593 >confdir</TT
594 ></P
595 ></DD
596 ><DT
597 >Default value:</DT
598 ><DD
599 ><P
600 >default.action (Unix) <I
601 CLASS="EMPHASIS"
602 >or</I
603 > default.action.txt (Windows)</P
604 ></DD
605 ><DT
606 >Effect if unset:</DT
607 ><DD
608 ><P
609 >    No action is taken at all. Simple neutral proxying. 
610    </P
611 ></DD
612 ><DT
613 >Notes:</DT
614 ><DD
615 ><P
616 >    There is no point in using <SPAN
617 CLASS="APPLICATION"
618 >Privoxy</SPAN
619 > without
620     an actions file. There are three different actions files included in the
621     distribution, with varying degrees of aggressiveness: 
622     <TT
623 CLASS="FILENAME"
624 >default.action</TT
625 >, <TT
626 CLASS="FILENAME"
627 >intermediate.action</TT
628 > and
629     <TT
630 CLASS="FILENAME"
631 >advanced.action</TT
632 >.
633    </P
634 ></DD
635 ></DL
636 ></DIV
637 ></DIV
638 ><DIV
639 CLASS="SECT4"
640 ><H4
641 CLASS="SECT4"
642 ><A
643 NAME="AEN498"
644 >5.3.1.4. filterfile</A
645 ></H4
646 ><P
647 ></P
648 ><DIV
649 CLASS="VARIABLELIST"
650 ><DL
651 ><DT
652 >Specifies:</DT
653 ><DD
654 ><P
655 >    The filter file to use
656    </P
657 ></DD
658 ><DT
659 >Type of value:</DT
660 ><DD
661 ><P
662 >File name, relative to <TT
663 CLASS="LITERAL"
664 >confdir</TT
665 ></P
666 ></DD
667 ><DT
668 >Default value:</DT
669 ><DD
670 ><P
671 >default.filter (Unix) <I
672 CLASS="EMPHASIS"
673 >or</I
674 > default.filter.txt (Windows)</P
675 ></DD
676 ><DT
677 >Effect if unset:</DT
678 ><DD
679 ><P
680 >    No textual content filtering takes place, i.e. all
681     <TT
682 CLASS="LITERAL"
683 >+filter{<TT
684 CLASS="REPLACEABLE"
685 ><I
686 >name</I
687 ></TT
688 >}</TT
689 >
690     actions in the actions file are turned off
691    </P
692 ></DD
693 ><DT
694 >Notes:</DT
695 ><DD
696 ><P
697 >    The <SPAN
698 CLASS="QUOTE"
699 >"default.filter"</SPAN
700 > file contains content modification rules 
701     that use <SPAN
702 CLASS="QUOTE"
703 >"regular expressions"</SPAN
704 >. These rules permit powerful
705     changes on the content of Web pages, e.g., you could disable your favorite
706     JavaScript annoyances, re-write the actual displayed text, or just have some
707     fun replacing <SPAN
708 CLASS="QUOTE"
709 >"Microsoft"</SPAN
710 > with <SPAN
711 CLASS="QUOTE"
712 >"MicroSuck"</SPAN
713 > wherever
714     it appears on a Web page.
715    </P
716 ></DD
717 ></DL
718 ></DIV
719 ></DIV
720 ><DIV
721 CLASS="SECT4"
722 ><H4
723 CLASS="SECT4"
724 ><A
725 NAME="AEN529"
726 >5.3.1.5. logfile</A
727 ></H4
728 ><P
729 ></P
730 ><DIV
731 CLASS="VARIABLELIST"
732 ><DL
733 ><DT
734 >Specifies:</DT
735 ><DD
736 ><P
737 >    The log file to use
738    </P
739 ></DD
740 ><DT
741 >Type of value:</DT
742 ><DD
743 ><P
744 >File name, relative to <TT
745 CLASS="LITERAL"
746 >logdir</TT
747 ></P
748 ></DD
749 ><DT
750 >Default value:</DT
751 ><DD
752 ><P
753 >logfile (Unix) <I
754 CLASS="EMPHASIS"
755 >or</I
756 > privoxy.log (Windows)</P
757 ></DD
758 ><DT
759 >Effect if unset:</DT
760 ><DD
761 ><P
762 >    No log file is used, all log messages go to the console (<TT
763 CLASS="LITERAL"
764 >stderr</TT
765 >).
766    </P
767 ></DD
768 ><DT
769 >Notes:</DT
770 ><DD
771 ><P
772 >    The windows version will additionally log to the console.
773    </P
774 ><P
775 >    The logfile is where all logging and error messages are written. The level
776     of detail and number of messages are set with the <TT
777 CLASS="LITERAL"
778 >debug</TT
779 >
780     option (see below). The logfile can be useful for tracking down a problem with
781     <SPAN
782 CLASS="APPLICATION"
783 >Privoxy</SPAN
784 > (e.g., it's not blocking an ad you
785     think it should block) but in most cases you probably will never look at it.
786    </P
787 ><P
788 >    Your logfile will grow indefinitely, and you will probably want to
789     periodically remove it.  On Unix systems, you can do this with a cron job
790     (see <SPAN
791 CLASS="QUOTE"
792 >"man cron"</SPAN
793 >). For Red Hat, a <B
794 CLASS="COMMAND"
795 >logrotate</B
796
797     script has been included.
798    </P
799 ><P
800 >    On SuSE Linux systems, you can place a line like <SPAN
801 CLASS="QUOTE"
802 >"/var/log/privoxy.*
803     +1024k 644 nobody.nogroup"</SPAN
804 > in <TT
805 CLASS="FILENAME"
806 >/etc/logfiles</TT
807 >, with
808     the effect that cron.daily will automatically archive, gzip, and empty the
809     log, when it exceeds 1M size.
810    </P
811 ></DD
812 ></DL
813 ></DIV
814 ></DIV
815 ><DIV
816 CLASS="SECT4"
817 ><H4
818 CLASS="SECT4"
819 ><A
820 NAME="AEN564"
821 >5.3.1.6. jarfile</A
822 ></H4
823 ><P
824 ></P
825 ><DIV
826 CLASS="VARIABLELIST"
827 ><DL
828 ><DT
829 >Specifies:</DT
830 ><DD
831 ><P
832 >    The file to store intercepted cookies in
833    </P
834 ></DD
835 ><DT
836 >Type of value:</DT
837 ><DD
838 ><P
839 >File name, relative to <TT
840 CLASS="LITERAL"
841 >logdir</TT
842 ></P
843 ></DD
844 ><DT
845 >Default value:</DT
846 ><DD
847 ><P
848 >jarfile (Unix) <I
849 CLASS="EMPHASIS"
850 >or</I
851 > privoxy.jar (Windows)</P
852 ></DD
853 ><DT
854 >Effect if unset:</DT
855 ><DD
856 ><P
857 >    Intercepted cookies are not stored at all.
858    </P
859 ></DD
860 ><DT
861 >Notes:</DT
862 ><DD
863 ><P
864 >    The jarfile may grow to ridiculous sizes over time.
865    </P
866 ></DD
867 ></DL
868 ></DIV
869 ></DIV
870 ><DIV
871 CLASS="SECT4"
872 ><H4
873 CLASS="SECT4"
874 ><A
875 NAME="AEN589"
876 >5.3.1.7. trustfile</A
877 ></H4
878 ><P
879 ></P
880 ><DIV
881 CLASS="VARIABLELIST"
882 ><DL
883 ><DT
884 >Specifies:</DT
885 ><DD
886 ><P
887 >    The trust file to use
888    </P
889 ></DD
890 ><DT
891 >Type of value:</DT
892 ><DD
893 ><P
894 >File name, relative to <TT
895 CLASS="LITERAL"
896 >confdir</TT
897 ></P
898 ></DD
899 ><DT
900 >Default value:</DT
901 ><DD
902 ><P
903 ><I
904 CLASS="EMPHASIS"
905 >Unset (commented out)</I
906 >. When activated: trust (Unix) <I
907 CLASS="EMPHASIS"
908 >or</I
909 > trust.txt (Windows)</P
910 ></DD
911 ><DT
912 >Effect if unset:</DT
913 ><DD
914 ><P
915 >    The whole trust mechanism is turned off.
916    </P
917 ></DD
918 ><DT
919 >Notes:</DT
920 ><DD
921 ><P
922 >    The trust mechanism is an experimental feature for building white-lists and should
923     be used with care. It is <I
924 CLASS="EMPHASIS"
925 >NOT</I
926 > recommended for the casual user.
927    </P
928 ><P
929 >    If you specify a trust file, <SPAN
930 CLASS="APPLICATION"
931 >Privoxy</SPAN
932 > will only allow
933     access to sites that are named in the trustfile. 
934     You can also mark sites as trusted referrers (with <TT
935 CLASS="LITERAL"
936 >+</TT
937 >), with
938     the effect that access to untrusted sites will be granted, if a link from a
939     trusted referrer was used.
940     The link target will then be added to the <SPAN
941 CLASS="QUOTE"
942 >"trustfile"</SPAN
943 >.
944     Possible applications include limiting Internet access for children.
945    </P
946 ><P
947 >    If you use <TT
948 CLASS="LITERAL"
949 >+</TT
950 > operator in the trust file, it may grow considerably over time.
951    </P
952 ></DD
953 ></DL
954 ></DIV
955 ></DIV
956 ></DIV
957 ><DIV
958 CLASS="SECT3"
959 ><H3
960 CLASS="SECT3"
961 ><A
962 NAME="AEN622"
963 >5.3.2. Local Set-up Documentation</A
964 ></H3
965 ><P
966 >    If you intend to operate <SPAN
967 CLASS="APPLICATION"
968 >Privoxy</SPAN
969 > for more users
970     that just yourself, it might be a good idea to let them know how to reach
971     you, what you block and why you do that, your policies etc.
972    </P
973 ><DIV
974 CLASS="SECT4"
975 ><H4
976 CLASS="SECT4"
977 ><A
978 NAME="AEN626"
979 >5.3.2.1. trust-info-url</A
980 ></H4
981 ><P
982 ></P
983 ><DIV
984 CLASS="VARIABLELIST"
985 ><DL
986 ><DT
987 >Specifies:</DT
988 ><DD
989 ><P
990 >    A URL to be displayed in the error page that users will see if access to an untrusted page is denied.    
991    </P
992 ></DD
993 ><DT
994 >Type of value:</DT
995 ><DD
996 ><P
997 >URL</P
998 ></DD
999 ><DT
1000 >Default value:</DT
1001 ><DD
1002 ><P
1003 >Two example URL are provided</P
1004 ></DD
1005 ><DT
1006 >Effect if unset:</DT
1007 ><DD
1008 ><P
1009 >    No links are displayed on the "untrusted" error page.
1010    </P
1011 ></DD
1012 ><DT
1013 >Notes:</DT
1014 ><DD
1015 ><P
1016 >    The value of this option only matters if the experimental trust mechanism has been
1017     activated. (See <TT
1018 CLASS="LITERAL"
1019 >trustfile</TT
1020 > above.)
1021    </P
1022 ><P
1023 >    If you use the trust mechanism, it is a good idea to write up some on-line
1024     documentation about your trust policy and to specify the URL(s) here.
1025     Use multiple times for multiple URLs.
1026    </P
1027 ><P
1028 >    The URL(s) should be added to the trustfile as well, so users don't end up
1029     locked out from the information on why they were locked out in the first place!
1030    </P
1031 ></DD
1032 ></DL
1033 ></DIV
1034 ></DIV
1035 ><DIV
1036 CLASS="SECT4"
1037 ><H4
1038 CLASS="SECT4"
1039 ><A
1040 NAME="AEN652"
1041 >5.3.2.2. admin-address</A
1042 ></H4
1043 ><P
1044 ></P
1045 ><DIV
1046 CLASS="VARIABLELIST"
1047 ><DL
1048 ><DT
1049 >Specifies:</DT
1050 ><DD
1051 ><P
1052 >    An email address to reach the proxy administrator.
1053    </P
1054 ></DD
1055 ><DT
1056 >Type of value:</DT
1057 ><DD
1058 ><P
1059 >Email address</P
1060 ></DD
1061 ><DT
1062 >Default value:</DT
1063 ><DD
1064 ><P
1065 ><I
1066 CLASS="EMPHASIS"
1067 >Unset</I
1068 ></P
1069 ></DD
1070 ><DT
1071 >Effect if unset:</DT
1072 ><DD
1073 ><P
1074 >    No email address is displayed on error pages and the CGI user interface.
1075    </P
1076 ></DD
1077 ><DT
1078 >Notes:</DT
1079 ><DD
1080 ><P
1081 >    If both <TT
1082 CLASS="LITERAL"
1083 >admin-address</TT
1084 > and <TT
1085 CLASS="LITERAL"
1086 >proxy-info-url</TT
1087 >
1088     are unset, the whole "Local Privoxy Support" box on all generated pages will
1089     not be shown.
1090    </P
1091 ></DD
1092 ></DL
1093 ></DIV
1094 ></DIV
1095 ><DIV
1096 CLASS="SECT4"
1097 ><H4
1098 CLASS="SECT4"
1099 ><A
1100 NAME="AEN678"
1101 >5.3.2.3. proxy-info-url</A
1102 ></H4
1103 ><P
1104 ></P
1105 ><DIV
1106 CLASS="VARIABLELIST"
1107 ><DL
1108 ><DT
1109 >Specifies:</DT
1110 ><DD
1111 ><P
1112 >    A URL to documentation about the local <SPAN
1113 CLASS="APPLICATION"
1114 >Privoxy</SPAN
1115 > setup,
1116     configuration or policies.
1117    </P
1118 ></DD
1119 ><DT
1120 >Type of value:</DT
1121 ><DD
1122 ><P
1123 >URL</P
1124 ></DD
1125 ><DT
1126 >Default value:</DT
1127 ><DD
1128 ><P
1129 ><I
1130 CLASS="EMPHASIS"
1131 >Unset</I
1132 ></P
1133 ></DD
1134 ><DT
1135 >Effect if unset:</DT
1136 ><DD
1137 ><P
1138 >    No link to local documentation is displayed on error pages and the CGI user interface.
1139    </P
1140 ></DD
1141 ><DT
1142 >Notes:</DT
1143 ><DD
1144 ><P
1145 >    If both <TT
1146 CLASS="LITERAL"
1147 >admin-address</TT
1148 > and <TT
1149 CLASS="LITERAL"
1150 >proxy-info-url</TT
1151 >
1152     are unset, the whole "Local Privoxy Support" box on all generated pages will
1153     not be shown.
1154    </P
1155 ><P
1156 >    This URL shouldn't be blocked ;-)
1157    </P
1158 ></DD
1159 ></DL
1160 ></DIV
1161 ></DIV
1162 ></DIV
1163 ><DIV
1164 CLASS="SECT3"
1165 ><H3
1166 CLASS="SECT3"
1167 ><A
1168 NAME="AEN706"
1169 >5.3.3. Debugging</A
1170 ></H3
1171 ><P
1172 >  These options are mainly useful when tracing a problem.
1173   Note that you might also want to invoke
1174   <SPAN
1175 CLASS="APPLICATION"
1176 >Privoxy</SPAN
1177 > with the <TT
1178 CLASS="LITERAL"
1179 >--no-daemon</TT
1180 >
1181   command line option when debugging.
1182  </P
1183 ><DIV
1184 CLASS="SECT4"
1185 ><H4
1186 CLASS="SECT4"
1187 ><A
1188 NAME="AEN711"
1189 >5.3.3.1. debug</A
1190 ></H4
1191 ><P
1192 ></P
1193 ><DIV
1194 CLASS="VARIABLELIST"
1195 ><DL
1196 ><DT
1197 >Specifies:</DT
1198 ><DD
1199 ><P
1200 >    Key values that determine what information gets logged.
1201    </P
1202 ></DD
1203 ><DT
1204 >Type of value:</DT
1205 ><DD
1206 ><P
1207 >Integer values</P
1208 ></DD
1209 ><DT
1210 >Default value:</DT
1211 ><DD
1212 ><P
1213 >12289 (i.e.: URLs plus informational and warning messages)</P
1214 ></DD
1215 ><DT
1216 >Effect if unset:</DT
1217 ><DD
1218 ><P
1219 >    Nothing gets logged.
1220    </P
1221 ></DD
1222 ><DT
1223 >Notes:</DT
1224 ><DD
1225 ><P
1226 >    The available debug levels are:
1227    </P
1228 ><P
1229 >    <TABLE
1230 BORDER="0"
1231 BGCOLOR="#E0E0E0"
1232 WIDTH="90%"
1233 ><TR
1234 ><TD
1235 ><PRE
1236 CLASS="PROGRAMLISTING"
1237 >  debug         1 # show each GET/POST/CONNECT request
1238   debug         2 # show each connection status
1239   debug         4 # show I/O status
1240   debug         8 # show header parsing
1241   debug        16 # log all data into the logfile
1242   debug        32 # debug force feature
1243   debug        64 # debug regular expression filter 
1244   debug       128 # debug fast redirects
1245   debug       256 # debug GIF de-animation
1246   debug       512 # Common Log Format
1247   debug      1024 # debug kill pop-ups
1248   debug      4096 # Startup banner and warnings.
1249   debug      8192 # Non-fatal errors
1250     </PRE
1251 ></TD
1252 ></TR
1253 ></TABLE
1254 >
1255    </P
1256 ><P
1257 >    To select multiple debug levels, you can either add them or use
1258     multiple <TT
1259 CLASS="LITERAL"
1260 >debug</TT
1261 > lines.
1262    </P
1263 ><P
1264 >    A debug level of 1 is informative because it will show you each request
1265     as it happens. <I
1266 CLASS="EMPHASIS"
1267 >1, 4096 and 8192 are highly recommended</I
1268 >
1269     so that you will notice when things go wrong. The other levels are probably
1270     only of interest if you are hunting down a specific problem. They can produce
1271     a hell of an output (especially 16).
1272     
1273    </P
1274 ><P
1275 >    The reporting of <I
1276 CLASS="EMPHASIS"
1277 >fatal</I
1278 > errors (i.e. ones which crash 
1279     <SPAN
1280 CLASS="APPLICATION"
1281 >Privoxy</SPAN
1282 >) is always on and cannot be disabled.
1283    </P
1284 ><P
1285 >    If you want to use CLF (Common Log Format), you should set <SPAN
1286 CLASS="QUOTE"
1287 >"debug
1288     512"</SPAN
1289 > <I
1290 CLASS="EMPHASIS"
1291 >ONLY</I
1292 > and not enable anything else.
1293    </P
1294 ></DD
1295 ></DL
1296 ></DIV
1297 ></DIV
1298 ><DIV
1299 CLASS="SECT4"
1300 ><H4
1301 CLASS="SECT4"
1302 ><A
1303 NAME="AEN746"
1304 >5.3.3.2. single-threaded</A
1305 ></H4
1306 ><P
1307 ></P
1308 ><DIV
1309 CLASS="VARIABLELIST"
1310 ><DL
1311 ><DT
1312 >Specifies:</DT
1313 ><DD
1314 ><P
1315 >    Whether to run only one server thread
1316    </P
1317 ></DD
1318 ><DT
1319 >Type of value:</DT
1320 ><DD
1321 ><P
1322 ><I
1323 CLASS="EMPHASIS"
1324 >None</I
1325 ></P
1326 ></DD
1327 ><DT
1328 >Default value:</DT
1329 ><DD
1330 ><P
1331 ><I
1332 CLASS="EMPHASIS"
1333 >Unset</I
1334 ></P
1335 ></DD
1336 ><DT
1337 >Effect if unset:</DT
1338 ><DD
1339 ><P
1340 >    Multi-threaded (or, where unavailable: forked) operation, i.e. the ability to
1341     serve multiple requests simultaneously.
1342    </P
1343 ></DD
1344 ><DT
1345 >Notes:</DT
1346 ><DD
1347 ><P
1348 >    This option is only there for debug purposes and you should never
1349     need to use it. <I
1350 CLASS="EMPHASIS"
1351 >It will drastically reduce performance.</I
1352 >
1353    </P
1354 ></DD
1355 ></DL
1356 ></DIV
1357 ></DIV
1358 ></DIV
1359 ><DIV
1360 CLASS="SECT3"
1361 ><H3
1362 CLASS="SECT3"
1363 ><A
1364 NAME="AEN772"
1365 >5.3.4. Access Control and Security</A
1366 ></H3
1367 ><P
1368 >  This section of the config file controls the security-relevant aspects
1369   of <SPAN
1370 CLASS="APPLICATION"
1371 >Privoxy</SPAN
1372 >'s configuration.
1373  </P
1374 ><DIV
1375 CLASS="SECT4"
1376 ><H4
1377 CLASS="SECT4"
1378 ><A
1379 NAME="AEN776"
1380 >5.3.4.1. listen-address</A
1381 ></H4
1382 ><P
1383 ></P
1384 ><DIV
1385 CLASS="VARIABLELIST"
1386 ><DL
1387 ><DT
1388 >Specifies:</DT
1389 ><DD
1390 ><P
1391 >    The IP address and TCP port on which <SPAN
1392 CLASS="APPLICATION"
1393 >Privoxy</SPAN
1394 > will
1395     listen for client requests.
1396    </P
1397 ></DD
1398 ><DT
1399 >Type of value:</DT
1400 ><DD
1401 ><P
1402 >[<TT
1403 CLASS="REPLACEABLE"
1404 ><I
1405 >IP-Address</I
1406 ></TT
1407 >]:<TT
1408 CLASS="REPLACEABLE"
1409 ><I
1410 >Port</I
1411 ></TT
1412 ></P
1413 ></DD
1414 ><DT
1415 >Default value:</DT
1416 ><DD
1417 ><P
1418 >localhost:8118</P
1419 ></DD
1420 ><DT
1421 >Effect if unset:</DT
1422 ><DD
1423 ><P
1424 >    Bind to localhost (127.0.0.1), port 8118. This is suitable and recommended for
1425     home users who run <SPAN
1426 CLASS="APPLICATION"
1427 >Privoxy</SPAN
1428 > on the same machine as
1429     their browser.
1430    </P
1431 ></DD
1432 ><DT
1433 >Notes:</DT
1434 ><DD
1435 ><P
1436 >    You will need to configure your browser(s) to this proxy address and port.
1437    </P
1438 ><P
1439 >    If you already have another service running on port 8118, or if you want to
1440     serve requests from other machines (e.g. on your local network) as well, you
1441     will need to override the default.
1442    </P
1443 ><P
1444 >    If you leave out the IP address, <SPAN
1445 CLASS="APPLICATION"
1446 >Privoxy</SPAN
1447 > will
1448     bind to all interfaces (addresses) on your machine and may become reachable
1449     from the Internet. In that case, consider using access control lists (acl's)
1450     (see <SPAN
1451 CLASS="QUOTE"
1452 >"ACLs"</SPAN
1453 > below), or a firewall.
1454    </P
1455 ></DD
1456 ><DT
1457 >Example:</DT
1458 ><DD
1459 ><P
1460 >     Suppose you are running <SPAN
1461 CLASS="APPLICATION"
1462 >Privoxy</SPAN
1463 > on
1464      a machine which has the address 192.168.0.1 on your local private network
1465      (192.168.0.0) and has another outside connection with a different address.
1466      You want it to serve requests from inside only:
1467    </P
1468 ><P
1469 >    <TABLE
1470 BORDER="0"
1471 BGCOLOR="#E0E0E0"
1472 WIDTH="90%"
1473 ><TR
1474 ><TD
1475 ><PRE
1476 CLASS="PROGRAMLISTING"
1477 >  listen-address  192.168.0.1:8118
1478     </PRE
1479 ></TD
1480 ></TR
1481 ></TABLE
1482 >
1483    </P
1484 ></DD
1485 ></DL
1486 ></DIV
1487 ></DIV
1488 ><DIV
1489 CLASS="SECT4"
1490 ><H4
1491 CLASS="SECT4"
1492 ><A
1493 NAME="AEN814"
1494 >5.3.4.2. toggle</A
1495 ></H4
1496 ><P
1497 ></P
1498 ><DIV
1499 CLASS="VARIABLELIST"
1500 ><DL
1501 ><DT
1502 >Specifies:</DT
1503 ><DD
1504 ><P
1505 >    Initial state of "toggle" status
1506    </P
1507 ></DD
1508 ><DT
1509 >Type of value:</DT
1510 ><DD
1511 ><P
1512 >1 or 0</P
1513 ></DD
1514 ><DT
1515 >Default value:</DT
1516 ><DD
1517 ><P
1518 >1</P
1519 ></DD
1520 ><DT
1521 >Effect if unset:</DT
1522 ><DD
1523 ><P
1524 >    Act as if toggled on
1525    </P
1526 ></DD
1527 ><DT
1528 >Notes:</DT
1529 ><DD
1530 ><P
1531 >    If set to 0, <SPAN
1532 CLASS="APPLICATION"
1533 >Privoxy</SPAN
1534 > will start in
1535     <SPAN
1536 CLASS="QUOTE"
1537 >"toggled off"</SPAN
1538 > mode, i.e. behave like a normal, content-neutral
1539     proxy. See <TT
1540 CLASS="LITERAL"
1541 >enable-remote-toggle</TT
1542 >
1543     below. This is not really useful anymore, since toggling is much easier
1544     via <A
1545 HREF="http://config.privoxy.org/toggle"
1546 TARGET="_top"
1547 >the web
1548     interface</A
1549 > then via editing the <TT
1550 CLASS="FILENAME"
1551 >conf</TT
1552 > file.
1553    </P
1554 ><P
1555 >    The windows version will only display the toggle icon in the system tray
1556     if this option is present.
1557    </P
1558 ></DD
1559 ></DL
1560 ></DIV
1561 ></DIV
1562 ><DIV
1563 CLASS="SECT4"
1564 ><H4
1565 CLASS="SECT4"
1566 ><A
1567 NAME="AEN843"
1568 >5.3.4.3. enable-remote-toggle</A
1569 ></H4
1570 ><P
1571 ></P
1572 ><DIV
1573 CLASS="VARIABLELIST"
1574 ><DL
1575 ><DT
1576 >Specifies:</DT
1577 ><DD
1578 ><P
1579 >    Whether or not the <A
1580 HREF="http://config.privoxy.org/toggle"
1581 TARGET="_top"
1582 >web-based toggle
1583     feature</A
1584 > may be used
1585    </P
1586 ></DD
1587 ><DT
1588 >Type of value:</DT
1589 ><DD
1590 ><P
1591 >0 or 1</P
1592 ></DD
1593 ><DT
1594 >Default value:</DT
1595 ><DD
1596 ><P
1597 >1</P
1598 ></DD
1599 ><DT
1600 >Effect if unset:</DT
1601 ><DD
1602 ><P
1603 >    The web-based toggle feature is disabled.
1604    </P
1605 ></DD
1606 ><DT
1607 >Notes:</DT
1608 ><DD
1609 ><P
1610 >    When toggled off, <SPAN
1611 CLASS="APPLICATION"
1612 >Privoxy</SPAN
1613 > acts like a normal,
1614     content-neutral proxy, i.e. it acts as if none of the actions applied to
1615     any URL.
1616    </P
1617 ><P
1618 >    For the time being, access to the toggle feature can <I
1619 CLASS="EMPHASIS"
1620 >not</I
1621 > be
1622     controlled separately by <SPAN
1623 CLASS="QUOTE"
1624 >"ACLs"</SPAN
1625 > or HTTP authentication,
1626     so that everybody who can access <SPAN
1627 CLASS="APPLICATION"
1628 >Privoxy</SPAN
1629 > (see
1630     <SPAN
1631 CLASS="QUOTE"
1632 >"ACLs"</SPAN
1633 > and <TT
1634 CLASS="LITERAL"
1635 >listen-address</TT
1636 > above) can
1637     toggle it for all users. So this option is <I
1638 CLASS="EMPHASIS"
1639 >not recommended</I
1640 >
1641     for multi-user environments with untrusted users.
1642    </P
1643 ><P
1644 >    Note that you must have compiled <SPAN
1645 CLASS="APPLICATION"
1646 >Privoxy</SPAN
1647 > with
1648     support for this feature, otherwise this option has no effect. 
1649    </P
1650 ></DD
1651 ></DL
1652 ></DIV
1653 ></DIV
1654 ><DIV
1655 CLASS="SECT4"
1656 ><H4
1657 CLASS="SECT4"
1658 ><A
1659 NAME="AEN877"
1660 >5.3.4.4. enable-edit-actions</A
1661 ></H4
1662 ><P
1663 ></P
1664 ><DIV
1665 CLASS="VARIABLELIST"
1666 ><DL
1667 ><DT
1668 >Specifies:</DT
1669 ><DD
1670 ><P
1671 >    Whether or not the <A
1672 HREF="http://config.privoxy.org/edit-actions"
1673 TARGET="_top"
1674 >web-based actions
1675     file editor</A
1676 > may be used
1677    </P
1678 ></DD
1679 ><DT
1680 >Type of value:</DT
1681 ><DD
1682 ><P
1683 >0 or 1</P
1684 ></DD
1685 ><DT
1686 >Default value:</DT
1687 ><DD
1688 ><P
1689 >1</P
1690 ></DD
1691 ><DT
1692 >Effect if unset:</DT
1693 ><DD
1694 ><P
1695 >    The web-based actions file editor is disabled.
1696    </P
1697 ></DD
1698 ><DT
1699 >Notes:</DT
1700 ><DD
1701 ><P
1702 >    For the time being, access to the editor can <I
1703 CLASS="EMPHASIS"
1704 >not</I
1705 > be
1706     controlled separately by <SPAN
1707 CLASS="QUOTE"
1708 >"ACLs"</SPAN
1709 > or HTTP authentication,
1710     so that everybody who can access <SPAN
1711 CLASS="APPLICATION"
1712 >Privoxy</SPAN
1713 > (see
1714     <SPAN
1715 CLASS="QUOTE"
1716 >"ACLs"</SPAN
1717 > and <TT
1718 CLASS="LITERAL"
1719 >listen-address</TT
1720 > above) can
1721     modify its configuration for all users. So this option is <I
1722 CLASS="EMPHASIS"
1723 >not
1724     recommended</I
1725 > for multi-user environments with untrusted users.
1726    </P
1727 ><P
1728 >    Note that you must have compiled <SPAN
1729 CLASS="APPLICATION"
1730 >Privoxy</SPAN
1731 > with
1732     support for this feature, otherwise this option has no effect. 
1733    </P
1734 ></DD
1735 ></DL
1736 ></DIV
1737 ></DIV
1738 ><DIV
1739 CLASS="SECT4"
1740 ><H4
1741 CLASS="SECT4"
1742 ><A
1743 NAME="AEN909"
1744 >5.3.4.5. ACLs: permit-access and deny-access</A
1745 ></H4
1746 ><P
1747 ></P
1748 ><DIV
1749 CLASS="VARIABLELIST"
1750 ><DL
1751 ><DT
1752 >Specifies:</DT
1753 ><DD
1754 ><P
1755 >    Who can access what.
1756    </P
1757 ></DD
1758 ><DT
1759 >Type of value:</DT
1760 ><DD
1761 ><P
1762 >    <TT
1763 CLASS="REPLACEABLE"
1764 ><I
1765 >src_addr</I
1766 ></TT
1767 >[/<TT
1768 CLASS="REPLACEABLE"
1769 ><I
1770 >src_masklen</I
1771 ></TT
1772 >]
1773     [<TT
1774 CLASS="REPLACEABLE"
1775 ><I
1776 >dst_addr</I
1777 ></TT
1778 >[/<TT
1779 CLASS="REPLACEABLE"
1780 ><I
1781 >dst_masklen</I
1782 ></TT
1783 >]]
1784    </P
1785 ><P
1786 >    Where <TT
1787 CLASS="REPLACEABLE"
1788 ><I
1789 >src_addr</I
1790 ></TT
1791 > and 
1792    <TT
1793 CLASS="REPLACEABLE"
1794 ><I
1795 >dst_addr</I
1796 ></TT
1797 > are IP addresses in dotted decimal notation or valid
1798     DNS names, and <TT
1799 CLASS="REPLACEABLE"
1800 ><I
1801 >src_masklen</I
1802 ></TT
1803 > and
1804     <TT
1805 CLASS="REPLACEABLE"
1806 ><I
1807 >dst_masklen</I
1808 ></TT
1809 > are subnet masks in CIDR notation, i.e. integer
1810     values from 2 to 30 representing the length (in bits) of the network address. The masks and the whole
1811     destination part are optional.
1812    </P
1813 ></DD
1814 ><DT
1815 >Default value:</DT
1816 ><DD
1817 ><P
1818 ><I
1819 CLASS="EMPHASIS"
1820 >Unset</I
1821 ></P
1822 ></DD
1823 ><DT
1824 >Effect if unset:</DT
1825 ><DD
1826 ><P
1827 >    Don't restrict access further than implied by <TT
1828 CLASS="LITERAL"
1829 >listen-address</TT
1830 >
1831    </P
1832 ></DD
1833 ><DT
1834 >Notes:</DT
1835 ><DD
1836 ><P
1837 >    Access controls are included at the request of ISPs and systems
1838     administrators, and <I
1839 CLASS="EMPHASIS"
1840 >are not usually needed by individual users</I
1841 >.
1842     For a typical home user, it will normally suffice to ensure that 
1843     <SPAN
1844 CLASS="APPLICATION"
1845 >Privoxy</SPAN
1846 > only listens on the localhost or internal (home)
1847     network address by means of the <TT
1848 CLASS="LITERAL"
1849 >listen-address</TT
1850 > option.
1851    </P
1852 ><P
1853 >    Please see the warnings in the FAQ that this proxy is not intended to be a substitute
1854     for a firewall or to encourage anyone to defer addressing basic security
1855     weaknesses.
1856    </P
1857 ><P
1858 >    Multiple ACL lines are OK.
1859     If any ACLs are specified, then the <SPAN
1860 CLASS="APPLICATION"
1861 >Privoxy</SPAN
1862 >
1863     talks only to IP addresses that match at least one <TT
1864 CLASS="LITERAL"
1865 >permit-access</TT
1866 > line
1867     and don't match any subsequent <TT
1868 CLASS="LITERAL"
1869 >deny-access</TT
1870 > line. In other words, the
1871     last match wins, with the default being <TT
1872 CLASS="LITERAL"
1873 >deny-access</TT
1874 >.
1875    </P
1876 ><P
1877 >    If <SPAN
1878 CLASS="APPLICATION"
1879 >Privoxy</SPAN
1880 > is using a forwarder (see <TT
1881 CLASS="LITERAL"
1882 >forward</TT
1883 > below)
1884     for a particular destination URL, the <TT
1885 CLASS="REPLACEABLE"
1886 ><I
1887 >dst_addr</I
1888 ></TT
1889 >
1890     that is examined is the address of the forwarder and <I
1891 CLASS="EMPHASIS"
1892 >NOT</I
1893 > the address
1894     of the ultimate target. This is necessary because it may be impossible for the local
1895     <SPAN
1896 CLASS="APPLICATION"
1897 >Privoxy</SPAN
1898 > to determine the IP address of the
1899     ultimate target (that's often what gateways are used for).
1900    </P
1901 ><P
1902 >    You should prefer using IP addresses over DNS names, because the address lookups take
1903     time. All DNS names must resolve! You can <I
1904 CLASS="EMPHASIS"
1905 >not</I
1906 > use domain patterns
1907     like <SPAN
1908 CLASS="QUOTE"
1909 >"*.org"</SPAN
1910 > or partial domain names. If a DNS name resolves to multiple
1911     IP addresses, only the first one is used.
1912    </P
1913 ><P
1914 >    Denying access to particular sites by ACL may have undesired side effects
1915     if the site in question is hosted on a machine which also hosts other sites.
1916    </P
1917 ></DD
1918 ><DT
1919 >Examples:</DT
1920 ><DD
1921 ><P
1922 >    Explicitly define the default behavior if no ACL and
1923     <TT
1924 CLASS="LITERAL"
1925 >listen-address</TT
1926 > are set: <SPAN
1927 CLASS="QUOTE"
1928 >"localhost"</SPAN
1929 >
1930     is OK. The absence of a <TT
1931 CLASS="REPLACEABLE"
1932 ><I
1933 >dst_addr</I
1934 ></TT
1935 > implies that
1936     <I
1937 CLASS="EMPHASIS"
1938 >all</I
1939 > destination addresses are OK:
1940    </P
1941 ><P
1942 >    <TABLE
1943 BORDER="0"
1944 BGCOLOR="#E0E0E0"
1945 WIDTH="90%"
1946 ><TR
1947 ><TD
1948 ><PRE
1949 CLASS="SCREEN"
1950 >  permit-access  localhost
1951     </PRE
1952 ></TD
1953 ></TR
1954 ></TABLE
1955 >
1956    </P
1957 ><P
1958 >    Allow any host on the same class C subnet as www.privoxy.org access to
1959     nothing but www.example.com:
1960    </P
1961 ><P
1962 >    <TABLE
1963 BORDER="0"
1964 BGCOLOR="#E0E0E0"
1965 WIDTH="90%"
1966 ><TR
1967 ><TD
1968 ><PRE
1969 CLASS="SCREEN"
1970 >  permit-access  www.privoxy.org/24 www.example.com/32
1971     </PRE
1972 ></TD
1973 ></TR
1974 ></TABLE
1975 >
1976    </P
1977 ><P
1978 >    Allow access from any host on the 26-bit subnet 192.168.45.64 to anywhere,
1979     with the exception that 192.168.45.73 may not access www.dirty-stuff.example.com:
1980    </P
1981 ><P
1982 >    <TABLE
1983 BORDER="0"
1984 BGCOLOR="#E0E0E0"
1985 WIDTH="90%"
1986 ><TR
1987 ><TD
1988 ><PRE
1989 CLASS="SCREEN"
1990 >  permit-access  192.168.45.64/26
1991   deny-access    192.168.45.73    www.dirty-stuff.example.com
1992     </PRE
1993 ></TD
1994 ></TR
1995 ></TABLE
1996 >
1997    </P
1998 ></DD
1999 ></DL
2000 ></DIV
2001 ></DIV
2002 ><DIV
2003 CLASS="SECT4"
2004 ><H4
2005 CLASS="SECT4"
2006 ><A
2007 NAME="AEN978"
2008 >5.3.4.6. buffer-limit</A
2009 ></H4
2010 ><P
2011 ></P
2012 ><DIV
2013 CLASS="VARIABLELIST"
2014 ><DL
2015 ><DT
2016 >Specifies:</DT
2017 ><DD
2018 ><P
2019 >    Maximum size of the buffer for content filtering.
2020    </P
2021 ></DD
2022 ><DT
2023 >Type of value:</DT
2024 ><DD
2025 ><P
2026 >Size in Kbytes</P
2027 ></DD
2028 ><DT
2029 >Default value:</DT
2030 ><DD
2031 ><P
2032 >4096</P
2033 ></DD
2034 ><DT
2035 >Effect if unset:</DT
2036 ><DD
2037 ><P
2038 >    Use a 4MB (4096 KB) limit.
2039    </P
2040 ></DD
2041 ><DT
2042 >Notes:</DT
2043 ><DD
2044 ><P
2045 >    For content filtering, i.e. the <TT
2046 CLASS="LITERAL"
2047 >+filter</TT
2048 > and
2049     <TT
2050 CLASS="LITERAL"
2051 >+deanimate-gif</TT
2052 > actions, it is necessary that 
2053     <SPAN
2054 CLASS="APPLICATION"
2055 >Privoxy</SPAN
2056 > buffers the entire document body.
2057     This can be potentially dangerous, since a server could just keep sending
2058     data indefinitely and wait for your RAM to exhaust -- with nasty consequences.
2059     Hence this option.
2060    </P
2061 ><P
2062 >    When a document buffer size reaches the <TT
2063 CLASS="LITERAL"
2064 >buffer-limit</TT
2065 >, it is
2066     flushed to the client unfiltered and no further attempt to
2067     filter the rest of the document is made. Remember that there may be multiple threads
2068     running, which might require up to <TT
2069 CLASS="LITERAL"
2070 >buffer-limit</TT
2071 > Kbytes
2072     <I
2073 CLASS="EMPHASIS"
2074 >each</I
2075 >, unless you have enabled <SPAN
2076 CLASS="QUOTE"
2077 >"single-threaded"</SPAN
2078 >
2079     above.
2080    </P
2081 ></DD
2082 ></DL
2083 ></DIV
2084 ></DIV
2085 ></DIV
2086 ><DIV
2087 CLASS="SECT3"
2088 ><H3
2089 CLASS="SECT3"
2090 ><A
2091 NAME="FORWARDING"
2092 >5.3.5. Forwarding</A
2093 ></H3
2094 ><P
2095 > This feature allows routing of HTTP requests through a chain of
2096  multiple proxies.
2097  It can be used to better protect privacy and confidentiality when
2098  accessing specific domains by routing requests to those domains
2099  through an anonymous public proxy (see e.g. <A
2100 HREF="http://www.multiproxy.org/anon_list.htm"
2101 TARGET="_top"
2102 >http://www.multiproxy.org/anon_list.htm</A
2103 >)
2104  Or to use a caching proxy to speed up browsing. Or chaining to a parent
2105  proxy may be necessary because the machine that <SPAN
2106 CLASS="APPLICATION"
2107 >Privoxy</SPAN
2108 >
2109  runs on has no direct Internet access.</P
2110 ><P
2111 > Also specified here are SOCKS proxies. <SPAN
2112 CLASS="APPLICATION"
2113 >Privoxy</SPAN
2114 >
2115  supports the SOCKS 4 and SOCKS 4A protocols.</P
2116 ><DIV
2117 CLASS="SECT4"
2118 ><H4
2119 CLASS="SECT4"
2120 ><A
2121 NAME="AEN1016"
2122 >5.3.5.1. forward</A
2123 ></H4
2124 ><P
2125 ></P
2126 ><DIV
2127 CLASS="VARIABLELIST"
2128 ><DL
2129 ><DT
2130 >Specifies:</DT
2131 ><DD
2132 ><P
2133 >    To which parent HTTP proxy specific requests should be routed.
2134    </P
2135 ></DD
2136 ><DT
2137 >Type of value:</DT
2138 ><DD
2139 ><P
2140 >    <TT
2141 CLASS="REPLACEABLE"
2142 ><I
2143 >target_domain</I
2144 ></TT
2145 >[:<TT
2146 CLASS="REPLACEABLE"
2147 ><I
2148 >port</I
2149 ></TT
2150 >]
2151     <TT
2152 CLASS="REPLACEABLE"
2153 ><I
2154 >http_parent</I
2155 ></TT
2156 >[/<TT
2157 CLASS="REPLACEABLE"
2158 ><I
2159 >port</I
2160 ></TT
2161 >]
2162    </P
2163 ><P
2164 >    Where <TT
2165 CLASS="REPLACEABLE"
2166 ><I
2167 >target_domain</I
2168 ></TT
2169 > is a domain name pattern (see the
2170     chapter on domain matching in the actions file),
2171     <TT
2172 CLASS="REPLACEABLE"
2173 ><I
2174 >http_parent</I
2175 ></TT
2176 > is the address of the parent HTTP proxy
2177     as an IP addresses in dotted decimal notation or as a valid DNS name (or <SPAN
2178 CLASS="QUOTE"
2179 >"."</SPAN
2180 > to denote
2181     <SPAN
2182 CLASS="QUOTE"
2183 >"no forwarding"</SPAN
2184 >, and the optional 
2185     <TT
2186 CLASS="REPLACEABLE"
2187 ><I
2188 >port</I
2189 ></TT
2190 > parameters are TCP ports, i.e. integer
2191     values from 1 to 64535
2192    </P
2193 ></DD
2194 ><DT
2195 >Default value:</DT
2196 ><DD
2197 ><P
2198 ><I
2199 CLASS="EMPHASIS"
2200 >Unset</I
2201 ></P
2202 ></DD
2203 ><DT
2204 >Effect if unset:</DT
2205 ><DD
2206 ><P
2207 >    Don't use parent HTTP proxies.
2208    </P
2209 ></DD
2210 ><DT
2211 >Notes:</DT
2212 ><DD
2213 ><P
2214 >    If <TT
2215 CLASS="REPLACEABLE"
2216 ><I
2217 >http_parent</I
2218 ></TT
2219 > is <SPAN
2220 CLASS="QUOTE"
2221 >"."</SPAN
2222 >, then requests are not
2223     forwarded to another HTTP proxy but are made directly to the web servers.
2224    </P
2225 ><P
2226 >    Multiple lines are OK, they are checked in sequence, and the last match wins.
2227    </P
2228 ></DD
2229 ><DT
2230 >Examples:</DT
2231 ><DD
2232 ><P
2233 >    Everything goes to an example anonymizing proxy, except SSL on port 443 (which it doesn't handle):
2234    </P
2235 ><P
2236 >    <TABLE
2237 BORDER="0"
2238 BGCOLOR="#E0E0E0"
2239 WIDTH="90%"
2240 ><TR
2241 ><TD
2242 ><PRE
2243 CLASS="SCREEN"
2244 >  forward   .*     anon-proxy.example.org:8080
2245   forward   :443   .
2246     </PRE
2247 ></TD
2248 ></TR
2249 ></TABLE
2250 >
2251    </P
2252 ><P
2253 >    Everything goes to our example ISP's caching proxy, except for requests
2254     to that ISP's sites:
2255    </P
2256 ><P
2257 >    <TABLE
2258 BORDER="0"
2259 BGCOLOR="#E0E0E0"
2260 WIDTH="90%"
2261 ><TR
2262 ><TD
2263 ><PRE
2264 CLASS="SCREEN"
2265 >  forward   .*.                caching-proxy.example-isp.net:8000
2266   forward   .example-isp.net   .
2267     </PRE
2268 ></TD
2269 ></TR
2270 ></TABLE
2271 >
2272    </P
2273 ></DD
2274 ></DL
2275 ></DIV
2276 ></DIV
2277 ><DIV
2278 CLASS="SECT4"
2279 ><H4
2280 CLASS="SECT4"
2281 ><A
2282 NAME="AEN1062"
2283 >5.3.5.2. forward-socks4 and forward-socks4a</A
2284 ></H4
2285 ><P
2286 ></P
2287 ><DIV
2288 CLASS="VARIABLELIST"
2289 ><DL
2290 ><DT
2291 >Specifies:</DT
2292 ><DD
2293 ><P
2294 >    Through which SOCKS proxy (and to which parent HTTP proxy) specific requests should be routed.
2295    </P
2296 ></DD
2297 ><DT
2298 >Type of value:</DT
2299 ><DD
2300 ><P
2301 >    <TT
2302 CLASS="REPLACEABLE"
2303 ><I
2304 >target_domain</I
2305 ></TT
2306 >[:<TT
2307 CLASS="REPLACEABLE"
2308 ><I
2309 >port</I
2310 ></TT
2311 >]
2312     <TT
2313 CLASS="REPLACEABLE"
2314 ><I
2315 >socks_proxy</I
2316 ></TT
2317 >[/<TT
2318 CLASS="REPLACEABLE"
2319 ><I
2320 >port</I
2321 ></TT
2322 >]
2323     <TT
2324 CLASS="REPLACEABLE"
2325 ><I
2326 >http_parent</I
2327 ></TT
2328 >[/<TT
2329 CLASS="REPLACEABLE"
2330 ><I
2331 >port</I
2332 ></TT
2333 >]
2334    </P
2335 ><P
2336 >    Where <TT
2337 CLASS="REPLACEABLE"
2338 ><I
2339 >target_domain</I
2340 ></TT
2341 > is a domain name pattern (see the
2342     chapter on domain matching in the actions file),
2343     <TT
2344 CLASS="REPLACEABLE"
2345 ><I
2346 >http_parent</I
2347 ></TT
2348 > and <TT
2349 CLASS="REPLACEABLE"
2350 ><I
2351 >socks_proxy</I
2352 ></TT
2353 >
2354     are IP addresses in dotted decimal notation or valid DNS names (<TT
2355 CLASS="REPLACEABLE"
2356 ><I
2357 >http_parent</I
2358 ></TT
2359 >
2360     may be <SPAN
2361 CLASS="QUOTE"
2362 >"."</SPAN
2363 > to denote <SPAN
2364 CLASS="QUOTE"
2365 >"no HTTP forwarding"</SPAN
2366 >), and the optional 
2367     <TT
2368 CLASS="REPLACEABLE"
2369 ><I
2370 >port</I
2371 ></TT
2372 > parameters are TCP ports, i.e. integer values from 1 to 64535
2373    </P
2374 ></DD
2375 ><DT
2376 >Default value:</DT
2377 ><DD
2378 ><P
2379 ><I
2380 CLASS="EMPHASIS"
2381 >Unset</I
2382 ></P
2383 ></DD
2384 ><DT
2385 >Effect if unset:</DT
2386 ><DD
2387 ><P
2388 >    Don't use SOCKS proxies.
2389    </P
2390 ></DD
2391 ><DT
2392 >Notes:</DT
2393 ><DD
2394 ><P
2395 >    Multiple lines are OK, they are checked in sequence, and the last match wins.
2396    </P
2397 ><P
2398 >    The difference between <TT
2399 CLASS="LITERAL"
2400 >forward-socks4</TT
2401 > and <TT
2402 CLASS="LITERAL"
2403 >forward-socks4a</TT
2404 >
2405     is that in the SOCKS 4A protocol, the DNS resolution of the target hostname happens on the SOCKS
2406     server, while in SOCKS 4 it happens locally.
2407    </P
2408 ><P
2409 >    If <TT
2410 CLASS="REPLACEABLE"
2411 ><I
2412 >http_parent</I
2413 ></TT
2414 > is <SPAN
2415 CLASS="QUOTE"
2416 >"."</SPAN
2417 >, then requests are not
2418     forwarded to another HTTP proxy but are made (HTTP-wise) directly to the web servers, albeit through
2419     a SOCKS proxy.
2420    </P
2421 ></DD
2422 ><DT
2423 >Examples:</DT
2424 ><DD
2425 ><P
2426 >     From the company example.com, direct connections are made to all
2427      <SPAN
2428 CLASS="QUOTE"
2429 >"internal"</SPAN
2430 > domains, but everything outbound goes through
2431      their ISP's proxy by way of example.com's corporate SOCKS 4A gateway to
2432      the Internet.
2433    </P
2434 ><P
2435 >    <TABLE
2436 BORDER="0"
2437 BGCOLOR="#E0E0E0"
2438 WIDTH="90%"
2439 ><TR
2440 ><TD
2441 ><PRE
2442 CLASS="SCREEN"
2443 >  forward-socks4a   .*.            socks-gw.example.com:1080  www-cache.example-isp.net:8080
2444   forward           .example.com   .
2445     </PRE
2446 ></TD
2447 ></TR
2448 ></TABLE
2449 >
2450    </P
2451 ><P
2452 >    A rule that uses a SOCKS 4 gateway for all destinations but no HTTP parent looks like this:
2453    </P
2454 ><P
2455 >    <TABLE
2456 BORDER="0"
2457 BGCOLOR="#E0E0E0"
2458 WIDTH="90%"
2459 ><TR
2460 ><TD
2461 ><PRE
2462 CLASS="SCREEN"
2463 >  forward-socks4   .*.            socks-gw.example.com:1080  .
2464     </PRE
2465 ></TD
2466 ></TR
2467 ></TABLE
2468 >
2469    </P
2470 ></DD
2471 ></DL
2472 ></DIV
2473 ></DIV
2474 ><DIV
2475 CLASS="SECT4"
2476 ><H4
2477 CLASS="SECT4"
2478 ><A
2479 NAME="AEN1116"
2480 >5.3.5.3. Advanced Forwarding Examples</A
2481 ></H4
2482 ><P
2483 > If you have links to multiple ISPs that provide various special content 
2484  only to their subscribers, you can configure multiple <SPAN
2485 CLASS="APPLICATION"
2486 >Privoxies</SPAN
2487 >
2488  which have connections to the respective ISPs to act as forwarders to each other, so that
2489  <I
2490 CLASS="EMPHASIS"
2491 >your</I
2492 > users can see the internal content of all ISPs.</P
2493 ><P
2494 > Assume that host-a has a PPP connection to isp-a.net. And host-b has a PPP connection to
2495  isp-b.net. Both run <SPAN
2496 CLASS="APPLICATION"
2497 >Privoxy</SPAN
2498 >. Their forwarding
2499  configuration can look like this:</P
2500 ><P
2501 > host-a:</P
2502 ><P
2503 > <TABLE
2504 BORDER="0"
2505 BGCOLOR="#E0E0E0"
2506 WIDTH="100%"
2507 ><TR
2508 ><TD
2509 ><PRE
2510 CLASS="SCREEN"
2511 >  forward    .*.         .
2512   forward    .isp-b.net  host-b:8118
2513  </PRE
2514 ></TD
2515 ></TR
2516 ></TABLE
2517 ></P
2518 ><P
2519 > host-b:</P
2520 ><P
2521 > <TABLE
2522 BORDER="0"
2523 BGCOLOR="#E0E0E0"
2524 WIDTH="100%"
2525 ><TR
2526 ><TD
2527 ><PRE
2528 CLASS="SCREEN"
2529 >  forward    .*.         .
2530   forward    .isp-a.net  host-a:8118
2531  </PRE
2532 ></TD
2533 ></TR
2534 ></TABLE
2535 ></P
2536 ><P
2537 > Now, your users can set their browser's proxy to use either
2538  host-a or host-b and be able to browse the internal content
2539  of both isp-a and isp-b.</P
2540 ><P
2541 > If you intend to chain <SPAN
2542 CLASS="APPLICATION"
2543 >Privoxy</SPAN
2544 > and 
2545  <SPAN
2546 CLASS="APPLICATION"
2547 >squid</SPAN
2548 > locally, then chain as 
2549  <TT
2550 CLASS="LITERAL"
2551 >browser -&#62; squid -&#62; privoxy</TT
2552 > is the recommended way. </P
2553 ><P
2554 > Assuming that <SPAN
2555 CLASS="APPLICATION"
2556 >Privoxy</SPAN
2557 > and <SPAN
2558 CLASS="APPLICATION"
2559 >squid</SPAN
2560 >
2561  run on the same box, your squid configuration could then look like this:</P
2562 ><P
2563 > <TABLE
2564 BORDER="0"
2565 BGCOLOR="#E0E0E0"
2566 WIDTH="100%"
2567 ><TR
2568 ><TD
2569 ><PRE
2570 CLASS="SCREEN"
2571 >  # Define Privoxy as parent proxy (without ICP) 
2572   cache_peer 127.0.0.1 parent 8118 7 no-query 
2573
2574   # Define ACL for protocol FTP 
2575   acl ftp proto FTP 
2576
2577   # Do not forward FTP requests to Privoxy
2578   always_direct allow ftp 
2579
2580   # Forward all the rest to Privoxy
2581   never_direct allow all 
2582  </PRE
2583 ></TD
2584 ></TR
2585 ></TABLE
2586 ></P
2587 ><P
2588 > You would then need to change your browser's proxy settings to <SPAN
2589 CLASS="APPLICATION"
2590 >squid</SPAN
2591 >'s address and port.
2592  Squid normally uses port 3128. If unsure consult <TT
2593 CLASS="LITERAL"
2594 >http_port</TT
2595 > in <TT
2596 CLASS="FILENAME"
2597 >squid.conf</TT
2598 >.</P
2599 ></DIV
2600 ></DIV
2601 ><DIV
2602 CLASS="SECT3"
2603 ><H3
2604 CLASS="SECT3"
2605 ><A
2606 NAME="AEN1143"
2607 >5.3.6. Windows GUI Options</A
2608 ></H3
2609 ><P
2610 > <SPAN
2611 CLASS="APPLICATION"
2612 >Privoxy</SPAN
2613 > has a number of options specific to the
2614  Windows GUI interface:</P
2615 ><P
2616 > If <SPAN
2617 CLASS="QUOTE"
2618 >"activity-animation"</SPAN
2619 > is set to 1, the
2620  <SPAN
2621 CLASS="APPLICATION"
2622 >Privoxy</SPAN
2623 > icon will animate when
2624  <SPAN
2625 CLASS="QUOTE"
2626 >"Privoxy"</SPAN
2627 > is active. To turn off, set to 0.</P
2628 ><P
2629 > <TT
2630 CLASS="LITERAL"
2631 >  <P
2632 CLASS="LITERALLAYOUT"
2633 >&nbsp;&nbsp;<I
2634 CLASS="EMPHASIS"
2635 >activity-animation   1</I
2636 ><br>
2637 &nbsp;&nbsp;&nbsp;</P
2638
2639  </TT
2640 ></P
2641 ><P
2642 > If <SPAN
2643 CLASS="QUOTE"
2644 >"log-messages"</SPAN
2645 > is set to 1,
2646  <SPAN
2647 CLASS="APPLICATION"
2648 >Privoxy</SPAN
2649 > will log messages to the console
2650  window:</P
2651 ><P
2652 > <TT
2653 CLASS="LITERAL"
2654 >  <P
2655 CLASS="LITERALLAYOUT"
2656 >&nbsp;&nbsp;<I
2657 CLASS="EMPHASIS"
2658 >log-messages       1</I
2659 ><br>
2660 &nbsp;&nbsp;&nbsp;</P
2661
2662  </TT
2663 ></P
2664 ><P
2665
2666  If <SPAN
2667 CLASS="QUOTE"
2668 >"log-buffer-size"</SPAN
2669 > is set to 1, the size of the log buffer,
2670  i.e. the amount of memory used for the log messages displayed in the
2671  console window, will be limited to <SPAN
2672 CLASS="QUOTE"
2673 >"log-max-lines"</SPAN
2674 > (see below).</P
2675 ><P
2676 > Warning: Setting this to 0 will result in the buffer to grow infinitely and
2677  eat up all your memory!</P
2678 ><P
2679 > <TT
2680 CLASS="LITERAL"
2681 >  <P
2682 CLASS="LITERALLAYOUT"
2683 >&nbsp;&nbsp;<I
2684 CLASS="EMPHASIS"
2685 >log-buffer-size      1</I
2686 ><br>
2687 &nbsp;&nbsp;&nbsp;</P
2688
2689  </TT
2690 ></P
2691 ><P
2692 > <SPAN
2693 CLASS="APPLICATION"
2694 >log-max-lines</SPAN
2695 > is the maximum number of lines held
2696  in the log buffer. See above.</P
2697 ><P
2698 > <TT
2699 CLASS="LITERAL"
2700 >  <P
2701 CLASS="LITERALLAYOUT"
2702 >&nbsp;&nbsp;<I
2703 CLASS="EMPHASIS"
2704 >log-max-lines      200</I
2705 ><br>
2706 &nbsp;&nbsp;&nbsp;</P
2707
2708  </TT
2709 ></P
2710 ><P
2711 > If <SPAN
2712 CLASS="QUOTE"
2713 >"log-highlight-messages"</SPAN
2714 > is set to 1,
2715  <SPAN
2716 CLASS="APPLICATION"
2717 >Privoxy</SPAN
2718 > will highlight portions of the log
2719  messages with a bold-faced font:</P
2720 ><P
2721 > <TT
2722 CLASS="LITERAL"
2723 >  <P
2724 CLASS="LITERALLAYOUT"
2725 >&nbsp;&nbsp;<I
2726 CLASS="EMPHASIS"
2727 >log-highlight-messages   1</I
2728 ><br>
2729 &nbsp;&nbsp;&nbsp;</P
2730
2731  </TT
2732 ></P
2733 ><P
2734 > The font used in the console window:</P
2735 ><P
2736 > <TT
2737 CLASS="LITERAL"
2738 >  <P
2739 CLASS="LITERALLAYOUT"
2740 >&nbsp;&nbsp;<I
2741 CLASS="EMPHASIS"
2742 >log-font-name        Comic Sans MS</I
2743 ><br>
2744 &nbsp;&nbsp;&nbsp;</P
2745
2746  </TT
2747 ></P
2748 ><P
2749 > Font size used in the console window:</P
2750 ><P
2751 > <TT
2752 CLASS="LITERAL"
2753 >  <P
2754 CLASS="LITERALLAYOUT"
2755 >&nbsp;&nbsp;<I
2756 CLASS="EMPHASIS"
2757 >log-font-size        8</I
2758 ><br>
2759 &nbsp;&nbsp;&nbsp;</P
2760
2761  </TT
2762 ></P
2763 ><P
2764 >  
2765  <SPAN
2766 CLASS="QUOTE"
2767 >"show-on-task-bar"</SPAN
2768 > controls whether or not
2769  <SPAN
2770 CLASS="APPLICATION"
2771 >Privoxy</SPAN
2772 > will appear as a button on the Task bar
2773  when minimized:</P
2774 ><P
2775 > <TT
2776 CLASS="LITERAL"
2777 >  <P
2778 CLASS="LITERALLAYOUT"
2779 >&nbsp;&nbsp;<I
2780 CLASS="EMPHASIS"
2781 >show-on-task-bar     0</I
2782 ><br>
2783 &nbsp;&nbsp;&nbsp;</P
2784
2785  </TT
2786 ></P
2787 ><P
2788 > If <SPAN
2789 CLASS="QUOTE"
2790 >"close-button-minimizes"</SPAN
2791 > is set to 1, the Windows close
2792  button will minimize <SPAN
2793 CLASS="APPLICATION"
2794 >Privoxy</SPAN
2795 > instead of closing
2796  the program (close with the exit option on the File menu).</P
2797 ><P
2798 > <TT
2799 CLASS="LITERAL"
2800 >  <P
2801 CLASS="LITERALLAYOUT"
2802 >&nbsp;&nbsp;<I
2803 CLASS="EMPHASIS"
2804 >close-button-minimizes  1</I
2805 ><br>
2806 &nbsp;&nbsp;&nbsp;</P
2807
2808  </TT
2809 ></P
2810 ><P
2811 > The <SPAN
2812 CLASS="QUOTE"
2813 >"hide-console"</SPAN
2814 > option is specific to the MS-Win console
2815  version of <SPAN
2816 CLASS="APPLICATION"
2817 >Privoxy</SPAN
2818 >. If this option is used,
2819  <SPAN
2820 CLASS="APPLICATION"
2821 >Privoxy</SPAN
2822 > will disconnect from and hide  the
2823  command console.</P
2824 ><P
2825 > <TT
2826 CLASS="LITERAL"
2827 >  <P
2828 CLASS="LITERALLAYOUT"
2829 >&nbsp;&nbsp;#hide-console<br>
2830 &nbsp;&nbsp;&nbsp;</P
2831
2832  </TT
2833 ></P
2834 ></DIV
2835 ></DIV
2836 ><DIV
2837 CLASS="SECT2"
2838 ><H2
2839 CLASS="SECT2"
2840 ><A
2841 NAME="ACTIONSFILE"
2842 >5.4. The Actions File</A
2843 ></H2
2844 ><P
2845 > The actions file (<TT
2846 CLASS="FILENAME"
2847 >default.action</TT
2848 >, formerly:
2849  <TT
2850 CLASS="FILENAME"
2851 >actionsfile</TT
2852 > or <TT
2853 CLASS="FILENAME"
2854 >ijb.action</TT
2855 >) is used
2856  to define what actions <SPAN
2857 CLASS="APPLICATION"
2858 >Privoxy</SPAN
2859 > takes for which
2860  URLs, and thus determines how ad images, cookies and various other aspects
2861  of HTTP content and transactions are handled on which sites (or even parts
2862  thereof).</P
2863 ><P
2864
2865  Anything you want can blocked, including ads, banners, or just some obnoxious
2866  URL that you would rather not see. Cookies can be accepted or rejected, or
2867  accepted only during the current browser session (i.e. not written to disk),
2868  content can be modified, JavaScripts tamed, user-tracking fooled, and much more.
2869  See below for a complete list of available actions.</P
2870 ><P
2871 > An actions file typically has sections. At the top, <SPAN
2872 CLASS="QUOTE"
2873 >"aliases"</SPAN
2874 > are 
2875  defined (discussed below), then the default set of rules which will apply 
2876  universally to all sites and pages. And then below that is generally a lengthy 
2877  set of exceptions to the defined universal policies.</P
2878 ><DIV
2879 CLASS="SECT3"
2880 ><H3
2881 CLASS="SECT3"
2882 ><A
2883 NAME="AEN1234"
2884 >5.4.1. Finding the Right Mix</A
2885 ></H3
2886 ><P
2887 > Note that some actions like cookie suppression or script disabling may
2888  render some sites unusable, which rely on these techniques to work properly.
2889  Finding the right mix of actions is not easy and certainly a matter of personal
2890  taste. In general, it can be said that the more <SPAN
2891 CLASS="QUOTE"
2892 >"aggressive"</SPAN
2893 >
2894  your default settings (in the top section of the actions file) are,
2895  the more exceptions for <SPAN
2896 CLASS="QUOTE"
2897 >"trusted"</SPAN
2898 > sites you will have to
2899  make later. If, for example, you want to kill popup windows per default, you'll
2900  have to make exceptions from that rule for sites that you regularly use
2901  and that require popups for actually useful content, like maybe your bank,
2902  favorite shop, or newspaper.</P
2903 ><P
2904 > We have tried to provide you with reasonable rules to start from in the
2905  distribution actions file. But there is no general rule of thumb on these
2906  things. There just are too many variables, and sites are constantly changing.
2907  Sooner or later you will want to change the rules (and read this chapter).</P
2908 ></DIV
2909 ><DIV
2910 CLASS="SECT3"
2911 ><H3
2912 CLASS="SECT3"
2913 ><A
2914 NAME="AEN1240"
2915 >5.4.2. How to Edit</A
2916 ></H3
2917 ><P
2918 > The easiest way to edit the <SPAN
2919 CLASS="QUOTE"
2920 >"actions"</SPAN
2921 > file is with a browser by
2922  using our browser-based editor, which is available at <A
2923 HREF="http://config.privoxy.org/edit-actions"
2924 TARGET="_top"
2925 >http://config.privoxy.org/edit-actions</A
2926 >.</P
2927 ><P
2928 > If you prefer plain text editing to GUIs, you can of course also directly edit the
2929  <TT
2930 CLASS="FILENAME"
2931 >default.action</TT
2932 > file.</P
2933 ></DIV
2934 ><DIV
2935 CLASS="SECT3"
2936 ><H3
2937 CLASS="SECT3"
2938 ><A
2939 NAME="AEN1247"
2940 >5.4.3. How Actions are Applied to URLs</A
2941 ></H3
2942 ><P
2943 > The actions file is divided into sections. There are special sections,
2944  like the <SPAN
2945 CLASS="QUOTE"
2946 >"alias"</SPAN
2947 > sections which will be discussed later. For now
2948  let's concentrate on regular sections: They have a heading line (often split
2949  up to multiple lines for readability) which consist of a list of actions,
2950  separated by whitespace and enclosed in curly braces. Below that, there
2951  is a list of URL patterns, each on a separate line.</P
2952 ><P
2953 > To determine which actions apply to a request, the URL of the request is
2954  compared to all patterns in this file. Every time it matches, the list of
2955  applicable actions for the URL is incrementally updated, using the heading
2956  of the section in which the pattern is located. If multiple matches for
2957  the same URL set the same action differently, the last match wins.</P
2958 ><P
2959 > You can trace this process by visiting <A
2960 HREF="http://config.privoxy.org/show-url-info"
2961 TARGET="_top"
2962 >http://config.privoxy.org/show-url-info</A
2963 >.</P
2964 ><P
2965 > More detail on this is provided in the Appendix, <A
2966 HREF="appendix.html#ACTIONSANAT"
2967 > Anatomy of an Action</A
2968 >.</P
2969 ></DIV
2970 ><DIV
2971 CLASS="SECT3"
2972 ><H3
2973 CLASS="SECT3"
2974 ><A
2975 NAME="AEN1256"
2976 >5.4.4. Patterns</A
2977 ></H3
2978 ><P
2979 > Generally, a pattern has the form <TT
2980 CLASS="LITERAL"
2981 >&#60;domain&#62;/&#60;path&#62;</TT
2982 >,
2983  where both the <TT
2984 CLASS="LITERAL"
2985 >&#60;domain&#62;</TT
2986 > and <TT
2987 CLASS="LITERAL"
2988 >&#60;path&#62;</TT
2989 >
2990  are optional. (This is why the pattern <TT
2991 CLASS="LITERAL"
2992 >/</TT
2993 > matches all URLs).</P
2994 ><P
2995 ></P
2996 ><DIV
2997 CLASS="VARIABLELIST"
2998 ><DL
2999 ><DT
3000 ><TT
3001 CLASS="LITERAL"
3002 >www.example.com/</TT
3003 ></DT
3004 ><DD
3005 ><P
3006 >    is a domain-only pattern and will match any request to <TT
3007 CLASS="LITERAL"
3008 >www.example.com</TT
3009 >,
3010     regardless of which document on that server is requested.
3011    </P
3012 ></DD
3013 ><DT
3014 ><TT
3015 CLASS="LITERAL"
3016 >www.example.com</TT
3017 ></DT
3018 ><DD
3019 ><P
3020 >    means exactly the same. For domain-only patterns, the trailing <TT
3021 CLASS="LITERAL"
3022 >/</TT
3023 > may
3024     be omitted.
3025    </P
3026 ></DD
3027 ><DT
3028 ><TT
3029 CLASS="LITERAL"
3030 >www.example.com/index.html</TT
3031 ></DT
3032 ><DD
3033 ><P
3034 >    matches only the single document <TT
3035 CLASS="LITERAL"
3036 >/index.html</TT
3037 >
3038     on <TT
3039 CLASS="LITERAL"
3040 >www.example.com</TT
3041 >.
3042    </P
3043 ></DD
3044 ><DT
3045 ><TT
3046 CLASS="LITERAL"
3047 >/index.html</TT
3048 ></DT
3049 ><DD
3050 ><P
3051 >    matches the document <TT
3052 CLASS="LITERAL"
3053 >/index.html</TT
3054 >, regardless of the domain,
3055     i.e. on <I
3056 CLASS="EMPHASIS"
3057 >any</I
3058 > web server.
3059    </P
3060 ></DD
3061 ><DT
3062 ><TT
3063 CLASS="LITERAL"
3064 >index.html</TT
3065 ></DT
3066 ><DD
3067 ><P
3068 >    matches nothing, since it would be  interpreted as a domain name and
3069     there is no top-level domain called <TT
3070 CLASS="LITERAL"
3071 >.html</TT
3072 >.
3073    </P
3074 ></DD
3075 ></DL
3076 ></DIV
3077 ><DIV
3078 CLASS="SECT4"
3079 ><H4
3080 CLASS="SECT4"
3081 ><A
3082 NAME="AEN1296"
3083 >5.4.4.1. The Domain Pattern</A
3084 ></H4
3085 ><P
3086 > The matching of the domain part offers some flexible options: if the
3087  domain starts or ends with a dot, it becomes unanchored at that end. 
3088  For example:</P
3089 ><P
3090 ></P
3091 ><DIV
3092 CLASS="VARIABLELIST"
3093 ><DL
3094 ><DT
3095 ><TT
3096 CLASS="LITERAL"
3097 >.example.com</TT
3098 ></DT
3099 ><DD
3100 ><P
3101 >    matches any domain that <I
3102 CLASS="EMPHASIS"
3103 >ENDS</I
3104 > in
3105     <TT
3106 CLASS="LITERAL"
3107 >.example.com</TT
3108 >
3109    </P
3110 ></DD
3111 ><DT
3112 ><TT
3113 CLASS="LITERAL"
3114 >www.</TT
3115 ></DT
3116 ><DD
3117 ><P
3118 >    matches any domain that <I
3119 CLASS="EMPHASIS"
3120 >STARTS</I
3121 > with
3122     <TT
3123 CLASS="LITERAL"
3124 >www.</TT
3125 >
3126    </P
3127 ></DD
3128 ><DT
3129 ><TT
3130 CLASS="LITERAL"
3131 >.example.</TT
3132 ></DT
3133 ><DD
3134 ><P
3135 >    matches any domain that <I
3136 CLASS="EMPHASIS"
3137 >CONTAINS</I
3138 > <TT
3139 CLASS="LITERAL"
3140 >.example.</TT
3141 >
3142     (Correctly speaking: It matches any FQDN that contains <TT
3143 CLASS="LITERAL"
3144 >example</TT
3145 > as a domain.)
3146    </P
3147 ></DD
3148 ></DL
3149 ></DIV
3150 ><P
3151 > Additionally, there are wild-cards that you can use in the domain names
3152  themselves. They work pretty similar to shell wild-cards: <SPAN
3153 CLASS="QUOTE"
3154 >"*"</SPAN
3155 >
3156  stands for zero or more arbitrary characters, <SPAN
3157 CLASS="QUOTE"
3158 >"?"</SPAN
3159 > stands for
3160  any single character, you can define character classes in square
3161  brackets and all of that can be freely mixed:</P
3162 ><P
3163 ></P
3164 ><DIV
3165 CLASS="VARIABLELIST"
3166 ><DL
3167 ><DT
3168 ><TT
3169 CLASS="LITERAL"
3170 >ad*.example.com</TT
3171 ></DT
3172 ><DD
3173 ><P
3174 >    matches <SPAN
3175 CLASS="QUOTE"
3176 >"adserver.example.com"</SPAN
3177 >, 
3178     <SPAN
3179 CLASS="QUOTE"
3180 >"ads.example.com"</SPAN
3181 >, etc but not <SPAN
3182 CLASS="QUOTE"
3183 >"sfads.example.com"</SPAN
3184 >
3185    </P
3186 ></DD
3187 ><DT
3188 ><TT
3189 CLASS="LITERAL"
3190 >*ad*.example.com</TT
3191 ></DT
3192 ><DD
3193 ><P
3194 >    matches all of the above, and then some.
3195    </P
3196 ></DD
3197 ><DT
3198 ><TT
3199 CLASS="LITERAL"
3200 >.?pix.com</TT
3201 ></DT
3202 ><DD
3203 ><P
3204 >    matches <TT
3205 CLASS="LITERAL"
3206 >www.ipix.com</TT
3207 >,
3208     <TT
3209 CLASS="LITERAL"
3210 >pictures.epix.com</TT
3211 >, <TT
3212 CLASS="LITERAL"
3213 >a.b.c.d.e.upix.com</TT
3214 > etc. 
3215    </P
3216 ></DD
3217 ><DT
3218 ><TT
3219 CLASS="LITERAL"
3220 >www[1-9a-ez].example.c*</TT
3221 ></DT
3222 ><DD
3223 ><P
3224 >     matches <TT
3225 CLASS="LITERAL"
3226 >www1.example.com</TT
3227 >, 
3228      <TT
3229 CLASS="LITERAL"
3230 >www4.example.cc</TT
3231 >, <TT
3232 CLASS="LITERAL"
3233 >wwwd.example.cy</TT
3234 >, 
3235      <TT
3236 CLASS="LITERAL"
3237 >wwwz.example.com</TT
3238 > etc., but <I
3239 CLASS="EMPHASIS"
3240 >not</I
3241
3242      <TT
3243 CLASS="LITERAL"
3244 >wwww.example.com</TT
3245 >.
3246    </P
3247 ></DD
3248 ></DL
3249 ></DIV
3250 ></DIV
3251 ><DIV
3252 CLASS="SECT4"
3253 ><H4
3254 CLASS="SECT4"
3255 ><A
3256 NAME="AEN1358"
3257 >5.4.4.2. The Path Pattern</A
3258 ></H4
3259 ><P
3260 > <SPAN
3261 CLASS="APPLICATION"
3262 >Privoxy</SPAN
3263 > uses Perl compatible regular expressions
3264  (through the <A
3265 HREF="http://www.pcre.org/"
3266 TARGET="_top"
3267 >PCRE</A
3268 > library) for
3269  matching the path.</P
3270 ><P
3271 > There is an <A
3272 HREF="appendix.html#REGEX"
3273 >Appendix</A
3274 > with a brief quick-start into regular
3275  expressions, and full (very technical) documentation on PCRE regex syntax is available on-line
3276  at <A
3277 HREF="http://www.pcre.org/man.txt"
3278 TARGET="_top"
3279 >http://www.pcre.org/man.txt</A
3280 >.
3281  You might also find the Perl man page on regular expressions (<TT
3282 CLASS="LITERAL"
3283 >man perlre</TT
3284 >)
3285  useful, which is available on-line at <A
3286 HREF="http://www.perldoc.com/perl5.6/pod/perlre.html"
3287 TARGET="_top"
3288 >http://www.perldoc.com/perl5.6/pod/perlre.html</A
3289 >.</P
3290 ><P
3291 > Note that the path pattern is automatically left-anchored at the <SPAN
3292 CLASS="QUOTE"
3293 >"/"</SPAN
3294 >,
3295  i.e. it matches as if it would start with a <SPAN
3296 CLASS="QUOTE"
3297 >"^"</SPAN
3298 >.</P
3299 ><P
3300 > Please also note that matching in the path is case
3301  <I
3302 CLASS="EMPHASIS"
3303 >INSENSITIVE</I
3304 > by default, but you can switch to case
3305  sensitive at any point in the pattern by using the 
3306  <SPAN
3307 CLASS="QUOTE"
3308 >"(?-i)"</SPAN
3309 > switch:
3310  <TT
3311 CLASS="LITERAL"
3312 >www.example.com/(?-i)PaTtErN.*</TT
3313 > will match only
3314  documents whose path starts with <TT
3315 CLASS="LITERAL"
3316 >PaTtErN</TT
3317 > in
3318  <I
3319 CLASS="EMPHASIS"
3320 >exactly</I
3321 > this capitalization.</P
3322 ></DIV
3323 ></DIV
3324 ><DIV
3325 CLASS="SECT3"
3326 ><H3
3327 CLASS="SECT3"
3328 ><A
3329 NAME="ACTIONS"
3330 >5.4.5. Actions</A
3331 ></H3
3332 ><P
3333 > Actions are enabled if preceded with a <SPAN
3334 CLASS="QUOTE"
3335 >"+"</SPAN
3336 >, and disabled if 
3337  preceded with a <SPAN
3338 CLASS="QUOTE"
3339 >"-"</SPAN
3340 >. So a <SPAN
3341 CLASS="QUOTE"
3342 >"+action"</SPAN
3343 > means 
3344  <SPAN
3345 CLASS="QUOTE"
3346 >"do that action"</SPAN
3347 >, e.g. <SPAN
3348 CLASS="QUOTE"
3349 >"+block"</SPAN
3350 > means please 
3351  <SPAN
3352 CLASS="QUOTE"
3353 >"block the following URLs and/or patterns"</SPAN
3354 >. All actions are
3355  disabled by default, until they are explicitly enabled somewhere in an actions
3356  file.</P
3357 ><P
3358
3359  Actions are invoked by enclosing the action name in curly braces (e.g.
3360  {+some_action}), followed by a list of URLs (or patterns that match URLs) to
3361  which the action applies. There are three classes of actions: </P
3362 ><P
3363 > <P
3364 ></P
3365 ><UL
3366 ><LI
3367 ><P
3368 >  
3369    Boolean, i.e the action can only be <SPAN
3370 CLASS="QUOTE"
3371 >"on"</SPAN
3372 > or
3373    <SPAN
3374 CLASS="QUOTE"
3375 >"off"</SPAN
3376 >. Examples: 
3377  </P
3378 ><P
3379 >   <TT
3380 CLASS="LITERAL"
3381 >    <P
3382 CLASS="LITERALLAYOUT"
3383 >&nbsp;&nbsp;<I
3384 CLASS="EMPHASIS"
3385 >{+name}</I
3386 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;enable&nbsp;this&nbsp;action<br>
3387 &nbsp;&nbsp;<I
3388 CLASS="EMPHASIS"
3389 >{-name}</I
3390 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;disable&nbsp;this&nbsp;action<br>
3391 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
3392
3393    </TT
3394 >
3395   </P
3396 ></LI
3397 ><LI
3398 ><P
3399 >  
3400    Parameterized, e.g. <SPAN
3401 CLASS="QUOTE"
3402 >"+/-hide-user-agent{ Mozilla 1.0 }"</SPAN
3403 >, 
3404    where some value is required in order to enable this type of action.
3405    Examples:
3406   </P
3407 ><P
3408 >   <TT
3409 CLASS="LITERAL"
3410 >    <P
3411 CLASS="LITERALLAYOUT"
3412 >&nbsp;&nbsp;<I
3413 CLASS="EMPHASIS"
3414 >{+name{param}}</I
3415 >&nbsp;&nbsp;#&nbsp;enable&nbsp;action&nbsp;and&nbsp;set&nbsp;parameter&nbsp;to&nbsp;<SPAN
3416 CLASS="QUOTE"
3417 >"param"</SPAN
3418 ><br>
3419 &nbsp;&nbsp;<I
3420 CLASS="EMPHASIS"
3421 >{-name}</I
3422 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;disable&nbsp;action&nbsp;(<SPAN
3423 CLASS="QUOTE"
3424 >"parameter"</SPAN
3425 >)&nbsp;can&nbsp;be&nbsp;omitted<br>
3426 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
3427
3428    </TT
3429 >
3430   </P
3431 ></LI
3432 ><LI
3433 ><P
3434 >  
3435   
3436    Multi-value, e.g. <SPAN
3437 CLASS="QUOTE"
3438 >"{+/-add-header{Name: value}}"</SPAN
3439 > ot
3440    <SPAN
3441 CLASS="QUOTE"
3442 >"{+/-wafer{name=value}}"</SPAN
3443 >), where some value needs to be defined
3444    in addition to simply enabling the actino. Examples:
3445   </P
3446 ><P
3447 >   <TT
3448 CLASS="LITERAL"
3449 >    <P
3450 CLASS="LITERALLAYOUT"
3451 >&nbsp;&nbsp;<I
3452 CLASS="EMPHASIS"
3453 >{+name{param=value}}</I
3454 >&nbsp;&nbsp;&nbsp;#&nbsp;enable&nbsp;action&nbsp;and&nbsp;set&nbsp;<SPAN
3455 CLASS="QUOTE"
3456 >"param"</SPAN
3457 >&nbsp;to&nbsp;<SPAN
3458 CLASS="QUOTE"
3459 >"value"</SPAN
3460 ><br>
3461 &nbsp;&nbsp;<I
3462 CLASS="EMPHASIS"
3463 >{-name{param=value}}</I
3464 >&nbsp;&nbsp;&nbsp;#&nbsp;remove&nbsp;the&nbsp;parameter&nbsp;<SPAN
3465 CLASS="QUOTE"
3466 >"param"</SPAN
3467 >&nbsp;completely<br>
3468 &nbsp;&nbsp;<I
3469 CLASS="EMPHASIS"
3470 >{-name}</I
3471 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;disable&nbsp;this&nbsp;action&nbsp;totally&nbsp;and&nbsp;remove&nbsp;<SPAN
3472 CLASS="APPLICATION"
3473 >param</SPAN
3474 >&nbsp;too<br>
3475 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
3476
3477    </TT
3478 >
3479   </P
3480 ></LI
3481 ></UL
3482 ></P
3483 ><P
3484 > If nothing is specified in this file, no <SPAN
3485 CLASS="QUOTE"
3486 >"actions"</SPAN
3487 > are taken.
3488  So in this case <SPAN
3489 CLASS="APPLICATION"
3490 >Privoxy</SPAN
3491 > would just be a
3492  normal, non-blocking, non-anonymizing proxy. You must specifically
3493  enable the privacy and blocking features you need (although the 
3494  provided default <TT
3495 CLASS="FILENAME"
3496 >default.action</TT
3497 > file will 
3498  give a good starting point).</P
3499 ><P
3500 > Later defined actions always over-ride earlier ones.  So exceptions 
3501  to any rules you make, should come in the latter part of the file. For
3502  multi-valued actions, the actions are applied in the order they are
3503  specified.</P
3504 ><P
3505 > The list of valid <SPAN
3506 CLASS="APPLICATION"
3507 >Privoxy</SPAN
3508 > <SPAN
3509 CLASS="QUOTE"
3510 >"actions"</SPAN
3511 > are:</P
3512 ><DIV
3513 CLASS="SECT4"
3514 ><H4
3515 CLASS="SECT4"
3516 ><A
3517 NAME="ADD-HEADER"
3518 >5.4.5.1. <I
3519 CLASS="EMPHASIS"
3520 >+add-header{Name: value}</I
3521 ></A
3522 ></H4
3523 ><P
3524 ></P
3525 ><DIV
3526 CLASS="VARIABLELIST"
3527 ><DL
3528 ><DT
3529 >Type:</DT
3530 ><DD
3531 ><P
3532 >Multi-value.</P
3533 ></DD
3534 ><DT
3535 >Typical uses:</DT
3536 ><DD
3537 ><P
3538 >    Send a user defined HTTP header to the web server.
3539    </P
3540 ></DD
3541 ><DT
3542 >Possible values:</DT
3543 ><DD
3544 ><P
3545 >    Any value is possible. Validity of the defined HTTP headers is not checked.
3546    </P
3547 ></DD
3548 ><DT
3549 >Example usage:</DT
3550 ><DD
3551 ><P
3552 CLASS="LITERALLAYOUT"
3553 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3554 CLASS="EMPHASIS"
3555 >{+add-header{X-User-Tracking: sucks}}</I
3556 ><br>
3557 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3558 CLASS="EMPHASIS"
3559 >.example.com</I
3560 ><br>
3561 &nbsp;&nbsp;&nbsp;&nbsp;</P
3562 ></DD
3563 ><DT
3564 >Notes:</DT
3565 ><DD
3566 ><P
3567 >    This action may be specified multiple times, in order to define multiple 
3568     headers. This is rarely needed for the typical user. If you don't know what 
3569     <SPAN
3570 CLASS="QUOTE"
3571 >"HTTP headers"</SPAN
3572 > are, you definitely don't need to worry about this 
3573     one.
3574    </P
3575 ></DD
3576 ></DL
3577 ></DIV
3578 ></DIV
3579 ><DIV
3580 CLASS="SECT4"
3581 ><H4
3582 CLASS="SECT4"
3583 ><A
3584 NAME="BLOCK"
3585 >5.4.5.2. <I
3586 CLASS="EMPHASIS"
3587 >+block</I
3588 ></A
3589 ></H4
3590 ><P
3591 ></P
3592 ><DIV
3593 CLASS="VARIABLELIST"
3594 ><DL
3595 ><DT
3596 >Type:</DT
3597 ><DD
3598 ><P
3599 >Boolean.</P
3600 ></DD
3601 ><DT
3602 >Typical uses:</DT
3603 ><DD
3604 ><P
3605 >    Used to block a URL from reaching your browser. The URL may be 
3606     anything, but is typically used to block ads or other obnoxious 
3607     content.    
3608    </P
3609 ></DD
3610 ><DT
3611 >Possible values:</DT
3612 ><DD
3613 ><P
3614 >N/A</P
3615 ></DD
3616 ><DT
3617 >Example usage:</DT
3618 ><DD
3619 ><P
3620 CLASS="LITERALLAYOUT"
3621 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3622 CLASS="EMPHASIS"
3623 >{+block}</I
3624 ><br>
3625 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3626 CLASS="EMPHASIS"
3627 >.example.com</I
3628 ><br>
3629 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3630 CLASS="EMPHASIS"
3631 >.ads.r.us</I
3632 ><br>
3633 &nbsp;&nbsp;&nbsp;&nbsp;</P
3634 ></DD
3635 ><DT
3636 >Notes:</DT
3637 ><DD
3638 ><P
3639 >    <SPAN
3640 CLASS="APPLICATION"
3641 >Privoxy</SPAN
3642 > will display its 
3643     special <SPAN
3644 CLASS="QUOTE"
3645 >"BLOCKED"</SPAN
3646 > page if a URL matches one of the 
3647     blocked patterns. If there is sufficient space, a large red 
3648     banner will appear with a friendly message about why the page 
3649     was blocked, and a way to go there anyway. If there is insufficient 
3650     space a smaller blocked page will appear without the red banner.
3651     One exception is if the URL matches both <SPAN
3652 CLASS="QUOTE"
3653 >"+block"</SPAN
3654
3655     and <SPAN
3656 CLASS="QUOTE"
3657 >"+image"</SPAN
3658 >, then it can be handled by 
3659     <SPAN
3660 CLASS="QUOTE"
3661 >"+image-blocker"</SPAN
3662 > (see below).
3663    </P
3664 ><P
3665 >    The <SPAN
3666 CLASS="QUOTE"
3667 >"+filter"</SPAN
3668 > action can also perform some of the 
3669     same functionality as <SPAN
3670 CLASS="QUOTE"
3671 >"+block"</SPAN
3672 >, but by virtue of very 
3673     different programming techniques, and is typically used for different 
3674     reasons.
3675    </P
3676 ></DD
3677 ></DL
3678 ></DIV
3679 ></DIV
3680 ><DIV
3681 CLASS="SECT4"
3682 ><H4
3683 CLASS="SECT4"
3684 ><A
3685 NAME="DEANIMATE-GIFS"
3686 >5.4.5.3. <I
3687 CLASS="EMPHASIS"
3688 >+deanimate-gifs</I
3689 ></A
3690 ></H4
3691 ><P
3692 ></P
3693 ><DIV
3694 CLASS="VARIABLELIST"
3695 ><DL
3696 ><DT
3697 >Type:</DT
3698 ><DD
3699 ><P
3700 >Parameterized.</P
3701 ></DD
3702 ><DT
3703 >Typical uses:</DT
3704 ><DD
3705 ><P
3706 >    To stop those annoying, distracting animated GIF images.
3707    </P
3708 ></DD
3709 ><DT
3710 >Possible values:</DT
3711 ><DD
3712 ><P
3713 >    <SPAN
3714 CLASS="QUOTE"
3715 >"last"</SPAN
3716 > or <SPAN
3717 CLASS="QUOTE"
3718 >"first"</SPAN
3719 >
3720    </P
3721 ></DD
3722 ><DT
3723 >Example usage:</DT
3724 ><DD
3725 ><P
3726 CLASS="LITERALLAYOUT"
3727 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3728 CLASS="EMPHASIS"
3729 >{+deanimate-gifs{last}}</I
3730 ><br>
3731 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3732 CLASS="EMPHASIS"
3733 >.example.com</I
3734 ><br>
3735 &nbsp;&nbsp;&nbsp;&nbsp;</P
3736 ></DD
3737 ><DT
3738 >Notes:</DT
3739 ><DD
3740 ><P
3741 >    De-animate all animated GIF images, i.e. reduce them to their last frame.
3742     This will also shrink the images considerably (in bytes, not pixels!). If
3743     the option <SPAN
3744 CLASS="QUOTE"
3745 >"first"</SPAN
3746 > is given, the first frame of the animation
3747     is used as the replacement. If <SPAN
3748 CLASS="QUOTE"
3749 >"last"</SPAN
3750 > is given, the last
3751     frame of the animation is used instead, which probably makes more sense for
3752     most banner animations, but also has the risk of not showing the entire
3753     last frame (if it is only a delta to an earlier frame).
3754    </P
3755 ></DD
3756 ></DL
3757 ></DIV
3758 ></DIV
3759 ><DIV
3760 CLASS="SECT4"
3761 ><H4
3762 CLASS="SECT4"
3763 ><A
3764 NAME="DOWNGRADE"
3765 >5.4.5.4. <I
3766 CLASS="EMPHASIS"
3767 >+downgrade</I
3768 ></A
3769 ></H4
3770 ><P
3771 ></P
3772 ><DIV
3773 CLASS="VARIABLELIST"
3774 ><DL
3775 ><DT
3776 >Type:</DT
3777 ><DD
3778 ><P
3779 >Boolean.</P
3780 ></DD
3781 ><DT
3782 >Typical uses:</DT
3783 ><DD
3784 ><P
3785 >    <SPAN
3786 CLASS="QUOTE"
3787 >"+downgrade"</SPAN
3788 > will downgrade HTTP/1.1 client requests to
3789     HTTP/1.0 and downgrade the responses as well.
3790    </P
3791 ></DD
3792 ><DT
3793 >Possible values:</DT
3794 ><DD
3795 ><P
3796 >    N/A
3797    </P
3798 ></DD
3799 ><DT
3800 >Example usage:</DT
3801 ><DD
3802 ><P
3803 CLASS="LITERALLAYOUT"
3804 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3805 CLASS="EMPHASIS"
3806 >{+downgrade}</I
3807 ><br>
3808 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3809 CLASS="EMPHASIS"
3810 >.example.com</I
3811 ><br>
3812 &nbsp;&nbsp;&nbsp;&nbsp;</P
3813 ></DD
3814 ><DT
3815 >Notes:</DT
3816 ><DD
3817 ><P
3818 >    Use this action for servers that use HTTP/1.1 protocol features that
3819     <SPAN
3820 CLASS="APPLICATION"
3821 >Privoxy</SPAN
3822 > doesn't handle well yet. HTTP/1.1 is
3823     only partially implemented. Default is not to downgrade requests. This is
3824     an infrequently needed action, and is used to help with problem sites only.
3825    </P
3826 ></DD
3827 ></DL
3828 ></DIV
3829 ></DIV
3830 ><DIV
3831 CLASS="SECT4"
3832 ><H4
3833 CLASS="SECT4"
3834 ><A
3835 NAME="FAST-REDIRECTS"
3836 >5.4.5.5. <I
3837 CLASS="EMPHASIS"
3838 >+fast-redirects</I
3839 ></A
3840 ></H4
3841 ><P
3842 ></P
3843 ><DIV
3844 CLASS="VARIABLELIST"
3845 ><DL
3846 ><DT
3847 >Type:</DT
3848 ><DD
3849 ><P
3850 >Boolean.</P
3851 ></DD
3852 ><DT
3853 >Typical uses:</DT
3854 ><DD
3855 ><P
3856 >    The <SPAN
3857 CLASS="QUOTE"
3858 >"+fast-redirects"</SPAN
3859 > action enables interception of 
3860     <SPAN
3861 CLASS="QUOTE"
3862 >"redirect"</SPAN
3863 > requests from one server to another, which 
3864     are used to track users.<SPAN
3865 CLASS="APPLICATION"
3866 >Privoxy</SPAN
3867 > can cut off
3868     all but the last valid URL in redirect request and send a local redirect
3869     back to your browser without contacting the intermediate site(s).
3870    </P
3871 ></DD
3872 ><DT
3873 >Possible values:</DT
3874 ><DD
3875 ><P
3876 >    N/A
3877    </P
3878 ></DD
3879 ><DT
3880 >Example usage:</DT
3881 ><DD
3882 ><P
3883 CLASS="LITERALLAYOUT"
3884 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3885 CLASS="EMPHASIS"
3886 >{+fast-redirects}</I
3887 ><br>
3888 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
3889 CLASS="EMPHASIS"
3890 >.example.com</I
3891 ><br>
3892 &nbsp;&nbsp;&nbsp;&nbsp;</P
3893 ></DD
3894 ><DT
3895 >Notes:</DT
3896 ><DD
3897 ><P
3898 >  
3899     Many sites, like yahoo.com, don't just link to other sites. Instead, they
3900     will link to some script on their own server, giving the destination as a
3901     parameter, which will then redirect you to the final target. URLs
3902     resulting from this scheme typically look like:
3903     <I
3904 CLASS="EMPHASIS"
3905 >http://some.place/some_script?http://some.where-else</I
3906 >.
3907   </P
3908 ><P
3909 >    Sometimes, there are even multiple consecutive redirects encoded in the
3910     URL. These redirections via scripts make your web browsing more traceable,
3911     since the server from which you follow such a link can see where you go
3912     to. Apart from that, valuable bandwidth and time is wasted, while your
3913     browser ask the server for one redirect after the other. Plus, it feeds
3914     the advertisers.
3915    </P
3916 ><P
3917 >    This is a normally on feature, and often requires exceptions for sites that
3918     are sensitive to defeating this mechanism.
3919    </P
3920 ></DD
3921 ></DL
3922 ></DIV
3923 ></DIV
3924 ><DIV
3925 CLASS="SECT4"
3926 ><H4
3927 CLASS="SECT4"
3928 ><A
3929 NAME="FILTER"
3930 >5.4.5.6. <I
3931 CLASS="EMPHASIS"
3932 >+filter</I
3933 ></A
3934 ></H4
3935 ><P
3936 ></P
3937 ><DIV
3938 CLASS="VARIABLELIST"
3939 ><DL
3940 ><DT
3941 >Type:</DT
3942 ><DD
3943 ><P
3944 >Parameterized.</P
3945 ></DD
3946 ><DT
3947 >Typical uses:</DT
3948 ><DD
3949 ><P
3950 >    Apply page filtering as defined by named sections of the
3951     <TT
3952 CLASS="FILENAME"
3953 >default.filter</TT
3954 > file to the specified site(s). 
3955     <SPAN
3956 CLASS="QUOTE"
3957 >"Filtering"</SPAN
3958 > can be any modification of the raw 
3959     page content, including re-writing or deletion of content.
3960    </P
3961 ></DD
3962 ><DT
3963 >Possible values:</DT
3964 ><DD
3965 ><P
3966 >    <SPAN
3967 CLASS="QUOTE"
3968 >"+filter"</SPAN
3969 > must include the name of one of the section identifiers
3970     from <TT
3971 CLASS="FILENAME"
3972 >default.filter</TT
3973 > (or whatever
3974     <I
3975 CLASS="EMPHASIS"
3976 >filterfile</I
3977 > is specified in <TT
3978 CLASS="FILENAME"
3979 >config</TT
3980 >).
3981    </P
3982 ></DD
3983 ><DT
3984 >Example usage (from the current <TT
3985 CLASS="FILENAME"
3986 >default.filter</TT
3987 >):</DT
3988 ><DD
3989 ><P
3990 ></P
3991 ><TABLE
3992 BORDER="0"
3993 ><TBODY
3994 ><TR
3995 ><TD
3996 >    <I
3997 CLASS="EMPHASIS"
3998 >+filter{html-annoyances}</I
3999 >:  Get rid of particularly annoying HTML abuse.
4000    </TD
4001 ></TR
4002 ></TBODY
4003 ></TABLE
4004 ><P
4005 ></P
4006 ><P
4007 ></P
4008 ><TABLE
4009 BORDER="0"
4010 ><TBODY
4011 ><TR
4012 ><TD
4013 >    <I
4014 CLASS="EMPHASIS"
4015 >+filter{js-annoyances}</I
4016 >:    Get rid of particularly annoying JavaScript abuse
4017    </TD
4018 ></TR
4019 ></TBODY
4020 ></TABLE
4021 ><P
4022 ></P
4023 ><P
4024 ></P
4025 ><TABLE
4026 BORDER="0"
4027 ><TBODY
4028 ><TR
4029 ><TD
4030 >    <I
4031 CLASS="EMPHASIS"
4032 >+filter{content-cookies}</I
4033 >:   Kill cookies that come in the HTML or JS content 
4034    </TD
4035 ></TR
4036 ></TBODY
4037 ></TABLE
4038 ><P
4039 ></P
4040 ><P
4041 ></P
4042 ><TABLE
4043 BORDER="0"
4044 ><TBODY
4045 ><TR
4046 ><TD
4047 >    <I
4048 CLASS="EMPHASIS"
4049 >+filter{popups}</I
4050 >:         Kill all popups in JS and HTML
4051    </TD
4052 ></TR
4053 ></TBODY
4054 ></TABLE
4055 ><P
4056 ></P
4057 ><P
4058 ></P
4059 ><TABLE
4060 BORDER="0"
4061 ><TBODY
4062 ><TR
4063 ><TD
4064 >    <I
4065 CLASS="EMPHASIS"
4066 >+filter{frameset-borders}</I
4067 >: Give frames a border and make them resizable 
4068    </TD
4069 ></TR
4070 ></TBODY
4071 ></TABLE
4072 ><P
4073 ></P
4074 ><P
4075 ></P
4076 ><TABLE
4077 BORDER="0"
4078 ><TBODY
4079 ><TR
4080 ><TD
4081 >    <I
4082 CLASS="EMPHASIS"
4083 >+filter{webbugs}</I
4084 >:          Squish WebBugs (1x1 invisible GIFs used for user tracking)
4085    </TD
4086 ></TR
4087 ></TBODY
4088 ></TABLE
4089 ><P
4090 ></P
4091 ><P
4092 ></P
4093 ><TABLE
4094 BORDER="0"
4095 ><TBODY
4096 ><TR
4097 ><TD
4098 >    <I
4099 CLASS="EMPHASIS"
4100 >+filter{refresh-tags}</I
4101 >:     Kill automatic refresh tags (for dial-on-demand setups) 
4102    </TD
4103 ></TR
4104 ></TBODY
4105 ></TABLE
4106 ><P
4107 ></P
4108 ><P
4109 ></P
4110 ><TABLE
4111 BORDER="0"
4112 ><TBODY
4113 ><TR
4114 ><TD
4115 >    <I
4116 CLASS="EMPHASIS"
4117 >+filter{fun}</I
4118 >:              Text replacements  for subversive browsing fun!
4119    </TD
4120 ></TR
4121 ></TBODY
4122 ></TABLE
4123 ><P
4124 ></P
4125 ><P
4126 ></P
4127 ><TABLE
4128 BORDER="0"
4129 ><TBODY
4130 ><TR
4131 ><TD
4132 >    <I
4133 CLASS="EMPHASIS"
4134 >+filter{nimda}</I
4135 >:            Remove Nimda (virus) code.
4136    </TD
4137 ></TR
4138 ></TBODY
4139 ></TABLE
4140 ><P
4141 ></P
4142 ><P
4143 ></P
4144 ><TABLE
4145 BORDER="0"
4146 ><TBODY
4147 ><TR
4148 ><TD
4149 >    <I
4150 CLASS="EMPHASIS"
4151 >+filter{banners-by-size}</I
4152 >:  Kill banners by size (<I
4153 CLASS="EMPHASIS"
4154 >very</I
4155 > efficient!)
4156    </TD
4157 ></TR
4158 ></TBODY
4159 ></TABLE
4160 ><P
4161 ></P
4162 ><P
4163 ></P
4164 ><TABLE
4165 BORDER="0"
4166 ><TBODY
4167 ><TR
4168 ><TD
4169 >    <I
4170 CLASS="EMPHASIS"
4171 >+filter{shockwave-flash}</I
4172 >:   Kill embedded Shockwave Flash objects
4173    </TD
4174 ></TR
4175 ></TBODY
4176 ></TABLE
4177 ><P
4178 ></P
4179 ><P
4180 ></P
4181 ><TABLE
4182 BORDER="0"
4183 ><TBODY
4184 ><TR
4185 ><TD
4186 >    <I
4187 CLASS="EMPHASIS"
4188 >+filter{crude-parental}</I
4189 >:   Kill all web pages that contain the words "sex" or "warez"
4190    </TD
4191 ></TR
4192 ></TBODY
4193 ></TABLE
4194 ><P
4195 ></P
4196 ></DD
4197 ><DT
4198 >Notes:</DT
4199 ><DD
4200 ><P
4201 >    This is potentially a very powerful feature! And requires a knowledge 
4202     of regular expressions if you want to <SPAN
4203 CLASS="QUOTE"
4204 >"roll your own"</SPAN
4205 >.
4206     Filtering operates on a line by line basis.
4207    </P
4208 ><P
4209 >    Filtering requires buffering the page content, which may appear to
4210     slow down page rendering since nothing is displayed until all content has
4211     passed the filters. (It does not really take longer, but seems that way
4212     since the page is not incrementally displayed.) This effect will be more
4213     noticeable on slower connections.
4214    </P
4215 ><P
4216 >    Filtering can achieve some of the effects as the <SPAN
4217 CLASS="QUOTE"
4218 >"+block"</SPAN
4219
4220     action, i.e. it can be used to block ads and banners. In the overall 
4221     scheme of things, filtering is one of the last things <SPAN
4222 CLASS="QUOTE"
4223 >"Privoxy"</SPAN
4224
4225     does with a web page. So other actions are applied first.
4226    </P
4227 ></DD
4228 ></DL
4229 ></DIV
4230 ></DIV
4231 ><DIV
4232 CLASS="SECT4"
4233 ><H4
4234 CLASS="SECT4"
4235 ><A
4236 NAME="HIDE-FORWARDED"
4237 >5.4.5.7. <I
4238 CLASS="EMPHASIS"
4239 >+hide-forwarded</I
4240 ></A
4241 ></H4
4242 ><P
4243 ></P
4244 ><DIV
4245 CLASS="VARIABLELIST"
4246 ><DL
4247 ><DT
4248 >Type:</DT
4249 ><DD
4250 ><P
4251 >Boolean.</P
4252 ></DD
4253 ><DT
4254 >Typical uses:</DT
4255 ><DD
4256 ><P
4257 >    Block any existing X-Forwarded-for HTTP header, and do not add a new one.
4258    </P
4259 ></DD
4260 ><DT
4261 >Possible values:</DT
4262 ><DD
4263 ><P
4264 >    N/A
4265    </P
4266 ></DD
4267 ><DT
4268 >Example usage:</DT
4269 ><DD
4270 ><P
4271 CLASS="LITERALLAYOUT"
4272 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4273 CLASS="EMPHASIS"
4274 >{+hide-forwarded}</I
4275 ><br>
4276 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4277 CLASS="EMPHASIS"
4278 >.example.com</I
4279 ><br>
4280 &nbsp;&nbsp;&nbsp;&nbsp;</P
4281 ></DD
4282 ><DT
4283 >Notes:</DT
4284 ><DD
4285 ><P
4286 >    It is fairly safe to leave this on. It does not seem to break many sites.
4287    </P
4288 ></DD
4289 ></DL
4290 ></DIV
4291 ></DIV
4292 ><DIV
4293 CLASS="SECT4"
4294 ><H4
4295 CLASS="SECT4"
4296 ><A
4297 NAME="HIDE-FROM"
4298 >5.4.5.8. <I
4299 CLASS="EMPHASIS"
4300 >+hide-from</I
4301 ></A
4302 ></H4
4303 ><P
4304 ></P
4305 ><DIV
4306 CLASS="VARIABLELIST"
4307 ><DL
4308 ><DT
4309 >Type:</DT
4310 ><DD
4311 ><P
4312 >Parameterized.</P
4313 ></DD
4314 ><DT
4315 >Typical uses:</DT
4316 ><DD
4317 ><P
4318 >    To block the browser from sending your email address in a <SPAN
4319 CLASS="QUOTE"
4320 >"From:"</SPAN
4321 >
4322     header.
4323    </P
4324 ></DD
4325 ><DT
4326 >Possible values:</DT
4327 ><DD
4328 ><P
4329 >    Keyword: <SPAN
4330 CLASS="QUOTE"
4331 >"block"</SPAN
4332 >, or any user defined value.
4333    </P
4334 ></DD
4335 ><DT
4336 >Example usage:</DT
4337 ><DD
4338 ><P
4339 CLASS="LITERALLAYOUT"
4340 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4341 CLASS="EMPHASIS"
4342 >{+hide-from{block}}</I
4343 ><br>
4344 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4345 CLASS="EMPHASIS"
4346 >.example.com</I
4347 ><br>
4348 &nbsp;&nbsp;&nbsp;&nbsp;</P
4349 ></DD
4350 ><DT
4351 >Notes:</DT
4352 ><DD
4353 ><P
4354 >    The keyword <SPAN
4355 CLASS="QUOTE"
4356 >"block"</SPAN
4357 > will completely remove the header.
4358     Alternately, you can specify any value you prefer to send to the web
4359     server.
4360    </P
4361 ></DD
4362 ></DL
4363 ></DIV
4364 ></DIV
4365 ><DIV
4366 CLASS="SECT4"
4367 ><H4
4368 CLASS="SECT4"
4369 ><A
4370 NAME="HIDE-REFERER"
4371 >5.4.5.9. <I
4372 CLASS="EMPHASIS"
4373 >+hide-referer</I
4374 ></A
4375 ></H4
4376 ><A
4377 NAME="HIDE-REFERRER"
4378 ></A
4379 ><P
4380 ></P
4381 ><DIV
4382 CLASS="VARIABLELIST"
4383 ><DL
4384 ><DT
4385 >Type:</DT
4386 ><DD
4387 ><P
4388 >Parameterized.</P
4389 ></DD
4390 ><DT
4391 >Typical uses:</DT
4392 ><DD
4393 ><P
4394 >     Don't send the <SPAN
4395 CLASS="QUOTE"
4396 >"Referer:"</SPAN
4397 > (sic) HTTP header to the web site.
4398      Or, alternately send a forged header instead.
4399    </P
4400 ></DD
4401 ><DT
4402 >Possible values:</DT
4403 ><DD
4404 ><P
4405 >     Prevent the header from being sent with the keyword, <SPAN
4406 CLASS="QUOTE"
4407 >"block"</SPAN
4408 >.
4409      Or, <SPAN
4410 CLASS="QUOTE"
4411 >"forge"</SPAN
4412 > a URL to one from the same server as the request.
4413      Or, set to user defined value of your choice.
4414    </P
4415 ></DD
4416 ><DT
4417 >Example usage:</DT
4418 ><DD
4419 ><P
4420 CLASS="LITERALLAYOUT"
4421 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4422 CLASS="EMPHASIS"
4423 >{+hide-referer{forge}}</I
4424 ><br>
4425 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4426 CLASS="EMPHASIS"
4427 >.example.com</I
4428 ><br>
4429 &nbsp;&nbsp;&nbsp;&nbsp;</P
4430 ></DD
4431 ><DT
4432 >Notes:</DT
4433 ><DD
4434 ><P
4435 >    <SPAN
4436 CLASS="QUOTE"
4437 >"forge"</SPAN
4438 > is the preferred option here, since some servers will
4439     not send images back otherwise.
4440    </P
4441 ><P
4442 >  
4443    <SPAN
4444 CLASS="QUOTE"
4445 >"+hide-referrer"</SPAN
4446 > is an alternate spelling of
4447    <SPAN
4448 CLASS="QUOTE"
4449 >"+hide-referer"</SPAN
4450 >. It has the exact same parameters, and can be freely
4451    mixed with, <SPAN
4452 CLASS="QUOTE"
4453 >"+hide-referer"</SPAN
4454 >. (<SPAN
4455 CLASS="QUOTE"
4456 >"referrer"</SPAN
4457 > is the
4458    correct English spelling, however the HTTP specification has a bug - it
4459    requires it to be spelled as <SPAN
4460 CLASS="QUOTE"
4461 >"referer"</SPAN
4462 >.) 
4463   </P
4464 ></DD
4465 ></DL
4466 ></DIV
4467 ></DIV
4468 ><DIV
4469 CLASS="SECT4"
4470 ><H4
4471 CLASS="SECT4"
4472 ><A
4473 NAME="HIDE-USER-AGENT"
4474 >5.4.5.10. <I
4475 CLASS="EMPHASIS"
4476 >+hide-user-agent</I
4477 ></A
4478 ></H4
4479 ><P
4480 ></P
4481 ><DIV
4482 CLASS="VARIABLELIST"
4483 ><DL
4484 ><DT
4485 >Type:</DT
4486 ><DD
4487 ><P
4488 >Parameterized.</P
4489 ></DD
4490 ><DT
4491 >Typical uses:</DT
4492 ><DD
4493 ><P
4494 >    To change the <SPAN
4495 CLASS="QUOTE"
4496 >"User-Agent:"</SPAN
4497 > header so web servers can't tell
4498     your browser type. Who's business is it anyway?
4499    </P
4500 ></DD
4501 ><DT
4502 >Possible values:</DT
4503 ><DD
4504 ><P
4505 >    Any user defined string.
4506    </P
4507 ></DD
4508 ><DT
4509 >Example usage:</DT
4510 ><DD
4511 ><P
4512 CLASS="LITERALLAYOUT"
4513 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4514 CLASS="EMPHASIS"
4515 >{+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}}</I
4516 ><br>
4517 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4518 CLASS="EMPHASIS"
4519 >.msn.com</I
4520 ><br>
4521 &nbsp;&nbsp;&nbsp;&nbsp;</P
4522 ></DD
4523 ><DT
4524 >Notes:</DT
4525 ><DD
4526 ><P
4527 >     Warning! This breaks many web sites that depend on this in order 
4528      to determine how the target browser will respond to various 
4529      requests. Use with caution.
4530    </P
4531 ></DD
4532 ></DL
4533 ></DIV
4534 ></DIV
4535 ><DIV
4536 CLASS="SECT4"
4537 ><H4
4538 CLASS="SECT4"
4539 ><A
4540 NAME="IMAGE"
4541 >5.4.5.11. <I
4542 CLASS="EMPHASIS"
4543 >+image</I
4544 ></A
4545 ></H4
4546 ><P
4547 ></P
4548 ><DIV
4549 CLASS="VARIABLELIST"
4550 ><DL
4551 ><DT
4552 >Type:</DT
4553 ><DD
4554 ><P
4555 >Boolean.</P
4556 ></DD
4557 ><DT
4558 >Typical uses:</DT
4559 ><DD
4560 ><P
4561 >    To define what <SPAN
4562 CLASS="APPLICATION"
4563 >Privoxy</SPAN
4564 > should treat 
4565     automatically as an image.
4566    </P
4567 ></DD
4568 ><DT
4569 >Possible values:</DT
4570 ><DD
4571 ><P
4572 >    N/A
4573    </P
4574 ></DD
4575 ><DT
4576 >Example usage:</DT
4577 ><DD
4578 ><P
4579 CLASS="LITERALLAYOUT"
4580 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4581 CLASS="EMPHASIS"
4582 >{+image}</I
4583 ><br>
4584 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4585 CLASS="EMPHASIS"
4586 >/.*\.(gif|jpg|jpeg|png|bmp|ico)</I
4587 ><br>
4588 &nbsp;&nbsp;&nbsp;&nbsp;</P
4589 ></DD
4590 ><DT
4591 >Notes:</DT
4592 ><DD
4593 ><P
4594 >    This only has meaning if the URL (or pattern) also is
4595     <SPAN
4596 CLASS="QUOTE"
4597 >"+block"</SPAN
4598 >ed, in which case a <SPAN
4599 CLASS="QUOTE"
4600 >"blocked"</SPAN
4601 > image can
4602     be sent rather than a HTML page. (See <SPAN
4603 CLASS="QUOTE"
4604 >"+image-blocker{}"</SPAN
4605 > below
4606     for the control over what is actually sent.)    
4607    </P
4608 ><P
4609 >    There is little reason to change the default definition for this.
4610    </P
4611 ></DD
4612 ></DL
4613 ></DIV
4614 ></DIV
4615 ><DIV
4616 CLASS="SECT4"
4617 ><H4
4618 CLASS="SECT4"
4619 ><A
4620 NAME="IMAGE-BLOCKER"
4621 >5.4.5.12. <I
4622 CLASS="EMPHASIS"
4623 >+image-blocker</I
4624 ></A
4625 ></H4
4626 ><P
4627 ></P
4628 ><DIV
4629 CLASS="VARIABLELIST"
4630 ><DL
4631 ><DT
4632 >Type:</DT
4633 ><DD
4634 ><P
4635 >Parameterized.</P
4636 ></DD
4637 ><DT
4638 >Typical uses:</DT
4639 ><DD
4640 ><P
4641 >    Decide what to do with URLs that end up tagged with both <SPAN
4642 CLASS="QUOTE"
4643 >"{+block}"</SPAN
4644 >
4645     and <SPAN
4646 CLASS="QUOTE"
4647 >"{+image}"</SPAN
4648 >, e.g an advertisement.
4649    </P
4650 ></DD
4651 ><DT
4652 >Possible values:</DT
4653 ><DD
4654 ><P
4655 >    There are four available options: <SPAN
4656 CLASS="QUOTE"
4657 >"-image-blocker"</SPAN
4658 > will send a HTML
4659     <SPAN
4660 CLASS="QUOTE"
4661 >"blocked"</SPAN
4662 > page, usually resulting in a <SPAN
4663 CLASS="QUOTE"
4664 >"broken
4665     image"</SPAN
4666 > icon. <SPAN
4667 CLASS="QUOTE"
4668 >"+image-blocker{blank}"</SPAN
4669 > will send a 1x1
4670     transparent GIF image. <SPAN
4671 CLASS="QUOTE"
4672 >"+image-blocker{pattern}"</SPAN
4673 > will send a
4674     checkerboard type pattern (the default). And finally,
4675     <SPAN
4676 CLASS="QUOTE"
4677 >"+image-blocker{http://xyz.com}"</SPAN
4678 > will send a HTTP temporary
4679     redirect to the specified image. This has the advantage of the icon being
4680     being cached by the browser, which will speed up the display.
4681    </P
4682 ></DD
4683 ><DT
4684 >Example usage:</DT
4685 ><DD
4686 ><P
4687 CLASS="LITERALLAYOUT"
4688 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4689 CLASS="EMPHASIS"
4690 >{+image-blocker{blank}}</I
4691 ><br>
4692 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4693 CLASS="EMPHASIS"
4694 >.example.com</I
4695 ><br>
4696 &nbsp;&nbsp;&nbsp;&nbsp;</P
4697 ></DD
4698 ><DT
4699 >Notes:</DT
4700 ><DD
4701 ><P
4702 >    If you want <I
4703 CLASS="EMPHASIS"
4704 >invisible</I
4705 > ads, they need to be both
4706     defined as <I
4707 CLASS="EMPHASIS"
4708 >images</I
4709 > and <I
4710 CLASS="EMPHASIS"
4711 >blocked</I
4712 >.
4713     And then, <SPAN
4714 CLASS="QUOTE"
4715 >"image-blocker"</SPAN
4716 > should be set to
4717     <SPAN
4718 CLASS="QUOTE"
4719 >"blank"</SPAN
4720 > for invisibility. Note you cannot treat HTML pages as
4721     images in most cases. For instance, frames require an HTML page to display.
4722     So a frame that is an ad, cannot be treated as an image. Forcing an
4723     <SPAN
4724 CLASS="QUOTE"
4725 >"image"</SPAN
4726 > in this situation just will not work.
4727    </P
4728 ></DD
4729 ></DL
4730 ></DIV
4731 ></DIV
4732 ><DIV
4733 CLASS="SECT4"
4734 ><H4
4735 CLASS="SECT4"
4736 ><A
4737 NAME="LIMIT-CONNECT"
4738 >5.4.5.13. <I
4739 CLASS="EMPHASIS"
4740 >+limit-connect</I
4741 ></A
4742 ></H4
4743 ><P
4744 ></P
4745 ><DIV
4746 CLASS="VARIABLELIST"
4747 ><DL
4748 ><DT
4749 >Type:</DT
4750 ><DD
4751 ><P
4752 >Parameterized.</P
4753 ></DD
4754 ><DT
4755 >Typical uses:</DT
4756 ><DD
4757 ><P
4758 >    By default, <SPAN
4759 CLASS="APPLICATION"
4760 >Privoxy</SPAN
4761 > only allows HTTP CONNECT
4762     requests to port 443 (the standard, secure HTTPS port). Use 
4763     <SPAN
4764 CLASS="QUOTE"
4765 >"+limit-connect"</SPAN
4766 > to disable this altogether, or to allow 
4767     more ports.
4768    </P
4769 ></DD
4770 ><DT
4771 >Possible values:</DT
4772 ><DD
4773 ><P
4774 >    Any valid port number, or port number range.
4775    </P
4776 ></DD
4777 ><DT
4778 >Example usages:</DT
4779 ><DD
4780 ><P
4781 CLASS="LITERALLAYOUT"
4782 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4783 CLASS="EMPHASIS"
4784 >+limit-connect{443}</I
4785 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;This&nbsp;is&nbsp;the&nbsp;default&nbsp;and&nbsp;need&nbsp;not&nbsp;be&nbsp;specified.<br>
4786 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4787 CLASS="EMPHASIS"
4788 >+limit-connect{80,443}</I
4789 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Ports&nbsp;80&nbsp;and&nbsp;443&nbsp;are&nbsp;OK.<br>
4790 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4791 CLASS="EMPHASIS"
4792 >+limit-connect{-3, 7, 20-100, 500-}</I
4793 >&nbsp;#&nbsp;Port&nbsp;less&nbsp;than&nbsp;3,&nbsp;7,&nbsp;20&nbsp;to&nbsp;100&nbsp;and&nbsp;above&nbsp;500&nbsp;are&nbsp;OK.<br>
4794 &nbsp;&nbsp;&nbsp;&nbsp;</P
4795 ></DD
4796 ><DT
4797 >Notes:</DT
4798 ><DD
4799 ><P
4800 >    The CONNECT methods exists in HTTP to allow access to secure websites
4801     (https:// URLs) through proxies. It works very simply: the proxy connects
4802     to the server on the specified port, and then short-circuits its
4803     connections to the client <I
4804 CLASS="EMPHASIS"
4805 >and</I
4806 > to the remote proxy.
4807     This can be a big security hole, since CONNECT-enabled proxies can be
4808     abused as TCP relays very easily.
4809   </P
4810 ><P
4811
4812    If you want to allow CONNECT for more ports than this, or want to forbid
4813    CONNECT altogether, you can specify a comma separated list of ports and
4814    port ranges (the latter using dashes, with the minimum defaulting to 0 and
4815    max to 65K).
4816   </P
4817 ><P
4818 >   If you don't know what any of this means, there probably is no reason to 
4819    change this one.
4820   </P
4821 ></DD
4822 ></DL
4823 ></DIV
4824 ></DIV
4825 ><DIV
4826 CLASS="SECT4"
4827 ><H4
4828 CLASS="SECT4"
4829 ><A
4830 NAME="NO-COMPRESSION"
4831 >5.4.5.14. <I
4832 CLASS="EMPHASIS"
4833 >+no-compression</I
4834 ></A
4835 ></H4
4836 ><P
4837 ></P
4838 ><DIV
4839 CLASS="VARIABLELIST"
4840 ><DL
4841 ><DT
4842 >Type:</DT
4843 ><DD
4844 ><P
4845 >Boolean.</P
4846 ></DD
4847 ><DT
4848 >Typical uses:</DT
4849 ><DD
4850 ><P
4851 >    Prevent the specified websites from compressing HTTP data.
4852    </P
4853 ></DD
4854 ><DT
4855 >Possible values:</DT
4856 ><DD
4857 ><P
4858 >    N/A
4859    </P
4860 ></DD
4861 ><DT
4862 >Example usage:</DT
4863 ><DD
4864 ><P
4865 CLASS="LITERALLAYOUT"
4866 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4867 CLASS="EMPHASIS"
4868 >{+no-compression}</I
4869 ><br>
4870 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4871 CLASS="EMPHASIS"
4872 >.example.com</I
4873 ><br>
4874 &nbsp;&nbsp;&nbsp;&nbsp;</P
4875 ></DD
4876 ><DT
4877 >Notes:</DT
4878 ><DD
4879 ><P
4880 >    Some websites do this, which can be a problem for
4881     <SPAN
4882 CLASS="APPLICATION"
4883 >Privoxy</SPAN
4884 >, since <SPAN
4885 CLASS="QUOTE"
4886 >"+filter"</SPAN
4887 >,
4888     <SPAN
4889 CLASS="QUOTE"
4890 >"+no-popup"</SPAN
4891 > and <SPAN
4892 CLASS="QUOTE"
4893 >"+gif-deanimate"</SPAN
4894 > will not work
4895     on compressed data. This will slow down connections to those websites,
4896     though. Default typically is to turn <SPAN
4897 CLASS="QUOTE"
4898 >"no-compression"</SPAN
4899 > on.
4900    </P
4901 ></DD
4902 ></DL
4903 ></DIV
4904 ></DIV
4905 ><DIV
4906 CLASS="SECT4"
4907 ><H4
4908 CLASS="SECT4"
4909 ><A
4910 NAME="NO-COOKIES-KEEP"
4911 >5.4.5.15. <I
4912 CLASS="EMPHASIS"
4913 >+no-cookies-keep</I
4914 ></A
4915 ></H4
4916 ><P
4917 ></P
4918 ><DIV
4919 CLASS="VARIABLELIST"
4920 ><DL
4921 ><DT
4922 >Type:</DT
4923 ><DD
4924 ><P
4925 >Boolean.</P
4926 ></DD
4927 ><DT
4928 >Typical uses:</DT
4929 ><DD
4930 ><P
4931 >    Allow cookies for the current browser session only.
4932    </P
4933 ></DD
4934 ><DT
4935 >Possible values:</DT
4936 ><DD
4937 ><P
4938 >    N/A
4939    </P
4940 ></DD
4941 ><DT
4942 >Example usage:</DT
4943 ><DD
4944 ><P
4945 CLASS="LITERALLAYOUT"
4946 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4947 CLASS="EMPHASIS"
4948 >{+no-cookies-keep}</I
4949 ><br>
4950 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
4951 CLASS="EMPHASIS"
4952 >.example.com</I
4953 ><br>
4954 &nbsp;&nbsp;&nbsp;&nbsp;</P
4955 ></DD
4956 ><DT
4957 >Notes:</DT
4958 ><DD
4959 ><P
4960 >    If websites set cookies, <SPAN
4961 CLASS="QUOTE"
4962 >"no-cookies-keep"</SPAN
4963 > will make sure
4964     they are erased when you exit and restart your web browser. This makes
4965     profiling cookies useless, but won't break sites which require cookies so
4966     that you can log in for transactions. This is generally turned on for all 
4967     sites. Sometimes referred to as <SPAN
4968 CLASS="QUOTE"
4969 >"session cookies"</SPAN
4970 >.
4971    </P
4972 ></DD
4973 ></DL
4974 ></DIV
4975 ></DIV
4976 ><DIV
4977 CLASS="SECT4"
4978 ><H4
4979 CLASS="SECT4"
4980 ><A
4981 NAME="NO-COOKIES-READ"
4982 >5.4.5.16. <I
4983 CLASS="EMPHASIS"
4984 >+no-cookies-read</I
4985 ></A
4986 ></H4
4987 ><P
4988 ></P
4989 ><DIV
4990 CLASS="VARIABLELIST"
4991 ><DL
4992 ><DT
4993 >Type:</DT
4994 ><DD
4995 ><P
4996 >Boolean.</P
4997 ></DD
4998 ><DT
4999 >Typical uses:</DT
5000 ><DD
5001 ><P
5002 >    Explicitly prevent the web server from reading any cookies on your 
5003     system.
5004    </P
5005 ></DD
5006 ><DT
5007 >Possible values:</DT
5008 ><DD
5009 ><P
5010 >    N/A
5011    </P
5012 ></DD
5013 ><DT
5014 >Example usage:</DT
5015 ><DD
5016 ><P
5017 CLASS="LITERALLAYOUT"
5018 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
5019 CLASS="EMPHASIS"
5020 >{+no-cookies-read}</I
5021 ><br>
5022 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
5023 CLASS="EMPHASIS"
5024 >.example.com</I
5025 ><br>
5026 &nbsp;&nbsp;&nbsp;&nbsp;</P
5027 ></DD
5028 ><DT
5029 >Notes:</DT
5030 ><DD
5031 ><P
5032 >    Often used in conjunction with <SPAN
5033 CLASS="QUOTE"
5034 >"+no-cookies-set"</SPAN
5035 > to 
5036     disable persistant cookies completely.
5037    </P
5038 ></DD
5039 ></DL
5040 ></DIV
5041 ></DIV
5042 ><DIV
5043 CLASS="SECT4"
5044 ><H4
5045 CLASS="SECT4"
5046 ><A
5047 NAME="NO-COOKIES-SET"
5048 >5.4.5.17. <I
5049 CLASS="EMPHASIS"
5050 >+no-cookies-set</I
5051 ></A
5052 ></H4
5053 ><P
5054 ></P
5055 ><DIV
5056 CLASS="VARIABLELIST"
5057 ><DL
5058 ><DT
5059 >Type:</DT
5060 ><DD
5061 ><P
5062 >Boolean.</P
5063 ></DD
5064 ><DT
5065 >Typical uses:</DT
5066 ><DD
5067 ><P
5068 >    Explicitly block the web server from sending cookies to your 
5069     system.
5070    </P
5071 ></DD
5072 ><DT
5073 >Possible values:</DT
5074 ><DD
5075 ><P
5076 >    N/A
5077    </P
5078 ></DD
5079 ><DT
5080 >Example usage:</DT
5081 ><DD
5082 ><P
5083 CLASS="LITERALLAYOUT"
5084 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
5085 CLASS="EMPHASIS"
5086 >{+no-cookies-set}</I
5087 ><br>
5088 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
5089 CLASS="EMPHASIS"
5090 >.example.com</I
5091 ><br>
5092 &nbsp;&nbsp;&nbsp;&nbsp;</P
5093 ></DD
5094 ><DT
5095 >Notes:</DT
5096 ><DD
5097 ><P
5098 >    Often used in conjunction with <SPAN
5099 CLASS="QUOTE"
5100 >"+no-cookies-read"</SPAN
5101 > to 
5102     disable persistant cookies completely.
5103    </P
5104 ></DD
5105 ></DL
5106 ></DIV
5107 ></DIV
5108 ><DIV
5109 CLASS="SECT4"
5110 ><H4
5111 CLASS="SECT4"
5112 ><A
5113 NAME="NO-POPUP"
5114 >5.4.5.18. <I
5115 CLASS="EMPHASIS"
5116 >+no-popup</I
5117 ></A
5118 ></H4
5119 ><A
5120 NAME="NO-POPUPS"
5121 ></A
5122 ><P
5123 ></P
5124 ><DIV
5125 CLASS="VARIABLELIST"
5126 ><DL
5127 ><DT
5128 >Type:</DT
5129 ><DD
5130 ><P
5131 >Boolean.</P
5132 ></DD
5133 ><DT
5134 >Typical uses:</DT
5135 ><DD
5136 ><P
5137 >    Stop those annoying JavaScript pop-up windows! 
5138    </P
5139 ></DD
5140 ><DT
5141 >Possible values:</DT
5142 ><DD
5143 ><P
5144 >    N/A
5145    </P
5146 ></DD
5147 ><DT
5148 >Example usage:</DT
5149 ><DD
5150 ><P
5151 CLASS="LITERALLAYOUT"
5152 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
5153 CLASS="EMPHASIS"
5154 >{+no-popup}</I
5155 ><br>
5156 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
5157 CLASS="EMPHASIS"
5158 >.example.com</I
5159 ><br>
5160 &nbsp;&nbsp;&nbsp;&nbsp;</P
5161 ></DD
5162 ><DT
5163 >Notes:</DT
5164 ><DD
5165 ><P
5166 >    <SPAN
5167 CLASS="QUOTE"
5168 >"+no-popup"</SPAN
5169 > uses a built in filter to disable pop-ups
5170     that use the <TT
5171 CLASS="LITERAL"
5172 >window.open()</TT
5173 > function, etc.
5174    </P
5175 ><P
5176 >    An alternate spelling is <SPAN
5177 CLASS="QUOTE"
5178 >"+no-popups"</SPAN
5179 >, which is 
5180     interchangeable.
5181    </P
5182 ></DD
5183 ></DL
5184 ></DIV
5185 ></DIV
5186 ><DIV
5187 CLASS="SECT4"
5188 ><H4
5189 CLASS="SECT4"
5190 ><A
5191 NAME="VANILLA-WAFER"
5192 >5.4.5.19. <I
5193 CLASS="EMPHASIS"
5194 >+vanilla-wafer</I
5195 ></A
5196 ></H4
5197 ><P
5198 ></P
5199 ><DIV
5200 CLASS="VARIABLELIST"
5201 ><DL
5202 ><DT
5203 >Type:</DT
5204 ><DD
5205 ><P
5206 >Boolean.</P
5207 ></DD
5208 ><DT
5209 >Typical uses:</DT
5210 ><DD
5211 ><P
5212 >    Sends a cookie for every site stating that you do not accept any copyright
5213     on cookies sent to you, and asking them not to track you.
5214    </P
5215 ></DD
5216 ><DT
5217 >Possible values:</DT
5218 ><DD
5219 ><P
5220 >    N/A
5221    </P
5222 ></DD
5223 ><DT
5224 >Example usage:</DT
5225 ><DD
5226 ><P
5227 CLASS="LITERALLAYOUT"
5228 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
5229 CLASS="EMPHASIS"
5230 >{+vanilla-wafer}</I
5231 ><br>
5232 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
5233 CLASS="EMPHASIS"
5234 >.example.com</I
5235 ><br>
5236 &nbsp;&nbsp;&nbsp;&nbsp;</P
5237 ></DD
5238 ><DT
5239 >Notes:</DT
5240 ><DD
5241 ><P
5242 >    This action only applies if you are using a <TT
5243 CLASS="FILENAME"
5244 >jarfile</TT
5245 >
5246     for saving cookies. Of course, this is a (relatively) unique header and 
5247     could be used to track you.
5248    </P
5249 ></DD
5250 ></DL
5251 ></DIV
5252 ></DIV
5253 ><DIV
5254 CLASS="SECT4"
5255 ><H4
5256 CLASS="SECT4"
5257 ><A
5258 NAME="WAFER"
5259 >5.4.5.20. <I
5260 CLASS="EMPHASIS"
5261 >+wafer</I
5262 ></A
5263 ></H4
5264 ><P
5265 ></P
5266 ><DIV
5267 CLASS="VARIABLELIST"
5268 ><DL
5269 ><DT
5270 >Type:</DT
5271 ><DD
5272 ><P
5273 >Multi-value.</P
5274 ></DD
5275 ><DT
5276 >Typical uses:</DT
5277 ><DD
5278 ><P
5279 >    This allows you to send an arbitrary, user definable cookie.
5280    </P
5281 ></DD
5282 ><DT
5283 >Possible values:</DT
5284 ><DD
5285 ><P
5286 >    User specified cookie name and corresponding value.
5287    </P
5288 ></DD
5289 ><DT
5290 >Example usage:</DT
5291 ><DD
5292 ><P
5293 CLASS="LITERALLAYOUT"
5294 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
5295 CLASS="EMPHASIS"
5296 >{+wafer{name=value}}</I
5297 ><br>
5298 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I
5299 CLASS="EMPHASIS"
5300 >.example.com</I
5301 ><br>
5302 &nbsp;&nbsp;&nbsp;&nbsp;</P
5303 ></DD
5304 ><DT
5305 >Notes:</DT
5306 ><DD
5307 ><P
5308 >    This can be specified multiple times in order to add as many cookies as you
5309     like.
5310    </P
5311 ></DD
5312 ></DL
5313 ></DIV
5314 ></DIV
5315 ><DIV
5316 CLASS="SECT4"
5317 ><H3
5318 CLASS="SECT4"
5319 ><A
5320 NAME="ACT-EXAMPLES"
5321 >5.4.5.21. Actions Examples</A
5322 ></H3
5323 ><P
5324 > Note that the meaning of any of the above examples is reversed by preceding
5325  the action with a <SPAN
5326 CLASS="QUOTE"
5327 >"-"</SPAN
5328 >, in place of the <SPAN
5329 CLASS="QUOTE"
5330 >"+"</SPAN
5331 >. Also, 
5332  that some actions are turned on in the default section of the actions file, 
5333  and require little to no additional configuration. These are just <SPAN
5334 CLASS="QUOTE"
5335 >"on"</SPAN
5336 >.
5337  Some actions that are turned on the default section do typically require
5338  exceptions to be listed in the lower sections of actions file.</P
5339 ><P
5340 > Some examples:</P
5341 ><P
5342 > Turn off cookies by default, then allow a few through for specified sites:</P
5343 ><P
5344 > <TT
5345 CLASS="LITERAL"
5346 >  <P
5347 CLASS="LITERALLAYOUT"
5348 >&nbsp;#&nbsp;Turn&nbsp;off&nbsp;all&nbsp;persistent&nbsp;cookies<br>
5349 &nbsp;{&nbsp;+no-cookies-read&nbsp;}<br>
5350 &nbsp;{&nbsp;+no-cookies-set&nbsp;}<br>
5351 &nbsp;<br>
5352 &nbsp;#&nbsp;Allow&nbsp;cookies&nbsp;for&nbsp;this&nbsp;browser&nbsp;session&nbsp;ONLY<br>
5353 &nbsp;{&nbsp;+no-cookies-keep&nbsp;}<br>
5354 <br>
5355 &nbsp;#&nbsp;Exceptions&nbsp;to&nbsp;the&nbsp;above,&nbsp;sites&nbsp;that&nbsp;benefit&nbsp;from&nbsp;persistent&nbsp;cookies<br>
5356 &nbsp;#&nbsp;that&nbsp;saved&nbsp;from&nbsp;one&nbsp;browser&nbsp;session&nbsp;to&nbsp;the&nbsp;next.<br>
5357 &nbsp;{&nbsp;-no-cookies-read&nbsp;}<br>
5358 &nbsp;{&nbsp;-no-cookies-set&nbsp;}<br>
5359 &nbsp;{&nbsp;-no-cookies-keep&nbsp;}<br>
5360 &nbsp;.javasoft.com<br>
5361 &nbsp;.sun.com<br>
5362 &nbsp;.yahoo.com<br>
5363 &nbsp;.msdn.microsoft.com<br>
5364 &nbsp;.redhat.com<br>
5365 <br>
5366 &nbsp;#&nbsp;Alternative&nbsp;way&nbsp;of&nbsp;saying&nbsp;the&nbsp;same&nbsp;thing<br>
5367 &nbsp;{-no-cookies-set&nbsp;-no-cookies-read&nbsp;-no-cookies-keep}<br>
5368 &nbsp;.sourceforge.net<br>
5369 &nbsp;.sf.net<br>
5370 &nbsp;&nbsp;&nbsp;</P
5371
5372  </TT
5373 ></P
5374 ><P
5375 > Now turn off <SPAN
5376 CLASS="QUOTE"
5377 >"fast redirects"</SPAN
5378 >, and then we allow two exceptions:</P
5379 ><P
5380 > <TT
5381 CLASS="LITERAL"
5382 >  <P
5383 CLASS="LITERALLAYOUT"
5384 >&nbsp;#&nbsp;Turn&nbsp;them&nbsp;off!<br>
5385 &nbsp;{+fast-redirects}<br>
5386 &nbsp;<br>
5387 &nbsp;#&nbsp;Reverse&nbsp;it&nbsp;for&nbsp;these&nbsp;two&nbsp;sites,&nbsp;which&nbsp;don't&nbsp;work&nbsp;right&nbsp;without&nbsp;it.<br>
5388 &nbsp;{-fast-redirects}<br>
5389 &nbsp;www.ukc.ac.uk/cgi-bin/wac\.cgi\?<br>
5390 &nbsp;login.yahoo.com<br>
5391 &nbsp;&nbsp;&nbsp;</P
5392
5393  </TT
5394 ></P
5395 ><P
5396 > Turn on page filtering according to rules in the defined sections 
5397  of <TT
5398 CLASS="FILENAME"
5399 >default.filter</TT
5400 >, and make one exception for 
5401  Sourceforge:
5402  </P
5403 ><P
5404 > <TT
5405 CLASS="LITERAL"
5406 >  <P
5407 CLASS="LITERALLAYOUT"
5408 >&nbsp;#&nbsp;Run&nbsp;everything&nbsp;through&nbsp;the&nbsp;filter&nbsp;file,&nbsp;using&nbsp;only&nbsp;the<br>
5409 &nbsp;#&nbsp;specified&nbsp;sections:<br>
5410 &nbsp;+filter{html-annoyances}&nbsp;+filter{js-annoyances}&nbsp;+filter{no-popups}\<br>
5411 &nbsp;+filter{webbugs}&nbsp;+filter{nimda}&nbsp;+filter{banners-by-size}<br>
5412 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
5413 &nbsp;#&nbsp;Then&nbsp;disable&nbsp;filtering&nbsp;of&nbsp;code&nbsp;from&nbsp;sourceforge!<br>
5414 &nbsp;{-filter}<br>
5415 &nbsp;.cvs.sourceforge.net<br>
5416 &nbsp;&nbsp;&nbsp;</P
5417
5418  </TT
5419 ></P
5420 ><P
5421 > Now some URLs that we want <SPAN
5422 CLASS="QUOTE"
5423 >"blocked"</SPAN
5424 > (normally generates 
5425  the <SPAN
5426 CLASS="QUOTE"
5427 >"blocked"</SPAN
5428 > banner). Many of these use 
5429  <A
5430 HREF="appendix.html#REGEX"
5431 >regular expressions</A
5432 > that will expand to match
5433  multiple URLs: </P
5434 ><P
5435 > <TT
5436 CLASS="LITERAL"
5437 >  <P
5438 CLASS="LITERALLAYOUT"
5439 >&nbsp;&nbsp;#&nbsp;Blocklist:<br>
5440 &nbsp;&nbsp;{+block}<br>
5441 &nbsp;&nbsp;/.*/(.*[-_.])?ads?[0-9]?(/|[-_.].*|\.(gif|jpe?g))<br>
5442 &nbsp;&nbsp;/.*/(.*[-_.])?count(er)?(\.cgi|\.dll|\.exe|[?/])<br>
5443 &nbsp;&nbsp;/.*/(ng)?adclient\.cgi<br>
5444 &nbsp;&nbsp;/.*/(plain|live|rotate)[-_.]?ads?/<br>
5445 &nbsp;&nbsp;/.*/(sponsor)s?[0-9]?/<br>
5446 &nbsp;&nbsp;/.*/_?(plain|live)?ads?(-banners)?/<br>
5447 &nbsp;&nbsp;/.*/abanners/<br>
5448 &nbsp;&nbsp;/.*/ad(sdna_image|gifs?)/<br>
5449 &nbsp;&nbsp;/.*/ad(server|stream|juggler)\.(cgi|pl|dll|exe)<br>
5450 &nbsp;&nbsp;/.*/adbanners/<br>
5451 &nbsp;&nbsp;/.*/adserver<br>
5452 &nbsp;&nbsp;/.*/adstream\.cgi<br>
5453 &nbsp;&nbsp;/.*/adv((er)?ts?|ertis(ing|ements?))?/<br>
5454 &nbsp;&nbsp;/.*/banner_?ads/<br>
5455 &nbsp;&nbsp;/.*/banners?/<br>
5456 &nbsp;&nbsp;/.*/banners?\.cgi/<br>
5457 &nbsp;&nbsp;/.*/cgi-bin/centralad/getimage<br>
5458 &nbsp;&nbsp;/.*/images/addver\.gif<br>
5459 &nbsp;&nbsp;/.*/images/marketing/.*\.(gif|jpe?g)<br>
5460 &nbsp;&nbsp;/.*/popupads/<br>
5461 &nbsp;&nbsp;/.*/siteads/<br>
5462 &nbsp;&nbsp;/.*/sponsor.*\.gif<br>
5463 &nbsp;&nbsp;/.*/sponsors?[0-9]?/<br>
5464 &nbsp;&nbsp;/.*/advert[0-9]+\.jpg<br>
5465 &nbsp;&nbsp;/Media/Images/Adds/<br>
5466 &nbsp;&nbsp;/ad_images/<br>
5467 &nbsp;&nbsp;/adimages/<br>
5468 &nbsp;&nbsp;/.*/ads/<br>
5469 &nbsp;&nbsp;/bannerfarm/<br>
5470 &nbsp;&nbsp;/grafikk/annonse/<br>
5471 &nbsp;&nbsp;/graphics/defaultAd/<br>
5472 &nbsp;&nbsp;/image\.ng/AdType<br>
5473 &nbsp;&nbsp;/image\.ng/transactionID<br>
5474 &nbsp;&nbsp;/images/.*/.*_anim\.gif&nbsp;#&nbsp;alvin&nbsp;brattli<br>
5475 &nbsp;&nbsp;/ip_img/.*\.(gif|jpe?g)<br>
5476 &nbsp;&nbsp;/rotateads/<br>
5477 &nbsp;&nbsp;/rotations/&nbsp;<br>
5478 &nbsp;&nbsp;/worldnet/ad\.cgi<br>
5479 &nbsp;&nbsp;/cgi-bin/nph-adclick.exe/<br>
5480 &nbsp;&nbsp;/.*/Image/BannerAdvertising/<br>
5481 &nbsp;&nbsp;/.*/ad-bin/<br>
5482 &nbsp;&nbsp;/.*/adlib/server\.cgi<br>
5483 &nbsp;&nbsp;/autoads/<br>
5484 &nbsp;&nbsp;&nbsp;</P
5485
5486  </TT
5487 ></P
5488 ><P
5489 > Note that many of these actions have the potential to cause a page to
5490  misbehave, possibly even not to display at all. There are many ways 
5491  a site designer may choose to design his site, and what HTTP header 
5492  content he may depend on. There is no way to have hard and fast rules 
5493  for all sites. See the <A
5494 HREF="appendix.html#ACTIONSANAT"
5495 >Appendix</A
5496 >
5497  for a brief example on troubleshooting actions.</P
5498 ></DIV
5499 ></DIV
5500 ><DIV
5501 CLASS="SECT3"
5502 ><H3
5503 CLASS="SECT3"
5504 ><A
5505 NAME="AEN2110"
5506 >5.4.6. Aliases</A
5507 ></H3
5508 ><P
5509 > Custom <SPAN
5510 CLASS="QUOTE"
5511 >"actions"</SPAN
5512 >, known to <SPAN
5513 CLASS="APPLICATION"
5514 >Privoxy</SPAN
5515 >
5516  as <SPAN
5517 CLASS="QUOTE"
5518 >"aliases"</SPAN
5519 >, can be defined by combining other <SPAN
5520 CLASS="QUOTE"
5521 >"actions"</SPAN
5522 >.
5523  These can in turn be invoked just like the built-in <SPAN
5524 CLASS="QUOTE"
5525 >"actions"</SPAN
5526 >.
5527  Currently, an alias can contain any character except space, tab, <SPAN
5528 CLASS="QUOTE"
5529 >"="</SPAN
5530 >,
5531  <SPAN
5532 CLASS="QUOTE"
5533 >"{"</SPAN
5534 > or <SPAN
5535 CLASS="QUOTE"
5536 >"}"</SPAN
5537 >. But please use only <SPAN
5538 CLASS="QUOTE"
5539 >"a"</SPAN
5540 >-
5541  <SPAN
5542 CLASS="QUOTE"
5543 >"z"</SPAN
5544 >, <SPAN
5545 CLASS="QUOTE"
5546 >"0"</SPAN
5547 >-<SPAN
5548 CLASS="QUOTE"
5549 >"9"</SPAN
5550 >, <SPAN
5551 CLASS="QUOTE"
5552 >"+"</SPAN
5553 >, and
5554  <SPAN
5555 CLASS="QUOTE"
5556 >"-"</SPAN
5557 >. Alias names are not case sensitive, and 
5558  <I
5559 CLASS="EMPHASIS"
5560 >must be defined  before anything</I
5561 > else in the
5562  <TT
5563 CLASS="FILENAME"
5564 >default.action</TT
5565 >file! And there can only be one set of
5566  <SPAN
5567 CLASS="QUOTE"
5568 >"aliases"</SPAN
5569 > defined.</P
5570 ><P
5571 > Now let's define a few aliases:</P
5572 ><P
5573 > <TT
5574 CLASS="LITERAL"
5575 >  <P
5576 CLASS="LITERALLAYOUT"
5577 >&nbsp;#&nbsp;Useful&nbsp;custom&nbsp;aliases&nbsp;we&nbsp;can&nbsp;use&nbsp;later.&nbsp;These&nbsp;must&nbsp;come&nbsp;first!<br>
5578 &nbsp;{{alias}}<br>
5579 &nbsp;+no-cookies&nbsp;=&nbsp;+no-cookies-set&nbsp;+no-cookies-read<br>
5580 &nbsp;-no-cookies&nbsp;=&nbsp;-no-cookies-set&nbsp;-no-cookies-read<br>
5581 &nbsp;fragile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;-block&nbsp;-no-cookies&nbsp;-filter&nbsp;-fast-redirects&nbsp;-hide-referer&nbsp;-no-popups<br>
5582 &nbsp;shop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;-no-cookies&nbsp;-filter&nbsp;-fast-redirects<br>
5583 &nbsp;+imageblock&nbsp;=&nbsp;+block&nbsp;+image<br>
5584 <br>
5585 &nbsp;#For&nbsp;people&nbsp;who&nbsp;don't&nbsp;like&nbsp;to&nbsp;type&nbsp;too&nbsp;much:&nbsp;&nbsp;;-)<br>
5586 &nbsp;c0&nbsp;=&nbsp;+no-cookies<br>
5587 &nbsp;c1&nbsp;=&nbsp;-no-cookies<br>
5588 &nbsp;c2&nbsp;=&nbsp;-no-cookies-set&nbsp;+no-cookies-read<br>
5589 &nbsp;c3&nbsp;=&nbsp;+no-cookies-set&nbsp;-no-cookies-read<br>
5590 &nbsp;#...&nbsp;etc.&nbsp;&nbsp;Customize&nbsp;to&nbsp;your&nbsp;heart's&nbsp;content.<br>
5591 &nbsp;&nbsp;&nbsp;</P
5592
5593  </TT
5594 ></P
5595 ><P
5596 > Some examples using our <SPAN
5597 CLASS="QUOTE"
5598 >"shop"</SPAN
5599 > and <SPAN
5600 CLASS="QUOTE"
5601 >"fragile"</SPAN
5602 >
5603  aliases from above:</P
5604 ><P
5605 > <TT
5606 CLASS="LITERAL"
5607 >  <P
5608 CLASS="LITERALLAYOUT"
5609 >&nbsp;#&nbsp;These&nbsp;sites&nbsp;are&nbsp;very&nbsp;complex&nbsp;and&nbsp;require<br>
5610 &nbsp;#&nbsp;minimal&nbsp;interference.<br>
5611 &nbsp;{fragile}<br>
5612 &nbsp;.office.microsoft.com<br>
5613 &nbsp;.windowsupdate.microsoft.com<br>
5614 &nbsp;.nytimes.com<br>
5615 <br>
5616 &nbsp;#&nbsp;Shopping&nbsp;sites&nbsp;-&nbsp;but&nbsp;we&nbsp;still&nbsp;want&nbsp;to&nbsp;block&nbsp;ads.<br>
5617 &nbsp;{shop}<br>
5618 &nbsp;.quietpc.com<br>
5619 &nbsp;.worldpay.com&nbsp;&nbsp;&nbsp;#&nbsp;for&nbsp;quietpc.com<br>
5620 &nbsp;.jungle.com<br>
5621 &nbsp;.scan.co.uk<br>
5622 <br>
5623 &nbsp;#&nbsp;These&nbsp;shops&nbsp;require&nbsp;pop-ups&nbsp;also&nbsp;<br>
5624 &nbsp;{shop&nbsp;-no-popups}<br>
5625 &nbsp;.dabs.com<br>
5626 &nbsp;.overclockers.co.uk<br>
5627 &nbsp;&nbsp;&nbsp;</P
5628
5629  </TT
5630 ></P
5631 ><P
5632 > The <SPAN
5633 CLASS="QUOTE"
5634 >"shop"</SPAN
5635 > and <SPAN
5636 CLASS="QUOTE"
5637 >"fragile"</SPAN
5638 > aliases are often used for 
5639  <SPAN
5640 CLASS="QUOTE"
5641 >"problem"</SPAN
5642 > sites that require most actions to be disabled 
5643  in order to function properly.&#13;</P
5644 ></DIV
5645 ></DIV
5646 ><DIV
5647 CLASS="SECT2"
5648 ><H2
5649 CLASS="SECT2"
5650 ><A
5651 NAME="FILTERFILE"
5652 >5.5. The Filter File</A
5653 ></H2
5654 ><P
5655 > Any web page can be dynamically modified with the filter file. This
5656  modification can be removal, or re-writing, of any web page content,
5657  including tags and non-visible content. The default filter file is
5658  <TT
5659 CLASS="FILENAME"
5660 >default.filter</TT
5661 >, located in the config directory. </P
5662 ><P
5663 > This is potentially a very powerful feature, and requires knowledge of both 
5664  <SPAN
5665 CLASS="QUOTE"
5666 >"regular expression"</SPAN
5667 > and HTML in order create custom 
5668  filters. But, there are a number of useful filters included with 
5669  <SPAN
5670 CLASS="APPLICATION"
5671 >Privoxy</SPAN
5672 > for many common situations.</P
5673 ><P
5674 > The included example file is divided into sections. Each section begins 
5675  with the <TT
5676 CLASS="LITERAL"
5677 >FILTER</TT
5678 > keyword, followed by the identifier 
5679  for that section, e.g. <SPAN
5680 CLASS="QUOTE"
5681 >"FILTER: webbugs"</SPAN
5682 >. Each section performs
5683  a similar type of filtering, such as <SPAN
5684 CLASS="QUOTE"
5685 >"html-annoyances"</SPAN
5686 >.</P
5687 ><P
5688 > This file uses regular expressions to alter or remove any string in the
5689  target page. The expressions can only operate on one line at a time. Some
5690  examples from the included default <TT
5691 CLASS="FILENAME"
5692 >default.filter</TT
5693 >:</P
5694 ><P
5695 > Stop web pages from displaying annoying messages in the status bar by
5696  deleting such references:</P
5697 ><P
5698 > <TT
5699 CLASS="LITERAL"
5700 >  <P
5701 CLASS="LITERALLAYOUT"
5702 >&nbsp;FILTER:&nbsp;html-annoyances<br>
5703 <br>
5704 &nbsp;#&nbsp;New&nbsp;browser&nbsp;windows&nbsp;should&nbsp;be&nbsp;resizeable&nbsp;and&nbsp;have&nbsp;a&nbsp;location&nbsp;and&nbsp;status<br>
5705 &nbsp;#&nbsp;bar.&nbsp;Make&nbsp;it&nbsp;so.<br>
5706 &nbsp;#<br>
5707 &nbsp;s/resizable="?(no|0)"?/resizable=1/ig&nbsp;s/noresize/yesresize/ig<br>
5708 &nbsp;s/location="?(no|0)"?/location=1/ig&nbsp;s/status="?(no|0)"?/status=1/ig<br>
5709 &nbsp;s/scrolling="?(no|0|Auto)"?/scrolling=1/ig<br>
5710 &nbsp;s/menubar="?(no|0)"?/menubar=1/ig&nbsp;<br>
5711 <br>
5712 &nbsp;#&nbsp;The&nbsp;&#60;BLINK&#62;&nbsp;tag&nbsp;was&nbsp;a&nbsp;crime!<br>
5713 &nbsp;#<br>
5714 &nbsp;s*&#60;blink&#62;|&#60;/blink&#62;**ig<br>
5715 <br>
5716 &nbsp;#&nbsp;Is&nbsp;this&nbsp;evil?&nbsp;<br>
5717 &nbsp;#<br>
5718 &nbsp;#s/framespacing="?(no|0)"?//ig<br>
5719 &nbsp;#s/margin(height|width)=[0-9]*//gi<br>
5720 &nbsp;&nbsp;&nbsp;</P
5721
5722  </TT
5723 ></P
5724 ><P
5725 > Just for kicks, replace any occurrence of <SPAN
5726 CLASS="QUOTE"
5727 >"Microsoft"</SPAN
5728 > with
5729  <SPAN
5730 CLASS="QUOTE"
5731 >"MicroSuck"</SPAN
5732 >, and have a little fun with topical buzzwords: </P
5733 ><P
5734 > <TT
5735 CLASS="LITERAL"
5736 >  <P
5737 CLASS="LITERALLAYOUT"
5738 >&nbsp;FILTER:&nbsp;fun<br>
5739 <br>
5740 &nbsp;s/microsoft(?!.com)/MicroSuck/ig<br>
5741 <br>
5742 &nbsp;#&nbsp;Buzzword&nbsp;Bingo:<br>
5743 &nbsp;#<br>
5744 &nbsp;s/industry-leading|cutting-edge|award-winning/&#60;font&nbsp;color=red&#62;&#60;b&#62;BINGO!&#60;/b&#62;&#60;/font&#62;/ig<br>
5745 &nbsp;&nbsp;&nbsp;</P
5746
5747  </TT
5748 ></P
5749 ><P
5750 > Kill those pesky little web-bugs:</P
5751 ><P
5752 > <TT
5753 CLASS="LITERAL"
5754 >  <P
5755 CLASS="LITERALLAYOUT"
5756 >&nbsp;#&nbsp;webbugs:&nbsp;Squish&nbsp;WebBugs&nbsp;(1x1&nbsp;invisible&nbsp;GIFs&nbsp;used&nbsp;for&nbsp;user&nbsp;tracking)<br>
5757 &nbsp;FILTER:&nbsp;webbugs<br>
5758 <br>
5759 &nbsp;s/&#60;img\s+[^&#62;]*?(width|height)\s*=\s*['"]?1\D[^&#62;]*?(width|height)\s*=\s*['"]?1(\D[^&#62;]*?)?&#62;/&#60;!--&nbsp;Squished&nbsp;WebBug&nbsp;--&#62;/sig<br>
5760 &nbsp;&nbsp;&nbsp;</P
5761
5762  </TT
5763 ></P
5764 ></DIV
5765 ><DIV
5766 CLASS="SECT2"
5767 ><H2
5768 CLASS="SECT2"
5769 ><A
5770 NAME="AEN2176"
5771 >5.6. Templates</A
5772 ></H2
5773 ><P
5774 > When <SPAN
5775 CLASS="APPLICATION"
5776 >Privoxy</SPAN
5777 > displays one of its internal 
5778  pages, such as a 404 Not Found error page, it uses the appropriate template.
5779  On Linux, BSD, and Unix, these are located in
5780  <TT
5781 CLASS="FILENAME"
5782 >/etc/privoxy/templates</TT
5783 > by default. These may be
5784  customized, if desired. <TT
5785 CLASS="FILENAME"
5786 >cgi-style.css</TT
5787 > is 
5788  used to control the HTML attributes (fonts, etc).</P
5789 ><P
5790 > The default <SPAN
5791 CLASS="QUOTE"
5792 >"Blocked"</SPAN
5793 > banner page with the bright red top 
5794  banner, is called just <SPAN
5795 CLASS="QUOTE"
5796 >"<TT
5797 CLASS="FILENAME"
5798 >blocked</TT
5799 >"</SPAN
5800 >. This 
5801  may be customized or replaced with something else if desired.&#13;</P
5802 ></DIV
5803 ></DIV
5804 ><DIV
5805 CLASS="NAVFOOTER"
5806 ><HR
5807 ALIGN="LEFT"
5808 WIDTH="100%"><TABLE
5809 WIDTH="100%"
5810 BORDER="0"
5811 CELLPADDING="0"
5812 CELLSPACING="0"
5813 ><TR
5814 ><TD
5815 WIDTH="33%"
5816 ALIGN="left"
5817 VALIGN="top"
5818 ><A
5819 HREF="quickstart.html"
5820 >Prev</A
5821 ></TD
5822 ><TD
5823 WIDTH="34%"
5824 ALIGN="center"
5825 VALIGN="top"
5826 ><A
5827 HREF="index.html"
5828 >Home</A
5829 ></TD
5830 ><TD
5831 WIDTH="33%"
5832 ALIGN="right"
5833 VALIGN="top"
5834 ><A
5835 HREF="contact.html"
5836 >Next</A
5837 ></TD
5838 ></TR
5839 ><TR
5840 ><TD
5841 WIDTH="33%"
5842 ALIGN="left"
5843 VALIGN="top"
5844 >Quickstart to Using <SPAN
5845 CLASS="APPLICATION"
5846 >Privoxy</SPAN
5847 ></TD
5848 ><TD
5849 WIDTH="34%"
5850 ALIGN="center"
5851 VALIGN="top"
5852 >&nbsp;</TD
5853 ><TD
5854 WIDTH="33%"
5855 ALIGN="right"
5856 VALIGN="top"
5857 >Contacting the Developers, Bug Reporting and Feature
5858 Requests</TD
5859 ></TR
5860 ></TABLE
5861 ></DIV
5862 ></BODY
5863 ></HTML
5864 >