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