Clarifications on filtering and MIME types. Hardcode 'latest release' on home
[privoxy.git] / doc / webserver / user-manual / actions-file.html
1 <HTML
2 ><HEAD
3 ><TITLE
4 >Actions Files</TITLE
5 ><META
6 NAME="GENERATOR"
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
8 "><LINK
9 REL="HOME"
10 TITLE="Privoxy User Manual"
11 HREF="index.html"><LINK
12 REL="PREVIOUS"
13 TITLE="The Main Configuration File"
14 HREF="config.html"><LINK
15 REL="NEXT"
16 TITLE="The Filter File"
17 HREF="filter-file.html"><LINK
18 REL="STYLESHEET"
19 TYPE="text/css"
20 HREF="../p_doc.css"></HEAD
21 ><BODY
22 CLASS="SECT1"
23 BGCOLOR="#EEEEEE"
24 TEXT="#000000"
25 LINK="#0000FF"
26 VLINK="#840084"
27 ALINK="#0000FF"
28 ><DIV
29 CLASS="NAVHEADER"
30 ><TABLE
31 SUMMARY="Header navigation 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="config.html"
49 ACCESSKEY="P"
50 >Prev</A
51 ></TD
52 ><TD
53 WIDTH="80%"
54 ALIGN="center"
55 VALIGN="bottom"
56 ></TD
57 ><TD
58 WIDTH="10%"
59 ALIGN="right"
60 VALIGN="bottom"
61 ><A
62 HREF="filter-file.html"
63 ACCESSKEY="N"
64 >Next</A
65 ></TD
66 ></TR
67 ></TABLE
68 ><HR
69 ALIGN="LEFT"
70 WIDTH="100%"></DIV
71 ><DIV
72 CLASS="SECT1"
73 ><H1
74 CLASS="SECT1"
75 ><A
76 NAME="ACTIONS-FILE">8. Actions Files</H1
77 ><P
78 > The actions files are used to define what actions
79  <SPAN
80 CLASS="APPLICATION"
81 >Privoxy</SPAN
82 > takes for which URLs, and thus determine
83  how ad images, cookies and various other aspects of HTTP content and
84  transactions are handled, and on which sites (or even parts thereof). There 
85  are three such files included with <SPAN
86 CLASS="APPLICATION"
87 >Privoxy</SPAN
88 > (as of 
89  version 2.9.15), with differing purposes:
90  </P
91 ><P
92 >  <P
93 ></P
94 ><UL
95 ><LI
96 ><P
97 >     <TT
98 CLASS="FILENAME"
99 >default.action</TT
100 > - is the primary action file 
101      that sets the initial values for all actions. It is intended to 
102      provide a base level of functionality for
103      <SPAN
104 CLASS="APPLICATION"
105 >Privoxy's</SPAN
106 > array of features. So it is 
107      a set of broad rules that should work reasonably well for users everywhere.
108      This is the file that the developers are keeping updated, and making 
109      available to users.
110     </P
111 ></LI
112 ><LI
113 ><P
114 >     <TT
115 CLASS="FILENAME"
116 >user.action</TT
117 > - is intended to be for local site 
118      preferences and exceptions. As an example, if your ISP or your bank
119      has specific requirements, and need special handling, this kind of 
120      thing should go here. This file will not be upgraded.
121     </P
122 ></LI
123 ><LI
124 ><P
125 >     <TT
126 CLASS="FILENAME"
127 >standard.action</TT
128 > - is used by the web based editor, 
129      to set various pre-defined sets of rules for the default actions section
130      in <TT
131 CLASS="FILENAME"
132 >default.action</TT
133 >. These have increasing levels of
134      aggressiveness <SPAN
135 CLASS="emphasis"
136 ><I
137 CLASS="EMPHASIS"
138 >and have no influence on your browsing unless
139      you select them explicitly in the editor</I
140 ></SPAN
141 >. It is not recommend
142      to edit this file.
143     </P
144 ></LI
145 ></UL
146 >
147  </P
148 ><P
149 > The list of actions files to be used are defined in the main configuration 
150  file, and are processed in the order they are defined. The content of these
151  can all be viewed and edited from <A
152 HREF="http://config.privoxy.org/show-status"
153 TARGET="_top"
154 >http://config.privoxy.org/show-status</A
155 >.</P
156 ><P
157 > An actions file typically has multiple sections. If you want to use
158  <SPAN
159 CLASS="QUOTE"
160 >"aliases"</SPAN
161 > in an actions file, you have to place the (optional)
162  <A
163 HREF="actions-file.html#ALIASES"
164 >alias section</A
165 > at the top of that file.
166  Then comes the default set of rules which will apply universally to all
167  sites and pages (be <SPAN
168 CLASS="emphasis"
169 ><I
170 CLASS="EMPHASIS"
171 >very careful</I
172 ></SPAN
173 > with using such a
174  universal set in <TT
175 CLASS="FILENAME"
176 >user.action</TT
177 > or any other actions file after 
178  <TT
179 CLASS="FILENAME"
180 >default.action</TT
181 >, because it will override the result
182  from consulting any previous file). And then below that,
183  exceptions to the defined universal policies. You can regard
184  <TT
185 CLASS="FILENAME"
186 >user.action</TT
187 > as an appendix to <TT
188 CLASS="FILENAME"
189 >default.action</TT
190 >,
191  with the advantage that is a separate file, which makes preserving your
192  personal settings across <SPAN
193 CLASS="APPLICATION"
194 >Privoxy</SPAN
195 > upgrades easier.</P
196 ><P
197
198  Actions can be used to block anything you want, including ads, banners, or
199  just some obnoxious URL that you would rather not see. Cookies can be accepted
200  or rejected, or accepted only during the current browser session (i.e. not
201  written to disk), content can be modified, JavaScripts tamed, user-tracking
202  fooled, and much more. See below for a <A
203 HREF="actions-file.html#ACTIONS"
204 >complete list
205  of actions</A
206 >.</P
207 ><DIV
208 CLASS="SECT2"
209 ><H2
210 CLASS="SECT2"
211 ><A
212 NAME="AEN1584">8.1. Finding the Right Mix</H2
213 ><P
214 > Note that some <A
215 HREF="actions-file.html#ACTIONS"
216 >actions</A
217 >, like cookie suppression
218  or script disabling, may render some sites unusable that rely on these
219  techniques to work properly. Finding the right mix of actions is not always easy and
220  certainly a matter of personal taste. In general, it can be said that the more
221  <SPAN
222 CLASS="QUOTE"
223 >"aggressive"</SPAN
224 > your default settings (in the top section of the
225  actions file) are, the more exceptions for <SPAN
226 CLASS="QUOTE"
227 >"trusted"</SPAN
228 > sites you
229  will have to make later. If, for example, you want to kill popup windows per
230  default, you'll have to make exceptions from that rule for sites that you
231  regularly use and that require popups for actually useful content, like maybe
232  your bank, favorite shop, or newspaper.</P
233 ><P
234 > We have tried to provide you with reasonable rules to start from in the
235  distribution actions files. But there is no general rule of thumb on these
236  things. There just are too many variables, and sites are constantly changing.
237  Sooner or later you will want to change the rules (and read this chapter again :).</P
238 ></DIV
239 ><DIV
240 CLASS="SECT2"
241 ><H2
242 CLASS="SECT2"
243 ><A
244 NAME="AEN1591">8.2. How to Edit</H2
245 ><P
246 > The easiest way to edit the actions files is with a browser by
247  using our browser-based editor, which can be reached from <A
248 HREF="http://config.privoxy.org/show-status"
249 TARGET="_top"
250 >http://config.privoxy.org/show-status</A
251 >.
252  The editor allows both fine-grained control over every single feature on a
253  per-URL basis, and easy choosing from wholesale sets of defaults like
254  <SPAN
255 CLASS="QUOTE"
256 >"Cautious"</SPAN
257 >, <SPAN
258 CLASS="QUOTE"
259 >"Medium"</SPAN
260 > or <SPAN
261 CLASS="QUOTE"
262 >"Advanced"</SPAN
263 >.</P
264 ><P
265 > If you prefer plain text editing to GUIs, you can of course also directly edit the
266  the actions files. Look at <TT
267 CLASS="FILENAME"
268 >default.action</TT
269 > which is richly
270  commented.</P
271 ></DIV
272 ><DIV
273 CLASS="SECT2"
274 ><H2
275 CLASS="SECT2"
276 ><A
277 NAME="ACTIONS-APPLY">8.3. How Actions are Applied to URLs</H2
278 ><P
279 > Actions files are divided into sections. There are special sections,
280  like the <SPAN
281 CLASS="QUOTE"
282 >"<A
283 HREF="actions-file.html#ALIASES"
284 >alias</A
285 >"</SPAN
286 > sections which will
287  be discussed later. For now let's concentrate on regular sections: They have a
288  heading line (often split up to multiple lines for readability) which consist
289  of a list of actions, separated by whitespace and enclosed in curly braces.
290  Below that, there is a list of URL patterns, each on a separate line.</P
291 ><P
292 > To determine which actions apply to a request, the URL of the request is
293  compared to all patterns in each action file file. Every time it matches, the list of
294  applicable actions for the URL is incrementally updated, using the heading
295  of the section in which the pattern is located. If multiple matches for
296  the same URL set the same action differently, the last match wins. If not, 
297  the effects are aggregated. E.g. a URL might match a regular section with 
298  a heading line of <TT
299 CLASS="LITERAL"
300 >{ 
301  +<A
302 HREF="actions-file.html#HANDLE-AS-IMAGE"
303 TARGET="_top"
304 >handle-as-image</A
305 > }</TT
306 >,
307  then later another one with just <TT
308 CLASS="LITERAL"
309 >{
310  +<A
311 HREF="actions-file.html#BLOCK"
312 TARGET="_top"
313 >block</A
314 > }</TT
315 >, resulting
316  in <SPAN
317 CLASS="emphasis"
318 ><I
319 CLASS="EMPHASIS"
320 >both</I
321 ></SPAN
322 > actions to apply.</P
323 ><P
324 > You can trace this process for any given URL by visiting <A
325 HREF="http://config.privoxy.org/show-url-info"
326 TARGET="_top"
327 >http://config.privoxy.org/show-url-info</A
328 >.</P
329 ><P
330 > More detail on this is provided in the Appendix, <A
331 HREF="appendix.html#ACTIONSANAT"
332 > Anatomy of an Action</A
333 >.</P
334 ></DIV
335 ><DIV
336 CLASS="SECT2"
337 ><H2
338 CLASS="SECT2"
339 ><A
340 NAME="AF-PATTERNS">8.4. Patterns</H2
341 ><P
342 > Generally, a pattern has the form <TT
343 CLASS="LITERAL"
344 >&#60;domain&#62;/&#60;path&#62;</TT
345 >,
346  where both the <TT
347 CLASS="LITERAL"
348 >&#60;domain&#62;</TT
349 > and <TT
350 CLASS="LITERAL"
351 >&#60;path&#62;</TT
352 >
353  are optional. (This is why the pattern <TT
354 CLASS="LITERAL"
355 >/</TT
356 > matches all URLs).</P
357 ><P
358 ></P
359 ><DIV
360 CLASS="VARIABLELIST"
361 ><DL
362 ><DT
363 ><TT
364 CLASS="LITERAL"
365 >www.example.com/</TT
366 ></DT
367 ><DD
368 ><P
369 >    is a domain-only pattern and will match any request to <TT
370 CLASS="LITERAL"
371 >www.example.com</TT
372 >,
373     regardless of which document on that server is requested.
374    </P
375 ></DD
376 ><DT
377 ><TT
378 CLASS="LITERAL"
379 >www.example.com</TT
380 ></DT
381 ><DD
382 ><P
383 >    means exactly the same. For domain-only patterns, the trailing <TT
384 CLASS="LITERAL"
385 >/</TT
386 > may
387     be omitted.
388    </P
389 ></DD
390 ><DT
391 ><TT
392 CLASS="LITERAL"
393 >www.example.com/index.html</TT
394 ></DT
395 ><DD
396 ><P
397 >    matches only the single document <TT
398 CLASS="LITERAL"
399 >/index.html</TT
400 >
401     on <TT
402 CLASS="LITERAL"
403 >www.example.com</TT
404 >.
405    </P
406 ></DD
407 ><DT
408 ><TT
409 CLASS="LITERAL"
410 >/index.html</TT
411 ></DT
412 ><DD
413 ><P
414 >    matches the document <TT
415 CLASS="LITERAL"
416 >/index.html</TT
417 >, regardless of the domain,
418     i.e. on <SPAN
419 CLASS="emphasis"
420 ><I
421 CLASS="EMPHASIS"
422 >any</I
423 ></SPAN
424 > web server.
425    </P
426 ></DD
427 ><DT
428 ><TT
429 CLASS="LITERAL"
430 >index.html</TT
431 ></DT
432 ><DD
433 ><P
434 >    matches nothing, since it would be  interpreted as a domain name and
435     there is no top-level domain called <TT
436 CLASS="LITERAL"
437 >.html</TT
438 >.
439    </P
440 ></DD
441 ></DL
442 ></DIV
443 ><DIV
444 CLASS="SECT3"
445 ><H3
446 CLASS="SECT3"
447 ><A
448 NAME="AEN1655">8.4.1. The Domain Pattern</H3
449 ><P
450 > The matching of the domain part offers some flexible options: if the
451  domain starts or ends with a dot, it becomes unanchored at that end. 
452  For example:</P
453 ><P
454 ></P
455 ><DIV
456 CLASS="VARIABLELIST"
457 ><DL
458 ><DT
459 ><TT
460 CLASS="LITERAL"
461 >.example.com</TT
462 ></DT
463 ><DD
464 ><P
465 >    matches any domain that <SPAN
466 CLASS="emphasis"
467 ><I
468 CLASS="EMPHASIS"
469 >ENDS</I
470 ></SPAN
471 > in
472     <TT
473 CLASS="LITERAL"
474 >.example.com</TT
475 >
476    </P
477 ></DD
478 ><DT
479 ><TT
480 CLASS="LITERAL"
481 >www.</TT
482 ></DT
483 ><DD
484 ><P
485 >    matches any domain that <SPAN
486 CLASS="emphasis"
487 ><I
488 CLASS="EMPHASIS"
489 >STARTS</I
490 ></SPAN
491 > with
492     <TT
493 CLASS="LITERAL"
494 >www.</TT
495 >
496    </P
497 ></DD
498 ><DT
499 ><TT
500 CLASS="LITERAL"
501 >.example.</TT
502 ></DT
503 ><DD
504 ><P
505 >    matches any domain that <SPAN
506 CLASS="emphasis"
507 ><I
508 CLASS="EMPHASIS"
509 >CONTAINS</I
510 ></SPAN
511 > <TT
512 CLASS="LITERAL"
513 >.example.</TT
514 >
515     (Correctly speaking: It matches any FQDN that contains <TT
516 CLASS="LITERAL"
517 >example</TT
518 > as a domain.)
519    </P
520 ></DD
521 ></DL
522 ></DIV
523 ><P
524 > Additionally, there are wild-cards that you can use in the domain names
525  themselves. They work pretty similar to shell wild-cards: <SPAN
526 CLASS="QUOTE"
527 >"*"</SPAN
528 >
529  stands for zero or more arbitrary characters, <SPAN
530 CLASS="QUOTE"
531 >"?"</SPAN
532 > stands for
533  any single character, you can define character classes in square
534  brackets and all of that can be freely mixed:</P
535 ><P
536 ></P
537 ><DIV
538 CLASS="VARIABLELIST"
539 ><DL
540 ><DT
541 ><TT
542 CLASS="LITERAL"
543 >ad*.example.com</TT
544 ></DT
545 ><DD
546 ><P
547 >    matches <SPAN
548 CLASS="QUOTE"
549 >"adserver.example.com"</SPAN
550 >, 
551     <SPAN
552 CLASS="QUOTE"
553 >"ads.example.com"</SPAN
554 >, etc but not <SPAN
555 CLASS="QUOTE"
556 >"sfads.example.com"</SPAN
557 >
558    </P
559 ></DD
560 ><DT
561 ><TT
562 CLASS="LITERAL"
563 >*ad*.example.com</TT
564 ></DT
565 ><DD
566 ><P
567 >    matches all of the above, and then some.
568    </P
569 ></DD
570 ><DT
571 ><TT
572 CLASS="LITERAL"
573 >.?pix.com</TT
574 ></DT
575 ><DD
576 ><P
577 >    matches <TT
578 CLASS="LITERAL"
579 >www.ipix.com</TT
580 >,
581     <TT
582 CLASS="LITERAL"
583 >pictures.epix.com</TT
584 >, <TT
585 CLASS="LITERAL"
586 >a.b.c.d.e.upix.com</TT
587 > etc. 
588    </P
589 ></DD
590 ><DT
591 ><TT
592 CLASS="LITERAL"
593 >www[1-9a-ez].example.c*</TT
594 ></DT
595 ><DD
596 ><P
597 >     matches <TT
598 CLASS="LITERAL"
599 >www1.example.com</TT
600 >, 
601      <TT
602 CLASS="LITERAL"
603 >www4.example.cc</TT
604 >, <TT
605 CLASS="LITERAL"
606 >wwwd.example.cy</TT
607 >, 
608      <TT
609 CLASS="LITERAL"
610 >wwwz.example.com</TT
611 > etc., but <SPAN
612 CLASS="emphasis"
613 ><I
614 CLASS="EMPHASIS"
615 >not</I
616 ></SPAN
617
618      <TT
619 CLASS="LITERAL"
620 >wwww.example.com</TT
621 >.
622    </P
623 ></DD
624 ></DL
625 ></DIV
626 ></DIV
627 ><DIV
628 CLASS="SECT3"
629 ><H3
630 CLASS="SECT3"
631 ><A
632 NAME="AEN1717">8.4.2. The Path Pattern</H3
633 ><P
634 > <SPAN
635 CLASS="APPLICATION"
636 >Privoxy</SPAN
637 > uses Perl compatible regular expressions
638  (through the <A
639 HREF="http://www.pcre.org/"
640 TARGET="_top"
641 >PCRE</A
642 > library) for
643  matching the path.</P
644 ><P
645 > There is an <A
646 HREF="appendix.html#REGEX"
647 >Appendix</A
648 > with a brief quick-start into regular
649  expressions, and full (very technical) documentation on PCRE regex syntax is available on-line
650  at <A
651 HREF="http://www.pcre.org/man.txt"
652 TARGET="_top"
653 >http://www.pcre.org/man.txt</A
654 >.
655  You might also find the Perl man page on regular expressions (<TT
656 CLASS="LITERAL"
657 >man perlre</TT
658 >)
659  useful, which is available on-line at <A
660 HREF="http://www.perldoc.com/perl5.6/pod/perlre.html"
661 TARGET="_top"
662 >http://www.perldoc.com/perl5.6/pod/perlre.html</A
663 >.</P
664 ><P
665 > Note that the path pattern is automatically left-anchored at the <SPAN
666 CLASS="QUOTE"
667 >"/"</SPAN
668 >,
669  i.e. it matches as if it would start with a <SPAN
670 CLASS="QUOTE"
671 >"^"</SPAN
672 > (regular expression speak 
673  for the beginning of a line).</P
674 ><P
675 > Please also note that matching in the path is <SPAN
676 CLASS="emphasis"
677 ><I
678 CLASS="EMPHASIS"
679 >CASE INSENSITIVE</I
680 ></SPAN
681 >
682  by default, but you can switch to case sensitive at any point in the pattern by using the 
683  <SPAN
684 CLASS="QUOTE"
685 >"(?-i)"</SPAN
686 > switch: <TT
687 CLASS="LITERAL"
688 >www.example.com/(?-i)PaTtErN.*</TT
689 > will match
690  only documents whose path starts with <TT
691 CLASS="LITERAL"
692 >PaTtErN</TT
693 > in
694  <SPAN
695 CLASS="emphasis"
696 ><I
697 CLASS="EMPHASIS"
698 >exactly</I
699 ></SPAN
700 > this capitalization.</P
701 ></DIV
702 ></DIV
703 ><DIV
704 CLASS="SECT2"
705 ><H2
706 CLASS="SECT2"
707 ><A
708 NAME="ACTIONS">8.5. Actions</H2
709 ><P
710 > All actions are disabled by default, until they are explicitly enabled
711  somewhere in an actions file. Actions are turned on if preceded with a
712  <SPAN
713 CLASS="QUOTE"
714 >"+"</SPAN
715 >, and turned off if preceded with a <SPAN
716 CLASS="QUOTE"
717 >"-"</SPAN
718 >. So a
719  <TT
720 CLASS="LITERAL"
721 >+action</TT
722 > means <SPAN
723 CLASS="QUOTE"
724 >"do that action"</SPAN
725 >, e.g.
726  <TT
727 CLASS="LITERAL"
728 >+block</TT
729 > means <SPAN
730 CLASS="QUOTE"
731 >"please block URLs that match the
732  following patterns"</SPAN
733 >, and <TT
734 CLASS="LITERAL"
735 >-block</TT
736 > means <SPAN
737 CLASS="QUOTE"
738 >"don't
739  block URLs that match the following patterns, even if <TT
740 CLASS="LITERAL"
741 >+block</TT
742 >
743  previously applied."</SPAN
744 >&#13;</P
745 ><P
746
747  Again, actions are invoked by placing them on a line, enclosed in curly braces and
748  separated by whitespace, like in 
749  <TT
750 CLASS="LITERAL"
751 >{+some-action -some-other-action{some-parameter}}</TT
752 >,
753  followed by a list of URL patterns, one per line, to which they apply.
754  Together, the actions line and the following pattern lines make up a section
755  of the actions file. </P
756 ><P
757
758  There are three classes of actions:</P
759 ><P
760 > <P
761 ></P
762 ><UL
763 ><LI
764 ><P
765 >  
766    Boolean, i.e the action can only be <SPAN
767 CLASS="QUOTE"
768 >"enabled"</SPAN
769 > or
770    <SPAN
771 CLASS="QUOTE"
772 >"disabled"</SPAN
773 >. Syntax:
774   </P
775 ><P
776 >   <TABLE
777 BORDER="0"
778 BGCOLOR="#E0E0E0"
779 WIDTH="90%"
780 ><TR
781 ><TD
782 ><PRE
783 CLASS="SCREEN"
784 >  +<TT
785 CLASS="REPLACEABLE"
786 ><I
787 >name</I
788 ></TT
789 >        # enable action <TT
790 CLASS="REPLACEABLE"
791 ><I
792 >name</I
793 ></TT
794 >
795   -<TT
796 CLASS="REPLACEABLE"
797 ><I
798 >name</I
799 ></TT
800 >        # disable action <TT
801 CLASS="REPLACEABLE"
802 ><I
803 >name</I
804 ></TT
805 ></PRE
806 ></TD
807 ></TR
808 ></TABLE
809 >
810   </P
811 ><P
812 >  
813    Example: <TT
814 CLASS="LITERAL"
815 >+block</TT
816 >
817   </P
818 ></LI
819 ><LI
820 ><P
821 >  
822    Parameterized, where some value is required in order to enable this type of action.
823    Syntax:
824   </P
825 ><P
826 >   <TABLE
827 BORDER="0"
828 BGCOLOR="#E0E0E0"
829 WIDTH="90%"
830 ><TR
831 ><TD
832 ><PRE
833 CLASS="SCREEN"
834 >  +<TT
835 CLASS="REPLACEABLE"
836 ><I
837 >name</I
838 ></TT
839 >{<TT
840 CLASS="REPLACEABLE"
841 ><I
842 >param</I
843 ></TT
844 >}  # enable action and set parameter to <TT
845 CLASS="REPLACEABLE"
846 ><I
847 >param</I
848 ></TT
849 >,
850                # overwriting parameter from previous match if necessary
851   -<TT
852 CLASS="REPLACEABLE"
853 ><I
854 >name</I
855 ></TT
856 >         # disable action. The parameter can be omitted</PRE
857 ></TD
858 ></TR
859 ></TABLE
860 >
861   </P
862 ><P
863 >   Note that if the URL matches multiple positive forms of a parameterized action,
864    the last match wins, i.e. the params from earlier matches are simply ignored.
865   </P
866 ><P
867 >  
868    Example: <TT
869 CLASS="LITERAL"
870 >+hide-user-agent{ Mozilla 1.0 }</TT
871 >
872   </P
873 ></LI
874 ><LI
875 ><P
876 >  
877    Multi-value. These look exactly like parameterized actions,
878    but they behave differently: If the action applies multiple times to the
879    same URL, but with different parameters, <SPAN
880 CLASS="emphasis"
881 ><I
882 CLASS="EMPHASIS"
883 >all</I
884 ></SPAN
885 > the parameters
886    from <SPAN
887 CLASS="emphasis"
888 ><I
889 CLASS="EMPHASIS"
890 >all</I
891 ></SPAN
892 > matches are remembered. This is used for actions
893    that can be executed for the same request repeatedly, like adding multiple
894    headers, or filtering through multiple filters. Syntax:
895   </P
896 ><P
897 >   <TABLE
898 BORDER="0"
899 BGCOLOR="#E0E0E0"
900 WIDTH="90%"
901 ><TR
902 ><TD
903 ><PRE
904 CLASS="SCREEN"
905 >  +<TT
906 CLASS="REPLACEABLE"
907 ><I
908 >name</I
909 ></TT
910 >{<TT
911 CLASS="REPLACEABLE"
912 ><I
913 >param</I
914 ></TT
915 >}   # enable action and add <TT
916 CLASS="REPLACEABLE"
917 ><I
918 >param</I
919 ></TT
920 > to the list of parameters
921   -<TT
922 CLASS="REPLACEABLE"
923 ><I
924 >name</I
925 ></TT
926 >{<TT
927 CLASS="REPLACEABLE"
928 ><I
929 >param</I
930 ></TT
931 >}   # remove the parameter <TT
932 CLASS="REPLACEABLE"
933 ><I
934 >param</I
935 ></TT
936 > from the list of parameters
937                 # If it was the last one left, disable the action.
938   <TT
939 CLASS="REPLACEABLE"
940 ><I
941 >-name</I
942 ></TT
943 >          # disable this action completely and remove all parameters from the list</PRE
944 ></TD
945 ></TR
946 ></TABLE
947 >
948   </P
949 ><P
950 >  
951    Examples: <TT
952 CLASS="LITERAL"
953 >+add-header{X-Fun-Header: Some text}</TT
954 > and
955    <TT
956 CLASS="LITERAL"
957 >+filter{html-annoyances}</TT
958 >
959   </P
960 ></LI
961 ></UL
962 ></P
963 ><P
964 > If nothing is specified in any actions file, no <SPAN
965 CLASS="QUOTE"
966 >"actions"</SPAN
967 > are
968  taken. So in this case <SPAN
969 CLASS="APPLICATION"
970 >Privoxy</SPAN
971 > would just be a
972  normal, non-blocking, non-anonymizing proxy. You must specifically enable the
973  privacy and blocking features you need (although the provided default actions
974  files will give a good starting point).</P
975 ><P
976 > Later defined actions always over-ride earlier ones.  So exceptions 
977  to any rules you make, should come in the latter part of the file (or 
978  in a file that is processed later when using multiple actions files). For
979  multi-valued actions, the actions are applied in the order they are specified.
980  Actions files are processed in the order they are defined in
981  <TT
982 CLASS="FILENAME"
983 >config</TT
984 > (the default installation has three actions
985  files). It also quite possible for any given URL pattern to match more than
986  one pattern and thus more than one set of actions!</P
987 ><P
988 > The list of valid <SPAN
989 CLASS="APPLICATION"
990 >Privoxy</SPAN
991 > actions are:</P
992 ><DIV
993 CLASS="SECT3"
994 ><H4
995 CLASS="SECT3"
996 ><A
997 NAME="ADD-HEADER">8.5.1. add-header</H4
998 ><P
999 ></P
1000 ><DIV
1001 CLASS="VARIABLELIST"
1002 ><DL
1003 ><DT
1004 >Typical use:</DT
1005 ><DD
1006 ><P
1007 >Confuse log analysis, custom applications</P
1008 ></DD
1009 ><DT
1010 >Effect:</DT
1011 ><DD
1012 ><P
1013 >    Sends a user defined HTTP header to the web server.
1014    </P
1015 ></DD
1016 ><DT
1017 >Type:</DT
1018 ><DD
1019 ><P
1020 >Multi-value.</P
1021 ></DD
1022 ><DT
1023 >Parameter:</DT
1024 ><DD
1025 ><P
1026 >    Any string value is possible. Validity of the defined HTTP headers is not checked.
1027     It is recommended that you use the <SPAN
1028 CLASS="QUOTE"
1029 >"<TT
1030 CLASS="LITERAL"
1031 >X-</TT
1032 >"</SPAN
1033 > prefix
1034     for custom headers.
1035    </P
1036 ></DD
1037 ><DT
1038 >Notes:</DT
1039 ><DD
1040 ><P
1041 >    This action may be specified multiple times, in order to define multiple 
1042     headers. This is rarely needed for the typical user. If you don't know what 
1043     <SPAN
1044 CLASS="QUOTE"
1045 >"HTTP headers"</SPAN
1046 > are, you definitely don't need to worry about this 
1047     one.
1048    </P
1049 ></DD
1050 ><DT
1051 >Example usage:</DT
1052 ><DD
1053 ><P
1054 >     <TABLE
1055 BORDER="0"
1056 BGCOLOR="#E0E0E0"
1057 WIDTH="90%"
1058 ><TR
1059 ><TD
1060 ><PRE
1061 CLASS="SCREEN"
1062 >+add-header{X-User-Tracking: sucks}</PRE
1063 ></TD
1064 ></TR
1065 ></TABLE
1066 >
1067    </P
1068 ></DD
1069 ></DL
1070 ></DIV
1071 ></DIV
1072 ><DIV
1073 CLASS="SECT3"
1074 ><H4
1075 CLASS="SECT3"
1076 ><A
1077 NAME="BLOCK">8.5.2. block</H4
1078 ><P
1079 ></P
1080 ><DIV
1081 CLASS="VARIABLELIST"
1082 ><DL
1083 ><DT
1084 >Typical use:</DT
1085 ><DD
1086 ><P
1087 >Block ads or other obnoxious content</P
1088 ></DD
1089 ><DT
1090 >Effect:</DT
1091 ><DD
1092 ><P
1093 >    Requests for URLs to which this action applies are blocked, i.e. the requests are not
1094     forwarded to the remote server, but answered locally with a substitute page or image,
1095     as determined by the <TT
1096 CLASS="LITERAL"
1097 ><A
1098 HREF="actions-file.html#HANDLE-AS-IMAGE"
1099 >handle-as-image</A
1100 ></TT
1101 >
1102     and <TT
1103 CLASS="LITERAL"
1104 ><A
1105 HREF="actions-file.html#SET-IMAGE-BLOCKER"
1106 >set-image-blocker</A
1107 ></TT
1108 > actions.
1109    </P
1110 ></DD
1111 ><DT
1112 >Type:</DT
1113 ><DD
1114 ><P
1115 >Boolean.</P
1116 ></DD
1117 ><DT
1118 >Parameter:</DT
1119 ><DD
1120 ><P
1121 >N/A</P
1122 ></DD
1123 ><DT
1124 >Notes:</DT
1125 ><DD
1126 ><P
1127 >    <SPAN
1128 CLASS="APPLICATION"
1129 >Privoxy</SPAN
1130 > sends a special <SPAN
1131 CLASS="QUOTE"
1132 >"BLOCKED"</SPAN
1133 > page
1134     for requests to blocked pages. This page contains links to find out why the request
1135     was blocked, and a click-through to the blocked content (the latter only if compiled with the
1136     force feature enabled). The <SPAN
1137 CLASS="QUOTE"
1138 >"BLOCKED"</SPAN
1139 > page adapts to the available
1140     screen space -- it displays full-blown if space allows, or miniaturized and text-only
1141     if loaded into a small frame or window. If you are using <SPAN
1142 CLASS="APPLICATION"
1143 >Privoxy</SPAN
1144 >
1145     right now, you can take a look at the 
1146     <A
1147 HREF="http://ads.bannerserver.example.com/nasty-ads/sponsor.html"
1148 TARGET="_top"
1149 ><SPAN
1150 CLASS="QUOTE"
1151 >"BLOCKED"</SPAN
1152 >
1153     page</A
1154 >.
1155    </P
1156 ><P
1157
1158     A very important exception occurs if <SPAN
1159 CLASS="emphasis"
1160 ><I
1161 CLASS="EMPHASIS"
1162 >both</I
1163 ></SPAN
1164
1165     <TT
1166 CLASS="LITERAL"
1167 >block</TT
1168 > and <TT
1169 CLASS="LITERAL"
1170 ><A
1171 HREF="actions-file.html#HANDLE-AS-IMAGE"
1172 >handle-as-image</A
1173 ></TT
1174 >,
1175     apply to the same request: it will then be replaced by an image. If 
1176     <TT
1177 CLASS="LITERAL"
1178 ><A
1179 HREF="actions-file.html#SET-IMAGE-BLOCKER"
1180 >set-image-blocker</A
1181 ></TT
1182 >
1183     (see below) also applies, the type of image will be determined by its parameter,
1184     if not, the standard checkerboard pattern is sent.
1185    </P
1186 ><P
1187 >    It is important to understand this process, in order 
1188     to understand how <SPAN
1189 CLASS="APPLICATION"
1190 >Privoxy</SPAN
1191 > deals with 
1192     ads and other unwanted content.
1193    </P
1194 ><P
1195 >    The <TT
1196 CLASS="LITERAL"
1197 ><A
1198 HREF="actions-file.html#FILTER"
1199 >filter</A
1200 ></TT
1201 >
1202     action can perform a very similar task, by <SPAN
1203 CLASS="QUOTE"
1204 >"blocking"</SPAN
1205 >
1206     banner images and other content through rewriting the relevant URLs in the
1207     document's HTML source, so they don't get requested in the first place.
1208     Note that this is a totally different technique, and it's easy to confuse the two.
1209    </P
1210 ></DD
1211 ><DT
1212 >Example usage (section):</DT
1213 ><DD
1214 ><P
1215 >     <TABLE
1216 BORDER="0"
1217 BGCOLOR="#E0E0E0"
1218 WIDTH="90%"
1219 ><TR
1220 ><TD
1221 ><PRE
1222 CLASS="SCREEN"
1223 >{+block}      # Block and replace with "blocked" page
1224 .nasty-stuff.example.com
1225
1226 {+block +handle-as-image} # Block and replace with image
1227 .ad.doubleclick.net
1228 .ads.r.us</PRE
1229 ></TD
1230 ></TR
1231 ></TABLE
1232 >
1233     </P
1234 ></DD
1235 ></DL
1236 ></DIV
1237 ></DIV
1238 ><DIV
1239 CLASS="SECT3"
1240 ><H4
1241 CLASS="SECT3"
1242 ><A
1243 NAME="CRUNCH-INCOMING-COOKIES">8.5.3. crunch-incoming-cookies</H4
1244 ><P
1245 ></P
1246 ><DIV
1247 CLASS="VARIABLELIST"
1248 ><DL
1249 ><DT
1250 >Typical use:</DT
1251 ><DD
1252 ><P
1253 >    Prevent the web server from setting any cookies on your system
1254    </P
1255 ></DD
1256 ><DT
1257 >Effect:</DT
1258 ><DD
1259 ><P
1260 >    Deletes any <SPAN
1261 CLASS="QUOTE"
1262 >"Set-Cookie:"</SPAN
1263 > HTTP headers from server replies.
1264    </P
1265 ></DD
1266 ><DT
1267 >Type:</DT
1268 ><DD
1269 ><P
1270 >Boolean.</P
1271 ></DD
1272 ><DT
1273 >Parameter:</DT
1274 ><DD
1275 ><P
1276 >    N/A
1277    </P
1278 ></DD
1279 ><DT
1280 >Notes:</DT
1281 ><DD
1282 ><P
1283 >    This action is only concerned with <SPAN
1284 CLASS="emphasis"
1285 ><I
1286 CLASS="EMPHASIS"
1287 >incoming</I
1288 ></SPAN
1289 > cookies. For
1290     <SPAN
1291 CLASS="emphasis"
1292 ><I
1293 CLASS="EMPHASIS"
1294 >outgoing</I
1295 ></SPAN
1296 > cookies, use
1297     <TT
1298 CLASS="LITERAL"
1299 ><A
1300 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
1301 >crunch-outgoing-cookies</A
1302 ></TT
1303 >.
1304     Use <SPAN
1305 CLASS="emphasis"
1306 ><I
1307 CLASS="EMPHASIS"
1308 >both</I
1309 ></SPAN
1310 > to disable cookies completely.
1311    </P
1312 ><P
1313 >    It makes <SPAN
1314 CLASS="emphasis"
1315 ><I
1316 CLASS="EMPHASIS"
1317 >no sense at all</I
1318 ></SPAN
1319 > to use this action in conjunction
1320     with the <TT
1321 CLASS="LITERAL"
1322 ><A
1323 HREF="actions-file.html#SESSION-COOKIES-ONLY"
1324 >session-cookies-only</A
1325 ></TT
1326 > action,
1327     since it would prevent the session cookies from being set.
1328    </P
1329 ></DD
1330 ><DT
1331 >Example usage:</DT
1332 ><DD
1333 ><P
1334 >    <TABLE
1335 BORDER="0"
1336 BGCOLOR="#E0E0E0"
1337 WIDTH="90%"
1338 ><TR
1339 ><TD
1340 ><PRE
1341 CLASS="SCREEN"
1342 >+crunch-incoming-cookies</PRE
1343 ></TD
1344 ></TR
1345 ></TABLE
1346 >
1347    </P
1348 ></DD
1349 ></DL
1350 ></DIV
1351 ></DIV
1352 ><DIV
1353 CLASS="SECT3"
1354 ><H4
1355 CLASS="SECT3"
1356 ><A
1357 NAME="CRUNCH-OUTGOING-COOKIES">8.5.4. crunch-outgoing-cookies</H4
1358 ><P
1359 ></P
1360 ><DIV
1361 CLASS="VARIABLELIST"
1362 ><DL
1363 ><DT
1364 >Typical use:</DT
1365 ><DD
1366 ><P
1367 >    Prevent the web server from reading any cookies from your system
1368    </P
1369 ></DD
1370 ><DT
1371 >Effect:</DT
1372 ><DD
1373 ><P
1374 >    Deletes any <SPAN
1375 CLASS="QUOTE"
1376 >"Cookie:"</SPAN
1377 > HTTP headers from client requests.
1378    </P
1379 ></DD
1380 ><DT
1381 >Type:</DT
1382 ><DD
1383 ><P
1384 >Boolean.</P
1385 ></DD
1386 ><DT
1387 >Parameter:</DT
1388 ><DD
1389 ><P
1390 >    N/A
1391    </P
1392 ></DD
1393 ><DT
1394 >Notes:</DT
1395 ><DD
1396 ><P
1397 >    This action is only concerned with <SPAN
1398 CLASS="emphasis"
1399 ><I
1400 CLASS="EMPHASIS"
1401 >outgoing</I
1402 ></SPAN
1403 > cookies. For
1404     <SPAN
1405 CLASS="emphasis"
1406 ><I
1407 CLASS="EMPHASIS"
1408 >incoming</I
1409 ></SPAN
1410 > cookies, use
1411     <TT
1412 CLASS="LITERAL"
1413 ><A
1414 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
1415 >crunch-incoming-cookies</A
1416 ></TT
1417 >.
1418     Use <SPAN
1419 CLASS="emphasis"
1420 ><I
1421 CLASS="EMPHASIS"
1422 >both</I
1423 ></SPAN
1424 > to disable cookies completely.
1425    </P
1426 ><P
1427 >    It makes <SPAN
1428 CLASS="emphasis"
1429 ><I
1430 CLASS="EMPHASIS"
1431 >no sense at all</I
1432 ></SPAN
1433 > to use this action in conjunction
1434     with the <TT
1435 CLASS="LITERAL"
1436 ><A
1437 HREF="actions-file.html#SESSION-COOKIES-ONLY"
1438 >session-cookies-only</A
1439 ></TT
1440 > action,
1441     since it would prevent the session cookies from being read.
1442    </P
1443 ></DD
1444 ><DT
1445 >Example usage:</DT
1446 ><DD
1447 ><P
1448 >    <TABLE
1449 BORDER="0"
1450 BGCOLOR="#E0E0E0"
1451 WIDTH="90%"
1452 ><TR
1453 ><TD
1454 ><PRE
1455 CLASS="SCREEN"
1456 >+crunch-outgoing-cookies</PRE
1457 ></TD
1458 ></TR
1459 ></TABLE
1460 >
1461    </P
1462 ></DD
1463 ></DL
1464 ></DIV
1465 ></DIV
1466 ><DIV
1467 CLASS="SECT3"
1468 ><H4
1469 CLASS="SECT3"
1470 ><A
1471 NAME="DEANIMATE-GIFS">8.5.5. deanimate-gifs</H4
1472 ><P
1473 ></P
1474 ><DIV
1475 CLASS="VARIABLELIST"
1476 ><DL
1477 ><DT
1478 >Typical use:</DT
1479 ><DD
1480 ><P
1481 >Stop those annoying, distracting animated GIF images.</P
1482 ></DD
1483 ><DT
1484 >Effect:</DT
1485 ><DD
1486 ><P
1487 >    De-animate GIF animations, i.e. reduce them to their first or last image.
1488    </P
1489 ></DD
1490 ><DT
1491 >Type:</DT
1492 ><DD
1493 ><P
1494 >Parameterized.</P
1495 ></DD
1496 ><DT
1497 >Parameter:</DT
1498 ><DD
1499 ><P
1500 >    <SPAN
1501 CLASS="QUOTE"
1502 >"last"</SPAN
1503 > or <SPAN
1504 CLASS="QUOTE"
1505 >"first"</SPAN
1506 >
1507    </P
1508 ></DD
1509 ><DT
1510 >Notes:</DT
1511 ><DD
1512 ><P
1513 >    This will also shrink the images considerably (in bytes, not pixels!). If
1514     the option <SPAN
1515 CLASS="QUOTE"
1516 >"first"</SPAN
1517 > is given, the first frame of the animation
1518     is used as the replacement. If <SPAN
1519 CLASS="QUOTE"
1520 >"last"</SPAN
1521 > is given, the last
1522     frame of the animation is used instead, which probably makes more sense for
1523     most banner animations, but also has the risk of not showing the entire
1524     last frame (if it is only a delta to an earlier frame).
1525    </P
1526 ><P
1527 >    You can safely use this action with patterns that will also match non-GIF
1528     objects, because no attempt will be made at anything that doesn't look like
1529     a GIF.
1530    </P
1531 ></DD
1532 ><DT
1533 >Example usage:</DT
1534 ><DD
1535 ><P
1536 >      <TABLE
1537 BORDER="0"
1538 BGCOLOR="#E0E0E0"
1539 WIDTH="90%"
1540 ><TR
1541 ><TD
1542 ><PRE
1543 CLASS="SCREEN"
1544 >+deanimate-gifs{last}</PRE
1545 ></TD
1546 ></TR
1547 ></TABLE
1548 >
1549     </P
1550 ></DD
1551 ></DL
1552 ></DIV
1553 ></DIV
1554 ><DIV
1555 CLASS="SECT3"
1556 ><H4
1557 CLASS="SECT3"
1558 ><A
1559 NAME="DOWNGRADE-HTTP-VERSION">8.5.6. downgrade-http-version</H4
1560 ><P
1561 ></P
1562 ><DIV
1563 CLASS="VARIABLELIST"
1564 ><DL
1565 ><DT
1566 >Typical use:</DT
1567 ><DD
1568 ><P
1569 >Work around (very rare) problems with HTTP/1.1</P
1570 ></DD
1571 ><DT
1572 >Effect:</DT
1573 ><DD
1574 ><P
1575 >    Downgrades HTTP/1.1 client requests and server replies to HTTP/1.0.
1576    </P
1577 ></DD
1578 ><DT
1579 >Type:</DT
1580 ><DD
1581 ><P
1582 >Boolean.</P
1583 ></DD
1584 ><DT
1585 >Parameter:</DT
1586 ><DD
1587 ><P
1588 >    N/A
1589    </P
1590 ></DD
1591 ><DT
1592 >Notes:</DT
1593 ><DD
1594 ><P
1595 >    This is a left-over from the time when <SPAN
1596 CLASS="APPLICATION"
1597 >Privoxy</SPAN
1598 >
1599     didn't support important HTTP/1.1 features well. It is left here for the
1600     unlikely case that you experience HTTP/1.1 related problems with some server
1601     out there. Not all (optional) HTTP/1.1 features are supported yet, so there
1602     is a chance you might need this action.
1603    </P
1604 ></DD
1605 ><DT
1606 >Example usage (section):</DT
1607 ><DD
1608 ><P
1609 >     <TABLE
1610 BORDER="0"
1611 BGCOLOR="#E0E0E0"
1612 WIDTH="90%"
1613 ><TR
1614 ><TD
1615 ><PRE
1616 CLASS="SCREEN"
1617 >{+downgrade-http-version}
1618 problem-host.example.com</PRE
1619 ></TD
1620 ></TR
1621 ></TABLE
1622 >
1623     </P
1624 ></DD
1625 ></DL
1626 ></DIV
1627 ></DIV
1628 ><DIV
1629 CLASS="SECT3"
1630 ><H4
1631 CLASS="SECT3"
1632 ><A
1633 NAME="FAST-REDIRECTS">8.5.7. fast-redirects</H4
1634 ><P
1635 ></P
1636 ><DIV
1637 CLASS="VARIABLELIST"
1638 ><DL
1639 ><DT
1640 >Typical use:</DT
1641 ><DD
1642 ><P
1643 >Fool some click-tracking scripts and speed up indirect links</P
1644 ></DD
1645 ><DT
1646 >Effect:</DT
1647 ><DD
1648 ><P
1649 >    Cut off all but the last valid URL from requests.
1650    </P
1651 ></DD
1652 ><DT
1653 >Type:</DT
1654 ><DD
1655 ><P
1656 >Boolean.</P
1657 ></DD
1658 ><DT
1659 >Parameter:</DT
1660 ><DD
1661 ><P
1662 >    N/A
1663    </P
1664 ></DD
1665 ><DT
1666 >Notes:</DT
1667 ><DD
1668 ><P
1669 >  
1670     Many sites, like yahoo.com, don't just link to other sites. Instead, they
1671     will link to some script on their own servers, giving the destination as a
1672     parameter, which will then redirect you to the final target. URLs
1673     resulting from this scheme typically look like:
1674     <SPAN
1675 CLASS="emphasis"
1676 ><I
1677 CLASS="EMPHASIS"
1678 >http://some.place/click-tracker.cgi?target=http://some.where.else</I
1679 ></SPAN
1680 >.
1681   </P
1682 ><P
1683 >    Sometimes, there are even multiple consecutive redirects encoded in the
1684     URL. These redirections via scripts make your web browsing more traceable,
1685     since the server from which you follow such a link can see where you go
1686     to. Apart from that, valuable bandwidth and time is wasted, while your
1687     browser ask the server for one redirect after the other. Plus, it feeds
1688     the advertisers.
1689    </P
1690 ><P
1691 >    This feature is currently not very smart and is scheduled for improvement.
1692     It is likely to break some sites. You should expect to need possibly 
1693     many exceptions to this action, if it is enabled by default in
1694     <TT
1695 CLASS="FILENAME"
1696 >default.action</TT
1697 >. Some sites just don't work without 
1698     it.
1699    </P
1700 ></DD
1701 ><DT
1702 >Example usage:</DT
1703 ><DD
1704 ><P
1705 >     <TABLE
1706 BORDER="0"
1707 BGCOLOR="#E0E0E0"
1708 WIDTH="90%"
1709 ><TR
1710 ><TD
1711 ><PRE
1712 CLASS="SCREEN"
1713 >{+fast-redirects}</PRE
1714 ></TD
1715 ></TR
1716 ></TABLE
1717 >
1718     </P
1719 ></DD
1720 ></DL
1721 ></DIV
1722 ></DIV
1723 ><DIV
1724 CLASS="SECT3"
1725 ><H4
1726 CLASS="SECT3"
1727 ><A
1728 NAME="FILTER">8.5.8. filter</H4
1729 ><P
1730 ></P
1731 ><DIV
1732 CLASS="VARIABLELIST"
1733 ><DL
1734 ><DT
1735 >Typical use:</DT
1736 ><DD
1737 ><P
1738 >Get rid of HTML and JavaScript annoyances, banner advertisements (by size), do fun text replacements, etc.</P
1739 ></DD
1740 ><DT
1741 >Effect:</DT
1742 ><DD
1743 ><P
1744 >    Text documents, including HTML and JavaScript, to which this action
1745     applies, are filtered on-the-fly through the specified regular expression
1746     based substitutions.
1747    </P
1748 ></DD
1749 ><DT
1750 >Type:</DT
1751 ><DD
1752 ><P
1753 >Parameterized.</P
1754 ></DD
1755 ><DT
1756 >Parameter:</DT
1757 ><DD
1758 ><P
1759 >    The name of a filter, as defined in the <A
1760 HREF="filter-file.html"
1761 >filter file</A
1762 >
1763     (typically <TT
1764 CLASS="FILENAME"
1765 >default.filter</TT
1766 >, set by the
1767     <TT
1768 CLASS="LITERAL"
1769 ><A
1770 HREF="config.html#FILTERFILE"
1771 >filterfile</A
1772 ></TT
1773 >
1774     option in the <A
1775 HREF="config.html"
1776 >config file</A
1777 >). Filtering 
1778     can be completely disabled without the use of parameters.
1779    </P
1780 ></DD
1781 ><DT
1782 >Notes:</DT
1783 ><DD
1784 ><P
1785 >    For your convenience, there are a number of pre-defined filters available 
1786     in the distribution filter file that you can use. See the examples below for
1787     a list.
1788    </P
1789 ><P
1790 >    This is potentially a very powerful feature!  But <SPAN
1791 CLASS="QUOTE"
1792 >"rolling your own"</SPAN
1793 >
1794     filters requires a knowledge of regular expressions and HTML.
1795    </P
1796 ><P
1797 >    Filtering requires buffering the page content, which may appear to
1798     slow down page rendering since nothing is displayed until all content has
1799     passed the filters. (It does not really take longer, but seems that way
1800     since the page is not incrementally displayed.) This effect will be more
1801     noticeable on slower connections.
1802    </P
1803 ><P
1804 >    The amount of data that can be filtered is limited to the 
1805     <TT
1806 CLASS="LITERAL"
1807 ><A
1808 HREF="config.html#BUFFER-LIMIT"
1809 >buffer-limit</A
1810 ></TT
1811 >
1812     option in the main <A
1813 HREF="config.html"
1814 >config file</A
1815 >. The 
1816     default is 4096 KB (4 Megs). Once this limit is exceeded, the buffered
1817     data, and all pending data, is passed through unfiltered. Inappropriate 
1818     MIME types are not filtered.
1819    </P
1820 ><P
1821 >    At this time, <SPAN
1822 CLASS="APPLICATION"
1823 >Privoxy</SPAN
1824 > cannot (yet!) uncompress compressed
1825     documents. If you want filtering to work on all documents, even those that
1826     would normally be sent compressed, use the
1827     <TT
1828 CLASS="LITERAL"
1829 ><A
1830 HREF="actions-file.html#PREVENT-COMPRESSION"
1831 >prevent-compression</A
1832 ></TT
1833 >
1834     action in conjunction with <TT
1835 CLASS="LITERAL"
1836 >filter</TT
1837 >.
1838    </P
1839 ><P
1840 >    Filtering can achieve some of the same effects as the 
1841     <TT
1842 CLASS="LITERAL"
1843 ><A
1844 HREF="actions-file.html#BLOCK"
1845 >block</A
1846 ></TT
1847 >
1848     action, i.e. it can be used to block ads and banners. But the mechanism 
1849     works quite differently. One effective use, is to block ad banners 
1850     based on their size (see below), since many of these seem to be somewhat 
1851     standardized.
1852    </P
1853 ><P
1854 >    <A
1855 HREF="contact.html"
1856 >Feedback</A
1857 > with suggestions for new or
1858     improved filters is particularly welcome!
1859    </P
1860 ></DD
1861 ><DT
1862 >Example usage (with filters from the distribution <TT
1863 CLASS="FILENAME"
1864 >default.filter</TT
1865 > file):</DT
1866 ><DD
1867 ><P
1868 >    <A
1869 NAME="FILTER-HTML-ANNOYANCES"
1870 ></A
1871 >
1872     <TABLE
1873 BORDER="0"
1874 BGCOLOR="#E0E0E0"
1875 WIDTH="90%"
1876 ><TR
1877 ><TD
1878 ><PRE
1879 CLASS="SCREEN"
1880 >+filter{html-annoyances}     # Get rid of particularly annoying HTML abuse.</PRE
1881 ></TD
1882 ></TR
1883 ></TABLE
1884 >
1885    </P
1886 ><P
1887 >    <A
1888 NAME="FILTER-JS-ANNOYANCES"
1889 ></A
1890 >
1891     <TABLE
1892 BORDER="0"
1893 BGCOLOR="#E0E0E0"
1894 WIDTH="90%"
1895 ><TR
1896 ><TD
1897 ><PRE
1898 CLASS="SCREEN"
1899 >+filter{js-annoyances}       # Get rid of particularly annoying JavaScript abuse</PRE
1900 ></TD
1901 ></TR
1902 ></TABLE
1903 >
1904    </P
1905 ><P
1906 >    <A
1907 NAME="FILTER-BANNERS-BY-SIZE"
1908 ></A
1909 >
1910     <TABLE
1911 BORDER="0"
1912 BGCOLOR="#E0E0E0"
1913 WIDTH="90%"
1914 ><TR
1915 ><TD
1916 ><PRE
1917 CLASS="SCREEN"
1918 >+filter{banners-by-size}     # Kill banners based on their size for this page (<SPAN
1919 CLASS="emphasis"
1920 ><I
1921 CLASS="EMPHASIS"
1922 >very</I
1923 ></SPAN
1924 > efficient!)</PRE
1925 ></TD
1926 ></TR
1927 ></TABLE
1928 >
1929    </P
1930 ><P
1931 >    <A
1932 NAME="FILTER-CONTENT-COOKIES"
1933 ></A
1934 >
1935     <TABLE
1936 BORDER="0"
1937 BGCOLOR="#E0E0E0"
1938 WIDTH="90%"
1939 ><TR
1940 ><TD
1941 ><PRE
1942 CLASS="SCREEN"
1943 >+filter{content-cookies}     # Kill cookies that come sneaking in the HTML or JS content</PRE
1944 ></TD
1945 ></TR
1946 ></TABLE
1947 >
1948    </P
1949 ><P
1950 >    <A
1951 NAME="FILTER-POPUPS"
1952 ></A
1953 >
1954     <TABLE
1955 BORDER="0"
1956 BGCOLOR="#E0E0E0"
1957 WIDTH="90%"
1958 ><TR
1959 ><TD
1960 ><PRE
1961 CLASS="SCREEN"
1962 >+filter{popups}              # Kill all popups in JS and HTML</PRE
1963 ></TD
1964 ></TR
1965 ></TABLE
1966 >
1967    </P
1968 ><P
1969 >    <A
1970 NAME="FILTER-WEBBUGS"
1971 ></A
1972 >
1973     <TABLE
1974 BORDER="0"
1975 BGCOLOR="#E0E0E0"
1976 WIDTH="90%"
1977 ><TR
1978 ><TD
1979 ><PRE
1980 CLASS="SCREEN"
1981 >+filter{webbugs}             # Squish WebBugs (1x1 invisible GIFs used for user tracking)</PRE
1982 ></TD
1983 ></TR
1984 ></TABLE
1985 >
1986    </P
1987 ><P
1988 >    <A
1989 NAME="FILTER-FUN"
1990 ></A
1991 >
1992     <TABLE
1993 BORDER="0"
1994 BGCOLOR="#E0E0E0"
1995 WIDTH="90%"
1996 ><TR
1997 ><TD
1998 ><PRE
1999 CLASS="SCREEN"
2000 >+filter{fun}                 # Text replacements for subversive browsing fun!</PRE
2001 ></TD
2002 ></TR
2003 ></TABLE
2004 >
2005    </P
2006 ><P
2007 >    <A
2008 NAME="FILTER-FRAMESET-BORDERS"
2009 ></A
2010 >
2011     <TABLE
2012 BORDER="0"
2013 BGCOLOR="#E0E0E0"
2014 WIDTH="90%"
2015 ><TR
2016 ><TD
2017 ><PRE
2018 CLASS="SCREEN"
2019 >+filter{frameset-borders}    # Give frames a border and make them resizeable</PRE
2020 ></TD
2021 ></TR
2022 ></TABLE
2023
2024    </P
2025 ><P
2026 >    <A
2027 NAME="FILTER-REFRESH-TAGS"
2028 ></A
2029 >
2030     <TABLE
2031 BORDER="0"
2032 BGCOLOR="#E0E0E0"
2033 WIDTH="90%"
2034 ><TR
2035 ><TD
2036 ><PRE
2037 CLASS="SCREEN"
2038 >+filter{refresh-tags}        # Kill automatic refresh tags (for dial-on-demand setups)</PRE
2039 ></TD
2040 ></TR
2041 ></TABLE
2042 >
2043    </P
2044 ><P
2045 >    <A
2046 NAME="FILTER-NIMDA"
2047 ></A
2048 >
2049     <TABLE
2050 BORDER="0"
2051 BGCOLOR="#E0E0E0"
2052 WIDTH="90%"
2053 ><TR
2054 ><TD
2055 ><PRE
2056 CLASS="SCREEN"
2057 >+filter{nimda}               # Remove Nimda (virus) code.</PRE
2058 ></TD
2059 ></TR
2060 ></TABLE
2061 >
2062    </P
2063 ><P
2064 >    <A
2065 NAME="FILTER-SHOCKWAVE-FLASH"
2066 ></A
2067 >
2068     <TABLE
2069 BORDER="0"
2070 BGCOLOR="#E0E0E0"
2071 WIDTH="90%"
2072 ><TR
2073 ><TD
2074 ><PRE
2075 CLASS="SCREEN"
2076 >+filter{shockwave-flash}     # Kill embedded Shockwave Flash objects</PRE
2077 ></TD
2078 ></TR
2079 ></TABLE
2080 >
2081    </P
2082 ><P
2083 >    <A
2084 NAME="FILTER-CRUDE-PARENTAL"
2085 ></A
2086 >
2087     <TABLE
2088 BORDER="0"
2089 BGCOLOR="#E0E0E0"
2090 WIDTH="90%"
2091 ><TR
2092 ><TD
2093 ><PRE
2094 CLASS="SCREEN"
2095 >+filter{crude-parental}      # Kill all web pages that contain the words "sex" or "warez"</PRE
2096 ></TD
2097 ></TR
2098 ></TABLE
2099 >
2100    </P
2101 ></DD
2102 ></DL
2103 ></DIV
2104 ></DIV
2105 ><DIV
2106 CLASS="SECT3"
2107 ><H4
2108 CLASS="SECT3"
2109 ><A
2110 NAME="HANDLE-AS-IMAGE">8.5.9. handle-as-image</H4
2111 ><P
2112 ></P
2113 ><DIV
2114 CLASS="VARIABLELIST"
2115 ><DL
2116 ><DT
2117 >Typical use:</DT
2118 ><DD
2119 ><P
2120 >Mark URLs as belonging to images (so they'll be replaced by images <SPAN
2121 CLASS="emphasis"
2122 ><I
2123 CLASS="EMPHASIS"
2124 >if they get blocked</I
2125 ></SPAN
2126 >)</P
2127 ></DD
2128 ><DT
2129 >Effect:</DT
2130 ><DD
2131 ><P
2132 >    This action alone doesn't do anything noticeable. It just marks URLs as images.
2133     If the <TT
2134 CLASS="LITERAL"
2135 ><A
2136 HREF="actions-file.html#BLOCK"
2137 >block</A
2138 ></TT
2139 > action <SPAN
2140 CLASS="emphasis"
2141 ><I
2142 CLASS="EMPHASIS"
2143 >also applies</I
2144 ></SPAN
2145 >,
2146     the presence or absence of this mark decides whether an HTML <SPAN
2147 CLASS="QUOTE"
2148 >"blocked"</SPAN
2149 >
2150     page, or a replacement image (as determined by the <TT
2151 CLASS="LITERAL"
2152 ><A
2153 HREF="actions-file.html#SET-IMAGE-BLOCKER"
2154 >set-image-blocker</A
2155 ></TT
2156 > action) will be sent to the
2157     client as a substitute for the blocked content.
2158    </P
2159 ></DD
2160 ><DT
2161 >Type:</DT
2162 ><DD
2163 ><P
2164 >Boolean.</P
2165 ></DD
2166 ><DT
2167 >Parameter:</DT
2168 ><DD
2169 ><P
2170 >    N/A
2171    </P
2172 ></DD
2173 ><DT
2174 >Notes:</DT
2175 ><DD
2176 ><P
2177 >    The below generic example section is actually part of <TT
2178 CLASS="FILENAME"
2179 >default.action</TT
2180 >.
2181     It marks all URLs with well-known image file name extensions as images and should
2182     be left intact. 
2183    </P
2184 ><P
2185 >    Users will probably only want to use the handle-as-image action in conjunction with
2186     <TT
2187 CLASS="LITERAL"
2188 ><A
2189 HREF="actions-file.html#BLOCK"
2190 >block</A
2191 ></TT
2192 >, to block sources of banners, whose URLs don't
2193     reflect the file type, like in the second example section.
2194    </P
2195 ><P
2196 >    Note that you cannot treat HTML pages as images in most cases. For instance, (in-line) ad
2197     frames require an HTML page to be sent, or they won't display properly.
2198     Forcing <TT
2199 CLASS="LITERAL"
2200 >handle-as-image</TT
2201 > in this situation will not replace the
2202     ad frame with an image, but lead to error messages.
2203    </P
2204 ></DD
2205 ><DT
2206 >Example usage (sections):</DT
2207 ><DD
2208 ><P
2209 >     <TABLE
2210 BORDER="0"
2211 BGCOLOR="#E0E0E0"
2212 WIDTH="90%"
2213 ><TR
2214 ><TD
2215 ><PRE
2216 CLASS="SCREEN"
2217 ># Generic image extensions:
2218 #
2219 {+handle-as-image}
2220 /.*\.(gif|jpg|jpeg|png|bmp|ico)$
2221
2222 # These don't look like images, but they're banners and should be
2223 # blocked as images:
2224 #
2225 {+block +handle-as-image}
2226 some.nasty-banner-server.com/junk.cgi?output=trash
2227
2228 # Banner source! Who cares if they also have non-image content?
2229 ad.doubleclick.net </PRE
2230 ></TD
2231 ></TR
2232 ></TABLE
2233 >
2234    </P
2235 ></DD
2236 ></DL
2237 ></DIV
2238 ></DIV
2239 ><DIV
2240 CLASS="SECT3"
2241 ><H4
2242 CLASS="SECT3"
2243 ><A
2244 NAME="HIDE-FORWARDED-FOR-HEADERS">8.5.10. hide-forwarded-for-headers</H4
2245 ><P
2246 ></P
2247 ><DIV
2248 CLASS="VARIABLELIST"
2249 ><DL
2250 ><DT
2251 >Typical use:</DT
2252 ><DD
2253 ><P
2254 >Improve privacy by hiding the true source of the request</P
2255 ></DD
2256 ><DT
2257 >Effect:</DT
2258 ><DD
2259 ><P
2260 >    Deletes any existing <SPAN
2261 CLASS="QUOTE"
2262 >"X-Forwarded-for:"</SPAN
2263 > HTTP header from client requests,
2264     and prevents adding a new one.
2265    </P
2266 ></DD
2267 ><DT
2268 >Type:</DT
2269 ><DD
2270 ><P
2271 >Boolean.</P
2272 ></DD
2273 ><DT
2274 >Parameter:</DT
2275 ><DD
2276 ><P
2277 >    N/A
2278    </P
2279 ></DD
2280 ><DT
2281 >Notes:</DT
2282 ><DD
2283 ><P
2284 >    It is fairly safe to leave this on.
2285    </P
2286 ><P
2287 >    This action is scheduled for improvement: It should be able to generate forged 
2288     <SPAN
2289 CLASS="QUOTE"
2290 >"X-Forwarded-for:"</SPAN
2291 > headers using random IP addresses from a specified network,
2292     to make successive requests from the same client look like requests from a pool of different
2293     users sharing the same proxy.
2294    </P
2295 ></DD
2296 ><DT
2297 >Example usage:</DT
2298 ><DD
2299 ><P
2300 >     <TABLE
2301 BORDER="0"
2302 BGCOLOR="#E0E0E0"
2303 WIDTH="90%"
2304 ><TR
2305 ><TD
2306 ><PRE
2307 CLASS="SCREEN"
2308 >+hide-forwarded-for-headers</PRE
2309 ></TD
2310 ></TR
2311 ></TABLE
2312 >
2313    </P
2314 ></DD
2315 ></DL
2316 ></DIV
2317 ></DIV
2318 ><DIV
2319 CLASS="SECT3"
2320 ><H4
2321 CLASS="SECT3"
2322 ><A
2323 NAME="HIDE-FROM-HEADER">8.5.11. hide-from-header</H4
2324 ><P
2325 ></P
2326 ><DIV
2327 CLASS="VARIABLELIST"
2328 ><DL
2329 ><DT
2330 >Typical use:</DT
2331 ><DD
2332 ><P
2333 >Keep your (old and ill) browser from telling web servers your email address</P
2334 ></DD
2335 ><DT
2336 >Effect:</DT
2337 ><DD
2338 ><P
2339 >    Deletes any existing <SPAN
2340 CLASS="QUOTE"
2341 >"From:"</SPAN
2342 > HTTP header, or replaces it with the
2343     specified string.
2344    </P
2345 ></DD
2346 ><DT
2347 >Type:</DT
2348 ><DD
2349 ><P
2350 >Parameterized.</P
2351 ></DD
2352 ><DT
2353 >Parameter:</DT
2354 ><DD
2355 ><P
2356 >    Keyword: <SPAN
2357 CLASS="QUOTE"
2358 >"block"</SPAN
2359 >, or any user defined value.
2360    </P
2361 ></DD
2362 ><DT
2363 >Notes:</DT
2364 ><DD
2365 ><P
2366 >    The keyword <SPAN
2367 CLASS="QUOTE"
2368 >"block"</SPAN
2369 > will completely remove the header 
2370     (not to be confused with the <TT
2371 CLASS="LITERAL"
2372 ><A
2373 HREF="actions-file.html#BLOCK"
2374 >block</A
2375 ></TT
2376 >
2377     action).
2378    </P
2379 ><P
2380 >    Alternately, you can specify any value you prefer to be sent to the web
2381     server. If you do, it is a matter of fairness not to use any address that
2382     is actually used by a real person.
2383    </P
2384 ><P
2385 >    This action is rarely needed, as modern web browsers don't send
2386     <SPAN
2387 CLASS="QUOTE"
2388 >"From:"</SPAN
2389 > headers anymore.
2390    </P
2391 ></DD
2392 ><DT
2393 >Example usage:</DT
2394 ><DD
2395 ><P
2396 >    <TABLE
2397 BORDER="0"
2398 BGCOLOR="#E0E0E0"
2399 WIDTH="90%"
2400 ><TR
2401 ><TD
2402 ><PRE
2403 CLASS="SCREEN"
2404 >+hide-from-header{block}</PRE
2405 ></TD
2406 ></TR
2407 ></TABLE
2408 > or
2409     <TABLE
2410 BORDER="0"
2411 BGCOLOR="#E0E0E0"
2412 WIDTH="90%"
2413 ><TR
2414 ><TD
2415 ><PRE
2416 CLASS="SCREEN"
2417 >+hide-from-header{spam-me-senseless@sittingduck.example.com}</PRE
2418 ></TD
2419 ></TR
2420 ></TABLE
2421 >
2422    </P
2423 ></DD
2424 ></DL
2425 ></DIV
2426 ></DIV
2427 ><DIV
2428 CLASS="SECT3"
2429 ><H4
2430 CLASS="SECT3"
2431 ><A
2432 NAME="HIDE-REFERRER">8.5.12. hide-referrer</H4
2433 ><A
2434 NAME="HIDE-REFERER"
2435 ></A
2436 ><P
2437 ></P
2438 ><DIV
2439 CLASS="VARIABLELIST"
2440 ><DL
2441 ><DT
2442 >Typical use:</DT
2443 ><DD
2444 ><P
2445 >Conceal which link you followed to get to a particular site</P
2446 ></DD
2447 ><DT
2448 >Effect:</DT
2449 ><DD
2450 ><P
2451 >    Deletes the <SPAN
2452 CLASS="QUOTE"
2453 >"Referer:"</SPAN
2454 > (sic) HTTP header from the client request,
2455     or replaces it with a forged one.
2456    </P
2457 ></DD
2458 ><DT
2459 >Type:</DT
2460 ><DD
2461 ><P
2462 >Parameterized.</P
2463 ></DD
2464 ><DT
2465 >Parameter:</DT
2466 ><DD
2467 ><P
2468 ></P
2469 ><UL
2470 ><LI
2471 ><P
2472 ><SPAN
2473 CLASS="QUOTE"
2474 >"block"</SPAN
2475 > to delete the header completely.</P
2476 ></LI
2477 ><LI
2478 ><P
2479 ><SPAN
2480 CLASS="QUOTE"
2481 >"forge"</SPAN
2482 > to pretend to be coming from the homepage of the server we are talking to.</P
2483 ></LI
2484 ><LI
2485 ><P
2486 >Any other string to set a user defined referrer.</P
2487 ></LI
2488 ></UL
2489 ></DD
2490 ><DT
2491 >Notes:</DT
2492 ><DD
2493 ><P
2494 >    <SPAN
2495 CLASS="QUOTE"
2496 >"forge"</SPAN
2497 > is the preferred option here, since some servers will
2498     not send images back otherwise, in an attempt to prevent their valuable
2499     content from being embedded elsewhere (and hence, without being surrounded
2500     by <SPAN
2501 CLASS="emphasis"
2502 ><I
2503 CLASS="EMPHASIS"
2504 >their</I
2505 ></SPAN
2506 > banners).
2507    </P
2508 ><P
2509 >  
2510    <TT
2511 CLASS="LITERAL"
2512 >hide-referer</TT
2513 > is an alternate spelling of
2514    <TT
2515 CLASS="LITERAL"
2516 >hide-referrer</TT
2517 > and the two can be can be freely
2518    substituted with each other. (<SPAN
2519 CLASS="QUOTE"
2520 >"referrer"</SPAN
2521 > is the
2522    correct English spelling, however the HTTP specification has a bug - it
2523    requires it to be spelled as <SPAN
2524 CLASS="QUOTE"
2525 >"referer"</SPAN
2526 >.) 
2527   </P
2528 ></DD
2529 ><DT
2530 >Example usage:</DT
2531 ><DD
2532 ><P
2533 >     <TABLE
2534 BORDER="0"
2535 BGCOLOR="#E0E0E0"
2536 WIDTH="90%"
2537 ><TR
2538 ><TD
2539 ><PRE
2540 CLASS="SCREEN"
2541 >+hide-referrer{forge}</PRE
2542 ></TD
2543 ></TR
2544 ></TABLE
2545 > or
2546      <TABLE
2547 BORDER="0"
2548 BGCOLOR="#E0E0E0"
2549 WIDTH="90%"
2550 ><TR
2551 ><TD
2552 ><PRE
2553 CLASS="SCREEN"
2554 >+hide-referrer{http://www.yahoo.com/}</PRE
2555 ></TD
2556 ></TR
2557 ></TABLE
2558 >
2559    </P
2560 ></DD
2561 ></DL
2562 ></DIV
2563 ></DIV
2564 ><DIV
2565 CLASS="SECT3"
2566 ><H4
2567 CLASS="SECT3"
2568 ><A
2569 NAME="HIDE-USER-AGENT">8.5.13. hide-user-agent</H4
2570 ><P
2571 ></P
2572 ><DIV
2573 CLASS="VARIABLELIST"
2574 ><DL
2575 ><DT
2576 >Typical use:</DT
2577 ><DD
2578 ><P
2579 >Conceal your type of browser and client operating system</P
2580 ></DD
2581 ><DT
2582 >Effect:</DT
2583 ><DD
2584 ><P
2585 >    Replaces the value of the <SPAN
2586 CLASS="QUOTE"
2587 >"User-Agent:"</SPAN
2588 > HTTP header
2589     in client requests with the specified value.
2590    </P
2591 ></DD
2592 ><DT
2593 >Type:</DT
2594 ><DD
2595 ><P
2596 >Parameterized.</P
2597 ></DD
2598 ><DT
2599 >Parameter:</DT
2600 ><DD
2601 ><P
2602 >    Any user-defined string.
2603    </P
2604 ></DD
2605 ><DT
2606 >Notes:</DT
2607 ><DD
2608 ><DIV
2609 CLASS="WARNING"
2610 ><P
2611 ></P
2612 ><TABLE
2613 CLASS="WARNING"
2614 BORDER="1"
2615 WIDTH="90%"
2616 ><TR
2617 ><TD
2618 ALIGN="CENTER"
2619 ><B
2620 >Warning</B
2621 ></TD
2622 ></TR
2623 ><TR
2624 ><TD
2625 ALIGN="LEFT"
2626 ><P
2627 >     This breaks many web sites that depend on looking at this header in order
2628      to customize their content for different browsers (which, by the
2629      way, is <SPAN
2630 CLASS="emphasis"
2631 ><I
2632 CLASS="EMPHASIS"
2633 >NOT</I
2634 ></SPAN
2635 > a <A
2636 HREF="http://www.javascriptkit.com/javaindex.shtml"
2637 TARGET="_top"
2638 >smart way to do
2639      that</A
2640 >!).
2641     </P
2642 ></TD
2643 ></TR
2644 ></TABLE
2645 ></DIV
2646 ><P
2647 >    Using this action in multi-user setups or wherever different types of
2648     browsers will access the same <SPAN
2649 CLASS="APPLICATION"
2650 >Privoxy</SPAN
2651 > is
2652     <SPAN
2653 CLASS="emphasis"
2654 ><I
2655 CLASS="EMPHASIS"
2656 >not recommended</I
2657 ></SPAN
2658 >. In single-user, single-browser
2659     setups, you might use it to delete your OS version information from
2660     the headers, because it is an invitation to exploit known bugs for your
2661     OS. It is also occasionally useful to forge this in order to access 
2662     sites that won't let you in otherwise (though there may be a good 
2663     reason in some cases). Example of this: some MSN sites will not 
2664     let <SPAN
2665 CLASS="APPLICATION"
2666 >Mozilla</SPAN
2667 > enter, yet forging to a 
2668     <SPAN
2669 CLASS="APPLICATION"
2670 >Netscape 6.1</SPAN
2671 > user-agent works just fine.
2672     (Must be just a silly MS goof, I'm sure :-).
2673    </P
2674 ><P
2675 >    This action is scheduled for improvement.
2676    </P
2677 ></DD
2678 ><DT
2679 >Example usage:</DT
2680 ><DD
2681 ><P
2682 >     <TABLE
2683 BORDER="0"
2684 BGCOLOR="#E0E0E0"
2685 WIDTH="90%"
2686 ><TR
2687 ><TD
2688 ><PRE
2689 CLASS="SCREEN"
2690 >+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}</PRE
2691 ></TD
2692 ></TR
2693 ></TABLE
2694 >
2695    </P
2696 ></DD
2697 ></DL
2698 ></DIV
2699 ></DIV
2700 ><DIV
2701 CLASS="SECT3"
2702 ><H4
2703 CLASS="SECT3"
2704 ><A
2705 NAME="KILL-POPUPS">8.5.14. kill-popups<A
2706 NAME="KILL-POPUP"
2707 ></A
2708 ></H4
2709 ><P
2710 ></P
2711 ><DIV
2712 CLASS="VARIABLELIST"
2713 ><DL
2714 ><DT
2715 >Typical use:</DT
2716 ><DD
2717 ><P
2718 >Eliminate those annoying pop-up windows</P
2719 ></DD
2720 ><DT
2721 >Effect:</DT
2722 ><DD
2723 ><P
2724 >    While loading the document, replace JavaScript code that opens
2725     pop-up windows with (syntactically neutral) dummy code on the fly.
2726    </P
2727 ></DD
2728 ><DT
2729 >Type:</DT
2730 ><DD
2731 ><P
2732 >Boolean.</P
2733 ></DD
2734 ><DT
2735 >Parameter:</DT
2736 ><DD
2737 ><P
2738 >    N/A
2739    </P
2740 ></DD
2741 ><DT
2742 >Notes:</DT
2743 ><DD
2744 ><P
2745 >    This action is easily confused with the built-in, hardwired <TT
2746 CLASS="LITERAL"
2747 ><A
2748 HREF="actions-file.html#FILTER"
2749 >filter</A
2750 ></TT
2751 >
2752     action, but there are important differences: For <TT
2753 CLASS="LITERAL"
2754 >kill-popups</TT
2755 >,
2756     the document need not be buffered, so it can be incrementally rendered while
2757     downloading. But <TT
2758 CLASS="LITERAL"
2759 >kill-popups</TT
2760 > doesn't catch as many pop-ups as
2761     <TT
2762 CLASS="LITERAL"
2763 ><A
2764 HREF="actions-file.html#FILTER"
2765 >filter</A
2766 >{<TT
2767 CLASS="REPLACEABLE"
2768 ><I
2769 >popups</I
2770 ></TT
2771 >}</TT
2772 >
2773     does. 
2774    </P
2775 ><P
2776 >    Think of it as a fast and efficient replacement for a filter that you
2777     can use if you don't want any filtering at all. Note that it doesn't make
2778     sense to combine it with any <TT
2779 CLASS="LITERAL"
2780 ><A
2781 HREF="actions-file.html#FILTER"
2782 >filter</A
2783 ></TT
2784 > action,
2785     since as soon as one <TT
2786 CLASS="LITERAL"
2787 ><A
2788 HREF="actions-file.html#FILTER"
2789 >filter</A
2790 ></TT
2791 > applies,
2792     the whole document needs to be buffered anyway, which destroys the advantage of
2793     the <TT
2794 CLASS="LITERAL"
2795 >kill-popups</TT
2796 > action over its filter equivalent.
2797    </P
2798 ><P
2799 >    Killing all pop-ups is a dangerous business. Many shops and banks rely on
2800     pop-ups to display forms, shopping carts etc, and killing only the unwanted pop-ups 
2801     would require artificial intelligence in <SPAN
2802 CLASS="APPLICATION"
2803 >Privoxy</SPAN
2804 >.
2805     If the only kind of pop-ups that you want to kill are exit consoles (those
2806     <SPAN
2807 CLASS="emphasis"
2808 ><I
2809 CLASS="EMPHASIS"
2810 >really nasty</I
2811 ></SPAN
2812 > windows that appear when you close an other
2813     one), you might want to use
2814     <TT
2815 CLASS="LITERAL"
2816 ><A
2817 HREF="actions-file.html#FILTER"
2818 >filter</A
2819 >{<TT
2820 CLASS="REPLACEABLE"
2821 ><I
2822 >js-annoyances</I
2823 ></TT
2824 >}</TT
2825 >
2826     instead. 
2827    </P
2828 ></DD
2829 ><DT
2830 >Example usage:</DT
2831 ><DD
2832 ><P
2833 ><TABLE
2834 BORDER="0"
2835 BGCOLOR="#E0E0E0"
2836 WIDTH="90%"
2837 ><TR
2838 ><TD
2839 ><PRE
2840 CLASS="SCREEN"
2841 >+kill-popups</PRE
2842 ></TD
2843 ></TR
2844 ></TABLE
2845 ></P
2846 ></DD
2847 ></DL
2848 ></DIV
2849 ></DIV
2850 ><DIV
2851 CLASS="SECT3"
2852 ><H4
2853 CLASS="SECT3"
2854 ><A
2855 NAME="LIMIT-CONNECT">8.5.15. limit-connect</H4
2856 ><P
2857 ></P
2858 ><DIV
2859 CLASS="VARIABLELIST"
2860 ><DL
2861 ><DT
2862 >Typical use:</DT
2863 ><DD
2864 ><P
2865 >Prevent abuse of <SPAN
2866 CLASS="APPLICATION"
2867 >Privoxy</SPAN
2868 > as a TCP proxy relay</P
2869 ></DD
2870 ><DT
2871 >Effect:</DT
2872 ><DD
2873 ><P
2874 >    Specifies to which ports HTTP CONNECT requests are allowable.
2875    </P
2876 ></DD
2877 ><DT
2878 >Type:</DT
2879 ><DD
2880 ><P
2881 >Parameterized.</P
2882 ></DD
2883 ><DT
2884 >Parameter:</DT
2885 ><DD
2886 ><P
2887 >    A comma-separated list of ports or port ranges (the latter using dashes, with the minimum
2888     defaulting to 0 and the maximum to 65K).
2889    </P
2890 ></DD
2891 ><DT
2892 >Notes:</DT
2893 ><DD
2894 ><P
2895 >    By default, i.e. if no <TT
2896 CLASS="LITERAL"
2897 >limit-connect</TT
2898 > action applies,
2899     <SPAN
2900 CLASS="APPLICATION"
2901 >Privoxy</SPAN
2902 > only allows HTTP CONNECT
2903     requests to port 443 (the standard, secure HTTPS port). Use 
2904     <TT
2905 CLASS="LITERAL"
2906 >limit-connect</TT
2907 > if more fine-grained control is desired
2908     for some or all destinations.
2909    </P
2910 ><P
2911 >    The CONNECT methods exists in HTTP to allow access to secure websites
2912     (<SPAN
2913 CLASS="QUOTE"
2914 >"https://"</SPAN
2915 > URLs) through proxies. It works very simply:
2916     the proxy connects to the server on the specified port, and then
2917     short-circuits its connections to the client and to the remote server.
2918     This can be a big security hole, since CONNECT-enabled proxies can be
2919     abused as TCP relays very easily.
2920   </P
2921 ><P
2922 >   If you don't know what any of this means, there probably is no reason to 
2923    change this one, since the default is already very restrictive.
2924   </P
2925 ></DD
2926 ><DT
2927 >Example usages:</DT
2928 ><DD
2929 ><P
2930 >     <TABLE
2931 BORDER="0"
2932 BGCOLOR="#E0E0E0"
2933 WIDTH="90%"
2934 ><TR
2935 ><TD
2936 ><PRE
2937 CLASS="SCREEN"
2938 >+limit-connect{443}                   # This is the default and need not be specified.
2939 +limit-connect{80,443}                # Ports 80 and 443 are OK.
2940 +limit-connect{-3, 7, 20-100, 500-}   # Ports less than 3, 7, 20 to 100 and above 500 are OK.
2941 +limit-connect{-}                     # All ports are OK (gaping security hole!)</PRE
2942 ></TD
2943 ></TR
2944 ></TABLE
2945 >
2946    </P
2947 ></DD
2948 ></DL
2949 ></DIV
2950 ></DIV
2951 ><DIV
2952 CLASS="SECT3"
2953 ><H4
2954 CLASS="SECT3"
2955 ><A
2956 NAME="PREVENT-COMPRESSION">8.5.16. prevent-compression</H4
2957 ><P
2958 ></P
2959 ><DIV
2960 CLASS="VARIABLELIST"
2961 ><DL
2962 ><DT
2963 >Typical use:</DT
2964 ><DD
2965 ><P
2966 >    Ensure that servers send the content uncompressed, so it can be
2967     passed through <TT
2968 CLASS="LITERAL"
2969 ><A
2970 HREF="actions-file.html#FILTER"
2971 >filter</A
2972 ></TT
2973 >s
2974    </P
2975 ></DD
2976 ><DT
2977 >Effect:</DT
2978 ><DD
2979 ><P
2980 >    Adds a header to the request that asks for uncompressed transfer.
2981    </P
2982 ></DD
2983 ><DT
2984 >Type:</DT
2985 ><DD
2986 ><P
2987 >Boolean.</P
2988 ></DD
2989 ><DT
2990 >Parameter:</DT
2991 ><DD
2992 ><P
2993 >    N/A
2994    </P
2995 ></DD
2996 ><DT
2997 >Notes:</DT
2998 ><DD
2999 ><P
3000 >    More and more websites send their content compressed by default, which
3001     is generally a good idea and saves bandwidth. But for the <TT
3002 CLASS="LITERAL"
3003 ><A
3004 HREF="actions-file.html#FILTER"
3005 >filter</A
3006 ></TT
3007 >, <TT
3008 CLASS="LITERAL"
3009 ><A
3010 HREF="actions-file.html#DEANIMATE-GIFS"
3011 >deanimate-gifs</A
3012 ></TT
3013 >
3014     and <TT
3015 CLASS="LITERAL"
3016 ><A
3017 HREF="actions-file.html#KILL-POPUPS"
3018 >kill-popups</A
3019 ></TT
3020 > actions to work,
3021     <SPAN
3022 CLASS="APPLICATION"
3023 >Privoxy</SPAN
3024 > needs access to the  uncompressed data.
3025     Unfortunately, <SPAN
3026 CLASS="APPLICATION"
3027 >Privoxy</SPAN
3028 > can't yet(!)  uncompress, filter, and
3029     re-compress the content on the fly. So if you want to ensure that all websites, including
3030     those that normally compress, can be filtered, you need to use this action.
3031    </P
3032 ><P
3033 >    This will slow down transfers from those websites, though. If you use any of the above-mentioned
3034     actions, you will typically want to use <TT
3035 CLASS="LITERAL"
3036 >prevent-compression</TT
3037 > in conjunction
3038     with them.
3039    </P
3040 ><P
3041 >    Note that some (rare) ill-configured sites don't handle requests for uncompressed
3042     documents correctly (they send an empty document body). If you use <TT
3043 CLASS="LITERAL"
3044 >prevent-compression</TT
3045 >
3046     per default, you'll have to add exceptions for those sites. See the example for how to do that.
3047    </P
3048 ></DD
3049 ><DT
3050 >Example usage (sections):</DT
3051 ><DD
3052 ><P
3053 >    <TABLE
3054 BORDER="0"
3055 BGCOLOR="#E0E0E0"
3056 WIDTH="90%"
3057 ><TR
3058 ><TD
3059 ><PRE
3060 CLASS="SCREEN"
3061 ># Set default:
3062 #
3063 {+prevent-compression}
3064 / # Match all sites
3065
3066 # Make exceptions for ill sites:
3067 #
3068 {-prevent-compression}
3069 www.debianhelp.org
3070 www.pclinuxonline.com</PRE
3071 ></TD
3072 ></TR
3073 ></TABLE
3074 >
3075    </P
3076 ></DD
3077 ></DL
3078 ></DIV
3079 ></DIV
3080 ><DIV
3081 CLASS="SECT3"
3082 ><H4
3083 CLASS="SECT3"
3084 ><A
3085 NAME="SEND-VANILLA-WAFER">8.5.17. send-vanilla-wafer</H4
3086 ><P
3087 ></P
3088 ><DIV
3089 CLASS="VARIABLELIST"
3090 ><DL
3091 ><DT
3092 >Typical use:</DT
3093 ><DD
3094 ><P
3095 >    Feed log analysis scripts with useless data.
3096    </P
3097 ></DD
3098 ><DT
3099 >Effect:</DT
3100 ><DD
3101 ><P
3102 >    Sends a cookie with each request stating that you do not accept any copyright
3103     on cookies sent to you, and asking the site operator not to track you.
3104    </P
3105 ></DD
3106 ><DT
3107 >Type:</DT
3108 ><DD
3109 ><P
3110 >Boolean.</P
3111 ></DD
3112 ><DT
3113 >Parameter:</DT
3114 ><DD
3115 ><P
3116 >    N/A
3117    </P
3118 ></DD
3119 ><DT
3120 >Notes:</DT
3121 ><DD
3122 ><P
3123 >    The vanilla wafer is a (relatively) unique header and could conceivably be used to track you.
3124    </P
3125 ><P
3126 >    This action is rarely used and not enabled in the default configuration.
3127    </P
3128 ></DD
3129 ><DT
3130 >Example usage:</DT
3131 ><DD
3132 ><P
3133 >     <TABLE
3134 BORDER="0"
3135 BGCOLOR="#E0E0E0"
3136 WIDTH="90%"
3137 ><TR
3138 ><TD
3139 ><PRE
3140 CLASS="SCREEN"
3141 >+send-vanilla-wafer</PRE
3142 ></TD
3143 ></TR
3144 ></TABLE
3145 >
3146    </P
3147 ></DD
3148 ></DL
3149 ></DIV
3150 ></DIV
3151 ><DIV
3152 CLASS="SECT3"
3153 ><H4
3154 CLASS="SECT3"
3155 ><A
3156 NAME="SEND-WAFER">8.5.18. send-wafer</H4
3157 ><P
3158 ></P
3159 ><DIV
3160 CLASS="VARIABLELIST"
3161 ><DL
3162 ><DT
3163 >Typical use:</DT
3164 ><DD
3165 ><P
3166 >    Send custom cookies or feed log analysis scripts with even more useless data.
3167    </P
3168 ></DD
3169 ><DT
3170 >Effect:</DT
3171 ><DD
3172 ><P
3173 >    Sends a custom, user-defined cookie with each request.
3174    </P
3175 ></DD
3176 ><DT
3177 >Type:</DT
3178 ><DD
3179 ><P
3180 >Multi-value.</P
3181 ></DD
3182 ><DT
3183 >Parameter:</DT
3184 ><DD
3185 ><P
3186 >    A string of the form <SPAN
3187 CLASS="QUOTE"
3188 >"<TT
3189 CLASS="REPLACEABLE"
3190 ><I
3191 >name</I
3192 ></TT
3193 >=<TT
3194 CLASS="REPLACEABLE"
3195 ><I
3196 >value</I
3197 ></TT
3198 >"</SPAN
3199 >.
3200    </P
3201 ></DD
3202 ><DT
3203 >Notes:</DT
3204 ><DD
3205 ><P
3206 >    Being multi-valued, multiple instances of this action can apply to the same request,
3207     resulting in multiple cookies being sent.
3208    </P
3209 ><P
3210 >    This action is rarely used and not enabled in the default configuration.
3211    </P
3212 ></DD
3213 ><DT
3214 >Example usage (section):</DT
3215 ><DD
3216 ><P
3217 >    <TABLE
3218 BORDER="0"
3219 BGCOLOR="#E0E0E0"
3220 WIDTH="90%"
3221 ><TR
3222 ><TD
3223 ><PRE
3224 CLASS="SCREEN"
3225 >{+send-wafer{UsingPrivoxy=true}}
3226 my-internal-testing-server.void</PRE
3227 ></TD
3228 ></TR
3229 ></TABLE
3230 >
3231    </P
3232 ></DD
3233 ></DL
3234 ></DIV
3235 ></DIV
3236 ><DIV
3237 CLASS="SECT3"
3238 ><H4
3239 CLASS="SECT3"
3240 ><A
3241 NAME="SESSION-COOKIES-ONLY">8.5.19. session-cookies-only</H4
3242 ><P
3243 ></P
3244 ><DIV
3245 CLASS="VARIABLELIST"
3246 ><DL
3247 ><DT
3248 >Typical use:</DT
3249 ><DD
3250 ><P
3251 >    Allow only temporary <SPAN
3252 CLASS="QUOTE"
3253 >"session"</SPAN
3254 > cookies (for the current browser session <SPAN
3255 CLASS="emphasis"
3256 ><I
3257 CLASS="EMPHASIS"
3258 >only</I
3259 ></SPAN
3260 >).
3261    </P
3262 ></DD
3263 ><DT
3264 >Effect:</DT
3265 ><DD
3266 ><P
3267 >    Deletes the <SPAN
3268 CLASS="QUOTE"
3269 >"expires"</SPAN
3270 > field from <SPAN
3271 CLASS="QUOTE"
3272 >"Set-Cookie:"</SPAN
3273 > server headers.
3274     Most browsers will not store such cookies permanently and forget them in between sessions.
3275    </P
3276 ></DD
3277 ><DT
3278 >Type:</DT
3279 ><DD
3280 ><P
3281 >Boolean.</P
3282 ></DD
3283 ><DT
3284 >Parameter:</DT
3285 ><DD
3286 ><P
3287 >    N/A
3288    </P
3289 ></DD
3290 ><DT
3291 >Notes:</DT
3292 ><DD
3293 ><P
3294 >    This is less strict than <TT
3295 CLASS="LITERAL"
3296 ><A
3297 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
3298 >crunch-incoming-cookies</A
3299 ></TT
3300 > / 
3301     <TT
3302 CLASS="LITERAL"
3303 ><A
3304 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
3305 >crunch-outgoing-cookies</A
3306 ></TT
3307 > and allows you to browse
3308     websites that insist or rely on setting cookies, without compromising your privacy too badly.
3309    </P
3310 ><P
3311 >    Most browsers will not permanently store cookies that have been processed by
3312     <TT
3313 CLASS="LITERAL"
3314 >session-cookies-only</TT
3315 > and will forget about them between sessions.
3316     This makes profiling cookies useless, but won't break sites which require cookies so
3317     that you can log in for transactions. This is generally turned on for all 
3318     sites, and is the recommended setting.
3319    </P
3320 ><P
3321 >    It makes <SPAN
3322 CLASS="emphasis"
3323 ><I
3324 CLASS="EMPHASIS"
3325 >no sense at all</I
3326 ></SPAN
3327 > to use <TT
3328 CLASS="LITERAL"
3329 >session-cookies-only</TT
3330 >
3331     together with <TT
3332 CLASS="LITERAL"
3333 ><A
3334 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
3335 >crunch-incoming-cookies</A
3336 ></TT
3337 > or
3338     <TT
3339 CLASS="LITERAL"
3340 ><A
3341 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
3342 >crunch-outgoing-cookies</A
3343 ></TT
3344 >. If you do, cookies
3345     will be plainly killed.
3346    </P
3347 ><P
3348 >    Note that it is up to the browser how it handles such cookies without an <SPAN
3349 CLASS="QUOTE"
3350 >"expires"</SPAN
3351 >
3352     field. If you use an exotic browser, you might want to try it out to be sure.
3353    </P
3354 ></DD
3355 ><DT
3356 >Example usage:</DT
3357 ><DD
3358 ><P
3359 >     <TABLE
3360 BORDER="0"
3361 BGCOLOR="#E0E0E0"
3362 WIDTH="90%"
3363 ><TR
3364 ><TD
3365 ><PRE
3366 CLASS="SCREEN"
3367 >+session-cookies-only</PRE
3368 ></TD
3369 ></TR
3370 ></TABLE
3371 >
3372    </P
3373 ></DD
3374 ></DL
3375 ></DIV
3376 ></DIV
3377 ><DIV
3378 CLASS="SECT3"
3379 ><H4
3380 CLASS="SECT3"
3381 ><A
3382 NAME="SET-IMAGE-BLOCKER">8.5.20. set-image-blocker</H4
3383 ><P
3384 ></P
3385 ><DIV
3386 CLASS="VARIABLELIST"
3387 ><DL
3388 ><DT
3389 >Typical use:</DT
3390 ><DD
3391 ><P
3392 >Choose the replacement for blocked images</P
3393 ></DD
3394 ><DT
3395 >Effect:</DT
3396 ><DD
3397 ><P
3398 >     This action alone doesn't do anything noticeable. If <SPAN
3399 CLASS="emphasis"
3400 ><I
3401 CLASS="EMPHASIS"
3402 >both</I
3403 ></SPAN
3404 >
3405      <TT
3406 CLASS="LITERAL"
3407 ><A
3408 HREF="actions-file.html#BLOCK"
3409 >block</A
3410 ></TT
3411 > <SPAN
3412 CLASS="emphasis"
3413 ><I
3414 CLASS="EMPHASIS"
3415 >and</I
3416 ></SPAN
3417 > <TT
3418 CLASS="LITERAL"
3419 ><A
3420 HREF="actions-file.html#HANDLE-AS-IMAGE"
3421 >handle-as-image</A
3422 ></TT
3423 > <SPAN
3424 CLASS="emphasis"
3425 ><I
3426 CLASS="EMPHASIS"
3427 >also</I
3428 ></SPAN
3429 >
3430      apply, i.e. if the request is to be blocked as an image,
3431      <SPAN
3432 CLASS="emphasis"
3433 ><I
3434 CLASS="EMPHASIS"
3435 >then</I
3436 ></SPAN
3437 > the parameter of this action decides what will be
3438      sent as a replacement.
3439    </P
3440 ></DD
3441 ><DT
3442 >Type:</DT
3443 ><DD
3444 ><P
3445 >Parameterized.</P
3446 ></DD
3447 ><DT
3448 >Parameter:</DT
3449 ><DD
3450 ><P
3451 ></P
3452 ><UL
3453 ><LI
3454 ><P
3455 >      <SPAN
3456 CLASS="QUOTE"
3457 >"pattern"</SPAN
3458 > to send a built-in checkerboard pattern image. The image is visually
3459       decent, scales very well, and makes it obvious where banners were busted.
3460      </P
3461 ></LI
3462 ><LI
3463 ><P
3464 >      <SPAN
3465 CLASS="QUOTE"
3466 >"blank"</SPAN
3467 > to send a built-in transparent image. This makes banners disappear
3468       completely, but makes it hard to detect where <SPAN
3469 CLASS="APPLICATION"
3470 >Privoxy</SPAN
3471 > has blocked
3472       images on a given page and complicates troubleshooting if <SPAN
3473 CLASS="APPLICATION"
3474 >Privoxy</SPAN
3475 >
3476       has blocked innocent images, like navigation icons.
3477      </P
3478 ></LI
3479 ><LI
3480 ><P
3481 >      <SPAN
3482 CLASS="QUOTE"
3483 >"<TT
3484 CLASS="REPLACEABLE"
3485 ><I
3486 >target-url</I
3487 ></TT
3488 >"</SPAN
3489 > to
3490       send a redirect to <TT
3491 CLASS="REPLACEABLE"
3492 ><I
3493 >target-url</I
3494 ></TT
3495 >. You can redirect
3496       to any image anywhere, even in your local filesystem (via <SPAN
3497 CLASS="QUOTE"
3498 >"file:///"</SPAN
3499 > URL).
3500      </P
3501 ><P
3502 >      A good application of redirects is to use special <SPAN
3503 CLASS="APPLICATION"
3504 >Privoxy</SPAN
3505 >-built-in
3506       URLs, which send the built-in images, as <TT
3507 CLASS="REPLACEABLE"
3508 ><I
3509 >target-url</I
3510 ></TT
3511 >.
3512       This has the same visual effect as specifying <SPAN
3513 CLASS="QUOTE"
3514 >"blank"</SPAN
3515 > or <SPAN
3516 CLASS="QUOTE"
3517 >"pattern"</SPAN
3518 > in
3519       the first place, but enables your browser to cache the replacement image, instead of requesting
3520       it over and over again.
3521      </P
3522 ></LI
3523 ></UL
3524 ></DD
3525 ><DT
3526 >Notes:</DT
3527 ><DD
3528 ><P
3529 >    The URLs for the built-in images are <SPAN
3530 CLASS="QUOTE"
3531 >"http://config.privoxy.org/send-banner?type=<TT
3532 CLASS="REPLACEABLE"
3533 ><I
3534 >type</I
3535 ></TT
3536 >"</SPAN
3537 >, where <TT
3538 CLASS="REPLACEABLE"
3539 ><I
3540 >type</I
3541 ></TT
3542 > is
3543     either <SPAN
3544 CLASS="QUOTE"
3545 >"blank"</SPAN
3546 > or <SPAN
3547 CLASS="QUOTE"
3548 >"pattern"</SPAN
3549 >.
3550    </P
3551 ><P
3552 >    There is a third (advanced) type, called <SPAN
3553 CLASS="QUOTE"
3554 >"auto"</SPAN
3555 >. It is <SPAN
3556 CLASS="emphasis"
3557 ><I
3558 CLASS="EMPHASIS"
3559 >NOT</I
3560 ></SPAN
3561 > to be
3562     used in <TT
3563 CLASS="LITERAL"
3564 >set-image-blocker</TT
3565 >, but meant for use from <A
3566 HREF="filter-file.html"
3567 >filters</A
3568 >.
3569     Auto will select the type of image that would have applied to the referring page, had it been an image.
3570    </P
3571 ></DD
3572 ><DT
3573 >Example usage:</DT
3574 ><DD
3575 ><P
3576 >    Built-in pattern:
3577    </P
3578 ><P
3579 >    <TABLE
3580 BORDER="0"
3581 BGCOLOR="#E0E0E0"
3582 WIDTH="90%"
3583 ><TR
3584 ><TD
3585 ><PRE
3586 CLASS="SCREEN"
3587 >+set-image-blocker{pattern}</PRE
3588 ></TD
3589 ></TR
3590 ></TABLE
3591 >
3592    </P
3593 ><P
3594 >    Redirect to the BSD devil:
3595    </P
3596 ><P
3597 >    <TABLE
3598 BORDER="0"
3599 BGCOLOR="#E0E0E0"
3600 WIDTH="90%"
3601 ><TR
3602 ><TD
3603 ><PRE
3604 CLASS="SCREEN"
3605 >+set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}</PRE
3606 ></TD
3607 ></TR
3608 ></TABLE
3609 >
3610    </P
3611 ><P
3612 >    Redirect to the built-in pattern for better caching:
3613    </P
3614 ><P
3615 >    <TABLE
3616 BORDER="0"
3617 BGCOLOR="#E0E0E0"
3618 WIDTH="90%"
3619 ><TR
3620 ><TD
3621 ><PRE
3622 CLASS="SCREEN"
3623 >+set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}</PRE
3624 ></TD
3625 ></TR
3626 ></TABLE
3627 >
3628    </P
3629 ></DD
3630 ></DL
3631 ></DIV
3632 ></DIV
3633 ><DIV
3634 CLASS="SECT3"
3635 ><H3
3636 CLASS="SECT3"
3637 ><A
3638 NAME="AEN2635">8.5.21. Summary</H3
3639 ><P
3640 > Note that many of these actions have the potential to cause a page to
3641  misbehave, possibly even not to display at all. There are many ways 
3642  a site designer may choose to design his site, and what HTTP header 
3643  content, and other criteria, he may depend on. There is no way to have hard
3644  and fast rules for all sites. See the <A
3645 HREF="appendix.html#ACTIONSANAT"
3646 >Appendix</A
3647 > for a brief example on troubleshooting
3648  actions.</P
3649 ></DIV
3650 ></DIV
3651 ><DIV
3652 CLASS="SECT2"
3653 ><H2
3654 CLASS="SECT2"
3655 ><A
3656 NAME="ALIASES">8.6. Aliases</H2
3657 ><P
3658 > Custom <SPAN
3659 CLASS="QUOTE"
3660 >"actions"</SPAN
3661 >, known to <SPAN
3662 CLASS="APPLICATION"
3663 >Privoxy</SPAN
3664 >
3665  as <SPAN
3666 CLASS="QUOTE"
3667 >"aliases"</SPAN
3668 >, can be defined by combining other actions.
3669  These can in turn be invoked just like the built-in actions.
3670  Currently, an alias name can contain any character except space, tab,
3671  <SPAN
3672 CLASS="QUOTE"
3673 >"="</SPAN
3674 >,
3675  <SPAN
3676 CLASS="QUOTE"
3677 >"{"</SPAN
3678 > and <SPAN
3679 CLASS="QUOTE"
3680 >"}"</SPAN
3681 >, but we <SPAN
3682 CLASS="emphasis"
3683 ><I
3684 CLASS="EMPHASIS"
3685 >strongly 
3686  recommend</I
3687 ></SPAN
3688 > that you only use <SPAN
3689 CLASS="QUOTE"
3690 >"a"</SPAN
3691 > to <SPAN
3692 CLASS="QUOTE"
3693 >"z"</SPAN
3694 >,
3695  <SPAN
3696 CLASS="QUOTE"
3697 >"0"</SPAN
3698 > to <SPAN
3699 CLASS="QUOTE"
3700 >"9"</SPAN
3701 >, <SPAN
3702 CLASS="QUOTE"
3703 >"+"</SPAN
3704 >, and <SPAN
3705 CLASS="QUOTE"
3706 >"-"</SPAN
3707 >.
3708  Alias names are not case sensitive, and are not required to start with a
3709  <SPAN
3710 CLASS="QUOTE"
3711 >"+"</SPAN
3712 > or <SPAN
3713 CLASS="QUOTE"
3714 >"-"</SPAN
3715 > sign, since they are merely textually
3716  expanded.</P
3717 ><P
3718 > Aliases can be used throughout the actions file, but they <SPAN
3719 CLASS="emphasis"
3720 ><I
3721 CLASS="EMPHASIS"
3722 >must be
3723  defined in a special section at the top of the file!</I
3724 ></SPAN
3725 >
3726  And there can only be one such section per actions file. Each actions file may
3727  have its own alias section, and the aliases defined in it are only visible
3728  within that file.</P
3729 ><P
3730 > There are two main reasons to use aliases: One is to save typing for frequently
3731  used combinations of actions, the other one is a gain in flexibility: If you
3732  decide once how you want to handle shops by defining an alias called
3733  <SPAN
3734 CLASS="QUOTE"
3735 >"shop"</SPAN
3736 >, you can later change your policy on shops in
3737  <SPAN
3738 CLASS="emphasis"
3739 ><I
3740 CLASS="EMPHASIS"
3741 >one</I
3742 ></SPAN
3743 > place, and your changes will take effect everywhere
3744  in the actions file where the <SPAN
3745 CLASS="QUOTE"
3746 >"shop"</SPAN
3747 > alias is used. Calling aliases
3748  by their purpose also makes your actions files more readable.</P
3749 ><P
3750 > Currently, there is one big drawback to using aliases, though:
3751  <SPAN
3752 CLASS="APPLICATION"
3753 >Privoxy</SPAN
3754 >'s built-in web-based action file
3755  editor honors aliases when reading the actions files, but it expands
3756  them before writing. So the effects of your aliases are of course preserved,
3757  but the aliases themselves are lost when you edit sections that use aliases
3758  with it.
3759  This is likely to change in future versions of <SPAN
3760 CLASS="APPLICATION"
3761 >Privoxy</SPAN
3762 >.</P
3763 ><P
3764 > Now let's define some aliases...</P
3765 ><P
3766 > <TABLE
3767 BORDER="0"
3768 BGCOLOR="#E0E0E0"
3769 WIDTH="100%"
3770 ><TR
3771 ><TD
3772 ><PRE
3773 CLASS="SCREEN"
3774 > # Useful custom aliases we can use later.
3775  #
3776  # Note the (required!) section header line and that this section
3777  # must be at the top of the actions file!
3778  #
3779  {{alias}}
3780
3781  # These aliases just save typing later:
3782  # (Note that some already use other aliases!)
3783  #
3784  +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
3785  -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
3786  block-as-image      = +block +handle-as-image
3787  mercy-for-cookies   = -crunch-all-cookies -session-cookies-only
3788
3789  # These aliases define combinations of actions
3790  # that are useful for certain types of sites:
3791  #
3792  fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -kill-popups
3793  shop        = -crunch-all-cookies -filter{popups} -kill-popups
3794
3795  # Short names for other aliases, for really lazy people ;-)
3796  #
3797  c0 = +crunch-all-cookies
3798  c1 = -crunch-all-cookies</PRE
3799 ></TD
3800 ></TR
3801 ></TABLE
3802 ></P
3803 ><P
3804 > ...and put them to use. These sections would appear in the lower part of an 
3805  actions file and define exceptions to the default actions (as specified further
3806  up for the <SPAN
3807 CLASS="QUOTE"
3808 >"/"</SPAN
3809 > pattern):</P
3810 ><P
3811 > <TABLE
3812 BORDER="0"
3813 BGCOLOR="#E0E0E0"
3814 WIDTH="100%"
3815 ><TR
3816 ><TD
3817 ><PRE
3818 CLASS="SCREEN"
3819 > # These sites are either very complex or very keen on
3820  # user data and require minimal interference to work:
3821  #
3822  {fragile}
3823  .office.microsoft.com
3824  .windowsupdate.microsoft.com
3825  .nytimes.com
3826
3827  # Shopping sites:
3828  # Allow cookies (for setting and retrieving your customer data)
3829  #           
3830  {shop}
3831  .quietpc.com
3832  .worldpay.com   # for quietpc.com
3833  .scan.co.uk
3834
3835  # These shops require pop-ups:
3836  #
3837  {shop -kill-popups -filter{popups}}
3838   .dabs.com
3839   .overclockers.co.uk</PRE
3840 ></TD
3841 ></TR
3842 ></TABLE
3843 ></P
3844 ><P
3845 > Aliases like <SPAN
3846 CLASS="QUOTE"
3847 >"shop"</SPAN
3848 > and <SPAN
3849 CLASS="QUOTE"
3850 >"fragile"</SPAN
3851 > are often used for 
3852  <SPAN
3853 CLASS="QUOTE"
3854 >"problem"</SPAN
3855 > sites that require some actions to be disabled 
3856  in order to function properly.</P
3857 ></DIV
3858 ><DIV
3859 CLASS="SECT2"
3860 ><H2
3861 CLASS="SECT2"
3862 ><A
3863 NAME="ACT-EXAMPLES">8.7. Actions Files Tutorial</H2
3864 ><P
3865 > The above chapters have shown <A
3866 HREF="actions-file.html"
3867 >which actions files
3868  there are and how they are organized</A
3869 >, how actions are <A
3870 HREF="actions-file.html#ACTIONS"
3871 >specified</A
3872 > and <A
3873 HREF="actions-file.html#ACTIONS-APPLY"
3874 >applied
3875  to URLs</A
3876 >, how <A
3877 HREF="actions-file.html#AF-PATTERNS"
3878 >patterns</A
3879 > work, and how to
3880  define and use <A
3881 HREF="actions-file.html#ALIASES"
3882 >aliases</A
3883 >. Now, let's look at an
3884  example <TT
3885 CLASS="FILENAME"
3886 >default.action</TT
3887 > and <TT
3888 CLASS="FILENAME"
3889 >user.action</TT
3890 >
3891  file and see how all these pieces come together:</P
3892 ><DIV
3893 CLASS="SECT3"
3894 ><H3
3895 CLASS="SECT3"
3896 ><A
3897 NAME="AEN2687">8.7.1. default.action</H3
3898 ><P
3899 >Every config file should start with a short comment stating its purpose:</P
3900 ><P
3901 > <TABLE
3902 BORDER="0"
3903 BGCOLOR="#E0E0E0"
3904 WIDTH="100%"
3905 ><TR
3906 ><TD
3907 ><PRE
3908 CLASS="SCREEN"
3909 ># Sample default.action file &#60;developers@privoxy.org&#62;</PRE
3910 ></TD
3911 ></TR
3912 ></TABLE
3913 ></P
3914 ><P
3915 >Then, since this is the <TT
3916 CLASS="FILENAME"
3917 >default.action</TT
3918 > file, the
3919 first section is a special section for internal use that you needn't
3920 change or worry about:</P
3921 ><P
3922 > <TABLE
3923 BORDER="0"
3924 BGCOLOR="#E0E0E0"
3925 WIDTH="100%"
3926 ><TR
3927 ><TD
3928 ><PRE
3929 CLASS="SCREEN"
3930 >##########################################################################
3931 # Settings -- Don't change! For internal Privoxy use ONLY.
3932 ##########################################################################
3933
3934 {{settings}}
3935 for-privoxy-version=3.0</PRE
3936 ></TD
3937 ></TR
3938 ></TABLE
3939 ></P
3940 ><P
3941 >After that comes the (optional) alias section. We'll use the example
3942 section from the above <A
3943 HREF="actions-file.html#ALIASES"
3944 >chapter on aliases</A
3945 >,
3946 that also explains why and how aliases are used:</P
3947 ><P
3948 > <TABLE
3949 BORDER="0"
3950 BGCOLOR="#E0E0E0"
3951 WIDTH="100%"
3952 ><TR
3953 ><TD
3954 ><PRE
3955 CLASS="SCREEN"
3956 >##########################################################################
3957 # Aliases
3958 ##########################################################################
3959 {{alias}}
3960
3961 # These aliases just save typing later:
3962 # (Note that some already use other aliases!)
3963 #
3964 +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
3965 -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
3966 block-as-image      = +block +handle-as-image
3967 mercy-for-cookies   = -crunch-all-cookies -session-cookies-only
3968
3969 # These aliases define combinations of actions
3970 # that are useful for certain types of sites:
3971 #
3972 fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -kill-popups
3973 shop        = mercy-for-cookies -filter{popups} -kill-popups</PRE
3974 ></TD
3975 ></TR
3976 ></TABLE
3977 ></P
3978 ><P
3979 > Now come the regular sections, i.e. sets of actions, accompanied
3980  by URL patterns to which they apply. Remember <SPAN
3981 CLASS="emphasis"
3982 ><I
3983 CLASS="EMPHASIS"
3984 >all actions
3985  are disabled when matching starts</I
3986 ></SPAN
3987 >, so we have to explicitly
3988  enable the ones we want.</P
3989 ><P
3990 > The first regular section is probably the most important. It has only
3991  one pattern, <SPAN
3992 CLASS="QUOTE"
3993 >"<TT
3994 CLASS="LITERAL"
3995 >/</TT
3996 >"</SPAN
3997 >, but this pattern
3998  <A
3999 HREF="actions-file.html#AF-PATTERNS"
4000 >matches all URLs</A
4001 >. Therefore, the
4002  set of actions used in this <SPAN
4003 CLASS="QUOTE"
4004 >"default"</SPAN
4005 > section <SPAN
4006 CLASS="emphasis"
4007 ><I
4008 CLASS="EMPHASIS"
4009 >will
4010  be applied to all requests as a start</I
4011 ></SPAN
4012 >. It can  be partly or
4013  wholly overridden by later matches further down this file, or in user.action,
4014  but it will still be largely responsible for your overall browsing
4015  experience.</P
4016 ><P
4017 > Again, at the start of matching, all actions are disabled, so there is
4018  no real need to disable any actions here, but we will do that nonetheless,
4019  to have a complete listing for your reference. (Remember: a <SPAN
4020 CLASS="QUOTE"
4021 >"+"</SPAN
4022 >
4023  preceding the action name enables the action, a <SPAN
4024 CLASS="QUOTE"
4025 >"-"</SPAN
4026 > disables!).
4027  Also note how this long line has been made more readable by splitting it into
4028  multiple lines with line continuation.</P
4029 ><P
4030 > <TABLE
4031 BORDER="0"
4032 BGCOLOR="#E0E0E0"
4033 WIDTH="100%"
4034 ><TR
4035 ><TD
4036 ><PRE
4037 CLASS="SCREEN"
4038 >##########################################################################
4039 # "Defaults" section:
4040 ##########################################################################
4041  { \
4042  -<A
4043 HREF="actions-file.html#ADD-HEADER"
4044 >add-header</A
4045 > \
4046  -<A
4047 HREF="actions-file.html#BLOCK"
4048 >block</A
4049 > \
4050  -<A
4051 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
4052 >crunch-incoming-cookies</A
4053 > \
4054  -<A
4055 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
4056 >crunch-outgoing-cookies</A
4057 > \
4058  +<A
4059 HREF="actions-file.html#DEANIMATE-GIFS"
4060 >deanimate-gifs</A
4061 > \
4062  -<A
4063 HREF="actions-file.html#DOWNGRADE-HTTP-VERSION"
4064 >downgrade-http-version</A
4065 > \
4066  +<A
4067 HREF="actions-file.html#FAST-REDIRECTS"
4068 >fast-redirects</A
4069 > \
4070  +<A
4071 HREF="actions-file.html#FILTER-HTML-ANNOYANCES"
4072 >filter{html-annoyances}</A
4073 > \
4074  +<A
4075 HREF="actions-file.html#FILTER-JS-ANNOYANCES"
4076 >filter{js-annoyances}</A
4077 > \
4078  -<A
4079 HREF="actions-file.html#FILTER-CONTENT-COOKIES"
4080 >filter{content-cookies}</A
4081 > \
4082  +<A
4083 HREF="actions-file.html#FILTER-POPUPS"
4084 >filter{popups}</A
4085 > \
4086  +<A
4087 HREF="actions-file.html#FILTER-WEBBUGS"
4088 >filter{webbugs}</A
4089 > \
4090  -<A
4091 HREF="actions-file.html#FILTER-REFRESH-TAGS"
4092 >filter{refresh-tags}</A
4093 > \
4094  -<A
4095 HREF="actions-file.html#FILTER-FUN"
4096 >filter{fun}</A
4097 > \
4098  +<A
4099 HREF="actions-file.html#FILTER-NIMDA"
4100 >filter{nimda}</A
4101 > \
4102  +<A
4103 HREF="actions-file.html#FILTER-BANNERS-BY-SIZE"
4104 >filter{banners-by-size}</A
4105 > \
4106  -<A
4107 HREF="actions-file.html#FILTER-SHOCKWAVE-FLASH"
4108 >filter{shockwave-flash}</A
4109 > \
4110  -<A
4111 HREF="actions-file.html#FILTER-CRUDE-PARENTAL"
4112 >filter{crude-parental}</A
4113 > \
4114  -<A
4115 HREF="actions-file.html#HANDLE-AS-IMAGE"
4116 >handle-as-image</A
4117 > \
4118  +<A
4119 HREF="actions-file.html#HIDE-FORWARDED-FOR-HEADERS"
4120 >hide-forwarded-for-headers</A
4121 > \
4122  +<A
4123 HREF="actions-file.html#HIDE-FROM-HEADER"
4124 >hide-from-header{block}</A
4125 > \
4126  +<A
4127 HREF="actions-file.html#HIDE-REFERER"
4128 >hide-referrer{forge}</A
4129 > \
4130  -<A
4131 HREF="actions-file.html#HIDE-USER-AGENT"
4132 >hide-user-agent</A
4133 > \
4134  -<A
4135 HREF="actions-file.html#KILL-POPUPS"
4136 >kill-popups</A
4137 > \
4138  -<A
4139 HREF="actions-file.html#LIMIT-CONNECT"
4140 >limit-connect</A
4141 > \
4142  +<A
4143 HREF="actions-file.html#PREVENT-COMPRESSION"
4144 >prevent-compression</A
4145 > \
4146  -<A
4147 HREF="actions-file.html#SEND-VANILLA-WAFER"
4148 >send-vanilla-wafer</A
4149 > \
4150  -<A
4151 HREF="actions-file.html#SEND-WAFER"
4152 >send-wafer</A
4153 > \
4154  +<A
4155 HREF="actions-file.html#SESSION-COOKIES-ONLY"
4156 >session-cookies-only</A
4157 > \
4158  +<A
4159 HREF="actions-file.html#SET-IMAGE-BLOCKER"
4160 >set-image-blocker{pattern}</A
4161 > \
4162  }
4163  / # forward slash will match *all* potential URL patterns.</PRE
4164 ></TD
4165 ></TR
4166 ></TABLE
4167 ></P
4168 ><P
4169 > The default behavior is now set. Note that some actions, like not hiding
4170  the user agent, are part of a <SPAN
4171 CLASS="QUOTE"
4172 >"general policy"</SPAN
4173 > that applies
4174  universally and won't get any exceptions defined later. Other choices,
4175  like not blocking (which is <SPAN
4176 CLASS="emphasis"
4177 ><I
4178 CLASS="EMPHASIS"
4179 >understandably</I
4180 ></SPAN
4181 > the
4182  default!) need exceptions, i.e. we need to specify explicitly what we
4183  want to block in later sections.
4184  We will also want to make exceptions from our general pop-up-killing,
4185  and use our defined aliases for that.</P
4186 ><P
4187 > The first of our specialized sections is concerned with <SPAN
4188 CLASS="QUOTE"
4189 >"fragile"</SPAN
4190 >
4191  sites, i.e. sites that require minimum interference, because they are either
4192  very complex or very keen on tracking you (and have mechanisms in place that
4193  make them unusable for people who avoid being tracked). We will simply use
4194  our pre-defined <TT
4195 CLASS="LITERAL"
4196 >fragile</TT
4197 > alias instead of stating the list
4198  of actions explicitly:</P
4199 ><P
4200 > <TABLE
4201 BORDER="0"
4202 BGCOLOR="#E0E0E0"
4203 WIDTH="100%"
4204 ><TR
4205 ><TD
4206 ><PRE
4207 CLASS="SCREEN"
4208 >##########################################################################
4209 # Exceptions for sites that'll break under the default action set:
4210 ##########################################################################
4211
4212 # "Fragile" Use a minimum set of actions for these sites (see alias above):
4213 #
4214 { fragile }
4215 .office.microsoft.com           # surprise, surprise!
4216 .windowsupdate.microsoft.com</PRE
4217 ></TD
4218 ></TR
4219 ></TABLE
4220 ></P
4221 ><P
4222 > Shopping sites are not as fragile, but they typically
4223  require cookies to log in, and pop-up windows for shopping
4224  carts or item details. Again, we'll use a pre-defined alias:</P
4225 ><P
4226 > <TABLE
4227 BORDER="0"
4228 BGCOLOR="#E0E0E0"
4229 WIDTH="100%"
4230 ><TR
4231 ><TD
4232 ><PRE
4233 CLASS="SCREEN"
4234 ># Shopping sites:
4235 #
4236 { shop }
4237 .quietpc.com 
4238 .worldpay.com   # for quietpc.com
4239 .jungle.com
4240 .scan.co.uk</PRE
4241 ></TD
4242 ></TR
4243 ></TABLE
4244 ></P
4245 ><P
4246 > Then, there are sites which rely on pop-up windows (yuck!) to work.
4247  Since we made pop-up-killing our default above, we need to make exceptions
4248  now. <A
4249 HREF="http://www.mozilla.org/"
4250 TARGET="_top"
4251 >Mozilla</A
4252 > users, who
4253  can turn on smart handling of unwanted pop-ups in their browsers, can
4254  safely choose
4255  -<TT
4256 CLASS="LITERAL"
4257 ><A
4258 HREF="actions-file.html#FILTER-POPUPS"
4259 >filter{popups}</A
4260 ></TT
4261 > (and
4262  -<TT
4263 CLASS="LITERAL"
4264 ><A
4265 HREF="actions-file.html#KILL-POPUPS"
4266 >kill-popups</A
4267 ></TT
4268 >) above
4269  and hence don't need this section. Anyway, disabling an already disabled
4270  action doesn't hurt, so we'll define our exceptions regardless of what was
4271  chosen in the defaults section:</P
4272 ><P
4273 > <TABLE
4274 BORDER="0"
4275 BGCOLOR="#E0E0E0"
4276 WIDTH="100%"
4277 ><TR
4278 ><TD
4279 ><PRE
4280 CLASS="SCREEN"
4281 ># These sites require pop-ups too :( 
4282 #
4283 { -<A
4284 HREF="actions-file.html#KILL-POPUPS"
4285 >kill-popups</A
4286 > -<A
4287 HREF="actions-file.html#FILTER-POPUPS"
4288 >filter{popups}</A
4289 > }
4290 .dabs.com
4291 .overclockers.co.uk
4292 .deutsche-bank-24.de</PRE
4293 ></TD
4294 ></TR
4295 ></TABLE
4296 ></P
4297 ><P
4298 > The <TT
4299 CLASS="LITERAL"
4300 ><A
4301 HREF="actions-file.html#FAST-REDIRECTS"
4302 >fast-redirects</A
4303 ></TT
4304 >
4305  action, which we enabled per default above,  breaks some sites. So disable
4306  it for popular sites where we know it misbehaves:</P
4307 ><P
4308 > <TABLE
4309 BORDER="0"
4310 BGCOLOR="#E0E0E0"
4311 WIDTH="100%"
4312 ><TR
4313 ><TD
4314 ><PRE
4315 CLASS="SCREEN"
4316 >{ -<A
4317 HREF="actions-file.html#FAST-REDIRECTS"
4318 >fast-redirects</A
4319 > }
4320 login.yahoo.com
4321 edit.*.yahoo.com
4322 .google.com
4323 .altavista.com/.*(like|url|link):http
4324 .altavista.com/trans.*urltext=http
4325 .nytimes.com</PRE
4326 ></TD
4327 ></TR
4328 ></TABLE
4329 ></P
4330 ><P
4331 > It is important that <SPAN
4332 CLASS="APPLICATION"
4333 >Privoxy</SPAN
4334 > knows which
4335  URLs belong to images, so that <SPAN
4336 CLASS="emphasis"
4337 ><I
4338 CLASS="EMPHASIS"
4339 >if</I
4340 ></SPAN
4341 > they are to
4342  be blocked, a substitute image can be sent, rather than an HTML page.
4343  Contacting the remote site to find out is not an option, since it
4344  would destroy the loading time advantage of banner blocking, and it
4345  would feed the advertisers (in terms of money <SPAN
4346 CLASS="emphasis"
4347 ><I
4348 CLASS="EMPHASIS"
4349 >and</I
4350 ></SPAN
4351 >
4352  information). We can mark any URL as an image with the <TT
4353 CLASS="LITERAL"
4354 ><A
4355 HREF="actions-file.html#HANDLE-AS-IMAGE"
4356 >handle-as-image</A
4357 ></TT
4358 > action,
4359  and marking all URLs that end in a known image file extension is a
4360  good start:</P
4361 ><P
4362 > <TABLE
4363 BORDER="0"
4364 BGCOLOR="#E0E0E0"
4365 WIDTH="100%"
4366 ><TR
4367 ><TD
4368 ><PRE
4369 CLASS="SCREEN"
4370 >##########################################################################
4371 # Images:
4372 ##########################################################################
4373
4374 # Define which file types will be treated as images, in case they get
4375 # blocked further down this file:
4376 #
4377 { +<A
4378 HREF="actions-file.html#HANDLE-AS-IMAGE"
4379 >handle-as-image</A
4380 > }
4381 /.*\.(gif|jpe?g|png|bmp|ico)$</PRE
4382 ></TD
4383 ></TR
4384 ></TABLE
4385 ></P
4386 ><P
4387 > And then there are known banner sources. They often use scripts to
4388  generate the banners, so it won't be visible from the URL that the
4389  request is for an image. Hence we block them <SPAN
4390 CLASS="emphasis"
4391 ><I
4392 CLASS="EMPHASIS"
4393 >and</I
4394 ></SPAN
4395 >
4396  mark them as images in one go, with the help of our
4397  <TT
4398 CLASS="LITERAL"
4399 >block-as-image</TT
4400 > alias defined above. (We could of
4401  course just as well use <TT
4402 CLASS="LITERAL"
4403 >+<A
4404 HREF="actions-file.html#BLOCK"
4405 >block</A
4406 >
4407  +<A
4408 HREF="actions-file.html#HANDLE-AS-IMAGE"
4409 >handle-as-image</A
4410 ></TT
4411 > here.)
4412  Remember that the type of the replacement image is chosen by the
4413  <TT
4414 CLASS="LITERAL"
4415 ><A
4416 HREF="actions-file.html#SET-IMAGE-BLOCKER"
4417 >set-image-blocker</A
4418 ></TT
4419 >
4420  action. Since all URLs have matched the default section with its
4421  <TT
4422 CLASS="LITERAL"
4423 >+<A
4424 HREF="actions-file.html#SET-IMAGE-BLOCKER"
4425 >set-image-blocker</A
4426 >{pattern}</TT
4427 >
4428  action before, it still applies and needn't be repeated:</P
4429 ><P
4430 > <TABLE
4431 BORDER="0"
4432 BGCOLOR="#E0E0E0"
4433 WIDTH="100%"
4434 ><TR
4435 ><TD
4436 ><PRE
4437 CLASS="SCREEN"
4438 ># Known ad generators:
4439 #
4440 { block-as-image }
4441 ar.atwola.com 
4442 .ad.doubleclick.net
4443 .ad.*.doubleclick.net
4444 .a.yimg.com/(?:(?!/i/).)*$
4445 .a[0-9].yimg.com/(?:(?!/i/).)*$
4446 bs*.gsanet.com
4447 bs*.einets.com
4448 .qkimg.net</PRE
4449 ></TD
4450 ></TR
4451 ></TABLE
4452 ></P
4453 ><P
4454 > One of the most important jobs of <SPAN
4455 CLASS="APPLICATION"
4456 >Privoxy</SPAN
4457 >
4458  is to block banners. A huge bunch of them are already <SPAN
4459 CLASS="QUOTE"
4460 >"blocked"</SPAN
4461 >
4462  by the <TT
4463 CLASS="LITERAL"
4464 ><A
4465 HREF="actions-file.html#FILTER"
4466 >filter</A
4467 >{banners-by-size}</TT
4468 >
4469  action, which we enabled above, and which deletes the references to banner
4470  images from the pages while they are loaded, so the browser doesn't request
4471  them anymore, and hence they don't need to be blocked here. But this naturally
4472  doesn't catch all banners, and some people choose not to use filters, so we
4473  need a comprehensive list of patterns for banner URLs here, and apply the
4474  <TT
4475 CLASS="LITERAL"
4476 ><A
4477 HREF="actions-file.html#BLOCK"
4478 >block</A
4479 ></TT
4480 > action to them.</P
4481 ><P
4482 > First comes a bunch of generic patterns, which do most of the work, by
4483  matching typical domain and path name components of banners. Then comes
4484  a list of individual patterns for specific sites, which is omitted here
4485  to keep the example short:</P
4486 ><P
4487 > <TABLE
4488 BORDER="0"
4489 BGCOLOR="#E0E0E0"
4490 WIDTH="100%"
4491 ><TR
4492 ><TD
4493 ><PRE
4494 CLASS="SCREEN"
4495 >##########################################################################
4496 # Block these fine banners:
4497 ##########################################################################
4498 { <A
4499 HREF="actions-file.html#BLOCK"
4500 >+block</A
4501 > }
4502
4503 # Generic patterns:
4504
4505 ad*.
4506 .*ads.
4507 banner?.
4508 count*.
4509 /.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
4510 /(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/
4511
4512 # Site-specific patterns (abbreviated):
4513 #
4514 .hitbox.com</PRE
4515 ></TD
4516 ></TR
4517 ></TABLE
4518 ></P
4519 ><P
4520 > You wouldn't believe how many advertisers actually call their banner
4521  servers ads.<TT
4522 CLASS="REPLACEABLE"
4523 ><I
4524 >company</I
4525 ></TT
4526 >.com, or call the directory
4527  in which the banners are stored simply <SPAN
4528 CLASS="QUOTE"
4529 >"banners"</SPAN
4530 >. So the above
4531  generic patterns are surprisingly effective.</P
4532 ><P
4533 > But being very generic, they necessarily also catch URLs that we don't want
4534  to block. The pattern <TT
4535 CLASS="LITERAL"
4536 >.*ads.</TT
4537 > e.g. catches 
4538  <SPAN
4539 CLASS="QUOTE"
4540 >"nasty-<SPAN
4541 CLASS="emphasis"
4542 ><I
4543 CLASS="EMPHASIS"
4544 >ads</I
4545 ></SPAN
4546 >.nasty-corp.com"</SPAN
4547 > as intended,
4548  but also <SPAN
4549 CLASS="QUOTE"
4550 >"downlo<SPAN
4551 CLASS="emphasis"
4552 ><I
4553 CLASS="EMPHASIS"
4554 >ads</I
4555 ></SPAN
4556 >.sourcefroge.net"</SPAN
4557 > or
4558  <SPAN
4559 CLASS="QUOTE"
4560 >"<SPAN
4561 CLASS="emphasis"
4562 ><I
4563 CLASS="EMPHASIS"
4564 >ads</I
4565 ></SPAN
4566 >l.some-provider.net."</SPAN
4567 > So here come some
4568  well-known exceptions to the <TT
4569 CLASS="LITERAL"
4570 >+<A
4571 HREF="actions-file.html#BLOCK"
4572 >block</A
4573 ></TT
4574 >
4575  section above.</P
4576 ><P
4577 > Note that these are exceptions to exceptions from the default! Consider the URL
4578  <SPAN
4579 CLASS="QUOTE"
4580 >"downloads.sourcefroge.net"</SPAN
4581 >: Initially, all actions are deactivated,
4582  so it wouldn't get blocked. Then comes the defaults section, which matches the
4583  URL, but just deactivates the <TT
4584 CLASS="LITERAL"
4585 ><A
4586 HREF="actions-file.html#BLOCK"
4587 >block</A
4588 ></TT
4589 >
4590  action once again. Then it matches <TT
4591 CLASS="LITERAL"
4592 >.*ads.</TT
4593 >, an exception to the
4594  general non-blocking policy, and suddenly
4595  <TT
4596 CLASS="LITERAL"
4597 ><A
4598 HREF="actions-file.html#BLOCK"
4599 >+block</A
4600 ></TT
4601 > applies. And now, it'll match
4602  <TT
4603 CLASS="LITERAL"
4604 >.*loads.</TT
4605 >, where <TT
4606 CLASS="LITERAL"
4607 ><A
4608 HREF="actions-file.html#BLOCK"
4609 >-block</A
4610 ></TT
4611 >
4612  applies, so (unless it matches <SPAN
4613 CLASS="emphasis"
4614 ><I
4615 CLASS="EMPHASIS"
4616 >again</I
4617 ></SPAN
4618 > further down) it ends up
4619  with no <TT
4620 CLASS="LITERAL"
4621 ><A
4622 HREF="actions-file.html#BLOCK"
4623 >block</A
4624 ></TT
4625 > action applying.</P
4626 ><P
4627 > <TABLE
4628 BORDER="0"
4629 BGCOLOR="#E0E0E0"
4630 WIDTH="100%"
4631 ><TR
4632 ><TD
4633 ><PRE
4634 CLASS="SCREEN"
4635 >##########################################################################
4636 # Save some innocent victims of the above generic block patterns:
4637 ##########################################################################
4638
4639 # By domain:
4640
4641 { -<A
4642 HREF="actions-file.html#BLOCK"
4643 >block</A
4644 > }
4645 adv[io]*.  # (for advogato.org and advice.*)
4646 adsl.      # (has nothing to do with ads)
4647 ad[ud]*.   # (adult.* and add.*)
4648 .edu       # (universities don't host banners (yet!))
4649 .*loads.   # (downloads, uploads etc)
4650
4651 # By path:
4652 #
4653 /.*loads/
4654
4655 # Site-specific:
4656 #
4657 www.globalintersec.com/adv # (adv = advanced)
4658 www.ugu.com/sui/ugu/adv</PRE
4659 ></TD
4660 ></TR
4661 ></TABLE
4662 ></P
4663 ><P
4664 > Filtering source code can have nasty side effects,
4665  so make an exception for our friends at sourceforge.net,
4666  and all paths with <SPAN
4667 CLASS="QUOTE"
4668 >"cvs"</SPAN
4669 > in them. Note that
4670  <TT
4671 CLASS="LITERAL"
4672 >-<A
4673 HREF="actions-file.html#FILTER"
4674 >filter</A
4675 ></TT
4676 >
4677  disables <SPAN
4678 CLASS="emphasis"
4679 ><I
4680 CLASS="EMPHASIS"
4681 >all</I
4682 ></SPAN
4683 > filters in one fell swoop!</P
4684 ><P
4685 > <TABLE
4686 BORDER="0"
4687 BGCOLOR="#E0E0E0"
4688 WIDTH="100%"
4689 ><TR
4690 ><TD
4691 ><PRE
4692 CLASS="SCREEN"
4693 ># Don't filter code!
4694 #
4695 { -<A
4696 HREF="actions-file.html#FILTER"
4697 >filter</A
4698 > }
4699 /.*cvs
4700 .sourceforge.net</PRE
4701 ></TD
4702 ></TR
4703 ></TABLE
4704 ></P
4705 ><P
4706 > The actual <TT
4707 CLASS="FILENAME"
4708 >default.action</TT
4709 > is of course more
4710  comprehensive, but we hope this example made clear how it works.</P
4711 ></DIV
4712 ><DIV
4713 CLASS="SECT3"
4714 ><H3
4715 CLASS="SECT3"
4716 ><A
4717 NAME="AEN2841">8.7.2. user.action</H3
4718 ><P
4719 > So far we are painting with a broad brush by setting general policies,
4720  which would be a reasonable starting point for many people. Now, 
4721  you might want to be more specific and have customized rules that
4722  are more suitable to your personal habits and preferences. These would
4723  be for narrowly defined situations like your ISP or your bank, and should
4724  be placed in <TT
4725 CLASS="FILENAME"
4726 >user.action</TT
4727 >, which is parsed after all other 
4728  actions files and hence has the last word, over-riding any previously
4729  defined actions. <TT
4730 CLASS="FILENAME"
4731 >user.action</TT
4732 > is also a 
4733  <SPAN
4734 CLASS="emphasis"
4735 ><I
4736 CLASS="EMPHASIS"
4737 >safe</I
4738 ></SPAN
4739 > place for your personal settings, since
4740  <TT
4741 CLASS="FILENAME"
4742 >default.action</TT
4743 > is actively maintained by the
4744  <SPAN
4745 CLASS="APPLICATION"
4746 >Privoxy</SPAN
4747 > developers and you'll probably want
4748  to install updated versions from time to time.</P
4749 ><P
4750 > So let's look at a few examples of things that one might typically do in
4751  <TT
4752 CLASS="FILENAME"
4753 >user.action</TT
4754 >: </P
4755 ><P
4756 > <TABLE
4757 BORDER="0"
4758 BGCOLOR="#E0E0E0"
4759 WIDTH="100%"
4760 ><TR
4761 ><TD
4762 ><PRE
4763 CLASS="SCREEN"
4764 ># My user.action file. &#60;fred@foobar.com&#62;</PRE
4765 ></TD
4766 ></TR
4767 ></TABLE
4768 ></P
4769 ><P
4770 > As <A
4771 HREF="actions-file.html#ALIASES"
4772 >aliases</A
4773 > are local to the actions
4774  file that they are defined in, you can't use the ones from
4775  <TT
4776 CLASS="FILENAME"
4777 >default.action</TT
4778 >, unless you repeat them here:</P
4779 ><P
4780 > <TABLE
4781 BORDER="0"
4782 BGCOLOR="#E0E0E0"
4783 WIDTH="100%"
4784 ><TR
4785 ><TD
4786 ><PRE
4787 CLASS="SCREEN"
4788 ># (Re-)define aliases for this file:
4789 #
4790 {{alias}}
4791 -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
4792 mercy-for-cookies   = -crunch-all-cookies -session-cookies-only
4793 fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -kill-popups
4794 shop        = mercy-for-cookies -filter{popups} -kill-popups
4795 allow-ads   = -block -filter{banners-by-size} # (see below)</PRE
4796 ></TD
4797 ></TR
4798 ></TABLE
4799 >
4800  </P
4801 ><P
4802 > Say you have accounts on some sites that you visit regularly, and
4803  you don't want to have to log in manually each time. So you'd like
4804  to allow persistent cookies for these sites. The
4805  <TT
4806 CLASS="LITERAL"
4807 >mercy-for-cookies</TT
4808 > alias defined above does exactly
4809  that, i.e. it disables crunching of cookies in any direction, and
4810  processing of cookies to make them temporary.</P
4811 ><P
4812 > <TABLE
4813 BORDER="0"
4814 BGCOLOR="#E0E0E0"
4815 WIDTH="100%"
4816 ><TR
4817 ><TD
4818 ><PRE
4819 CLASS="SCREEN"
4820 >{ mercy-for-cookies }
4821 sunsolve.sun.com
4822 slashdot.org
4823 .yahoo.com
4824 .msdn.microsoft.com
4825 .redhat.com</PRE
4826 ></TD
4827 ></TR
4828 ></TABLE
4829 ></P
4830 ><P
4831 > Your bank needs popups and is allergic to some filter, but you don't
4832  know which, so you disable them all:</P
4833 ><P
4834 > <TABLE
4835 BORDER="0"
4836 BGCOLOR="#E0E0E0"
4837 WIDTH="100%"
4838 ><TR
4839 ><TD
4840 ><PRE
4841 CLASS="SCREEN"
4842 >{ -<A
4843 HREF="actions-file.html#FILTER"
4844 >filter</A
4845 > -<A
4846 HREF="actions-file.html#KILL-POPUPS"
4847 >kill-popups</A
4848 > }
4849 .your-home-banking-site.com</PRE
4850 ></TD
4851 ></TR
4852 ></TABLE
4853 ></P
4854 ><P
4855 > While browsing the web with <SPAN
4856 CLASS="APPLICATION"
4857 >Privoxy</SPAN
4858 > you
4859  noticed some ads that sneaked through, but you were too lazy to
4860  report them through our fine and easy <A
4861 HREF="contact.html"
4862 >feedback</A
4863 >
4864  system, so you have added them here:</P
4865 ><P
4866 > <TABLE
4867 BORDER="0"
4868 BGCOLOR="#E0E0E0"
4869 WIDTH="100%"
4870 ><TR
4871 ><TD
4872 ><PRE
4873 CLASS="SCREEN"
4874 >{ +<A
4875 HREF="actions-file.html#BLOCK"
4876 >block</A
4877 > }
4878 www.a-popular-site.com/some/unobvious/path
4879 another.popular.site.net/more/junk/here/</PRE
4880 ></TD
4881 ></TR
4882 ></TABLE
4883 ></P
4884 ><P
4885 > Note that, assuming the banners in the above example have regular image
4886  extensions (most do),
4887  <TT
4888 CLASS="LITERAL"
4889 >+<A
4890 HREF="actions-file.html#HANDLE-AS-IMAGE"
4891 >handle-as-image</A
4892 ></TT
4893 >
4894  need not be specified, since all URLs ending in these extensions will
4895  already have been tagged as images in the relevant section of 
4896  <TT
4897 CLASS="FILENAME"
4898 >default.action</TT
4899 > by now.</P
4900 ><P
4901 > Then you noticed that the default configuration breaks Forbes Magazine,
4902  but you were too lazy to find out which action is the culprit, and you
4903  were again too lazy to give <A
4904 HREF="contact.html"
4905 >feedback</A
4906 >, so
4907  you just used the <TT
4908 CLASS="LITERAL"
4909 >fragile</TT
4910 > alias on the site, and
4911  -- whoa! -- it worked:</P
4912 ><P
4913 ><TABLE
4914 BORDER="0"
4915 BGCOLOR="#E0E0E0"
4916 WIDTH="100%"
4917 ><TR
4918 ><TD
4919 ><PRE
4920 CLASS="SCREEN"
4921 >{ fragile }
4922 .forbes.com</PRE
4923 ></TD
4924 ></TR
4925 ></TABLE
4926 ></P
4927 ><P
4928 > You like the <SPAN
4929 CLASS="QUOTE"
4930 >"fun"</SPAN
4931 > text replacements in <TT
4932 CLASS="FILENAME"
4933 >default.filter</TT
4934 >,
4935  but it is disabled in the distributed actions file. (My colleagues on the team just
4936  don't have a sense of humour, that's why! ;-). So you'd like to turn it on in your private,
4937  update-safe config, once and for all:</P
4938 ><P
4939 ><TABLE
4940 BORDER="0"
4941 BGCOLOR="#E0E0E0"
4942 WIDTH="100%"
4943 ><TR
4944 ><TD
4945 ><PRE
4946 CLASS="SCREEN"
4947 >{ +<A
4948 HREF="actions-file.html#FILTER-FUN"
4949 >filter{fun}</A
4950 > }
4951 / # For ALL sites!</PRE
4952 ></TD
4953 ></TR
4954 ></TABLE
4955 ></P
4956 ><P
4957 > Note that the above is not really a good idea: There are exceptions
4958  to the filters in <TT
4959 CLASS="FILENAME"
4960 >default.action</TT
4961 > for things that
4962  really shouldn't be filtered, like code on CVS-&#62;Web interfaces. Since
4963  <TT
4964 CLASS="FILENAME"
4965 >user.action</TT
4966 > has the last word, these exceptions
4967  won't be valid for the <SPAN
4968 CLASS="QUOTE"
4969 >"fun"</SPAN
4970 > filtering specified here.</P
4971 ><P
4972 > Finally, you might think about how your favourite free websites are
4973  funded, and find that they rely on displaying banner advertisements
4974  to survive. So you might want to specifically allow banners for those
4975  sites that you feel provide value to you:</P
4976 ><P
4977 ><TABLE
4978 BORDER="0"
4979 BGCOLOR="#E0E0E0"
4980 WIDTH="100%"
4981 ><TR
4982 ><TD
4983 ><PRE
4984 CLASS="SCREEN"
4985 >{ allow-ads }
4986 .sourceforge.net
4987 .slashdot.org
4988 .osdn.net</PRE
4989 ></TD
4990 ></TR
4991 ></TABLE
4992 >   </P
4993 ><P
4994 > Note that <TT
4995 CLASS="LITERAL"
4996 >allow-ads</TT
4997 > has been aliased to 
4998  <TT
4999 CLASS="LITERAL"
5000 >-<A
5001 HREF="actions-file.html#BLOCK"
5002 >block</A
5003 ></TT
5004 >
5005  <TT
5006 CLASS="LITERAL"
5007 >-<A
5008 HREF="actions-file.html#FILTER-BANNERS-BY-SIZE"
5009 >filter{banners-by-size}</A
5010 ></TT
5011 >
5012  above.</P
5013 ></DIV
5014 ></DIV
5015 ></DIV
5016 ><DIV
5017 CLASS="NAVFOOTER"
5018 ><HR
5019 ALIGN="LEFT"
5020 WIDTH="100%"><TABLE
5021 SUMMARY="Footer navigation table"
5022 WIDTH="100%"
5023 BORDER="0"
5024 CELLPADDING="0"
5025 CELLSPACING="0"
5026 ><TR
5027 ><TD
5028 WIDTH="33%"
5029 ALIGN="left"
5030 VALIGN="top"
5031 ><A
5032 HREF="config.html"
5033 ACCESSKEY="P"
5034 >Prev</A
5035 ></TD
5036 ><TD
5037 WIDTH="34%"
5038 ALIGN="center"
5039 VALIGN="top"
5040 ><A
5041 HREF="index.html"
5042 ACCESSKEY="H"
5043 >Home</A
5044 ></TD
5045 ><TD
5046 WIDTH="33%"
5047 ALIGN="right"
5048 VALIGN="top"
5049 ><A
5050 HREF="filter-file.html"
5051 ACCESSKEY="N"
5052 >Next</A
5053 ></TD
5054 ></TR
5055 ><TR
5056 ><TD
5057 WIDTH="33%"
5058 ALIGN="left"
5059 VALIGN="top"
5060 >The Main Configuration File</TD
5061 ><TD
5062 WIDTH="34%"
5063 ALIGN="center"
5064 VALIGN="top"
5065 >&nbsp;</TD
5066 ><TD
5067 WIDTH="33%"
5068 ALIGN="right"
5069 VALIGN="top"
5070 >The Filter File</TD
5071 ></TR
5072 ></TABLE
5073 ></DIV
5074 ></BODY
5075 ></HTML
5076 >