Add a "Whats New in this release" Section. Further work on multiple filter
[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.4 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="Filter Files"
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.4 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="AEN1784"
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 >no</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="AEN1883"
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="AEN1890"
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 <SPAN
676 CLASS="QUOTE"
677 >"action file"</SPAN
678 > file. Every time it matches, the list of
679  applicable actions for the URL is incrementally updated, using the heading
680  of the section in which the pattern is located. If multiple matches for
681  the same URL set the same action differently, the last match wins. If not, 
682  the effects are aggregated. E.g. a URL might match a regular section with 
683  a heading line of <TT
684 CLASS="LITERAL"
685 >{ 
686  +<A
687 HREF="actions-file.html#HANDLE-AS-IMAGE"
688 >handle-as-image</A
689 > }</TT
690 >,
691  then later another one with just <TT
692 CLASS="LITERAL"
693 >{
694  +<A
695 HREF="actions-file.html#BLOCK"
696 >block</A
697 > }</TT
698 >, resulting
699  in <SPAN
700 CLASS="emphasis"
701 ><I
702 CLASS="EMPHASIS"
703 >both</I
704 ></SPAN
705 > actions to apply.</P
706 ><P
707 > You can trace this process for any given URL by visiting <A
708 HREF="http://config.privoxy.org/show-url-info"
709 TARGET="_top"
710 >http://config.privoxy.org/show-url-info</A
711 >.</P
712 ><P
713 > More detail on this is provided in the Appendix, <A
714 HREF="appendix.html#ACTIONSANAT"
715 > Anatomy of an Action</A
716 >.</P
717 ></DIV
718 ><DIV
719 CLASS="SECT2"
720 ><H2
721 CLASS="SECT2"
722 ><A
723 NAME="AF-PATTERNS"
724 ></A
725 >8.4. Patterns</H2
726 ><P
727
728  As mentioned, <SPAN
729 CLASS="APPLICATION"
730 >Privoxy</SPAN
731 > uses <SPAN
732 CLASS="QUOTE"
733 >"patterns"</SPAN
734 >
735  to determine what actions might apply to which sites and pages your browser 
736  attempts to access. These <SPAN
737 CLASS="QUOTE"
738 >"patterns"</SPAN
739 > use wild card type 
740  <SPAN
741 CLASS="emphasis"
742 ><I
743 CLASS="EMPHASIS"
744 >pattern</I
745 ></SPAN
746 > matching to achieve a high degree of 
747  flexibility. This allows one expression to be expanded and potentially match
748  against many similar patterns.</P
749 ><P
750 > Generally, a <SPAN
751 CLASS="APPLICATION"
752 >Privoxy</SPAN
753 > pattern has the form
754  <TT
755 CLASS="LITERAL"
756 >&#60;domain&#62;/&#60;path&#62;</TT
757 >, where both the
758  <TT
759 CLASS="LITERAL"
760 >&#60;domain&#62;</TT
761 > and <TT
762 CLASS="LITERAL"
763 >&#60;path&#62;</TT
764 > are
765  optional. (This is why the special <TT
766 CLASS="LITERAL"
767 >/</TT
768 > pattern matches all
769  URLs). Note that the protocol portion of the URL pattern (e.g.
770  <TT
771 CLASS="LITERAL"
772 >http://</TT
773 >) should <SPAN
774 CLASS="emphasis"
775 ><I
776 CLASS="EMPHASIS"
777 >not</I
778 ></SPAN
779 > be included in
780  the pattern. This is assumed already!</P
781 ><P
782 ></P
783 ><DIV
784 CLASS="VARIABLELIST"
785 ><DL
786 ><DT
787 ><TT
788 CLASS="LITERAL"
789 >www.example.com/</TT
790 ></DT
791 ><DD
792 ><P
793 >    is a domain-only pattern and will match any request to <TT
794 CLASS="LITERAL"
795 >www.example.com</TT
796 >,
797     regardless of which document on that server is requested.
798    </P
799 ></DD
800 ><DT
801 ><TT
802 CLASS="LITERAL"
803 >www.example.com</TT
804 ></DT
805 ><DD
806 ><P
807 >    means exactly the same. For domain-only patterns, the trailing <TT
808 CLASS="LITERAL"
809 >/</TT
810 > may
811     be omitted.
812    </P
813 ></DD
814 ><DT
815 ><TT
816 CLASS="LITERAL"
817 >www.example.com/index.html</TT
818 ></DT
819 ><DD
820 ><P
821 >    matches only the single document <TT
822 CLASS="LITERAL"
823 >/index.html</TT
824 >
825     on <TT
826 CLASS="LITERAL"
827 >www.example.com</TT
828 >.
829    </P
830 ></DD
831 ><DT
832 ><TT
833 CLASS="LITERAL"
834 >/index.html</TT
835 ></DT
836 ><DD
837 ><P
838 >    matches the document <TT
839 CLASS="LITERAL"
840 >/index.html</TT
841 >, regardless of the domain,
842     i.e. on <SPAN
843 CLASS="emphasis"
844 ><I
845 CLASS="EMPHASIS"
846 >any</I
847 ></SPAN
848 > web server.
849    </P
850 ></DD
851 ><DT
852 ><TT
853 CLASS="LITERAL"
854 >index.html</TT
855 ></DT
856 ><DD
857 ><P
858 >    matches nothing, since it would be  interpreted as a domain name and
859     there is no top-level domain called <TT
860 CLASS="LITERAL"
861 >.html</TT
862 >.
863    </P
864 ></DD
865 ></DL
866 ></DIV
867 ><DIV
868 CLASS="SECT3"
869 ><H3
870 CLASS="SECT3"
871 ><A
872 NAME="AEN1964"
873 ></A
874 >8.4.1. The Domain Pattern</H3
875 ><P
876 > The matching of the domain part offers some flexible options: if the
877  domain starts or ends with a dot, it becomes unanchored at that end. 
878  For example:</P
879 ><P
880 ></P
881 ><DIV
882 CLASS="VARIABLELIST"
883 ><DL
884 ><DT
885 ><TT
886 CLASS="LITERAL"
887 >.example.com</TT
888 ></DT
889 ><DD
890 ><P
891 >    matches any domain that <SPAN
892 CLASS="emphasis"
893 ><I
894 CLASS="EMPHASIS"
895 >ENDS</I
896 ></SPAN
897 > in
898     <TT
899 CLASS="LITERAL"
900 >.example.com</TT
901 >
902    </P
903 ></DD
904 ><DT
905 ><TT
906 CLASS="LITERAL"
907 >www.</TT
908 ></DT
909 ><DD
910 ><P
911 >    matches any domain that <SPAN
912 CLASS="emphasis"
913 ><I
914 CLASS="EMPHASIS"
915 >STARTS</I
916 ></SPAN
917 > with
918     <TT
919 CLASS="LITERAL"
920 >www.</TT
921 >
922    </P
923 ></DD
924 ><DT
925 ><TT
926 CLASS="LITERAL"
927 >.example.</TT
928 ></DT
929 ><DD
930 ><P
931 >    matches any domain that <SPAN
932 CLASS="emphasis"
933 ><I
934 CLASS="EMPHASIS"
935 >CONTAINS</I
936 ></SPAN
937 > <TT
938 CLASS="LITERAL"
939 >.example.</TT
940 >
941     (Correctly speaking: It matches any FQDN that contains <TT
942 CLASS="LITERAL"
943 >example</TT
944 > as a domain.)
945    </P
946 ></DD
947 ></DL
948 ></DIV
949 ><P
950 > Additionally, there are wild-cards that you can use in the domain names
951  themselves. They work pretty similar to shell wild-cards: <SPAN
952 CLASS="QUOTE"
953 >"*"</SPAN
954 >
955  stands for zero or more arbitrary characters, <SPAN
956 CLASS="QUOTE"
957 >"?"</SPAN
958 > stands for
959  any single character, you can define character classes in square
960  brackets and all of that can be freely mixed:</P
961 ><P
962 ></P
963 ><DIV
964 CLASS="VARIABLELIST"
965 ><DL
966 ><DT
967 ><TT
968 CLASS="LITERAL"
969 >ad*.example.com</TT
970 ></DT
971 ><DD
972 ><P
973 >    matches <SPAN
974 CLASS="QUOTE"
975 >"adserver.example.com"</SPAN
976 >, 
977     <SPAN
978 CLASS="QUOTE"
979 >"ads.example.com"</SPAN
980 >, etc but not <SPAN
981 CLASS="QUOTE"
982 >"sfads.example.com"</SPAN
983 >
984    </P
985 ></DD
986 ><DT
987 ><TT
988 CLASS="LITERAL"
989 >*ad*.example.com</TT
990 ></DT
991 ><DD
992 ><P
993 >    matches all of the above, and then some.
994    </P
995 ></DD
996 ><DT
997 ><TT
998 CLASS="LITERAL"
999 >.?pix.com</TT
1000 ></DT
1001 ><DD
1002 ><P
1003 >    matches <TT
1004 CLASS="LITERAL"
1005 >www.ipix.com</TT
1006 >,
1007     <TT
1008 CLASS="LITERAL"
1009 >pictures.epix.com</TT
1010 >, <TT
1011 CLASS="LITERAL"
1012 >a.b.c.d.e.upix.com</TT
1013 > etc. 
1014    </P
1015 ></DD
1016 ><DT
1017 ><TT
1018 CLASS="LITERAL"
1019 >www[1-9a-ez].example.c*</TT
1020 ></DT
1021 ><DD
1022 ><P
1023 >     matches <TT
1024 CLASS="LITERAL"
1025 >www1.example.com</TT
1026 >, 
1027      <TT
1028 CLASS="LITERAL"
1029 >www4.example.cc</TT
1030 >, <TT
1031 CLASS="LITERAL"
1032 >wwwd.example.cy</TT
1033 >, 
1034      <TT
1035 CLASS="LITERAL"
1036 >wwwz.example.com</TT
1037 > etc., but <SPAN
1038 CLASS="emphasis"
1039 ><I
1040 CLASS="EMPHASIS"
1041 >not</I
1042 ></SPAN
1043
1044      <TT
1045 CLASS="LITERAL"
1046 >wwww.example.com</TT
1047 >.
1048    </P
1049 ></DD
1050 ></DL
1051 ></DIV
1052 ></DIV
1053 ><DIV
1054 CLASS="SECT3"
1055 ><H3
1056 CLASS="SECT3"
1057 ><A
1058 NAME="AEN2026"
1059 ></A
1060 >8.4.2. The Path Pattern</H3
1061 ><P
1062 > <SPAN
1063 CLASS="APPLICATION"
1064 >Privoxy</SPAN
1065 > uses Perl compatible regular expressions
1066  (through the <A
1067 HREF="http://www.pcre.org/"
1068 TARGET="_top"
1069 >PCRE</A
1070 > library) for
1071  matching the path.</P
1072 ><P
1073 > There is an <A
1074 HREF="appendix.html#REGEX"
1075 >Appendix</A
1076 > with a brief quick-start into regular
1077  expressions, and full (very technical) documentation on PCRE regex syntax is available on-line
1078  at <A
1079 HREF="http://www.pcre.org/man.txt"
1080 TARGET="_top"
1081 >http://www.pcre.org/man.txt</A
1082 >.
1083  You might also find the Perl man page on regular expressions (<TT
1084 CLASS="LITERAL"
1085 >man perlre</TT
1086 >)
1087  useful, which is available on-line at <A
1088 HREF="http://www.perldoc.com/perl5.6/pod/perlre.html"
1089 TARGET="_top"
1090 >http://www.perldoc.com/perl5.6/pod/perlre.html</A
1091 >.</P
1092 ><P
1093 > Note that the path pattern is automatically left-anchored at the <SPAN
1094 CLASS="QUOTE"
1095 >"/"</SPAN
1096 >,
1097  i.e. it matches as if it would start with a <SPAN
1098 CLASS="QUOTE"
1099 >"^"</SPAN
1100 > (regular expression speak 
1101  for the beginning of a line).</P
1102 ><P
1103 > Please also note that matching in the path is <SPAN
1104 CLASS="emphasis"
1105 ><I
1106 CLASS="EMPHASIS"
1107 >CASE INSENSITIVE</I
1108 ></SPAN
1109 >
1110  by default, but you can switch to case sensitive at any point in the pattern by using the 
1111  <SPAN
1112 CLASS="QUOTE"
1113 >"(?-i)"</SPAN
1114 > switch: <TT
1115 CLASS="LITERAL"
1116 >www.example.com/(?-i)PaTtErN.*</TT
1117 > will match
1118  only documents whose path starts with <TT
1119 CLASS="LITERAL"
1120 >PaTtErN</TT
1121 > in
1122  <SPAN
1123 CLASS="emphasis"
1124 ><I
1125 CLASS="EMPHASIS"
1126 >exactly</I
1127 ></SPAN
1128 > this capitalization.</P
1129 ></DIV
1130 ></DIV
1131 ><DIV
1132 CLASS="SECT2"
1133 ><H2
1134 CLASS="SECT2"
1135 ><A
1136 NAME="ACTIONS"
1137 ></A
1138 >8.5. Actions</H2
1139 ><P
1140 > All actions are disabled by default, until they are explicitly enabled
1141  somewhere in an actions file. Actions are turned on if preceded with a
1142  <SPAN
1143 CLASS="QUOTE"
1144 >"+"</SPAN
1145 >, and turned off if preceded with a <SPAN
1146 CLASS="QUOTE"
1147 >"-"</SPAN
1148 >. So a
1149  <TT
1150 CLASS="LITERAL"
1151 >+action</TT
1152 > means <SPAN
1153 CLASS="QUOTE"
1154 >"do that action"</SPAN
1155 >, e.g.
1156  <TT
1157 CLASS="LITERAL"
1158 >+block</TT
1159 > means <SPAN
1160 CLASS="QUOTE"
1161 >"please block URLs that match the
1162  following patterns"</SPAN
1163 >, and <TT
1164 CLASS="LITERAL"
1165 >-block</TT
1166 > means <SPAN
1167 CLASS="QUOTE"
1168 >"don't
1169  block URLs that match the following patterns, even if <TT
1170 CLASS="LITERAL"
1171 >+block</TT
1172 >
1173  previously applied."</SPAN
1174 >&#13;</P
1175 ><P
1176
1177  Again, actions are invoked by placing them on a line, enclosed in curly braces and
1178  separated by whitespace, like in 
1179  <TT
1180 CLASS="LITERAL"
1181 >{+some-action -some-other-action{some-parameter}}</TT
1182 >,
1183  followed by a list of URL patterns, one per line, to which they apply.
1184  Together, the actions line and the following pattern lines make up a section
1185  of the actions file. </P
1186 ><P
1187
1188  There are three classes of actions:</P
1189 ><P
1190 > <P
1191 ></P
1192 ><UL
1193 ><LI
1194 ><P
1195 >  
1196    Boolean, i.e the action can only be <SPAN
1197 CLASS="QUOTE"
1198 >"enabled"</SPAN
1199 > or
1200    <SPAN
1201 CLASS="QUOTE"
1202 >"disabled"</SPAN
1203 >. Syntax:
1204   </P
1205 ><P
1206 >   <TABLE
1207 BORDER="0"
1208 BGCOLOR="#E0E0E0"
1209 WIDTH="90%"
1210 ><TR
1211 ><TD
1212 ><PRE
1213 CLASS="SCREEN"
1214 >  +<TT
1215 CLASS="REPLACEABLE"
1216 ><I
1217 >name</I
1218 ></TT
1219 >        # enable action <TT
1220 CLASS="REPLACEABLE"
1221 ><I
1222 >name</I
1223 ></TT
1224 >
1225   -<TT
1226 CLASS="REPLACEABLE"
1227 ><I
1228 >name</I
1229 ></TT
1230 >        # disable action <TT
1231 CLASS="REPLACEABLE"
1232 ><I
1233 >name</I
1234 ></TT
1235 ></PRE
1236 ></TD
1237 ></TR
1238 ></TABLE
1239 >
1240   </P
1241 ><P
1242 >  
1243    Example: <TT
1244 CLASS="LITERAL"
1245 >+block</TT
1246 >
1247   </P
1248 ></LI
1249 ><LI
1250 ><P
1251 >  
1252    Parameterized, where some value is required in order to enable this type of action.
1253    Syntax:
1254   </P
1255 ><P
1256 >   <TABLE
1257 BORDER="0"
1258 BGCOLOR="#E0E0E0"
1259 WIDTH="90%"
1260 ><TR
1261 ><TD
1262 ><PRE
1263 CLASS="SCREEN"
1264 >  +<TT
1265 CLASS="REPLACEABLE"
1266 ><I
1267 >name</I
1268 ></TT
1269 >{<TT
1270 CLASS="REPLACEABLE"
1271 ><I
1272 >param</I
1273 ></TT
1274 >}  # enable action and set parameter to <TT
1275 CLASS="REPLACEABLE"
1276 ><I
1277 >param</I
1278 ></TT
1279 >,
1280                # overwriting parameter from previous match if necessary
1281   -<TT
1282 CLASS="REPLACEABLE"
1283 ><I
1284 >name</I
1285 ></TT
1286 >         # disable action. The parameter can be omitted</PRE
1287 ></TD
1288 ></TR
1289 ></TABLE
1290 >
1291   </P
1292 ><P
1293 >   Note that if the URL matches multiple positive forms of a parameterized action,
1294    the last match wins, i.e. the params from earlier matches are simply ignored.
1295   </P
1296 ><P
1297 >  
1298    Example: <TT
1299 CLASS="LITERAL"
1300 >+hide-user-agent{ Mozilla 1.0 }</TT
1301 >
1302   </P
1303 ></LI
1304 ><LI
1305 ><P
1306 >  
1307    Multi-value. These look exactly like parameterized actions,
1308    but they behave differently: If the action applies multiple times to the
1309    same URL, but with different parameters, <SPAN
1310 CLASS="emphasis"
1311 ><I
1312 CLASS="EMPHASIS"
1313 >all</I
1314 ></SPAN
1315 > the parameters
1316    from <SPAN
1317 CLASS="emphasis"
1318 ><I
1319 CLASS="EMPHASIS"
1320 >all</I
1321 ></SPAN
1322 > matches are remembered. This is used for actions
1323    that can be executed for the same request repeatedly, like adding multiple
1324    headers, or filtering through multiple filters. Syntax:
1325   </P
1326 ><P
1327 >   <TABLE
1328 BORDER="0"
1329 BGCOLOR="#E0E0E0"
1330 WIDTH="90%"
1331 ><TR
1332 ><TD
1333 ><PRE
1334 CLASS="SCREEN"
1335 >  +<TT
1336 CLASS="REPLACEABLE"
1337 ><I
1338 >name</I
1339 ></TT
1340 >{<TT
1341 CLASS="REPLACEABLE"
1342 ><I
1343 >param</I
1344 ></TT
1345 >}   # enable action and add <TT
1346 CLASS="REPLACEABLE"
1347 ><I
1348 >param</I
1349 ></TT
1350 > to the list of parameters
1351   -<TT
1352 CLASS="REPLACEABLE"
1353 ><I
1354 >name</I
1355 ></TT
1356 >{<TT
1357 CLASS="REPLACEABLE"
1358 ><I
1359 >param</I
1360 ></TT
1361 >}   # remove the parameter <TT
1362 CLASS="REPLACEABLE"
1363 ><I
1364 >param</I
1365 ></TT
1366 > from the list of parameters
1367                 # If it was the last one left, disable the action.
1368   <TT
1369 CLASS="REPLACEABLE"
1370 ><I
1371 >-name</I
1372 ></TT
1373 >          # disable this action completely and remove all parameters from the list</PRE
1374 ></TD
1375 ></TR
1376 ></TABLE
1377 >
1378   </P
1379 ><P
1380 >  
1381    Examples: <TT
1382 CLASS="LITERAL"
1383 >+add-header{X-Fun-Header: Some text}</TT
1384 > and
1385    <TT
1386 CLASS="LITERAL"
1387 >+filter{html-annoyances}</TT
1388 >
1389   </P
1390 ></LI
1391 ></UL
1392 ></P
1393 ><P
1394 > If nothing is specified in any actions file, no <SPAN
1395 CLASS="QUOTE"
1396 >"actions"</SPAN
1397 > are
1398  taken. So in this case <SPAN
1399 CLASS="APPLICATION"
1400 >Privoxy</SPAN
1401 > would just be a
1402  normal, non-blocking, non-anonymizing proxy. You must specifically enable the
1403  privacy and blocking features you need (although the provided default actions
1404  files will give a good starting point).</P
1405 ><P
1406 > Later defined actions always over-ride earlier ones.  So exceptions 
1407  to any rules you make, should come in the latter part of the file (or 
1408  in a file that is processed later when using multiple actions files). For
1409  multi-valued actions, the actions are applied in the order they are specified.
1410  Actions files are processed in the order they are defined in
1411  <TT
1412 CLASS="FILENAME"
1413 >config</TT
1414 > (the default installation has three actions
1415  files). It also quite possible for any given URL pattern to match more than
1416  one pattern and thus more than one set of actions!</P
1417 ><P
1418 > The list of valid <SPAN
1419 CLASS="APPLICATION"
1420 >Privoxy</SPAN
1421 > actions are:</P
1422 ><DIV
1423 CLASS="SECT3"
1424 ><H4
1425 CLASS="SECT3"
1426 ><A
1427 NAME="ADD-HEADER"
1428 ></A
1429 >8.5.1. add-header</H4
1430 ><P
1431 ></P
1432 ><DIV
1433 CLASS="VARIABLELIST"
1434 ><DL
1435 ><DT
1436 >Typical use:</DT
1437 ><DD
1438 ><P
1439 >Confuse log analysis, custom applications</P
1440 ></DD
1441 ><DT
1442 >Effect:</DT
1443 ><DD
1444 ><P
1445 >    Sends a user defined HTTP header to the web server.
1446    </P
1447 ></DD
1448 ><DT
1449 >Type:</DT
1450 ><DD
1451 ><P
1452 >Multi-value.</P
1453 ></DD
1454 ><DT
1455 >Parameter:</DT
1456 ><DD
1457 ><P
1458 >    Any string value is possible. Validity of the defined HTTP headers is not checked.
1459     It is recommended that you use the <SPAN
1460 CLASS="QUOTE"
1461 >"<TT
1462 CLASS="LITERAL"
1463 >X-</TT
1464 >"</SPAN
1465 > prefix
1466     for custom headers.
1467    </P
1468 ></DD
1469 ><DT
1470 >Notes:</DT
1471 ><DD
1472 ><P
1473 >    This action may be specified multiple times, in order to define multiple 
1474     headers. This is rarely needed for the typical user. If you don't know what 
1475     <SPAN
1476 CLASS="QUOTE"
1477 >"HTTP headers"</SPAN
1478 > are, you definitely don't need to worry about this 
1479     one.
1480    </P
1481 ></DD
1482 ><DT
1483 >Example usage:</DT
1484 ><DD
1485 ><P
1486 >     <TABLE
1487 BORDER="0"
1488 BGCOLOR="#E0E0E0"
1489 WIDTH="90%"
1490 ><TR
1491 ><TD
1492 ><PRE
1493 CLASS="SCREEN"
1494 >+add-header{X-User-Tracking: sucks}</PRE
1495 ></TD
1496 ></TR
1497 ></TABLE
1498 >
1499    </P
1500 ></DD
1501 ></DL
1502 ></DIV
1503 ></DIV
1504 ><DIV
1505 CLASS="SECT3"
1506 ><H4
1507 CLASS="SECT3"
1508 ><A
1509 NAME="BLOCK"
1510 ></A
1511 >8.5.2. block</H4
1512 ><P
1513 ></P
1514 ><DIV
1515 CLASS="VARIABLELIST"
1516 ><DL
1517 ><DT
1518 >Typical use:</DT
1519 ><DD
1520 ><P
1521 >Block ads or other obnoxious content</P
1522 ></DD
1523 ><DT
1524 >Effect:</DT
1525 ><DD
1526 ><P
1527 >    Requests for URLs to which this action applies are blocked, i.e. the requests are not
1528     forwarded to the remote server, but answered locally with a substitute page or image,
1529     as determined by the <TT
1530 CLASS="LITERAL"
1531 ><A
1532 HREF="actions-file.html#HANDLE-AS-IMAGE"
1533 >handle-as-image</A
1534 ></TT
1535 >
1536     and <TT
1537 CLASS="LITERAL"
1538 ><A
1539 HREF="actions-file.html#SET-IMAGE-BLOCKER"
1540 >set-image-blocker</A
1541 ></TT
1542 > actions.
1543    </P
1544 ></DD
1545 ><DT
1546 >Type:</DT
1547 ><DD
1548 ><P
1549 >Boolean.</P
1550 ></DD
1551 ><DT
1552 >Parameter:</DT
1553 ><DD
1554 ><P
1555 >N/A</P
1556 ></DD
1557 ><DT
1558 >Notes:</DT
1559 ><DD
1560 ><P
1561 >    <SPAN
1562 CLASS="APPLICATION"
1563 >Privoxy</SPAN
1564 > sends a special <SPAN
1565 CLASS="QUOTE"
1566 >"BLOCKED"</SPAN
1567 > page
1568     for requests to blocked pages. This page contains links to find out why the request
1569     was blocked, and a click-through to the blocked content (the latter only if compiled with the
1570     force feature enabled). The <SPAN
1571 CLASS="QUOTE"
1572 >"BLOCKED"</SPAN
1573 > page adapts to the available
1574     screen space -- it displays full-blown if space allows, or miniaturized and text-only
1575     if loaded into a small frame or window. If you are using <SPAN
1576 CLASS="APPLICATION"
1577 >Privoxy</SPAN
1578 >
1579     right now, you can take a look at the 
1580     <A
1581 HREF="http://ads.bannerserver.example.com/nasty-ads/sponsor.html"
1582 TARGET="_top"
1583 ><SPAN
1584 CLASS="QUOTE"
1585 >"BLOCKED"</SPAN
1586 >
1587     page</A
1588 >.
1589    </P
1590 ><P
1591
1592     A very important exception occurs if <SPAN
1593 CLASS="emphasis"
1594 ><I
1595 CLASS="EMPHASIS"
1596 >both</I
1597 ></SPAN
1598
1599     <TT
1600 CLASS="LITERAL"
1601 >block</TT
1602 > and <TT
1603 CLASS="LITERAL"
1604 ><A
1605 HREF="actions-file.html#HANDLE-AS-IMAGE"
1606 >handle-as-image</A
1607 ></TT
1608 >,
1609     apply to the same request: it will then be replaced by an image. If 
1610     <TT
1611 CLASS="LITERAL"
1612 ><A
1613 HREF="actions-file.html#SET-IMAGE-BLOCKER"
1614 >set-image-blocker</A
1615 ></TT
1616 >
1617     (see below) also applies, the type of image will be determined by its parameter,
1618     if not, the standard checkerboard pattern is sent.
1619    </P
1620 ><P
1621 >    It is important to understand this process, in order 
1622     to understand how <SPAN
1623 CLASS="APPLICATION"
1624 >Privoxy</SPAN
1625 > deals with 
1626     ads and other unwanted content.
1627    </P
1628 ><P
1629 >    The <TT
1630 CLASS="LITERAL"
1631 ><A
1632 HREF="actions-file.html#FILTER"
1633 >filter</A
1634 ></TT
1635 >
1636     action can perform a very similar task, by <SPAN
1637 CLASS="QUOTE"
1638 >"blocking"</SPAN
1639 >
1640     banner images and other content through rewriting the relevant URLs in the
1641     document's HTML source, so they don't get requested in the first place.
1642     Note that this is a totally different technique, and it's easy to confuse the two.
1643    </P
1644 ></DD
1645 ><DT
1646 >Example usage (section):</DT
1647 ><DD
1648 ><P
1649 >     <TABLE
1650 BORDER="0"
1651 BGCOLOR="#E0E0E0"
1652 WIDTH="90%"
1653 ><TR
1654 ><TD
1655 ><PRE
1656 CLASS="SCREEN"
1657 >{+block}      # Block and replace with "blocked" page
1658 .nasty-stuff.example.com
1659
1660 {+block +handle-as-image} # Block and replace with image
1661 .ad.doubleclick.net
1662 .ads.r.us</PRE
1663 ></TD
1664 ></TR
1665 ></TABLE
1666 >
1667     </P
1668 ></DD
1669 ></DL
1670 ></DIV
1671 ></DIV
1672 ><DIV
1673 CLASS="SECT3"
1674 ><H4
1675 CLASS="SECT3"
1676 ><A
1677 NAME="CONTENT-TYPE-OVERWRITE"
1678 ></A
1679 >8.5.3. content-type-overwrite</H4
1680 ><P
1681 ></P
1682 ><DIV
1683 CLASS="VARIABLELIST"
1684 ><DL
1685 ><DT
1686 >Typical use:</DT
1687 ><DD
1688 ><P
1689 >Stop useless download menus from popping up, or change the browser's rendering mode</P
1690 ></DD
1691 ><DT
1692 >Effect:</DT
1693 ><DD
1694 ><P
1695 >    Replaces the <SPAN
1696 CLASS="QUOTE"
1697 >"Content-Type:"</SPAN
1698 > HTTP server header.
1699    </P
1700 ></DD
1701 ><DT
1702 >Type:</DT
1703 ><DD
1704 ><P
1705 >Parameterized.</P
1706 ></DD
1707 ><DT
1708 >Parameter:</DT
1709 ><DD
1710 ><P
1711 >    Any string. 
1712    </P
1713 ></DD
1714 ><DT
1715 >Notes:</DT
1716 ><DD
1717 ><P
1718 >    The <SPAN
1719 CLASS="QUOTE"
1720 >"Content-Type:"</SPAN
1721 > HTTP server header is used by the
1722     browser to decide what to do with the document. The value of this
1723     header can cause the browser to open a download menu instead of
1724     displaying the document by itself, even if the document's format is
1725     supported by the browser. 
1726    </P
1727 ><P
1728 >    The declared content type can also affect which rendering mode
1729     the browser chooses. If XHTML is delivered as <SPAN
1730 CLASS="QUOTE"
1731 >"text/html"</SPAN
1732 >,
1733     many browsers treat it as yet another broken HTML document.
1734     If it is send as <SPAN
1735 CLASS="QUOTE"
1736 >"application/xml"</SPAN
1737 >, browsers with
1738     XHTML support will only display it, if the syntax is correct.
1739    </P
1740 ><P
1741 >    If you see a web site that proudly uses XHTML buttons, but sets
1742     <SPAN
1743 CLASS="QUOTE"
1744 >"Content-Type: text/html"</SPAN
1745 >, you can use Privoxy
1746     to overwrite it with <SPAN
1747 CLASS="QUOTE"
1748 >"application/xml"</SPAN
1749 > and validate
1750     the web master's claim inside your XHTML-supporting browser.
1751     If the syntax is incorrect, the browser will complain loudly. 
1752    </P
1753 ><P
1754 >    You can also go the opposite direction: if your browser prints
1755     error messages instead of rendering a document falsely declared
1756     as XHTML, you can overwrite the content type with
1757     <SPAN
1758 CLASS="QUOTE"
1759 >"text/html"</SPAN
1760 > and have it rendered as broken HTML document. 
1761    </P
1762 ><P
1763 >    By default <TT
1764 CLASS="LITERAL"
1765 >content-type-overwrite</TT
1766 > only replaces
1767     <SPAN
1768 CLASS="QUOTE"
1769 >"Content-Type:"</SPAN
1770 > headers that look like some kind of text.
1771     If you want to overwrite it unconditionally, you have to combine it with
1772     <TT
1773 CLASS="LITERAL"
1774 ><A
1775 HREF="actions-file.html#FORCE-TEXT-MODE"
1776 >force-text-mode</A
1777 ></TT
1778 >.
1779     This limitation exists for a reason, think twice before circumventing it.
1780    </P
1781 ><P
1782 >    Most of the time it's easier to enable
1783     <TT
1784 CLASS="LITERAL"
1785 ><A
1786 HREF="filter-file.html#FILTER-SERVER-HEADERS"
1787 >filter-server-headers</A
1788 ></TT
1789 >
1790     and replace this action with a custom regular expression. It allows you
1791     to activate it for every document of a certain site and it will still
1792     only replace the content types you aimed at.
1793    </P
1794 ><P
1795 >    Of course you can apply <TT
1796 CLASS="LITERAL"
1797 >content-type-overwrite</TT
1798 >
1799     to a whole site and then make URL based exceptions, but it's a lot
1800     more work to get the same precision. 
1801    </P
1802 ></DD
1803 ><DT
1804 >Example usage (sections):</DT
1805 ><DD
1806 ><P
1807 >     <TABLE
1808 BORDER="0"
1809 BGCOLOR="#E0E0E0"
1810 WIDTH="90%"
1811 ><TR
1812 ><TD
1813 ><PRE
1814 CLASS="SCREEN"
1815 ># Check if www.example.net/ really uses valid XHTML
1816 {+content-type-overwrite {application/xml}}
1817 www.example.net/
1818 # but leave the content type unmodified if the URL looks like a style sheet
1819 {-content-type-overwrite}
1820 www.example.net/*.\.css$
1821 www.example.net/*.style</PRE
1822 ></TD
1823 ></TR
1824 ></TABLE
1825 >
1826    </P
1827 ></DD
1828 ></DL
1829 ></DIV
1830 ></DIV
1831 ><DIV
1832 CLASS="SECT3"
1833 ><H4
1834 CLASS="SECT3"
1835 ><A
1836 NAME="CRUNCH-CLIENT-HEADER"
1837 ></A
1838 >8.5.4. crunch-server-header</H4
1839 ><P
1840 ></P
1841 ><DIV
1842 CLASS="VARIABLELIST"
1843 ><DL
1844 ><DT
1845 >Typical use:</DT
1846 ><DD
1847 ><P
1848 >Remove a client header <SPAN
1849 CLASS="APPLICATION"
1850 >Privoxy</SPAN
1851 > has no dedicated action for.</P
1852 ></DD
1853 ><DT
1854 >Effect:</DT
1855 ><DD
1856 ><P
1857 >    Deletes every header send by the client that contains the string the user supplied as parameter.
1858    </P
1859 ></DD
1860 ><DT
1861 >Type:</DT
1862 ><DD
1863 ><P
1864 >Parameterized.</P
1865 ></DD
1866 ><DT
1867 >Parameter:</DT
1868 ><DD
1869 ><P
1870 >    Any string.
1871    </P
1872 ></DD
1873 ><DT
1874 >Notes:</DT
1875 ><DD
1876 ><P
1877 >    This action allows you to block client headers for which no dedicated
1878     <SPAN
1879 CLASS="APPLICATION"
1880 >Privoxy</SPAN
1881 > action exists.
1882     <SPAN
1883 CLASS="APPLICATION"
1884 >Privoxy</SPAN
1885 > will remove every client header that
1886     contains the string you supplied as parameter.
1887    </P
1888 ><P
1889 >    Regular expressions are <SPAN
1890 CLASS="emphasis"
1891 ><I
1892 CLASS="EMPHASIS"
1893 >not supported</I
1894 ></SPAN
1895 > and you can't
1896     use this action to block different headers in the same request, unless
1897     they contain the same string.
1898    </P
1899 ><P
1900 >    <TT
1901 CLASS="LITERAL"
1902 >crunch-client-header</TT
1903 > is only meant for quick tests.
1904     If you have to block several different headers, or only want to modify
1905     parts of them, you should enable
1906     <TT
1907 CLASS="LITERAL"
1908 ><A
1909 HREF="filter-file.html#FILTER-CLIENT-HEADERS"
1910 >filter-client-headers</A
1911 ></TT
1912 >
1913     and create your own filter.
1914    </P
1915 ><DIV
1916 CLASS="WARNING"
1917 ><P
1918 ></P
1919 ><TABLE
1920 CLASS="WARNING"
1921 BORDER="1"
1922 WIDTH="90%"
1923 ><TR
1924 ><TD
1925 ALIGN="CENTER"
1926 ><B
1927 >Warning</B
1928 ></TD
1929 ></TR
1930 ><TR
1931 ><TD
1932 ALIGN="LEFT"
1933 ><P
1934 >      Don't block any header without understanding the consequences.
1935      </P
1936 ></TD
1937 ></TR
1938 ></TABLE
1939 ></DIV
1940 ></DD
1941 ><DT
1942 >Example usage (section):</DT
1943 ><DD
1944 ><P
1945 >     <TABLE
1946 BORDER="0"
1947 BGCOLOR="#E0E0E0"
1948 WIDTH="90%"
1949 ><TR
1950 ><TD
1951 ><PRE
1952 CLASS="SCREEN"
1953 ># Block the non-existent "Privacy-Violation:" client header 
1954 {+crunch-client-header {Privacy-Violation:}}
1955 /
1956     </PRE
1957 ></TD
1958 ></TR
1959 ></TABLE
1960 >
1961    </P
1962 ></DD
1963 ></DL
1964 ></DIV
1965 ></DIV
1966 ><DIV
1967 CLASS="SECT3"
1968 ><H4
1969 CLASS="SECT3"
1970 ><A
1971 NAME="CRUNCH-IF-NONE-MATCH"
1972 ></A
1973 >8.5.5. crunch-if-none-match</H4
1974 ><P
1975 ></P
1976 ><DIV
1977 CLASS="VARIABLELIST"
1978 ><DL
1979 ><DT
1980 >Typical use:</DT
1981 ><DD
1982 ><P
1983 >Prevent yet another way to track the user's steps between sessions.</P
1984 ></DD
1985 ><DT
1986 >Effect:</DT
1987 ><DD
1988 ><P
1989 >    Deletes the <SPAN
1990 CLASS="QUOTE"
1991 >"If-None-Match:"</SPAN
1992 > HTTP client header.
1993    </P
1994 ></DD
1995 ><DT
1996 >Type:</DT
1997 ><DD
1998 ><P
1999 >Boolean.</P
2000 ></DD
2001 ><DT
2002 >Parameter:</DT
2003 ><DD
2004 ><P
2005 >    N/A
2006    </P
2007 ></DD
2008 ><DT
2009 >Notes:</DT
2010 ><DD
2011 ><P
2012 >    Removing the <SPAN
2013 CLASS="QUOTE"
2014 >"If-None-Match:"</SPAN
2015 > HTTP client header
2016     is useful for filter testing, where you want to force a real
2017     reload instead of getting status code <SPAN
2018 CLASS="QUOTE"
2019 >"304"</SPAN
2020 > which
2021     would cause the browser to use a cached copy of the page.
2022    </P
2023 ><P
2024 >    It is also useful to make sure the header isn't used as a cookie
2025     replacement.
2026    </P
2027 ><P
2028 >    Blocking the <SPAN
2029 CLASS="QUOTE"
2030 >"If-None-Match:"</SPAN
2031 > header shouldn't cause any
2032     caching problems, as long as the <SPAN
2033 CLASS="QUOTE"
2034 >"If-Modified-Since:"</SPAN
2035 > header
2036     isn't blocked as well.
2037    </P
2038 ><P
2039 >    It is recommended to use this action together with
2040     <TT
2041 CLASS="LITERAL"
2042 ><A
2043 HREF="actions-file.html#HIDE-IF-MODIFIED-SINCE"
2044 >hide-if-modified-since</A
2045 ></TT
2046 >
2047     and
2048     <TT
2049 CLASS="LITERAL"
2050 ><A
2051 HREF="actions-file.html#OVERWRITE-LAST-MODIFIED"
2052 >overwrite-last-modified</A
2053 ></TT
2054 >.
2055    </P
2056 ></DD
2057 ><DT
2058 >Example usage (section):</DT
2059 ><DD
2060 ><P
2061 >     <TABLE
2062 BORDER="0"
2063 BGCOLOR="#E0E0E0"
2064 WIDTH="90%"
2065 ><TR
2066 ><TD
2067 ><PRE
2068 CLASS="SCREEN"
2069 ># Let the browser revalidate cached documents without being tracked across sessions
2070 {+hide-if-modified-since {-1} \
2071 +overwrite-last-modified {randomize} \
2072 +crunch-if-none-match}
2073 /   </PRE
2074 ></TD
2075 ></TR
2076 ></TABLE
2077 >
2078    </P
2079 ></DD
2080 ></DL
2081 ></DIV
2082 ></DIV
2083 ><DIV
2084 CLASS="SECT3"
2085 ><H4
2086 CLASS="SECT3"
2087 ><A
2088 NAME="CRUNCH-INCOMING-COOKIES"
2089 ></A
2090 >8.5.6. crunch-incoming-cookies</H4
2091 ><P
2092 ></P
2093 ><DIV
2094 CLASS="VARIABLELIST"
2095 ><DL
2096 ><DT
2097 >Typical use:</DT
2098 ><DD
2099 ><P
2100 >    Prevent the web server from setting any cookies on your system
2101    </P
2102 ></DD
2103 ><DT
2104 >Effect:</DT
2105 ><DD
2106 ><P
2107 >    Deletes any <SPAN
2108 CLASS="QUOTE"
2109 >"Set-Cookie:"</SPAN
2110 > HTTP headers from server replies.
2111    </P
2112 ></DD
2113 ><DT
2114 >Type:</DT
2115 ><DD
2116 ><P
2117 >Boolean.</P
2118 ></DD
2119 ><DT
2120 >Parameter:</DT
2121 ><DD
2122 ><P
2123 >    N/A
2124    </P
2125 ></DD
2126 ><DT
2127 >Notes:</DT
2128 ><DD
2129 ><P
2130 >    This action is only concerned with <SPAN
2131 CLASS="emphasis"
2132 ><I
2133 CLASS="EMPHASIS"
2134 >incoming</I
2135 ></SPAN
2136 > cookies. For
2137     <SPAN
2138 CLASS="emphasis"
2139 ><I
2140 CLASS="EMPHASIS"
2141 >outgoing</I
2142 ></SPAN
2143 > cookies, use
2144     <TT
2145 CLASS="LITERAL"
2146 ><A
2147 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
2148 >crunch-outgoing-cookies</A
2149 ></TT
2150 >.
2151     Use <SPAN
2152 CLASS="emphasis"
2153 ><I
2154 CLASS="EMPHASIS"
2155 >both</I
2156 ></SPAN
2157 > to disable cookies completely.
2158    </P
2159 ><P
2160 >    It makes <SPAN
2161 CLASS="emphasis"
2162 ><I
2163 CLASS="EMPHASIS"
2164 >no sense at all</I
2165 ></SPAN
2166 > to use this action in conjunction
2167     with the <TT
2168 CLASS="LITERAL"
2169 ><A
2170 HREF="actions-file.html#SESSION-COOKIES-ONLY"
2171 >session-cookies-only</A
2172 ></TT
2173 > action,
2174     since it would prevent the session cookies from being set. See also 
2175     <TT
2176 CLASS="LITERAL"
2177 ><A
2178 HREF="actions-file.html#FILTER-CONTENT-COOKIES"
2179 >filter-content-cookies</A
2180 ></TT
2181 >.
2182    </P
2183 ></DD
2184 ><DT
2185 >Example usage:</DT
2186 ><DD
2187 ><P
2188 >    <TABLE
2189 BORDER="0"
2190 BGCOLOR="#E0E0E0"
2191 WIDTH="90%"
2192 ><TR
2193 ><TD
2194 ><PRE
2195 CLASS="SCREEN"
2196 >+crunch-incoming-cookies</PRE
2197 ></TD
2198 ></TR
2199 ></TABLE
2200 >
2201    </P
2202 ></DD
2203 ></DL
2204 ></DIV
2205 ></DIV
2206 ><DIV
2207 CLASS="SECT3"
2208 ><H4
2209 CLASS="SECT3"
2210 ><A
2211 NAME="CRUNCH-SERVER-HEADER"
2212 ></A
2213 >8.5.7. crunch-server-header</H4
2214 ><P
2215 ></P
2216 ><DIV
2217 CLASS="VARIABLELIST"
2218 ><DL
2219 ><DT
2220 >Typical use:</DT
2221 ><DD
2222 ><P
2223 >Remove a server header <SPAN
2224 CLASS="APPLICATION"
2225 >Privoxy</SPAN
2226 > has no dedicated action for.</P
2227 ></DD
2228 ><DT
2229 >Effect:</DT
2230 ><DD
2231 ><P
2232 >    Deletes every header sent by the server that contains the string the user supplied as parameter.
2233    </P
2234 ></DD
2235 ><DT
2236 >Type:</DT
2237 ><DD
2238 ><P
2239 >Parameterized.</P
2240 ></DD
2241 ><DT
2242 >Parameter:</DT
2243 ><DD
2244 ><P
2245 >    Any string.
2246    </P
2247 ></DD
2248 ><DT
2249 >Notes:</DT
2250 ><DD
2251 ><P
2252 >    This action allows you to block server headers for which no dedicated
2253     <SPAN
2254 CLASS="APPLICATION"
2255 >Privoxy</SPAN
2256 > action exists. <SPAN
2257 CLASS="APPLICATION"
2258 >Privoxy</SPAN
2259 >
2260     will remove every server header that contains the string you supplied as parameter.
2261    </P
2262 ><P
2263 >    Regular expressions are <SPAN
2264 CLASS="emphasis"
2265 ><I
2266 CLASS="EMPHASIS"
2267 >not supported</I
2268 ></SPAN
2269 > and you can't
2270     use this action to block different headers in the same request, unless
2271     they contain the same string.
2272    </P
2273 ><P
2274 >    <TT
2275 CLASS="LITERAL"
2276 >crunch-server-header</TT
2277 > is only meant for quick tests.
2278     If you have to block several different headers, or only want to modify
2279     parts of them, you should enable
2280     <TT
2281 CLASS="LITERAL"
2282 ><A
2283 HREF="filter-file.html#FILTER-SERVER-HEADERS"
2284 >filter-server-headers</A
2285 ></TT
2286 >
2287     and create your own filter.
2288    </P
2289 ><DIV
2290 CLASS="WARNING"
2291 ><P
2292 ></P
2293 ><TABLE
2294 CLASS="WARNING"
2295 BORDER="1"
2296 WIDTH="90%"
2297 ><TR
2298 ><TD
2299 ALIGN="CENTER"
2300 ><B
2301 >Warning</B
2302 ></TD
2303 ></TR
2304 ><TR
2305 ><TD
2306 ALIGN="LEFT"
2307 ><P
2308 >     Don't block any header without understanding the consequences.
2309      </P
2310 ></TD
2311 ></TR
2312 ></TABLE
2313 ></DIV
2314 ></DD
2315 ><DT
2316 >Example usage (section):</DT
2317 ><DD
2318 ><P
2319 >     <TABLE
2320 BORDER="0"
2321 BGCOLOR="#E0E0E0"
2322 WIDTH="90%"
2323 ><TR
2324 ><TD
2325 ><PRE
2326 CLASS="SCREEN"
2327 ># Crunch server headers that try to prevent caching
2328 {+crunch-server-header {no-cache}}
2329 /   </PRE
2330 ></TD
2331 ></TR
2332 ></TABLE
2333 >
2334    </P
2335 ></DD
2336 ></DL
2337 ></DIV
2338 ></DIV
2339 ><DIV
2340 CLASS="SECT3"
2341 ><H4
2342 CLASS="SECT3"
2343 ><A
2344 NAME="CRUNCH-OUTGOING-COOKIES"
2345 ></A
2346 >8.5.8. crunch-outgoing-cookies</H4
2347 ><P
2348 ></P
2349 ><DIV
2350 CLASS="VARIABLELIST"
2351 ><DL
2352 ><DT
2353 >Typical use:</DT
2354 ><DD
2355 ><P
2356 >    Prevent the web server from reading any cookies from your system
2357    </P
2358 ></DD
2359 ><DT
2360 >Effect:</DT
2361 ><DD
2362 ><P
2363 >    Deletes any <SPAN
2364 CLASS="QUOTE"
2365 >"Cookie:"</SPAN
2366 > HTTP headers from client requests.
2367    </P
2368 ></DD
2369 ><DT
2370 >Type:</DT
2371 ><DD
2372 ><P
2373 >Boolean.</P
2374 ></DD
2375 ><DT
2376 >Parameter:</DT
2377 ><DD
2378 ><P
2379 >    N/A
2380    </P
2381 ></DD
2382 ><DT
2383 >Notes:</DT
2384 ><DD
2385 ><P
2386 >    This action is only concerned with <SPAN
2387 CLASS="emphasis"
2388 ><I
2389 CLASS="EMPHASIS"
2390 >outgoing</I
2391 ></SPAN
2392 > cookies. For
2393     <SPAN
2394 CLASS="emphasis"
2395 ><I
2396 CLASS="EMPHASIS"
2397 >incoming</I
2398 ></SPAN
2399 > cookies, use
2400     <TT
2401 CLASS="LITERAL"
2402 ><A
2403 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
2404 >crunch-incoming-cookies</A
2405 ></TT
2406 >.
2407     Use <SPAN
2408 CLASS="emphasis"
2409 ><I
2410 CLASS="EMPHASIS"
2411 >both</I
2412 ></SPAN
2413 > to disable cookies completely.
2414    </P
2415 ><P
2416 >    It makes <SPAN
2417 CLASS="emphasis"
2418 ><I
2419 CLASS="EMPHASIS"
2420 >no sense at all</I
2421 ></SPAN
2422 > to use this action in conjunction
2423     with the <TT
2424 CLASS="LITERAL"
2425 ><A
2426 HREF="actions-file.html#SESSION-COOKIES-ONLY"
2427 >session-cookies-only</A
2428 ></TT
2429 > action,
2430     since it would prevent the session cookies from being read.
2431    </P
2432 ></DD
2433 ><DT
2434 >Example usage:</DT
2435 ><DD
2436 ><P
2437 >    <TABLE
2438 BORDER="0"
2439 BGCOLOR="#E0E0E0"
2440 WIDTH="90%"
2441 ><TR
2442 ><TD
2443 ><PRE
2444 CLASS="SCREEN"
2445 >+crunch-outgoing-cookies</PRE
2446 ></TD
2447 ></TR
2448 ></TABLE
2449 >
2450    </P
2451 ></DD
2452 ></DL
2453 ></DIV
2454 ></DIV
2455 ><DIV
2456 CLASS="SECT3"
2457 ><H4
2458 CLASS="SECT3"
2459 ><A
2460 NAME="DEANIMATE-GIFS"
2461 ></A
2462 >8.5.9. deanimate-gifs</H4
2463 ><P
2464 ></P
2465 ><DIV
2466 CLASS="VARIABLELIST"
2467 ><DL
2468 ><DT
2469 >Typical use:</DT
2470 ><DD
2471 ><P
2472 >Stop those annoying, distracting animated GIF images.</P
2473 ></DD
2474 ><DT
2475 >Effect:</DT
2476 ><DD
2477 ><P
2478 >    De-animate GIF animations, i.e. reduce them to their first or last image.
2479    </P
2480 ></DD
2481 ><DT
2482 >Type:</DT
2483 ><DD
2484 ><P
2485 >Parameterized.</P
2486 ></DD
2487 ><DT
2488 >Parameter:</DT
2489 ><DD
2490 ><P
2491 >    <SPAN
2492 CLASS="QUOTE"
2493 >"last"</SPAN
2494 > or <SPAN
2495 CLASS="QUOTE"
2496 >"first"</SPAN
2497 >
2498    </P
2499 ></DD
2500 ><DT
2501 >Notes:</DT
2502 ><DD
2503 ><P
2504 >    This will also shrink the images considerably (in bytes, not pixels!). If
2505     the option <SPAN
2506 CLASS="QUOTE"
2507 >"first"</SPAN
2508 > is given, the first frame of the animation
2509     is used as the replacement. If <SPAN
2510 CLASS="QUOTE"
2511 >"last"</SPAN
2512 > is given, the last
2513     frame of the animation is used instead, which probably makes more sense for
2514     most banner animations, but also has the risk of not showing the entire
2515     last frame (if it is only a delta to an earlier frame).
2516    </P
2517 ><P
2518 >    You can safely use this action with patterns that will also match non-GIF
2519     objects, because no attempt will be made at anything that doesn't look like
2520     a GIF.
2521    </P
2522 ></DD
2523 ><DT
2524 >Example usage:</DT
2525 ><DD
2526 ><P
2527 >      <TABLE
2528 BORDER="0"
2529 BGCOLOR="#E0E0E0"
2530 WIDTH="90%"
2531 ><TR
2532 ><TD
2533 ><PRE
2534 CLASS="SCREEN"
2535 >+deanimate-gifs{last}</PRE
2536 ></TD
2537 ></TR
2538 ></TABLE
2539 >
2540     </P
2541 ></DD
2542 ></DL
2543 ></DIV
2544 ></DIV
2545 ><DIV
2546 CLASS="SECT3"
2547 ><H4
2548 CLASS="SECT3"
2549 ><A
2550 NAME="DOWNGRADE-HTTP-VERSION"
2551 ></A
2552 >8.5.10. downgrade-http-version</H4
2553 ><P
2554 ></P
2555 ><DIV
2556 CLASS="VARIABLELIST"
2557 ><DL
2558 ><DT
2559 >Typical use:</DT
2560 ><DD
2561 ><P
2562 >Work around (very rare) problems with HTTP/1.1</P
2563 ></DD
2564 ><DT
2565 >Effect:</DT
2566 ><DD
2567 ><P
2568 >    Downgrades HTTP/1.1 client requests and server replies to HTTP/1.0.
2569    </P
2570 ></DD
2571 ><DT
2572 >Type:</DT
2573 ><DD
2574 ><P
2575 >Boolean.</P
2576 ></DD
2577 ><DT
2578 >Parameter:</DT
2579 ><DD
2580 ><P
2581 >    N/A
2582    </P
2583 ></DD
2584 ><DT
2585 >Notes:</DT
2586 ><DD
2587 ><P
2588 >    This is a left-over from the time when <SPAN
2589 CLASS="APPLICATION"
2590 >Privoxy</SPAN
2591 >
2592     didn't support important HTTP/1.1 features well. It is left here for the
2593     unlikely case that you experience HTTP/1.1 related problems with some server
2594     out there. Not all (optional) HTTP/1.1 features are supported yet, so there
2595     is a chance you might need this action.
2596    </P
2597 ></DD
2598 ><DT
2599 >Example usage (section):</DT
2600 ><DD
2601 ><P
2602 >     <TABLE
2603 BORDER="0"
2604 BGCOLOR="#E0E0E0"
2605 WIDTH="90%"
2606 ><TR
2607 ><TD
2608 ><PRE
2609 CLASS="SCREEN"
2610 >{+downgrade-http-version}
2611 problem-host.example.com</PRE
2612 ></TD
2613 ></TR
2614 ></TABLE
2615 >
2616     </P
2617 ></DD
2618 ></DL
2619 ></DIV
2620 ></DIV
2621 ><DIV
2622 CLASS="SECT3"
2623 ><H4
2624 CLASS="SECT3"
2625 ><A
2626 NAME="FAST-REDIRECTS"
2627 ></A
2628 >8.5.11. fast-redirects</H4
2629 ><P
2630 ></P
2631 ><DIV
2632 CLASS="VARIABLELIST"
2633 ><DL
2634 ><DT
2635 >Typical use:</DT
2636 ><DD
2637 ><P
2638 >Fool some click-tracking scripts and speed up indirect links.</P
2639 ></DD
2640 ><DT
2641 >Effect:</DT
2642 ><DD
2643 ><P
2644 >    Detects redirection URLs and redirects the browser without contacting
2645     the redirection server first.
2646    </P
2647 ></DD
2648 ><DT
2649 >Type:</DT
2650 ><DD
2651 ><P
2652 >Parameterized.</P
2653 ></DD
2654 ><DT
2655 >Parameter:</DT
2656 ><DD
2657 ><P
2658 ></P
2659 ><UL
2660 ><LI
2661 ><P
2662 >      <SPAN
2663 CLASS="QUOTE"
2664 >"simple-check"</SPAN
2665 > to just search for the string <SPAN
2666 CLASS="QUOTE"
2667 >"http://"</SPAN
2668 >
2669       to detect redirection URLs.
2670      </P
2671 ></LI
2672 ><LI
2673 ><P
2674 >      <SPAN
2675 CLASS="QUOTE"
2676 >"check-decoded-url"</SPAN
2677 > to decode URLs (if necessary) before searching
2678       for redirection URLs.
2679      </P
2680 ></LI
2681 ></UL
2682 ></DD
2683 ><DT
2684 >Notes:</DT
2685 ><DD
2686 ><P
2687 >  
2688     Many sites, like yahoo.com, don't just link to other sites. Instead, they
2689     will link to some script on their own servers, giving the destination as a
2690     parameter, which will then redirect you to the final target. URLs
2691     resulting from this scheme typically look like:
2692     <SPAN
2693 CLASS="QUOTE"
2694 >"http://www.example.org/click-tracker.cgi?target=http%3a//www.example.net/"</SPAN
2695 >.
2696   </P
2697 ><P
2698 >    Sometimes, there are even multiple consecutive redirects encoded in the
2699     URL. These redirections via scripts make your web browsing more traceable,
2700     since the server from which you follow such a link can see where you go
2701     to. Apart from that, valuable bandwidth and time is wasted, while your
2702     browser asks the server for one redirect after the other. Plus, it feeds
2703     the advertisers.
2704    </P
2705 ><P
2706 >    This feature is currently not very smart and is scheduled for improvement.
2707     If it is enabled by default, you will have to create some exceptions to
2708     this action. It can lead to failures in several ways: 
2709    </P
2710 ><P
2711 >    Not every URLs with other URLs as parameters is evil.
2712     Some sites offer a real service that requires this information to work.
2713     For example a validation service needs to know, which document to validate.
2714     <TT
2715 CLASS="LITERAL"
2716 >fast-redirects</TT
2717 > assumes that every URL parameter that
2718     looks like another URL is a redirection target, and will always redirect to
2719     the last one. Most of the time the assumption is correct, but if it isn't,
2720     the user gets redirected anyway.
2721    </P
2722 ><P
2723 >    Another failure occurs if the URL contains other parameters after the URL parameter.
2724     The URL:
2725     <SPAN
2726 CLASS="QUOTE"
2727 >"http://www.example.org/?redirect=http%3a//www.example.net/&#38;foo=bar"</SPAN
2728 >.
2729     contains the redirection URL <SPAN
2730 CLASS="QUOTE"
2731 >"http://www.example.net/"</SPAN
2732 >,
2733     followed by another parameter. <TT
2734 CLASS="LITERAL"
2735 >fast-redirects</TT
2736 > doesn't know that
2737     and will cause a redirect to <SPAN
2738 CLASS="QUOTE"
2739 >"http://www.example.net/&#38;foo=bar"</SPAN
2740 >.
2741     Depending on the target server configuration, the parameter will be silently ignored
2742     or lead to a <SPAN
2743 CLASS="QUOTE"
2744 >"page not found"</SPAN
2745 > error. It is possible to fix these redirected
2746     requests with <TT
2747 CLASS="LITERAL"
2748 ><A
2749 HREF="filter-file.html#FILTER-CLIENT-HEADERS"
2750 >filter-client-headers</A
2751 ></TT
2752 >
2753     but it requires a little effort.
2754    </P
2755 ><P
2756 >    To detect a redirection URL, <TT
2757 CLASS="LITERAL"
2758 >fast-redirects</TT
2759 > only
2760     looks for the string <SPAN
2761 CLASS="QUOTE"
2762 >"http://"</SPAN
2763 >, either in plain text
2764     (invalid but often used) or encoded as <SPAN
2765 CLASS="QUOTE"
2766 >"http%3a//"</SPAN
2767 >.
2768     Some sites use their own URL encoding scheme, encrypt the address
2769     of the target server or replace it with a database id. In theses cases
2770     <TT
2771 CLASS="LITERAL"
2772 >fast-redirects</TT
2773 > is fooled and the request reaches the
2774     redirection server where it probably gets logged.
2775    </P
2776 ></DD
2777 ><DT
2778 >Example usage:</DT
2779 ><DD
2780 ><P
2781 >     <TABLE
2782 BORDER="0"
2783 BGCOLOR="#E0E0E0"
2784 WIDTH="90%"
2785 ><TR
2786 ><TD
2787 ><PRE
2788 CLASS="SCREEN"
2789 >+fast-redirects{simple-check}</PRE
2790 ></TD
2791 ></TR
2792 ></TABLE
2793 >
2794     </P
2795 ><P
2796 >     <TABLE
2797 BORDER="0"
2798 BGCOLOR="#E0E0E0"
2799 WIDTH="90%"
2800 ><TR
2801 ><TD
2802 ><PRE
2803 CLASS="SCREEN"
2804 >+fast-redirects{check-decoded-url}</PRE
2805 ></TD
2806 ></TR
2807 ></TABLE
2808 >
2809     </P
2810 ></DD
2811 ></DL
2812 ></DIV
2813 ></DIV
2814 ><DIV
2815 CLASS="SECT3"
2816 ><H4
2817 CLASS="SECT3"
2818 ><A
2819 NAME="FILTER"
2820 ></A
2821 >8.5.12. filter</H4
2822 ><P
2823 ></P
2824 ><DIV
2825 CLASS="VARIABLELIST"
2826 ><DL
2827 ><DT
2828 >Typical use:</DT
2829 ><DD
2830 ><P
2831 >Get rid of HTML and JavaScript annoyances, banner advertisements (by size), do fun text replacements, etc.</P
2832 ></DD
2833 ><DT
2834 >Effect:</DT
2835 ><DD
2836 ><P
2837 >    All files of text-based type, most notably HTML and JavaScript, to which this
2838     action applies, are filtered on-the-fly through the specified regular expression
2839     based substitutions. (Note: as of version 3.0.3 plain text documents 
2840     are exempted from filtering, because web servers often use the
2841     <TT
2842 CLASS="LITERAL"
2843 >text/plain</TT
2844 > MIME type for all files whose type they
2845     don't know.)
2846    </P
2847 ></DD
2848 ><DT
2849 >Type:</DT
2850 ><DD
2851 ><P
2852 >Parameterized.</P
2853 ></DD
2854 ><DT
2855 >Parameter:</DT
2856 ><DD
2857 ><P
2858 >    The name of a filter, as defined in the <A
2859 HREF="filter-file.html"
2860 >filter file</A
2861 >.
2862     Filters can be defined in one or more  files as defined by the 
2863     <TT
2864 CLASS="LITERAL"
2865 ><A
2866 HREF="config.html#FILTERFILE"
2867 >filterfile</A
2868 ></TT
2869 >
2870     option in the <A
2871 HREF="config.html"
2872 >config file</A
2873 >. 
2874     <TT
2875 CLASS="FILENAME"
2876 >default.filter</TT
2877 > is the collection of filters 
2878     supplied by the developers. Locally defined filters should go 
2879     in their own file, such as <TT
2880 CLASS="FILENAME"
2881 >user.filter</TT
2882 >.
2883    </P
2884 ><P
2885 >     When used in its negative form,
2886      and without parameters, filtering is completely disabled.
2887   </P
2888 ></DD
2889 ><DT
2890 >Notes:</DT
2891 ><DD
2892 ><P
2893 >    For your convenience, there are a number of pre-defined filters available 
2894     in the distribution filter file that you can use. See the examples below for
2895     a list.
2896    </P
2897 ><P
2898 >    Filtering requires buffering the page content, which may appear to
2899     slow down page rendering since nothing is displayed until all content has
2900     passed the filters. (It does not really take longer, but seems that way
2901     since the page is not incrementally displayed.) This effect will be more
2902     noticeable on slower connections.
2903    </P
2904 ><P
2905 >    This is very powerful feature, and <SPAN
2906 CLASS="QUOTE"
2907 >"rolling your own"</SPAN
2908 >
2909     filters requires a knowledge of regular expressions and HTML.
2910    </P
2911 ><P
2912 >    The amount of data that can be filtered is limited to the 
2913     <TT
2914 CLASS="LITERAL"
2915 ><A
2916 HREF="config.html#BUFFER-LIMIT"
2917 >buffer-limit</A
2918 ></TT
2919 >
2920     option in the main <A
2921 HREF="config.html"
2922 >config file</A
2923 >. The 
2924     default is 4096 KB (4 Megs). Once this limit is exceeded, the buffered
2925     data, and all pending data, is passed through unfiltered. 
2926    </P
2927 ><P
2928 >    Inadequate MIME types, such as zipped files, are not filtered at all.
2929     (Again, only text-based types except plain text). Encrypted SSL data
2930     (from HTTPS servers) cannot be filtered either, since this would violate
2931     the integrity of the secure transaction. In some situations it might
2932     be necessary to protect certain text, like source code, from filtering
2933     by defining appropriate <TT
2934 CLASS="LITERAL"
2935 >-filter</TT
2936 > sections.
2937    </P
2938 ><P
2939 >    At this time, <SPAN
2940 CLASS="APPLICATION"
2941 >Privoxy</SPAN
2942 > cannot (yet!) uncompress compressed
2943     documents. If you want filtering to work on all documents, even those that
2944     would normally be sent compressed, use the
2945     <TT
2946 CLASS="LITERAL"
2947 ><A
2948 HREF="actions-file.html#PREVENT-COMPRESSION"
2949 >prevent-compression</A
2950 ></TT
2951 >
2952     action in conjunction with <TT
2953 CLASS="LITERAL"
2954 >filter</TT
2955 >.
2956    </P
2957 ><P
2958 >    Filtering can achieve some of the same effects as the 
2959     <TT
2960 CLASS="LITERAL"
2961 ><A
2962 HREF="actions-file.html#BLOCK"
2963 >block</A
2964 ></TT
2965 >
2966     action, i.e. it can be used to block ads and banners. But the mechanism 
2967     works quite differently. One effective use, is to block ad banners 
2968     based on their size (see below), since many of these seem to be somewhat 
2969     standardized.
2970    </P
2971 ><P
2972 >    <A
2973 HREF="contact.html"
2974 >Feedback</A
2975 > with suggestions for new or
2976     improved filters is particularly welcome!
2977    </P
2978 ><P
2979 >    The below list has only the names and a one-line description of each
2980     predefined filter. There are <A
2981 HREF="filter-file.html#PREDEFINED-FILTERS"
2982 >more
2983     verbose explanations</A
2984 > of what these filters do in the <A
2985 HREF="filter-file.html"
2986 >filter file chapter</A
2987 >.
2988    </P
2989 ></DD
2990 ><DT
2991 >Example usage (with filters from the distribution <TT
2992 CLASS="FILENAME"
2993 >default.filter</TT
2994 > file).
2995   See <A
2996 HREF="filter-file.html#PREDEFINED-FILTERS"
2997 >the Predefined Filters section</A
2998 > for 
2999   more explanation on each:</DT
3000 ><DD
3001 ><P
3002 >    <A
3003 NAME="FILTER-JS-ANNOYANCES"
3004 ></A
3005 >
3006     <TABLE
3007 BORDER="0"
3008 BGCOLOR="#E0E0E0"
3009 WIDTH="90%"
3010 ><TR
3011 ><TD
3012 ><PRE
3013 CLASS="SCREEN"
3014 >+filter{js-annoyances}       # Get rid of particularly annoying JavaScript abuse</PRE
3015 ></TD
3016 ></TR
3017 ></TABLE
3018 >
3019    </P
3020 ><P
3021 >    <A
3022 NAME="FILTER-JS-EVENTS"
3023 ></A
3024 >
3025     <TABLE
3026 BORDER="0"
3027 BGCOLOR="#E0E0E0"
3028 WIDTH="90%"
3029 ><TR
3030 ><TD
3031 ><PRE
3032 CLASS="SCREEN"
3033 >+filter{js-events}           # Kill all JS event bindings (Radically destructive! Only for extra nasty sites)</PRE
3034 ></TD
3035 ></TR
3036 ></TABLE
3037 >
3038    </P
3039 ><P
3040 >    <A
3041 NAME="FILTER-HTML-ANNOYANCES"
3042 ></A
3043 >
3044     <TABLE
3045 BORDER="0"
3046 BGCOLOR="#E0E0E0"
3047 WIDTH="90%"
3048 ><TR
3049 ><TD
3050 ><PRE
3051 CLASS="SCREEN"
3052 >+filter{html-annoyances}     # Get rid of particularly annoying HTML abuse</PRE
3053 ></TD
3054 ></TR
3055 ></TABLE
3056 >
3057    </P
3058 ><P
3059 >    <A
3060 NAME="FILTER-CONTENT-COOKIES"
3061 ></A
3062 >
3063     <TABLE
3064 BORDER="0"
3065 BGCOLOR="#E0E0E0"
3066 WIDTH="90%"
3067 ><TR
3068 ><TD
3069 ><PRE
3070 CLASS="SCREEN"
3071 >+filter{content-cookies}     # Kill cookies that come in the HTML or JS content</PRE
3072 ></TD
3073 ></TR
3074 ></TABLE
3075 >
3076    </P
3077 ><P
3078 >    <A
3079 NAME="FILTER-REFRESH-TAGS"
3080 ></A
3081 >
3082     <TABLE
3083 BORDER="0"
3084 BGCOLOR="#E0E0E0"
3085 WIDTH="90%"
3086 ><TR
3087 ><TD
3088 ><PRE
3089 CLASS="SCREEN"
3090 >+filter{refresh-tags}        # Kill automatic refresh tags (for dial-on-demand setups)</PRE
3091 ></TD
3092 ></TR
3093 ></TABLE
3094 >
3095    </P
3096 ><P
3097 >    <A
3098 NAME="FILTER-UNSOLICITED-POPUPS"
3099 ></A
3100 >
3101     <TABLE
3102 BORDER="0"
3103 BGCOLOR="#E0E0E0"
3104 WIDTH="90%"
3105 ><TR
3106 ><TD
3107 ><PRE
3108 CLASS="SCREEN"
3109 >+filter{unsolicited-popups}  # Disable only unsolicited pop-up windows</PRE
3110 ></TD
3111 ></TR
3112 ></TABLE
3113 >
3114    </P
3115 ><P
3116 >    <A
3117 NAME="FILTER-ALL-POPUPS"
3118 ></A
3119 >
3120     <TABLE
3121 BORDER="0"
3122 BGCOLOR="#E0E0E0"
3123 WIDTH="90%"
3124 ><TR
3125 ><TD
3126 ><PRE
3127 CLASS="SCREEN"
3128 >+filter{all-popups}          # Kill all popups in JavaScript and HTML</PRE
3129 ></TD
3130 ></TR
3131 ></TABLE
3132 >
3133    </P
3134 ><P
3135 >    <A
3136 NAME="FILTER-IMG-REORDER"
3137 ></A
3138 >
3139     <TABLE
3140 BORDER="0"
3141 BGCOLOR="#E0E0E0"
3142 WIDTH="90%"
3143 ><TR
3144 ><TD
3145 ><PRE
3146 CLASS="SCREEN"
3147 >+filter{img-reorder}         # Reorder attributes in &#60;img&#62; tags to make the banners-by-* filters more effective</PRE
3148 ></TD
3149 ></TR
3150 ></TABLE
3151 >
3152    </P
3153 ><P
3154 >    <A
3155 NAME="FILTER-BANNERS-BY-SIZE"
3156 ></A
3157 >
3158     <TABLE
3159 BORDER="0"
3160 BGCOLOR="#E0E0E0"
3161 WIDTH="90%"
3162 ><TR
3163 ><TD
3164 ><PRE
3165 CLASS="SCREEN"
3166 >+filter{banners-by-size}     # Kill banners by size</PRE
3167 ></TD
3168 ></TR
3169 ></TABLE
3170 >
3171    </P
3172 ><P
3173 >    <A
3174 NAME="FILTER-BANNERS-BY-LINK"
3175 ></A
3176 >
3177     <TABLE
3178 BORDER="0"
3179 BGCOLOR="#E0E0E0"
3180 WIDTH="90%"
3181 ><TR
3182 ><TD
3183 ><PRE
3184 CLASS="SCREEN"
3185 >+filter{banners-by-link}     # Kill banners by their links to known clicktrackers</PRE
3186 ></TD
3187 ></TR
3188 ></TABLE
3189 >
3190    </P
3191 ><P
3192 >    <A
3193 NAME="FILTER-WEBBUGS"
3194 ></A
3195 >
3196     <TABLE
3197 BORDER="0"
3198 BGCOLOR="#E0E0E0"
3199 WIDTH="90%"
3200 ><TR
3201 ><TD
3202 ><PRE
3203 CLASS="SCREEN"
3204 >+filter{webbugs}             # Squish WebBugs (1x1 invisible GIFs used for user tracking)</PRE
3205 ></TD
3206 ></TR
3207 ></TABLE
3208 >
3209    </P
3210 ><P
3211 >    <A
3212 NAME="FILTER-TINY-TEXTFORMS"
3213 ></A
3214 >
3215     <TABLE
3216 BORDER="0"
3217 BGCOLOR="#E0E0E0"
3218 WIDTH="90%"
3219 ><TR
3220 ><TD
3221 ><PRE
3222 CLASS="SCREEN"
3223 >+filter{tiny-textforms}      # Extend those tiny textareas up to 40x80 and kill the hard wrap</PRE
3224 ></TD
3225 ></TR
3226 ></TABLE
3227 >
3228    </P
3229 ><P
3230 >    <A
3231 NAME="FILTER-JUMPING-WINDOWS"
3232 ></A
3233 >
3234     <TABLE
3235 BORDER="0"
3236 BGCOLOR="#E0E0E0"
3237 WIDTH="90%"
3238 ><TR
3239 ><TD
3240 ><PRE
3241 CLASS="SCREEN"
3242 >+filter{jumping-windows}     # Prevent windows from resizing and moving themselves</PRE
3243 ></TD
3244 ></TR
3245 ></TABLE
3246 >
3247    </P
3248 ><P
3249 >    <A
3250 NAME="FILTER-FRAMESET-BORDERS"
3251 ></A
3252 >
3253     <TABLE
3254 BORDER="0"
3255 BGCOLOR="#E0E0E0"
3256 WIDTH="90%"
3257 ><TR
3258 ><TD
3259 ><PRE
3260 CLASS="SCREEN"
3261 >+filter{frameset-borders}    # Give frames a border and make them resizable</PRE
3262 ></TD
3263 ></TR
3264 ></TABLE
3265 >
3266    </P
3267 ><P
3268 >    <A
3269 NAME="FILTER-DEMORONIZER"
3270 ></A
3271 >
3272     <TABLE
3273 BORDER="0"
3274 BGCOLOR="#E0E0E0"
3275 WIDTH="90%"
3276 ><TR
3277 ><TD
3278 ><PRE
3279 CLASS="SCREEN"
3280 >+filter{demoronizer}         # Fix MS's non-standard use of standard charsets</PRE
3281 ></TD
3282 ></TR
3283 ></TABLE
3284 >
3285    </P
3286 ><P
3287 >    <A
3288 NAME="FILTER-SHOCKWAVE-FLASH"
3289 ></A
3290 >
3291     <TABLE
3292 BORDER="0"
3293 BGCOLOR="#E0E0E0"
3294 WIDTH="90%"
3295 ><TR
3296 ><TD
3297 ><PRE
3298 CLASS="SCREEN"
3299 >+filter{shockwave-flash}     # Kill embedded Shockwave Flash objects</PRE
3300 ></TD
3301 ></TR
3302 ></TABLE
3303 >
3304    </P
3305 ><P
3306 >    <A
3307 NAME="FILTER-QUICKTIME-KIOSKMODE"
3308 ></A
3309 >
3310     <TABLE
3311 BORDER="0"
3312 BGCOLOR="#E0E0E0"
3313 WIDTH="90%"
3314 ><TR
3315 ><TD
3316 ><PRE
3317 CLASS="SCREEN"
3318 >+filter{quicktime-kioskmode} # Make Quicktime movies saveable</PRE
3319 ></TD
3320 ></TR
3321 ></TABLE
3322 >
3323    </P
3324 ><P
3325 >    <A
3326 NAME="FILTER-FUN"
3327 ></A
3328 >
3329     <TABLE
3330 BORDER="0"
3331 BGCOLOR="#E0E0E0"
3332 WIDTH="90%"
3333 ><TR
3334 ><TD
3335 ><PRE
3336 CLASS="SCREEN"
3337 >+filter{fun}                 # Text replacements for subversive browsing fun!</PRE
3338 ></TD
3339 ></TR
3340 ></TABLE
3341 >
3342    </P
3343 ><P
3344 >    <A
3345 NAME="FILTER-CRUDE-PARENTAL"
3346 ></A
3347 >
3348     <TABLE
3349 BORDER="0"
3350 BGCOLOR="#E0E0E0"
3351 WIDTH="90%"
3352 ><TR
3353 ><TD
3354 ><PRE
3355 CLASS="SCREEN"
3356 >+filter{crude-parental}      # Crude parental filtering (demo only)</PRE
3357 ></TD
3358 ></TR
3359 ></TABLE
3360 >
3361    </P
3362 ><P
3363 >    <A
3364 NAME="FILTER-IE-EXPLOITS"
3365 ></A
3366 >
3367     <TABLE
3368 BORDER="0"
3369 BGCOLOR="#E0E0E0"
3370 WIDTH="90%"
3371 ><TR
3372 ><TD
3373 ><PRE
3374 CLASS="SCREEN"
3375 >+filter{ie-exploits}         # Disable some known Internet Explorer bug exploits</PRE
3376 ></TD
3377 ></TR
3378 ></TABLE
3379 >
3380    </P
3381 ></DD
3382 ></DL
3383 ></DIV
3384 ></DIV
3385 ><DIV
3386 CLASS="SECT3"
3387 ><H4
3388 CLASS="SECT3"
3389 ><A
3390 NAME="FORCE-TEXT-MODE"
3391 ></A
3392 >8.5.13. force-text-mode</H4
3393 ><P
3394 ></P
3395 ><DIV
3396 CLASS="VARIABLELIST"
3397 ><DL
3398 ><DT
3399 >Typical use:</DT
3400 ><DD
3401 ><P
3402 >Force <SPAN
3403 CLASS="APPLICATION"
3404 >Privoxy</SPAN
3405 > to treat a document as if it was in some kind of <SPAN
3406 CLASS="emphasis"
3407 ><I
3408 CLASS="EMPHASIS"
3409 >text</I
3410 ></SPAN
3411 > format.   </P
3412 ></DD
3413 ><DT
3414 >Effect:</DT
3415 ><DD
3416 ><P
3417 >    Declares a document as text, even if the <SPAN
3418 CLASS="QUOTE"
3419 >"Content-Type:"</SPAN
3420 > isn't detected as such.
3421    </P
3422 ></DD
3423 ><DT
3424 >Type:</DT
3425 ><DD
3426 ><P
3427 >Boolean.</P
3428 ></DD
3429 ><DT
3430 >Parameter:</DT
3431 ><DD
3432 ><P
3433 >    N/A
3434    </P
3435 ></DD
3436 ><DT
3437 >Notes:</DT
3438 ><DD
3439 ><P
3440 >    As explained <TT
3441 CLASS="LITERAL"
3442 ><A
3443 HREF="actions-file.html#FILTER"
3444 >above</A
3445 ></TT
3446 >,
3447     <SPAN
3448 CLASS="APPLICATION"
3449 >Privoxy</SPAN
3450 > tries to only filter files that are
3451     in some kind of text format. The same restrictions apply to
3452     <TT
3453 CLASS="LITERAL"
3454 ><A
3455 HREF="actions-file.html#CONTENT-TYPE-OVERWRITE"
3456 >content-type-overwrite</A
3457 ></TT
3458 >.
3459     <TT
3460 CLASS="LITERAL"
3461 >force-text-mode</TT
3462 > declares a document as text,
3463     without looking at the <SPAN
3464 CLASS="QUOTE"
3465 >"Content-Type:"</SPAN
3466 > first.
3467    </P
3468 ><DIV
3469 CLASS="WARNING"
3470 ><P
3471 ></P
3472 ><TABLE
3473 CLASS="WARNING"
3474 BORDER="1"
3475 WIDTH="90%"
3476 ><TR
3477 ><TD
3478 ALIGN="CENTER"
3479 ><B
3480 >Warning</B
3481 ></TD
3482 ></TR
3483 ><TR
3484 ><TD
3485 ALIGN="LEFT"
3486 ><P
3487 >     Think twice before activating this action. Filtering binary data
3488      with regular expressions can cause file damage.
3489     </P
3490 ></TD
3491 ></TR
3492 ></TABLE
3493 ></DIV
3494 ></DD
3495 ><DT
3496 >Example usage:</DT
3497 ><DD
3498 ><P
3499 >     <TABLE
3500 BORDER="0"
3501 BGCOLOR="#E0E0E0"
3502 WIDTH="90%"
3503 ><TR
3504 ><TD
3505 ><PRE
3506 CLASS="SCREEN"
3507 >+force-text-mode
3508      </PRE
3509 ></TD
3510 ></TR
3511 ></TABLE
3512 >
3513    </P
3514 ></DD
3515 ></DL
3516 ></DIV
3517 ></DIV
3518 ><DIV
3519 CLASS="SECT3"
3520 ><H4
3521 CLASS="SECT3"
3522 ><A
3523 NAME="HANDLE-AS-EMPTY-DOCUMENT"
3524 ></A
3525 >8.5.14. handle-as-empty-document</H4
3526 ><P
3527 ></P
3528 ><DIV
3529 CLASS="VARIABLELIST"
3530 ><DL
3531 ><DT
3532 >Typical use:</DT
3533 ><DD
3534 ><P
3535 >Mark URLs that should be replaced by empty documents <SPAN
3536 CLASS="emphasis"
3537 ><I
3538 CLASS="EMPHASIS"
3539 >if they get blocked</I
3540 ></SPAN
3541 ></P
3542 ></DD
3543 ><DT
3544 >Effect:</DT
3545 ><DD
3546 ><P
3547 >    This action alone doesn't do anything noticeable. It just marks URLs.
3548     If the <TT
3549 CLASS="LITERAL"
3550 ><A
3551 HREF="actions-file.html#BLOCK"
3552 >block</A
3553 ></TT
3554 > action <SPAN
3555 CLASS="emphasis"
3556 ><I
3557 CLASS="EMPHASIS"
3558 >also applies</I
3559 ></SPAN
3560 >,
3561     the presence or absence of this mark decides whether an HTML <SPAN
3562 CLASS="QUOTE"
3563 >"blocked"</SPAN
3564 >
3565     page, or an empty document will be sent to the client as a substitute for the blocked content.
3566     The <SPAN
3567 CLASS="emphasis"
3568 ><I
3569 CLASS="EMPHASIS"
3570 >empty</I
3571 ></SPAN
3572 > document isn't literally empty, but actually contains a single space.
3573    </P
3574 ></DD
3575 ><DT
3576 >Type:</DT
3577 ><DD
3578 ><P
3579 >Boolean.</P
3580 ></DD
3581 ><DT
3582 >Parameter:</DT
3583 ><DD
3584 ><P
3585 >    N/A
3586    </P
3587 ></DD
3588 ><DT
3589 >Notes:</DT
3590 ><DD
3591 ><P
3592 >    Some browsers complain about syntax errors if JavaScript documents
3593     are blocked with <SPAN
3594 CLASS="APPLICATION"
3595 >Privoxy's</SPAN
3596 >
3597     default HTML page; this option can be used to silence them.
3598    </P
3599 ><P
3600 >    The content type for the empty document can be specified with
3601     <TT
3602 CLASS="LITERAL"
3603 ><A
3604 HREF="actions-file.html#CONTENT-TYPE-OVERWRITE"
3605 >content-type-overwrite{}</A
3606 ></TT
3607 >,
3608     but usually this isn't necessary.
3609    </P
3610 ></DD
3611 ><DT
3612 >Example usage:</DT
3613 ><DD
3614 ><P
3615 >     <TABLE
3616 BORDER="0"
3617 BGCOLOR="#E0E0E0"
3618 WIDTH="90%"
3619 ><TR
3620 ><TD
3621 ><PRE
3622 CLASS="SCREEN"
3623 ># Block all documents on example.org that end with ".js",
3624 # but send an empty document instead of the usual HTML message. 
3625 {+block +handle-as-empty-document}
3626 example.org/.*\.js$
3627      </PRE
3628 ></TD
3629 ></TR
3630 ></TABLE
3631 >
3632    </P
3633 ></DD
3634 ></DL
3635 ></DIV
3636 ></DIV
3637 ><DIV
3638 CLASS="SECT3"
3639 ><H4
3640 CLASS="SECT3"
3641 ><A
3642 NAME="HANDLE-AS-IMAGE"
3643 ></A
3644 >8.5.15. handle-as-image</H4
3645 ><P
3646 ></P
3647 ><DIV
3648 CLASS="VARIABLELIST"
3649 ><DL
3650 ><DT
3651 >Typical use:</DT
3652 ><DD
3653 ><P
3654 >Mark URLs as belonging to images (so they'll be replaced by imagee <SPAN
3655 CLASS="emphasis"
3656 ><I
3657 CLASS="EMPHASIS"
3658 >if they get blocked</I
3659 ></SPAN
3660 >)</P
3661 ></DD
3662 ><DT
3663 >Effect:</DT
3664 ><DD
3665 ><P
3666 >    This action alone doesn't do anything noticeable. It just marks URLs as images.
3667     If the <TT
3668 CLASS="LITERAL"
3669 ><A
3670 HREF="actions-file.html#BLOCK"
3671 >block</A
3672 ></TT
3673 > action <SPAN
3674 CLASS="emphasis"
3675 ><I
3676 CLASS="EMPHASIS"
3677 >also applies</I
3678 ></SPAN
3679 >,
3680     the presence or absence of this mark decides whether an HTML <SPAN
3681 CLASS="QUOTE"
3682 >"blocked"</SPAN
3683 >
3684     page, or a replacement image (as determined by the <TT
3685 CLASS="LITERAL"
3686 ><A
3687 HREF="actions-file.html#SET-IMAGE-BLOCKER"
3688 >set-image-blocker</A
3689 ></TT
3690 > action) will be sent to the
3691     client as a substitute for the blocked content.
3692    </P
3693 ></DD
3694 ><DT
3695 >Type:</DT
3696 ><DD
3697 ><P
3698 >Boolean.</P
3699 ></DD
3700 ><DT
3701 >Parameter:</DT
3702 ><DD
3703 ><P
3704 >    N/A
3705    </P
3706 ></DD
3707 ><DT
3708 >Notes:</DT
3709 ><DD
3710 ><P
3711 >    The below generic example section is actually part of <TT
3712 CLASS="FILENAME"
3713 >default.action</TT
3714 >.
3715     It marks all URLs with well-known image file name extensions as images and should
3716     be left intact. 
3717    </P
3718 ><P
3719 >    Users will probably only want to use the handle-as-image action in conjunction with
3720     <TT
3721 CLASS="LITERAL"
3722 ><A
3723 HREF="actions-file.html#BLOCK"
3724 >block</A
3725 ></TT
3726 >, to block sources of banners, whose URLs don't
3727     reflect the file type, like in the second example section.
3728    </P
3729 ><P
3730 >    Note that you cannot treat HTML pages as images in most cases. For instance, (in-line) ad
3731     frames require an HTML page to be sent, or they won't display properly.
3732     Forcing <TT
3733 CLASS="LITERAL"
3734 >handle-as-image</TT
3735 > in this situation will not replace the
3736     ad frame with an image, but lead to error messages.
3737    </P
3738 ></DD
3739 ><DT
3740 >Example usage (sections):</DT
3741 ><DD
3742 ><P
3743 >     <TABLE
3744 BORDER="0"
3745 BGCOLOR="#E0E0E0"
3746 WIDTH="90%"
3747 ><TR
3748 ><TD
3749 ><PRE
3750 CLASS="SCREEN"
3751 ># Generic image extensions:
3752 #
3753 {+handle-as-image}
3754 /.*\.(gif|jpg|jpeg|png|bmp|ico)$
3755
3756 # These don't look like images, but they're banners and should be
3757 # blocked as images:
3758 #
3759 {+block +handle-as-image}
3760 some.nasty-banner-server.com/junk.cgi?output=trash
3761
3762 # Banner source! Who cares if they also have non-image content?
3763 ad.doubleclick.net </PRE
3764 ></TD
3765 ></TR
3766 ></TABLE
3767 >
3768    </P
3769 ></DD
3770 ></DL
3771 ></DIV
3772 ></DIV
3773 ><DIV
3774 CLASS="SECT3"
3775 ><H4
3776 CLASS="SECT3"
3777 ><A
3778 NAME="HIDE-ACCEPT-LANGUAGE"
3779 ></A
3780 >8.5.16. hide-accept-language</H4
3781 ><P
3782 ></P
3783 ><DIV
3784 CLASS="VARIABLELIST"
3785 ><DL
3786 ><DT
3787 >Typical use:</DT
3788 ><DD
3789 ><P
3790 >Pretend to use different language settings.</P
3791 ></DD
3792 ><DT
3793 >Effect:</DT
3794 ><DD
3795 ><P
3796 >    Deletes or replaces the <SPAN
3797 CLASS="QUOTE"
3798 >"Accept-Language:"</SPAN
3799 > HTTP header in client requests.
3800    </P
3801 ></DD
3802 ><DT
3803 >Type:</DT
3804 ><DD
3805 ><P
3806 >Parameterized.</P
3807 ></DD
3808 ><DT
3809 >Parameter:</DT
3810 ><DD
3811 ><P
3812 >    Keyword: <SPAN
3813 CLASS="QUOTE"
3814 >"block"</SPAN
3815 >, or any user defined value.
3816    </P
3817 ></DD
3818 ><DT
3819 >Notes:</DT
3820 ><DD
3821 ><P
3822 >    Faking the browser's language settings can be useful to make a
3823     foreign User-Agent set with
3824     <TT
3825 CLASS="LITERAL"
3826 ><A
3827 HREF="actions-file.html#HIDE-USER-AGENT"
3828 >hide-user-agent</A
3829 ></TT
3830 >
3831     more believable.
3832    </P
3833 ><P
3834 >    However some sites with content in different languages check the
3835     <SPAN
3836 CLASS="QUOTE"
3837 >"Accept-Language:"</SPAN
3838 > to decide which one to take by default.
3839     Sometimes it isn't possible to later switch to another language without
3840     changing the <SPAN
3841 CLASS="QUOTE"
3842 >"Accept-Language:"</SPAN
3843 > header first.
3844    </P
3845 ><P
3846 >    Therefore it's a good idea to either only change the
3847     <SPAN
3848 CLASS="QUOTE"
3849 >"Accept-Language:"</SPAN
3850 > header to languages you understand,
3851     or to languages that aren't wide spread.
3852    </P
3853 ><P
3854 >    Before setting the <SPAN
3855 CLASS="QUOTE"
3856 >"Accept-Language:"</SPAN
3857 > header
3858     to a rare language, you should consider that it helps to
3859     make your requests unique and thus easier to trace.
3860     If you don't plan to change this header frequently,
3861     you should stick to a common language. 
3862    </P
3863 ></DD
3864 ><DT
3865 >Example usage (section):</DT
3866 ><DD
3867 ><P
3868 >     <TABLE
3869 BORDER="0"
3870 BGCOLOR="#E0E0E0"
3871 WIDTH="90%"
3872 ><TR
3873 ><TD
3874 ><PRE
3875 CLASS="SCREEN"
3876 ># Pretend to use Canadian language settings.
3877 {+hide-accept-language{en-ca} \
3878 +hide-user-agent{Mozilla/5.0 (X11; U; OpenBSD i386; en-CA; rv:1.8.0.4) Gecko/20060628 Firefox/1.5.0.4} \
3879 }
3880 /   </PRE
3881 ></TD
3882 ></TR
3883 ></TABLE
3884 >
3885    </P
3886 ></DD
3887 ></DL
3888 ></DIV
3889 ></DIV
3890 ><DIV
3891 CLASS="SECT3"
3892 ><H4
3893 CLASS="SECT3"
3894 ><A
3895 NAME="HIDE-CONTENT-DISPOSITION"
3896 ></A
3897 >8.5.17. hide-content-disposition</H4
3898 ><P
3899 ></P
3900 ><DIV
3901 CLASS="VARIABLELIST"
3902 ><DL
3903 ><DT
3904 >Typical use:</DT
3905 ><DD
3906 ><P
3907 >Prevent download menus for content you prefer to view inside the browser.</P
3908 ></DD
3909 ><DT
3910 >Effect:</DT
3911 ><DD
3912 ><P
3913 >    Deletes or replaces the <SPAN
3914 CLASS="QUOTE"
3915 >"Content-Disposition:"</SPAN
3916 > HTTP header set by some servers.
3917    </P
3918 ></DD
3919 ><DT
3920 >Type:</DT
3921 ><DD
3922 ><P
3923 >Parameterized.</P
3924 ></DD
3925 ><DT
3926 >Parameter:</DT
3927 ><DD
3928 ><P
3929 >    Keyword: <SPAN
3930 CLASS="QUOTE"
3931 >"block"</SPAN
3932 >, or any user defined value.
3933    </P
3934 ></DD
3935 ><DT
3936 >Notes:</DT
3937 ><DD
3938 ><P
3939 >    Some servers set the <SPAN
3940 CLASS="QUOTE"
3941 >"Content-Disposition:"</SPAN
3942 > HTTP header for
3943     documents they assume you want to save locally before viewing them.
3944     The <SPAN
3945 CLASS="QUOTE"
3946 >"Content-Disposition:"</SPAN
3947 > header contains the file name
3948     the browser is supposed to use by default.
3949    </P
3950 ><P
3951 >    In most browsers that understand this header, it makes it impossible to
3952     <SPAN
3953 CLASS="emphasis"
3954 ><I
3955 CLASS="EMPHASIS"
3956 >just view</I
3957 ></SPAN
3958 > the document, without downloading it first,
3959     even if it's just a simple text file or an image.
3960    </P
3961 ><P
3962 >    Removing the <SPAN
3963 CLASS="QUOTE"
3964 >"Content-Disposition:"</SPAN
3965 > header helps
3966     to prevent this annoyance, but some browsers additionally check the
3967     <SPAN
3968 CLASS="QUOTE"
3969 >"Content-Type:"</SPAN
3970 > header, before they decide if they can
3971     display a document without saving it first. In these cases, you have
3972     to change this header as well, before the browser stops displaying
3973     download menus.
3974    </P
3975 ><P
3976 >    It is also possible to change the server's file name suggestion
3977     to another one, but in most cases it isn't worth the time to set
3978     it up.
3979    </P
3980 ></DD
3981 ><DT
3982 >Example usage:</DT
3983 ><DD
3984 ><P
3985 >     <TABLE
3986 BORDER="0"
3987 BGCOLOR="#E0E0E0"
3988 WIDTH="90%"
3989 ><TR
3990 ><TD
3991 ><PRE
3992 CLASS="SCREEN"
3993 ># Disarm the download link in Sourceforge's patch tracker
3994 {-filter\
3995 +content-type-overwrite {text/plain}\
3996 +hide-content-disposition {block} }
3997 .sourceforge.net/tracker/download.php</PRE
3998 ></TD
3999 ></TR
4000 ></TABLE
4001 >
4002    </P
4003 ></DD
4004 ></DL
4005 ></DIV
4006 ></DIV
4007 ><DIV
4008 CLASS="SECT3"
4009 ><H4
4010 CLASS="SECT3"
4011 ><A
4012 NAME="HIDE-IF-MODIFIED-SINCE"
4013 ></A
4014 >8.5.18. hide-if-modified-since</H4
4015 ><P
4016 ></P
4017 ><DIV
4018 CLASS="VARIABLELIST"
4019 ><DL
4020 ><DT
4021 >Typical use:</DT
4022 ><DD
4023 ><P
4024 >Prevent yet another way to track the user's steps between sessions.</P
4025 ></DD
4026 ><DT
4027 >Effect:</DT
4028 ><DD
4029 ><P
4030 >    Deletes the <SPAN
4031 CLASS="QUOTE"
4032 >"If-Modified-Since:"</SPAN
4033 > HTTP client header or modifies its value. 
4034    </P
4035 ></DD
4036 ><DT
4037 >Type:</DT
4038 ><DD
4039 ><P
4040 >Parameterized.</P
4041 ></DD
4042 ><DT
4043 >Parameter:</DT
4044 ><DD
4045 ><P
4046 >    Keyword: <SPAN
4047 CLASS="QUOTE"
4048 >"block"</SPAN
4049 >, or a user defined value that specifies a range of hours.
4050    </P
4051 ></DD
4052 ><DT
4053 >Notes:</DT
4054 ><DD
4055 ><P
4056 >    Removing this header is useful for filter testing, where you want to force a real
4057     reload instead of getting status code <SPAN
4058 CLASS="QUOTE"
4059 >"304"</SPAN
4060 >, which would cause the
4061     browser to use a cached copy of the page.
4062    </P
4063 ><P
4064 >    Instead of removing the header, <TT
4065 CLASS="LITERAL"
4066 >hide-if-modified-since</TT
4067 > can
4068     also add or substract a random amount of time to/from the headers value.
4069     You specify a range of hours were the random factor should be chosen from and
4070     <SPAN
4071 CLASS="APPLICATION"
4072 >Privoxy</SPAN
4073 > does the rest. A negative value means
4074     subtracting, a positive value adding.
4075    </P
4076 ><P
4077 >    Randomizing the value of the <SPAN
4078 CLASS="QUOTE"
4079 >"If-Modified-Since:"</SPAN
4080 > makes
4081     sure it isn't used as a cookie replacement, but you will run into
4082     caching problems if the random range is too high.  
4083    </P
4084 ><P
4085 >    It is a good idea to only use a small negative value and let
4086     <TT
4087 CLASS="LITERAL"
4088 ><A
4089 HREF="actions-file.html#OVERWRITE-LAST-MODIFIED"
4090 >overwrite-last-modified</A
4091 ></TT
4092 >
4093     handle the greater changes.
4094    </P
4095 ><P
4096 >    It is also recommended to use this action together with
4097     <TT
4098 CLASS="LITERAL"
4099 ><A
4100 HREF="actions-file.html#CRUNCH-IF-NONE-MATCH"
4101 >crunch-if-none-match</A
4102 ></TT
4103 >.
4104    </P
4105 ></DD
4106 ><DT
4107 >Example usage (section):</DT
4108 ><DD
4109 ><P
4110 >     <TABLE
4111 BORDER="0"
4112 BGCOLOR="#E0E0E0"
4113 WIDTH="90%"
4114 ><TR
4115 ><TD
4116 ><PRE
4117 CLASS="SCREEN"
4118 ># Let the browser revalidate without being tracked across sessions
4119 {+hide-if-modified-since {-1}\
4120 +overwrite-last-modified {randomize}\
4121 +crunch-if-none-match}
4122 /</PRE
4123 ></TD
4124 ></TR
4125 ></TABLE
4126 >
4127    </P
4128 ></DD
4129 ></DL
4130 ></DIV
4131 ></DIV
4132 ><DIV
4133 CLASS="SECT3"
4134 ><H4
4135 CLASS="SECT3"
4136 ><A
4137 NAME="HIDE-FORWARDED-FOR-HEADERS"
4138 ></A
4139 >8.5.19. hide-forwarded-for-headers</H4
4140 ><P
4141 ></P
4142 ><DIV
4143 CLASS="VARIABLELIST"
4144 ><DL
4145 ><DT
4146 >Typical use:</DT
4147 ><DD
4148 ><P
4149 >Improve privacy by hiding the true source of the request</P
4150 ></DD
4151 ><DT
4152 >Effect:</DT
4153 ><DD
4154 ><P
4155 >    Deletes any existing <SPAN
4156 CLASS="QUOTE"
4157 >"X-Forwarded-for:"</SPAN
4158 > HTTP header from client requests,
4159     and prevents adding a new one.
4160    </P
4161 ></DD
4162 ><DT
4163 >Type:</DT
4164 ><DD
4165 ><P
4166 >Boolean.</P
4167 ></DD
4168 ><DT
4169 >Parameter:</DT
4170 ><DD
4171 ><P
4172 >    N/A
4173    </P
4174 ></DD
4175 ><DT
4176 >Notes:</DT
4177 ><DD
4178 ><P
4179 >    It is fairly safe to leave this on.
4180    </P
4181 ><P
4182 >    This action is scheduled for improvement: It should be able to generate forged 
4183     <SPAN
4184 CLASS="QUOTE"
4185 >"X-Forwarded-for:"</SPAN
4186 > headers using random IP addresses from a specified network,
4187     to make successive requests from the same client look like requests from a pool of different
4188     users sharing the same proxy.
4189    </P
4190 ></DD
4191 ><DT
4192 >Example usage:</DT
4193 ><DD
4194 ><P
4195 >     <TABLE
4196 BORDER="0"
4197 BGCOLOR="#E0E0E0"
4198 WIDTH="90%"
4199 ><TR
4200 ><TD
4201 ><PRE
4202 CLASS="SCREEN"
4203 >+hide-forwarded-for-headers</PRE
4204 ></TD
4205 ></TR
4206 ></TABLE
4207 >
4208    </P
4209 ></DD
4210 ></DL
4211 ></DIV
4212 ></DIV
4213 ><DIV
4214 CLASS="SECT3"
4215 ><H4
4216 CLASS="SECT3"
4217 ><A
4218 NAME="HIDE-FROM-HEADER"
4219 ></A
4220 >8.5.20. hide-from-header</H4
4221 ><P
4222 ></P
4223 ><DIV
4224 CLASS="VARIABLELIST"
4225 ><DL
4226 ><DT
4227 >Typical use:</DT
4228 ><DD
4229 ><P
4230 >Keep your (old and ill) browser from telling web servers your email address</P
4231 ></DD
4232 ><DT
4233 >Effect:</DT
4234 ><DD
4235 ><P
4236 >    Deletes any existing <SPAN
4237 CLASS="QUOTE"
4238 >"From:"</SPAN
4239 > HTTP header, or replaces it with the
4240     specified string.
4241    </P
4242 ></DD
4243 ><DT
4244 >Type:</DT
4245 ><DD
4246 ><P
4247 >Parameterized.</P
4248 ></DD
4249 ><DT
4250 >Parameter:</DT
4251 ><DD
4252 ><P
4253 >    Keyword: <SPAN
4254 CLASS="QUOTE"
4255 >"block"</SPAN
4256 >, or any user defined value.
4257    </P
4258 ></DD
4259 ><DT
4260 >Notes:</DT
4261 ><DD
4262 ><P
4263 >    The keyword <SPAN
4264 CLASS="QUOTE"
4265 >"block"</SPAN
4266 > will completely remove the header 
4267     (not to be confused with the <TT
4268 CLASS="LITERAL"
4269 ><A
4270 HREF="actions-file.html#BLOCK"
4271 >block</A
4272 ></TT
4273 >
4274     action).
4275    </P
4276 ><P
4277 >    Alternately, you can specify any value you prefer to be sent to the web
4278     server. If you do, it is a matter of fairness not to use any address that
4279     is actually used by a real person.
4280    </P
4281 ><P
4282 >    This action is rarely needed, as modern web browsers don't send
4283     <SPAN
4284 CLASS="QUOTE"
4285 >"From:"</SPAN
4286 > headers anymore.
4287    </P
4288 ></DD
4289 ><DT
4290 >Example usage:</DT
4291 ><DD
4292 ><P
4293 >    <TABLE
4294 BORDER="0"
4295 BGCOLOR="#E0E0E0"
4296 WIDTH="90%"
4297 ><TR
4298 ><TD
4299 ><PRE
4300 CLASS="SCREEN"
4301 >+hide-from-header{block}</PRE
4302 ></TD
4303 ></TR
4304 ></TABLE
4305 > or
4306     <TABLE
4307 BORDER="0"
4308 BGCOLOR="#E0E0E0"
4309 WIDTH="90%"
4310 ><TR
4311 ><TD
4312 ><PRE
4313 CLASS="SCREEN"
4314 >+hide-from-header{spam-me-senseless@sittingduck.example.com}</PRE
4315 ></TD
4316 ></TR
4317 ></TABLE
4318 >
4319    </P
4320 ></DD
4321 ></DL
4322 ></DIV
4323 ></DIV
4324 ><DIV
4325 CLASS="SECT3"
4326 ><H4
4327 CLASS="SECT3"
4328 ><A
4329 NAME="HIDE-REFERRER"
4330 ></A
4331 >8.5.21. hide-referrer</H4
4332 ><A
4333 NAME="HIDE-REFERER"
4334 ></A
4335 ><P
4336 ></P
4337 ><DIV
4338 CLASS="VARIABLELIST"
4339 ><DL
4340 ><DT
4341 >Typical use:</DT
4342 ><DD
4343 ><P
4344 >Conceal which link you followed to get to a particular site</P
4345 ></DD
4346 ><DT
4347 >Effect:</DT
4348 ><DD
4349 ><P
4350 >    Deletes the <SPAN
4351 CLASS="QUOTE"
4352 >"Referer:"</SPAN
4353 > (sic) HTTP header from the client request,
4354     or replaces it with a forged one.
4355    </P
4356 ></DD
4357 ><DT
4358 >Type:</DT
4359 ><DD
4360 ><P
4361 >Parameterized.</P
4362 ></DD
4363 ><DT
4364 >Parameter:</DT
4365 ><DD
4366 ><P
4367 ></P
4368 ><UL
4369 ><LI
4370 ><P
4371 ><SPAN
4372 CLASS="QUOTE"
4373 >"conditional-block"</SPAN
4374 > to delete the header completely if the host has changed.</P
4375 ></LI
4376 ><LI
4377 ><P
4378 ><SPAN
4379 CLASS="QUOTE"
4380 >"block"</SPAN
4381 > to delete the header unconditionally.</P
4382 ></LI
4383 ><LI
4384 ><P
4385 ><SPAN
4386 CLASS="QUOTE"
4387 >"forge"</SPAN
4388 > to pretend to be coming from the homepage of the server we are talking to.</P
4389 ></LI
4390 ><LI
4391 ><P
4392 >Any other string to set a user defined referrer.</P
4393 ></LI
4394 ></UL
4395 ></DD
4396 ><DT
4397 >Notes:</DT
4398 ><DD
4399 ><P
4400 >    <TT
4401 CLASS="LITERAL"
4402 >conditional-block</TT
4403 > is the only parameter,
4404     that isn't easily detected in the server's log file. If it blocks the
4405     referrer, the request will look like the visitor used a bookmark or
4406     typed in the address directly.
4407    </P
4408 ><P
4409 >    Leaving the referrer unmodified for requests on the same host
4410     allows the server owner to see the visitor's <SPAN
4411 CLASS="QUOTE"
4412 >"click path"</SPAN
4413 >,
4414     but in most cases she could also get that information by comparing
4415     other parts of the log file: for example the User-Agent if it isn't
4416     a very common one, or the user's IP address if it doesn't change between
4417     different requests.
4418    </P
4419 ><P
4420 >    Always blocking the referrer, or using a custom one, can lead to
4421     failures on servers that check the referrer before they answer any
4422     requests, in an attempt to prevent their valuable content from being
4423     embedded or linked to elsewhere.
4424    </P
4425 ><P
4426 >    Both <TT
4427 CLASS="LITERAL"
4428 >conditional-block</TT
4429 > and <TT
4430 CLASS="LITERAL"
4431 >forge</TT
4432 >
4433     will work with referrer checks, as long as content and valid referring page
4434     are on the same host. Most of the time that's the case.
4435    </P
4436 ><P
4437 >  
4438     <TT
4439 CLASS="LITERAL"
4440 >hide-referer</TT
4441 > is an alternate spelling of
4442     <TT
4443 CLASS="LITERAL"
4444 >hide-referrer</TT
4445 > and the two can be can be freely
4446     substituted with each other. (<SPAN
4447 CLASS="QUOTE"
4448 >"referrer"</SPAN
4449 > is the
4450     correct English spelling, however the HTTP specification has a bug - it
4451     requires it to be spelled as <SPAN
4452 CLASS="QUOTE"
4453 >"referer"</SPAN
4454 >.) 
4455    </P
4456 ></DD
4457 ><DT
4458 >Example usage:</DT
4459 ><DD
4460 ><P
4461 >     <TABLE
4462 BORDER="0"
4463 BGCOLOR="#E0E0E0"
4464 WIDTH="90%"
4465 ><TR
4466 ><TD
4467 ><PRE
4468 CLASS="SCREEN"
4469 >+hide-referrer{forge}</PRE
4470 ></TD
4471 ></TR
4472 ></TABLE
4473 > or
4474      <TABLE
4475 BORDER="0"
4476 BGCOLOR="#E0E0E0"
4477 WIDTH="90%"
4478 ><TR
4479 ><TD
4480 ><PRE
4481 CLASS="SCREEN"
4482 >+hide-referrer{http://www.yahoo.com/}</PRE
4483 ></TD
4484 ></TR
4485 ></TABLE
4486 >
4487    </P
4488 ></DD
4489 ></DL
4490 ></DIV
4491 ></DIV
4492 ><DIV
4493 CLASS="SECT3"
4494 ><H4
4495 CLASS="SECT3"
4496 ><A
4497 NAME="HIDE-USER-AGENT"
4498 ></A
4499 >8.5.22. hide-user-agent</H4
4500 ><P
4501 ></P
4502 ><DIV
4503 CLASS="VARIABLELIST"
4504 ><DL
4505 ><DT
4506 >Typical use:</DT
4507 ><DD
4508 ><P
4509 >Conceal your type of browser and client operating system</P
4510 ></DD
4511 ><DT
4512 >Effect:</DT
4513 ><DD
4514 ><P
4515 >    Replaces the value of the <SPAN
4516 CLASS="QUOTE"
4517 >"User-Agent:"</SPAN
4518 > HTTP header
4519     in client requests with the specified value.
4520    </P
4521 ></DD
4522 ><DT
4523 >Type:</DT
4524 ><DD
4525 ><P
4526 >Parameterized.</P
4527 ></DD
4528 ><DT
4529 >Parameter:</DT
4530 ><DD
4531 ><P
4532 >    Any user-defined string.
4533    </P
4534 ></DD
4535 ><DT
4536 >Notes:</DT
4537 ><DD
4538 ><DIV
4539 CLASS="WARNING"
4540 ><P
4541 ></P
4542 ><TABLE
4543 CLASS="WARNING"
4544 BORDER="1"
4545 WIDTH="90%"
4546 ><TR
4547 ><TD
4548 ALIGN="CENTER"
4549 ><B
4550 >Warning</B
4551 ></TD
4552 ></TR
4553 ><TR
4554 ><TD
4555 ALIGN="LEFT"
4556 ><P
4557 >     This can lead to problems on web sites that depend on looking at this header in
4558      order to customize their content for different browsers (which, by the
4559      way, is <SPAN
4560 CLASS="emphasis"
4561 ><I
4562 CLASS="EMPHASIS"
4563 >NOT</I
4564 ></SPAN
4565 > the right thing to do: good web sites
4566      work browser-independently). 
4567      
4568     </P
4569 ></TD
4570 ></TR
4571 ></TABLE
4572 ></DIV
4573 ><P
4574 >    Using this action in multi-user setups or wherever different types of
4575     browsers will access the same <SPAN
4576 CLASS="APPLICATION"
4577 >Privoxy</SPAN
4578 > is
4579     <SPAN
4580 CLASS="emphasis"
4581 ><I
4582 CLASS="EMPHASIS"
4583 >not recommended</I
4584 ></SPAN
4585 >. In single-user, single-browser
4586     setups, you might use it to delete your OS version information from
4587     the headers, because it is an invitation to exploit known bugs for your
4588     OS. It is also occasionally useful to forge this in order to access 
4589     sites that won't let you in otherwise (though there may be a good 
4590     reason in some cases). Example of this: some MSN sites will not 
4591     let <SPAN
4592 CLASS="APPLICATION"
4593 >Mozilla</SPAN
4594 > enter, yet forging to a 
4595     <SPAN
4596 CLASS="APPLICATION"
4597 >Netscape 6.1</SPAN
4598 > user-agent works just fine.
4599     (Must be just a silly MS goof, I'm sure :-).
4600    </P
4601 ><P
4602 >    This action is scheduled for improvement.
4603    </P
4604 ></DD
4605 ><DT
4606 >Example usage:</DT
4607 ><DD
4608 ><P
4609 >     <TABLE
4610 BORDER="0"
4611 BGCOLOR="#E0E0E0"
4612 WIDTH="90%"
4613 ><TR
4614 ><TD
4615 ><PRE
4616 CLASS="SCREEN"
4617 >+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}</PRE
4618 ></TD
4619 ></TR
4620 ></TABLE
4621 >
4622    </P
4623 ></DD
4624 ></DL
4625 ></DIV
4626 ></DIV
4627 ><DIV
4628 CLASS="SECT3"
4629 ><H4
4630 CLASS="SECT3"
4631 ><A
4632 NAME="INSPECT-JPEGS"
4633 ></A
4634 >8.5.23. inspect-jpegs</H4
4635 ><P
4636 ></P
4637 ><DIV
4638 CLASS="VARIABLELIST"
4639 ><DL
4640 ><DT
4641 >Typical use:</DT
4642 ><DD
4643 ><P
4644 >To protect against the MS buffer over-run in JPEG processing</P
4645 ></DD
4646 ><DT
4647 >Effect:</DT
4648 ><DD
4649 ><P
4650 >    To protect against a known exploit
4651    </P
4652 ></DD
4653 ><DT
4654 >Type:</DT
4655 ><DD
4656 ><P
4657 >Boolean.</P
4658 ></DD
4659 ><DT
4660 >Parameter:</DT
4661 ><DD
4662 ><P
4663 >    N/A
4664    </P
4665 ></DD
4666 ><DT
4667 >Notes:</DT
4668 ><DD
4669 ><P
4670 >    See Microsoft Security Bulletin MS04-028. JPEG images are one of the most 
4671     common image types found across the Internet. The exploit as described can 
4672     allow execution of code on the target system, giving an attacker access 
4673     to the system in question by merely planting an altered JPEG image, which 
4674     would have no obvious indications of what lurks inside. This action
4675     prevents unwanted intrusion.
4676    </P
4677 ></DD
4678 ><DT
4679 >Example usage:</DT
4680 ><DD
4681 ><P
4682 ><TABLE
4683 BORDER="0"
4684 BGCOLOR="#E0E0E0"
4685 WIDTH="90%"
4686 ><TR
4687 ><TD
4688 ><PRE
4689 CLASS="SCREEN"
4690 >+inspect-jpegs</PRE
4691 ></TD
4692 ></TR
4693 ></TABLE
4694 ></P
4695 ></DD
4696 ></DL
4697 ></DIV
4698 ></DIV
4699 ><DIV
4700 CLASS="SECT3"
4701 ><H4
4702 CLASS="SECT3"
4703 ><A
4704 NAME="KILL-POPUPS"
4705 ></A
4706 >8.5.24. kill-popups<A
4707 NAME="KILL-POPUP"
4708 ></A
4709 ></H4
4710 ><P
4711 ></P
4712 ><DIV
4713 CLASS="VARIABLELIST"
4714 ><DL
4715 ><DT
4716 >Typical use:</DT
4717 ><DD
4718 ><P
4719 >Eliminate those annoying pop-up windows (deprecated)</P
4720 ></DD
4721 ><DT
4722 >Effect:</DT
4723 ><DD
4724 ><P
4725 >    While loading the document, replace JavaScript code that opens
4726     pop-up windows with (syntactically neutral) dummy code on the fly.
4727    </P
4728 ></DD
4729 ><DT
4730 >Type:</DT
4731 ><DD
4732 ><P
4733 >Boolean.</P
4734 ></DD
4735 ><DT
4736 >Parameter:</DT
4737 ><DD
4738 ><P
4739 >    N/A
4740    </P
4741 ></DD
4742 ><DT
4743 >Notes:</DT
4744 ><DD
4745 ><P
4746 >    This action is basically a built-in, hardwired special-purpose filter
4747     action, but there are important differences: For <TT
4748 CLASS="LITERAL"
4749 >kill-popups</TT
4750 >,
4751     the document need not be buffered, so it can be incrementally rendered while
4752     downloading. But <TT
4753 CLASS="LITERAL"
4754 >kill-popups</TT
4755 > doesn't catch as many pop-ups as
4756     <TT
4757 CLASS="LITERAL"
4758 ><A
4759 HREF="actions-file.html#FILTER-ALL-POPUPS"
4760 >filter{<TT
4761 CLASS="REPLACEABLE"
4762 ><I
4763 >all-popups</I
4764 ></TT
4765 >}</A
4766 ></TT
4767 >
4768     does and is not as smart as <TT
4769 CLASS="LITERAL"
4770 ><A
4771 HREF="actions-file.html#FILTER-UNSOLICITED-POPUPS"
4772 >filter{<TT
4773 CLASS="REPLACEABLE"
4774 ><I
4775 >unsolicited-popups</I
4776 ></TT
4777 >}</A
4778 >
4779     </TT
4780 >is.
4781    </P
4782 ><P
4783 >    Think of it as a fast and efficient replacement for a filter that you
4784     can use if you don't want any filtering at all. Note that it doesn't make
4785     sense to combine it with any <TT
4786 CLASS="LITERAL"
4787 ><A
4788 HREF="actions-file.html#FILTER"
4789 >filter</A
4790 ></TT
4791 > action,
4792     since as soon as one <TT
4793 CLASS="LITERAL"
4794 ><A
4795 HREF="actions-file.html#FILTER"
4796 >filter</A
4797 ></TT
4798 > applies,
4799     the whole document needs to be buffered anyway, which destroys the advantage of
4800     the <TT
4801 CLASS="LITERAL"
4802 >kill-popups</TT
4803 > action over its filter equivalent.
4804    </P
4805 ><P
4806 >    Killing all pop-ups unconditionally is problematic. Many shops and banks rely on
4807     pop-ups to display forms, shopping carts etc, and the <TT
4808 CLASS="LITERAL"
4809 ><A
4810 HREF="actions-file.html#FILTER-UNSOLICITED-POPUPS"
4811 >filter{<TT
4812 CLASS="REPLACEABLE"
4813 ><I
4814 >unsolicited-popups</I
4815 ></TT
4816 >}</A
4817 >
4818     </TT
4819 > does a fairly good job of catching only the unwanted ones.
4820    </P
4821 ><P
4822 >    If the only kind of pop-ups that you want to kill are exit consoles (those
4823     <SPAN
4824 CLASS="emphasis"
4825 ><I
4826 CLASS="EMPHASIS"
4827 >really nasty</I
4828 ></SPAN
4829 > windows that appear when you close an other
4830     one), you might want to use
4831     <TT
4832 CLASS="LITERAL"
4833 ><A
4834 HREF="actions-file.html#FILTER"
4835 >filter</A
4836 >{<TT
4837 CLASS="REPLACEABLE"
4838 ><I
4839 >js-annoyances</I
4840 ></TT
4841 >}</TT
4842 >
4843     instead. 
4844    </P
4845 ></DD
4846 ><DT
4847 >Example usage:</DT
4848 ><DD
4849 ><P
4850 ><TABLE
4851 BORDER="0"
4852 BGCOLOR="#E0E0E0"
4853 WIDTH="90%"
4854 ><TR
4855 ><TD
4856 ><PRE
4857 CLASS="SCREEN"
4858 >+kill-popups</PRE
4859 ></TD
4860 ></TR
4861 ></TABLE
4862 ></P
4863 ></DD
4864 ></DL
4865 ></DIV
4866 ></DIV
4867 ><DIV
4868 CLASS="SECT3"
4869 ><H4
4870 CLASS="SECT3"
4871 ><A
4872 NAME="LIMIT-CONNECT"
4873 ></A
4874 >8.5.25. limit-connect</H4
4875 ><P
4876 ></P
4877 ><DIV
4878 CLASS="VARIABLELIST"
4879 ><DL
4880 ><DT
4881 >Typical use:</DT
4882 ><DD
4883 ><P
4884 >Prevent abuse of <SPAN
4885 CLASS="APPLICATION"
4886 >Privoxy</SPAN
4887 > as a TCP proxy relay or disable SSL for untrusted sites</P
4888 ></DD
4889 ><DT
4890 >Effect:</DT
4891 ><DD
4892 ><P
4893 >    Specifies to which ports HTTP CONNECT requests are allowable.
4894    </P
4895 ></DD
4896 ><DT
4897 >Type:</DT
4898 ><DD
4899 ><P
4900 >Parameterized.</P
4901 ></DD
4902 ><DT
4903 >Parameter:</DT
4904 ><DD
4905 ><P
4906 >    A comma-separated list of ports or port ranges (the latter using dashes, with the minimum
4907     defaulting to 0 and the maximum to 65K).
4908    </P
4909 ></DD
4910 ><DT
4911 >Notes:</DT
4912 ><DD
4913 ><P
4914 >    By default, i.e. if no <TT
4915 CLASS="LITERAL"
4916 >limit-connect</TT
4917 > action applies,
4918     <SPAN
4919 CLASS="APPLICATION"
4920 >Privoxy</SPAN
4921 > only allows HTTP CONNECT
4922     requests to port 443 (the standard, secure HTTPS port). Use 
4923     <TT
4924 CLASS="LITERAL"
4925 >limit-connect</TT
4926 > if more fine-grained control is desired
4927     for some or all destinations.
4928    </P
4929 ><P
4930 >    The CONNECT methods exists in HTTP to allow access to secure websites
4931     (<SPAN
4932 CLASS="QUOTE"
4933 >"https://"</SPAN
4934 > URLs) through proxies. It works very simply:
4935     the proxy connects to the server on the specified port, and then
4936     short-circuits its connections to the client and to the remote server.
4937     This can be a big security hole, since CONNECT-enabled proxies can be
4938     abused as TCP relays very easily.
4939   </P
4940 ><P
4941 >   <SPAN
4942 CLASS="APPLICATION"
4943 >Privoxy</SPAN
4944 > relays HTTPS traffic without seeing
4945    the decoded content. Websites can leverage this limitation to circumvent Privoxy's
4946    filters. By specifying an invalid port range you can disable HTTPS entirely.
4947    If you plan to disable SSL by default, consider enabling 
4948    <TT
4949 CLASS="LITERAL"
4950 ><A
4951 HREF="actions-file.html#TREAT-FORBIDDEN-CONNECTS-LIKE-BLOCKS"
4952 >treat-forbidden-connects-like-blocks</A
4953 ></TT
4954 >
4955    as well, to be able to quickly create exceptions.
4956   </P
4957 ></DD
4958 ><DT
4959 >Example usages:</DT
4960 ><DD
4961 ><P
4962 >     <TABLE
4963 BORDER="0"
4964 BGCOLOR="#E0E0E0"
4965 WIDTH="90%"
4966 ><TR
4967 ><TD
4968 ><PRE
4969 CLASS="SCREEN"
4970 >+limit-connect{443}                   # This is the default and need not be specified.
4971 +limit-connect{80,443}                # Ports 80 and 443 are OK.
4972 +limit-connect{-3, 7, 20-100, 500-}   # Ports less than 3, 7, 20 to 100 and above 500 are OK.
4973 +limit-connect{-}                     # All ports are OK
4974 +limit-connect{,}                     # No HTTPS traffic is allowed</PRE
4975 ></TD
4976 ></TR
4977 ></TABLE
4978 >
4979    </P
4980 ></DD
4981 ></DL
4982 ></DIV
4983 ></DIV
4984 ><DIV
4985 CLASS="SECT3"
4986 ><H4
4987 CLASS="SECT3"
4988 ><A
4989 NAME="PREVENT-COMPRESSION"
4990 ></A
4991 >8.5.26. prevent-compression</H4
4992 ><P
4993 ></P
4994 ><DIV
4995 CLASS="VARIABLELIST"
4996 ><DL
4997 ><DT
4998 >Typical use:</DT
4999 ><DD
5000 ><P
5001 >    Ensure that servers send the content uncompressed, so it can be
5002     passed through <TT
5003 CLASS="LITERAL"
5004 ><A
5005 HREF="actions-file.html#FILTER"
5006 >filter</A
5007 ></TT
5008 >s.
5009    </P
5010 ></DD
5011 ><DT
5012 >Effect:</DT
5013 ><DD
5014 ><P
5015 >    Removes the Accept-Encoding header which can be used to ask for compressed transfer.
5016    </P
5017 ></DD
5018 ><DT
5019 >Type:</DT
5020 ><DD
5021 ><P
5022 >Boolean.</P
5023 ></DD
5024 ><DT
5025 >Parameter:</DT
5026 ><DD
5027 ><P
5028 >    N/A
5029    </P
5030 ></DD
5031 ><DT
5032 >Notes:</DT
5033 ><DD
5034 ><P
5035 >    More and more websites send their content compressed by default, which
5036     is generally a good idea and saves bandwidth. But for the <TT
5037 CLASS="LITERAL"
5038 ><A
5039 HREF="actions-file.html#FILTER"
5040 >filter</A
5041 ></TT
5042 >, <TT
5043 CLASS="LITERAL"
5044 ><A
5045 HREF="actions-file.html#DEANIMATE-GIFS"
5046 >deanimate-gifs</A
5047 ></TT
5048 >
5049     and <TT
5050 CLASS="LITERAL"
5051 ><A
5052 HREF="actions-file.html#KILL-POPUPS"
5053 >kill-popups</A
5054 ></TT
5055 > actions to work,
5056     <SPAN
5057 CLASS="APPLICATION"
5058 >Privoxy</SPAN
5059 > needs access to the  uncompressed data.
5060     Unfortunately, <SPAN
5061 CLASS="APPLICATION"
5062 >Privoxy</SPAN
5063 > can't yet(!)  uncompress, filter, and
5064     re-compress the content on the fly. So if you want to ensure that all websites, including
5065     those that normally compress, can be filtered, you need to use this action.
5066    </P
5067 ><P
5068 >    This will slow down transfers from those websites, though. If you use any of the above-mentioned
5069     actions, you will typically want to use <TT
5070 CLASS="LITERAL"
5071 >prevent-compression</TT
5072 > in conjunction
5073     with them.
5074    </P
5075 ><P
5076 >    Note that some (rare) ill-configured sites don't handle requests for uncompressed
5077     documents correctly (they send an empty document body). If you use <TT
5078 CLASS="LITERAL"
5079 >prevent-compression</TT
5080 >
5081     per default, you'll have to add exceptions for those sites. See the example for how to do that.
5082    </P
5083 ></DD
5084 ><DT
5085 >Example usage (sections):</DT
5086 ><DD
5087 ><P
5088 >    <TABLE
5089 BORDER="0"
5090 BGCOLOR="#E0E0E0"
5091 WIDTH="90%"
5092 ><TR
5093 ><TD
5094 ><PRE
5095 CLASS="SCREEN"
5096 ># Set default:
5097 #
5098 {+prevent-compression}
5099 / # Match all sites
5100
5101 # Make exceptions for ill sites:
5102 #
5103 {-prevent-compression}
5104 www.debianhelp.org
5105 www.pclinuxonline.com</PRE
5106 ></TD
5107 ></TR
5108 ></TABLE
5109 >
5110    </P
5111 ></DD
5112 ></DL
5113 ></DIV
5114 ></DIV
5115 ><DIV
5116 CLASS="SECT3"
5117 ><H4
5118 CLASS="SECT3"
5119 ><A
5120 NAME="OVERWRITE-LAST-MODIFIED"
5121 ></A
5122 >8.5.27. overwrite-last-modified</H4
5123 ><P
5124 ></P
5125 ><DIV
5126 CLASS="VARIABLELIST"
5127 ><DL
5128 ><DT
5129 >Typical use:</DT
5130 ><DD
5131 ><P
5132 >Prevent yet another way to track the user's steps between sessions.</P
5133 ></DD
5134 ><DT
5135 >Effect:</DT
5136 ><DD
5137 ><P
5138 >    Deletes the <SPAN
5139 CLASS="QUOTE"
5140 >"Last-Modified:"</SPAN
5141 > HTTP server header or modifies its value. 
5142    </P
5143 ></DD
5144 ><DT
5145 >Type:</DT
5146 ><DD
5147 ><P
5148 >Parameterized.</P
5149 ></DD
5150 ><DT
5151 >Parameter:</DT
5152 ><DD
5153 ><P
5154 >    One of the keywords: <SPAN
5155 CLASS="QUOTE"
5156 >"block"</SPAN
5157 >, <SPAN
5158 CLASS="QUOTE"
5159 >"reset-to-request-time"</SPAN
5160 >
5161     and <SPAN
5162 CLASS="QUOTE"
5163 >"randomize"</SPAN
5164 >
5165    </P
5166 ></DD
5167 ><DT
5168 >Notes:</DT
5169 ><DD
5170 ><P
5171 >    Removing the <SPAN
5172 CLASS="QUOTE"
5173 >"Last-Modified:"</SPAN
5174 > header is useful for filter
5175     testing, where you want to force a real reload instead of getting status
5176     code <SPAN
5177 CLASS="QUOTE"
5178 >"304"</SPAN
5179 >, which would cause the browser to reuse the old
5180     version of the page.
5181    </P
5182 ><P
5183 >    The <SPAN
5184 CLASS="QUOTE"
5185 >"randomize"</SPAN
5186 > option overwrites the value of the
5187     <SPAN
5188 CLASS="QUOTE"
5189 >"Last-Modified:"</SPAN
5190 > header with a randomly chosen time
5191     between the original value and the current time. In theory the server
5192     could send each document with a different <SPAN
5193 CLASS="QUOTE"
5194 >"Last-Modified:"</SPAN
5195 >
5196     header to track visits without using cookies. <SPAN
5197 CLASS="QUOTE"
5198 >"Randomize"</SPAN
5199 >
5200     makes it impossible and the browser can still revalidate cached documents. 
5201    </P
5202 ><P
5203 >    <SPAN
5204 CLASS="QUOTE"
5205 >"reset-to-request-time"</SPAN
5206 > overwrites the value of the
5207     <SPAN
5208 CLASS="QUOTE"
5209 >"Last-Modified:"</SPAN
5210 > header with the current time. You could use
5211     this option together with
5212     <TT
5213 CLASS="LITERAL"
5214 ><A
5215 HREF="actions-file.html#HIDE-IF-MODIFIED-SINCE"
5216 >hided-if-modified-since</A
5217 ></TT
5218 >
5219     to further customize your random range.
5220    </P
5221 ><P
5222 >    The preferred parameter here is <SPAN
5223 CLASS="QUOTE"
5224 >"randomize"</SPAN
5225 >. It is safe
5226     to use, as long as the time settings are more or less correct.
5227     If the server sets the <SPAN
5228 CLASS="QUOTE"
5229 >"Last-Modified:"</SPAN
5230 > header to the time
5231     of the request, the random range becomes zero and the value stays the same.
5232     Therefore you should later randomize it a second time with
5233     <TT
5234 CLASS="LITERAL"
5235 ><A
5236 HREF="actions-file.html#HIDE-IF-MODIFIED-SINCE"
5237 >hided-if-modified-since</A
5238 ></TT
5239 >,
5240     just to be sure. 
5241    </P
5242 ><P
5243 >    It is also recommended to use this action together with
5244     <TT
5245 CLASS="LITERAL"
5246 ><A
5247 HREF="actions-file.html#CRUNCH-IF-NONE-MATCH"
5248 >crunch-if-none-match</A
5249 ></TT
5250 >.
5251    </P
5252 ></DD
5253 ><DT
5254 >Example usage:</DT
5255 ><DD
5256 ><P
5257 >     <TABLE
5258 BORDER="0"
5259 BGCOLOR="#E0E0E0"
5260 WIDTH="90%"
5261 ><TR
5262 ><TD
5263 ><PRE
5264 CLASS="SCREEN"
5265 ># Let the browser revalidate without being tracked across sessions
5266 {+hide-if-modified-since {-1}\
5267 +overwrite-last-modified {randomize}\
5268 +crunch-if-none-match}
5269 /</PRE
5270 ></TD
5271 ></TR
5272 ></TABLE
5273 >
5274    </P
5275 ></DD
5276 ></DL
5277 ></DIV
5278 ></DIV
5279 ><DIV
5280 CLASS="SECT3"
5281 ><H4
5282 CLASS="SECT3"
5283 ><A
5284 NAME="REDIRECT"
5285 ></A
5286 >8.5.28. redirect</H4
5287 ><P
5288 ></P
5289 ><DIV
5290 CLASS="VARIABLELIST"
5291 ><DL
5292 ><DT
5293 >Typical use:</DT
5294 ><DD
5295 ><P
5296 >    Redirect requests to other sites.
5297    </P
5298 ></DD
5299 ><DT
5300 >Effect:</DT
5301 ><DD
5302 ><P
5303 >    Convinces the browser that the requested document has been moved
5304     to another location and the browser should get it from there.
5305    </P
5306 ></DD
5307 ><DT
5308 >Type:</DT
5309 ><DD
5310 ><P
5311 >Parameterized</P
5312 ></DD
5313 ><DT
5314 >Parameter:</DT
5315 ><DD
5316 ><P
5317 >    Any URL.
5318    </P
5319 ></DD
5320 ><DT
5321 >Notes:</DT
5322 ><DD
5323 ><P
5324 >    This action is useful to replace whole documents with your own
5325     ones. For that to work, they have to be available on another server.
5326    </P
5327 ><P
5328 >    You can do the same by combining the actions
5329     <TT
5330 CLASS="LITERAL"
5331 ><A
5332 HREF="actions-file.html#BLOCK"
5333 >block</A
5334 ></TT
5335 >,
5336     <TT
5337 CLASS="LITERAL"
5338 ><A
5339 HREF="actions-file.html#HANDLE-AS-IMAGE"
5340 >handle-as-image</A
5341 ></TT
5342 > and
5343     <TT
5344 CLASS="LITERAL"
5345 ><A
5346 HREF="actions-file.html#SET-IMAGE-BLOCKER"
5347 >set-image-blocker{URL}</A
5348 ></TT
5349 >.
5350     It doesn't sound right for non-image documents, and that's why this action
5351     was created.
5352    </P
5353 ><P
5354 >    This action will be ignored if you use it together with
5355     <TT
5356 CLASS="LITERAL"
5357 ><A
5358 HREF="actions-file.html#BLOCK"
5359 >block</A
5360 ></TT
5361 >.
5362    </P
5363 ></DD
5364 ><DT
5365 >Example usage:</DT
5366 ><DD
5367 ><P
5368 >    <TABLE
5369 BORDER="0"
5370 BGCOLOR="#E0E0E0"
5371 WIDTH="90%"
5372 ><TR
5373 ><TD
5374 ><PRE
5375 CLASS="SCREEN"
5376 ># Replace example.com's style sheet with another one
5377 {+redirect{http://localhost/css-replacements/example.com.css}}
5378 example.com/stylesheet.css</PRE
5379 ></TD
5380 ></TR
5381 ></TABLE
5382 >
5383    </P
5384 ></DD
5385 ></DL
5386 ></DIV
5387 ></DIV
5388 ><DIV
5389 CLASS="SECT3"
5390 ><H4
5391 CLASS="SECT3"
5392 ><A
5393 NAME="SEND-VANILLA-WAFER"
5394 ></A
5395 >8.5.29. send-vanilla-wafer</H4
5396 ><P
5397 ></P
5398 ><DIV
5399 CLASS="VARIABLELIST"
5400 ><DL
5401 ><DT
5402 >Typical use:</DT
5403 ><DD
5404 ><P
5405 >    Feed log analysis scripts with useless data.
5406    </P
5407 ></DD
5408 ><DT
5409 >Effect:</DT
5410 ><DD
5411 ><P
5412 >    Sends a cookie with each request stating that you do not accept any copyright
5413     on cookies sent to you, and asking the site operator not to track you.
5414    </P
5415 ></DD
5416 ><DT
5417 >Type:</DT
5418 ><DD
5419 ><P
5420 >Boolean.</P
5421 ></DD
5422 ><DT
5423 >Parameter:</DT
5424 ><DD
5425 ><P
5426 >    N/A
5427    </P
5428 ></DD
5429 ><DT
5430 >Notes:</DT
5431 ><DD
5432 ><P
5433 >    The vanilla wafer is a (relatively) unique header and could conceivably be used to track you.
5434    </P
5435 ><P
5436 >    This action is rarely used and not enabled in the default configuration.
5437    </P
5438 ></DD
5439 ><DT
5440 >Example usage:</DT
5441 ><DD
5442 ><P
5443 >     <TABLE
5444 BORDER="0"
5445 BGCOLOR="#E0E0E0"
5446 WIDTH="90%"
5447 ><TR
5448 ><TD
5449 ><PRE
5450 CLASS="SCREEN"
5451 >+send-vanilla-wafer</PRE
5452 ></TD
5453 ></TR
5454 ></TABLE
5455 >
5456    </P
5457 ></DD
5458 ></DL
5459 ></DIV
5460 ></DIV
5461 ><DIV
5462 CLASS="SECT3"
5463 ><H4
5464 CLASS="SECT3"
5465 ><A
5466 NAME="SEND-WAFER"
5467 ></A
5468 >8.5.30. send-wafer</H4
5469 ><P
5470 ></P
5471 ><DIV
5472 CLASS="VARIABLELIST"
5473 ><DL
5474 ><DT
5475 >Typical use:</DT
5476 ><DD
5477 ><P
5478 >    Send custom cookies or feed log analysis scripts with even more useless data.
5479    </P
5480 ></DD
5481 ><DT
5482 >Effect:</DT
5483 ><DD
5484 ><P
5485 >    Sends a custom, user-defined cookie with each request.
5486    </P
5487 ></DD
5488 ><DT
5489 >Type:</DT
5490 ><DD
5491 ><P
5492 >Multi-value.</P
5493 ></DD
5494 ><DT
5495 >Parameter:</DT
5496 ><DD
5497 ><P
5498 >    A string of the form <SPAN
5499 CLASS="QUOTE"
5500 >"<TT
5501 CLASS="REPLACEABLE"
5502 ><I
5503 >name</I
5504 ></TT
5505 >=<TT
5506 CLASS="REPLACEABLE"
5507 ><I
5508 >value</I
5509 ></TT
5510 >"</SPAN
5511 >.
5512    </P
5513 ></DD
5514 ><DT
5515 >Notes:</DT
5516 ><DD
5517 ><P
5518 >    Being multi-valued, multiple instances of this action can apply to the same request,
5519     resulting in multiple cookies being sent.
5520    </P
5521 ><P
5522 >    This action is rarely used and not enabled in the default configuration.
5523    </P
5524 ></DD
5525 ><DT
5526 >Example usage (section):</DT
5527 ><DD
5528 ><P
5529 >    <TABLE
5530 BORDER="0"
5531 BGCOLOR="#E0E0E0"
5532 WIDTH="90%"
5533 ><TR
5534 ><TD
5535 ><PRE
5536 CLASS="SCREEN"
5537 >{+send-wafer{UsingPrivoxy=true}}
5538 my-internal-testing-server.void</PRE
5539 ></TD
5540 ></TR
5541 ></TABLE
5542 >
5543    </P
5544 ></DD
5545 ></DL
5546 ></DIV
5547 ></DIV
5548 ><DIV
5549 CLASS="SECT3"
5550 ><H4
5551 CLASS="SECT3"
5552 ><A
5553 NAME="SESSION-COOKIES-ONLY"
5554 ></A
5555 >8.5.31. session-cookies-only</H4
5556 ><P
5557 ></P
5558 ><DIV
5559 CLASS="VARIABLELIST"
5560 ><DL
5561 ><DT
5562 >Typical use:</DT
5563 ><DD
5564 ><P
5565 >    Allow only temporary <SPAN
5566 CLASS="QUOTE"
5567 >"session"</SPAN
5568 > cookies (for the current
5569     browser session <SPAN
5570 CLASS="emphasis"
5571 ><I
5572 CLASS="EMPHASIS"
5573 >only</I
5574 ></SPAN
5575 >). 
5576    </P
5577 ></DD
5578 ><DT
5579 >Effect:</DT
5580 ><DD
5581 ><P
5582 >    Deletes the <SPAN
5583 CLASS="QUOTE"
5584 >"expires"</SPAN
5585 > field from <SPAN
5586 CLASS="QUOTE"
5587 >"Set-Cookie:"</SPAN
5588 >
5589     server headers. Most browsers will not store such cookies permanently and
5590     forget them in between sessions.
5591    </P
5592 ></DD
5593 ><DT
5594 >Type:</DT
5595 ><DD
5596 ><P
5597 >Boolean.</P
5598 ></DD
5599 ><DT
5600 >Parameter:</DT
5601 ><DD
5602 ><P
5603 >    N/A
5604    </P
5605 ></DD
5606 ><DT
5607 >Notes:</DT
5608 ><DD
5609 ><P
5610 >    This is less strict than <TT
5611 CLASS="LITERAL"
5612 ><A
5613 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
5614 >crunch-incoming-cookies</A
5615 ></TT
5616 > / 
5617     <TT
5618 CLASS="LITERAL"
5619 ><A
5620 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
5621 >crunch-outgoing-cookies</A
5622 ></TT
5623 > and allows you to browse
5624     websites that insist or rely on setting cookies, without compromising your privacy too badly.
5625    </P
5626 ><P
5627 >    Most browsers will not permanently store cookies that have been processed by
5628     <TT
5629 CLASS="LITERAL"
5630 >session-cookies-only</TT
5631 > and will forget about them between sessions.
5632     This makes profiling cookies useless, but won't break sites which require cookies so
5633     that you can log in for transactions. This is generally turned on for all 
5634     sites, and is the recommended setting.
5635    </P
5636 ><P
5637 >    It makes <SPAN
5638 CLASS="emphasis"
5639 ><I
5640 CLASS="EMPHASIS"
5641 >no sense at all</I
5642 ></SPAN
5643 > to use <TT
5644 CLASS="LITERAL"
5645 >session-cookies-only</TT
5646 >
5647     together with <TT
5648 CLASS="LITERAL"
5649 ><A
5650 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
5651 >crunch-incoming-cookies</A
5652 ></TT
5653 > or
5654     <TT
5655 CLASS="LITERAL"
5656 ><A
5657 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
5658 >crunch-outgoing-cookies</A
5659 ></TT
5660 >. If you do, cookies
5661     will be plainly killed.
5662    </P
5663 ><P
5664 >    Note that it is up to the browser how it handles such cookies without an <SPAN
5665 CLASS="QUOTE"
5666 >"expires"</SPAN
5667 >
5668     field. If you use an exotic browser, you might want to try it out to be sure.
5669    </P
5670 ><P
5671 >    This setting also has no effect on cookies that may have been stored
5672     previously by the browser before starting <SPAN
5673 CLASS="APPLICATION"
5674 >Privoxy</SPAN
5675 >.
5676     These would have to be removed manually.
5677    </P
5678 ><P
5679 >     <SPAN
5680 CLASS="APPLICATION"
5681 >Privoxy</SPAN
5682 > also uses  
5683      the <A
5684 HREF="actions-file.html#FILTER-CONTENT-COOKIES"
5685 >content-cookies filter</A
5686
5687      to block some types of cookies. Content cookies are not effected by 
5688      <TT
5689 CLASS="LITERAL"
5690 >session-cookies-only</TT
5691 >.
5692    </P
5693 ></DD
5694 ><DT
5695 >Example usage:</DT
5696 ><DD
5697 ><P
5698 >     <TABLE
5699 BORDER="0"
5700 BGCOLOR="#E0E0E0"
5701 WIDTH="90%"
5702 ><TR
5703 ><TD
5704 ><PRE
5705 CLASS="SCREEN"
5706 >+session-cookies-only</PRE
5707 ></TD
5708 ></TR
5709 ></TABLE
5710 >
5711    </P
5712 ></DD
5713 ></DL
5714 ></DIV
5715 ></DIV
5716 ><DIV
5717 CLASS="SECT3"
5718 ><H4
5719 CLASS="SECT3"
5720 ><A
5721 NAME="SET-IMAGE-BLOCKER"
5722 ></A
5723 >8.5.32. set-image-blocker</H4
5724 ><P
5725 ></P
5726 ><DIV
5727 CLASS="VARIABLELIST"
5728 ><DL
5729 ><DT
5730 >Typical use:</DT
5731 ><DD
5732 ><P
5733 >Choose the replacement for blocked images</P
5734 ></DD
5735 ><DT
5736 >Effect:</DT
5737 ><DD
5738 ><P
5739 >     This action alone doesn't do anything noticeable. If <SPAN
5740 CLASS="emphasis"
5741 ><I
5742 CLASS="EMPHASIS"
5743 >both</I
5744 ></SPAN
5745 >
5746      <TT
5747 CLASS="LITERAL"
5748 ><A
5749 HREF="actions-file.html#BLOCK"
5750 >block</A
5751 ></TT
5752 > <SPAN
5753 CLASS="emphasis"
5754 ><I
5755 CLASS="EMPHASIS"
5756 >and</I
5757 ></SPAN
5758 > <TT
5759 CLASS="LITERAL"
5760 ><A
5761 HREF="actions-file.html#HANDLE-AS-IMAGE"
5762 >handle-as-image</A
5763 ></TT
5764 > <SPAN
5765 CLASS="emphasis"
5766 ><I
5767 CLASS="EMPHASIS"
5768 >also</I
5769 ></SPAN
5770 >
5771      apply, i.e. if the request is to be blocked as an image,
5772      <SPAN
5773 CLASS="emphasis"
5774 ><I
5775 CLASS="EMPHASIS"
5776 >then</I
5777 ></SPAN
5778 > the parameter of this action decides what will be
5779      sent as a replacement.
5780    </P
5781 ></DD
5782 ><DT
5783 >Type:</DT
5784 ><DD
5785 ><P
5786 >Parameterized.</P
5787 ></DD
5788 ><DT
5789 >Parameter:</DT
5790 ><DD
5791 ><P
5792 ></P
5793 ><UL
5794 ><LI
5795 ><P
5796 >      <SPAN
5797 CLASS="QUOTE"
5798 >"pattern"</SPAN
5799 > to send a built-in checkerboard pattern image. The image is visually
5800       decent, scales very well, and makes it obvious where banners were busted.
5801      </P
5802 ></LI
5803 ><LI
5804 ><P
5805 >      <SPAN
5806 CLASS="QUOTE"
5807 >"blank"</SPAN
5808 > to send a built-in transparent image. This makes banners disappear
5809       completely, but makes it hard to detect where <SPAN
5810 CLASS="APPLICATION"
5811 >Privoxy</SPAN
5812 > has blocked
5813       images on a given page and complicates troubleshooting if <SPAN
5814 CLASS="APPLICATION"
5815 >Privoxy</SPAN
5816 >
5817       has blocked innocent images, like navigation icons.
5818      </P
5819 ></LI
5820 ><LI
5821 ><P
5822 >      <SPAN
5823 CLASS="QUOTE"
5824 >"<TT
5825 CLASS="REPLACEABLE"
5826 ><I
5827 >target-url</I
5828 ></TT
5829 >"</SPAN
5830 > to
5831       send a redirect to <TT
5832 CLASS="REPLACEABLE"
5833 ><I
5834 >target-url</I
5835 ></TT
5836 >. You can redirect
5837       to any image anywhere, even in your local filesystem via <SPAN
5838 CLASS="QUOTE"
5839 >"file:///"</SPAN
5840 > URL. 
5841       (But note that not all browsers support redirecting to a local file system).
5842      </P
5843 ><P
5844 >      A good application of redirects is to use special <SPAN
5845 CLASS="APPLICATION"
5846 >Privoxy</SPAN
5847 >-built-in
5848       URLs, which send the built-in images, as <TT
5849 CLASS="REPLACEABLE"
5850 ><I
5851 >target-url</I
5852 ></TT
5853 >.
5854       This has the same visual effect as specifying <SPAN
5855 CLASS="QUOTE"
5856 >"blank"</SPAN
5857 > or <SPAN
5858 CLASS="QUOTE"
5859 >"pattern"</SPAN
5860 > in
5861       the first place, but enables your browser to cache the replacement image, instead of requesting
5862       it over and over again.
5863      </P
5864 ></LI
5865 ></UL
5866 ></DD
5867 ><DT
5868 >Notes:</DT
5869 ><DD
5870 ><P
5871 >    The URLs for the built-in images are <SPAN
5872 CLASS="QUOTE"
5873 >"http://config.privoxy.org/send-banner?type=<TT
5874 CLASS="REPLACEABLE"
5875 ><I
5876 >type</I
5877 ></TT
5878 >"</SPAN
5879 >, where <TT
5880 CLASS="REPLACEABLE"
5881 ><I
5882 >type</I
5883 ></TT
5884 > is
5885     either <SPAN
5886 CLASS="QUOTE"
5887 >"blank"</SPAN
5888 > or <SPAN
5889 CLASS="QUOTE"
5890 >"pattern"</SPAN
5891 >.
5892    </P
5893 ><P
5894 >    There is a third (advanced) type, called <SPAN
5895 CLASS="QUOTE"
5896 >"auto"</SPAN
5897 >. It is <SPAN
5898 CLASS="emphasis"
5899 ><I
5900 CLASS="EMPHASIS"
5901 >NOT</I
5902 ></SPAN
5903 > to be
5904     used in <TT
5905 CLASS="LITERAL"
5906 >set-image-blocker</TT
5907 >, but meant for use from <A
5908 HREF="filter-file.html"
5909 >filters</A
5910 >.
5911     Auto will select the type of image that would have applied to the referring page, had it been an image.
5912    </P
5913 ></DD
5914 ><DT
5915 >Example usage:</DT
5916 ><DD
5917 ><P
5918 >    Built-in pattern:
5919    </P
5920 ><P
5921 >    <TABLE
5922 BORDER="0"
5923 BGCOLOR="#E0E0E0"
5924 WIDTH="90%"
5925 ><TR
5926 ><TD
5927 ><PRE
5928 CLASS="SCREEN"
5929 >+set-image-blocker{pattern}</PRE
5930 ></TD
5931 ></TR
5932 ></TABLE
5933 >
5934    </P
5935 ><P
5936 >    Redirect to the BSD devil:
5937    </P
5938 ><P
5939 >    <TABLE
5940 BORDER="0"
5941 BGCOLOR="#E0E0E0"
5942 WIDTH="90%"
5943 ><TR
5944 ><TD
5945 ><PRE
5946 CLASS="SCREEN"
5947 >+set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}</PRE
5948 ></TD
5949 ></TR
5950 ></TABLE
5951 >
5952    </P
5953 ><P
5954 >    Redirect to the built-in pattern for better caching:
5955    </P
5956 ><P
5957 >    <TABLE
5958 BORDER="0"
5959 BGCOLOR="#E0E0E0"
5960 WIDTH="90%"
5961 ><TR
5962 ><TD
5963 ><PRE
5964 CLASS="SCREEN"
5965 >+set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}</PRE
5966 ></TD
5967 ></TR
5968 ></TABLE
5969 >
5970    </P
5971 ></DD
5972 ></DL
5973 ></DIV
5974 ></DIV
5975 ><DIV
5976 CLASS="SECT3"
5977 ><H4
5978 CLASS="SECT3"
5979 ><A
5980 NAME="TREAT-FORBIDDEN-CONNECTS-LIKE-BLOCKS"
5981 ></A
5982 >8.5.33. treat-forbidden-connects-like-blocks</H4
5983 ><P
5984 ></P
5985 ><DIV
5986 CLASS="VARIABLELIST"
5987 ><DL
5988 ><DT
5989 >Typical use:</DT
5990 ><DD
5991 ><P
5992 >Block forbidden connects with an easy to find error message.</P
5993 ></DD
5994 ><DT
5995 >Effect:</DT
5996 ><DD
5997 ><P
5998 >    If this action is enabled, <SPAN
5999 CLASS="APPLICATION"
6000 >Privoxy</SPAN
6001 > no longer
6002     makes a difference between forbidden connects and ordinary blocks. 
6003    </P
6004 ></DD
6005 ><DT
6006 >Type:</DT
6007 ><DD
6008 ><P
6009 >Boolean</P
6010 ></DD
6011 ><DT
6012 >Parameter:</DT
6013 ><DD
6014 ><P
6015 >N/A</P
6016 ></DD
6017 ><DT
6018 >Notes:</DT
6019 ><DD
6020 ><P
6021 >    By default <SPAN
6022 CLASS="APPLICATION"
6023 >Privoxy</SPAN
6024 > answers
6025     <A
6026 HREF="actions-file.html#LIMIT-CONNECT"
6027 >forbidden <SPAN
6028 CLASS="QUOTE"
6029 >"Connect"</SPAN
6030 > requests</A
6031 >
6032     with a short error message inside the headers. If the browser doesn't display
6033     headers (most don't), you just see an empty page.
6034    </P
6035 ><P
6036 >    With this action enabled, <SPAN
6037 CLASS="APPLICATION"
6038 >Privoxy</SPAN
6039 > displays
6040     the message that is used for ordinary blocks instead. If you decide
6041     to make an exception for the page in question, you can do so by
6042     following the <SPAN
6043 CLASS="QUOTE"
6044 >"See why"</SPAN
6045 > link.
6046    </P
6047 ><P
6048 >    For <SPAN
6049 CLASS="QUOTE"
6050 >"Connect"</SPAN
6051 > requests the clients tell
6052     <SPAN
6053 CLASS="APPLICATION"
6054 >Privoxy</SPAN
6055 > which host they are interested
6056     in, but not which document they plan to get later. As a result, the
6057     <SPAN
6058 CLASS="QUOTE"
6059 >"Go there anyway"</SPAN
6060 > link becomes rather useless:
6061     it lets the client request the home page of the forbidden host
6062     through unencrypted HTTP, still using the port of the last request.
6063    </P
6064 ><P
6065 >    If you previously configured <SPAN
6066 CLASS="APPLICATION"
6067 >Privoxy</SPAN
6068 > to do the
6069     request through a SSL tunnel, everything will work. Most likely you haven't
6070     and the server will responds with an error message because it is expecting
6071     HTTPS.
6072    </P
6073 ></DD
6074 ><DT
6075 >Example usage:</DT
6076 ><DD
6077 ><P
6078 >    <TABLE
6079 BORDER="0"
6080 BGCOLOR="#E0E0E0"
6081 WIDTH="90%"
6082 ><TR
6083 ><TD
6084 ><PRE
6085 CLASS="SCREEN"
6086 >+treat-forbidden-connects-like-blocks</PRE
6087 ></TD
6088 ></TR
6089 ></TABLE
6090 >
6091    </P
6092 ></DD
6093 ></DL
6094 ></DIV
6095 ></DIV
6096 ><DIV
6097 CLASS="SECT3"
6098 ><H3
6099 CLASS="SECT3"
6100 ><A
6101 NAME="AEN3543"
6102 ></A
6103 >8.5.34. Summary</H3
6104 ><P
6105 > Note that many of these actions have the potential to cause a page to
6106  misbehave, possibly even not to display at all. There are many ways 
6107  a site designer may choose to design his site, and what HTTP header 
6108  content, and other criteria, he may depend on. There is no way to have hard
6109  and fast rules for all sites. See the <A
6110 HREF="appendix.html#ACTIONSANAT"
6111 >Appendix</A
6112 > for a brief example on troubleshooting
6113  actions.</P
6114 ></DIV
6115 ></DIV
6116 ><DIV
6117 CLASS="SECT2"
6118 ><H2
6119 CLASS="SECT2"
6120 ><A
6121 NAME="ALIASES"
6122 ></A
6123 >8.6. Aliases</H2
6124 ><P
6125 > Custom <SPAN
6126 CLASS="QUOTE"
6127 >"actions"</SPAN
6128 >, known to <SPAN
6129 CLASS="APPLICATION"
6130 >Privoxy</SPAN
6131 >
6132  as <SPAN
6133 CLASS="QUOTE"
6134 >"aliases"</SPAN
6135 >, can be defined by combining other actions.
6136  These can in turn be invoked just like the built-in actions.
6137  Currently, an alias name can contain any character except space, tab,
6138  <SPAN
6139 CLASS="QUOTE"
6140 >"="</SPAN
6141 >,
6142  <SPAN
6143 CLASS="QUOTE"
6144 >"{"</SPAN
6145 > and <SPAN
6146 CLASS="QUOTE"
6147 >"}"</SPAN
6148 >, but we <SPAN
6149 CLASS="emphasis"
6150 ><I
6151 CLASS="EMPHASIS"
6152 >strongly 
6153  recommend</I
6154 ></SPAN
6155 > that you only use <SPAN
6156 CLASS="QUOTE"
6157 >"a"</SPAN
6158 > to <SPAN
6159 CLASS="QUOTE"
6160 >"z"</SPAN
6161 >,
6162  <SPAN
6163 CLASS="QUOTE"
6164 >"0"</SPAN
6165 > to <SPAN
6166 CLASS="QUOTE"
6167 >"9"</SPAN
6168 >, <SPAN
6169 CLASS="QUOTE"
6170 >"+"</SPAN
6171 >, and <SPAN
6172 CLASS="QUOTE"
6173 >"-"</SPAN
6174 >.
6175  Alias names are not case sensitive, and are not required to start with a
6176  <SPAN
6177 CLASS="QUOTE"
6178 >"+"</SPAN
6179 > or <SPAN
6180 CLASS="QUOTE"
6181 >"-"</SPAN
6182 > sign, since they are merely textually
6183  expanded.</P
6184 ><P
6185 > Aliases can be used throughout the actions file, but they <SPAN
6186 CLASS="emphasis"
6187 ><I
6188 CLASS="EMPHASIS"
6189 >must be
6190  defined in a special section at the top of the file!</I
6191 ></SPAN
6192 >
6193  And there can only be one such section per actions file. Each actions file may
6194  have its own alias section, and the aliases defined in it are only visible
6195  within that file.</P
6196 ><P
6197 > There are two main reasons to use aliases: One is to save typing for frequently
6198  used combinations of actions, the other one is a gain in flexibility: If you
6199  decide once how you want to handle shops by defining an alias called
6200  <SPAN
6201 CLASS="QUOTE"
6202 >"shop"</SPAN
6203 >, you can later change your policy on shops in
6204  <SPAN
6205 CLASS="emphasis"
6206 ><I
6207 CLASS="EMPHASIS"
6208 >one</I
6209 ></SPAN
6210 > place, and your changes will take effect everywhere
6211  in the actions file where the <SPAN
6212 CLASS="QUOTE"
6213 >"shop"</SPAN
6214 > alias is used. Calling aliases
6215  by their purpose also makes your actions files more readable.</P
6216 ><P
6217 > Currently, there is one big drawback to using aliases, though:
6218  <SPAN
6219 CLASS="APPLICATION"
6220 >Privoxy</SPAN
6221 >'s built-in web-based action file
6222  editor honors aliases when reading the actions files, but it expands
6223  them before writing. So the effects of your aliases are of course preserved,
6224  but the aliases themselves are lost when you edit sections that use aliases
6225  with it.
6226  This is likely to change in future versions of <SPAN
6227 CLASS="APPLICATION"
6228 >Privoxy</SPAN
6229 >.</P
6230 ><P
6231 > Now let's define some aliases...</P
6232 ><P
6233 > <TABLE
6234 BORDER="0"
6235 BGCOLOR="#E0E0E0"
6236 WIDTH="100%"
6237 ><TR
6238 ><TD
6239 ><PRE
6240 CLASS="SCREEN"
6241 > # Useful custom aliases we can use later.
6242  #
6243  # Note the (required!) section header line and that this section
6244  # must be at the top of the actions file!
6245  #
6246  {{alias}}
6247
6248  # These aliases just save typing later:
6249  # (Note that some already use other aliases!)
6250  #
6251  +crunch-all-cookies = +<A
6252 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
6253 >crunch-incoming-cookies</A
6254 > +<A
6255 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
6256 >crunch-outgoing-cookies</A
6257 >
6258  -crunch-all-cookies = -<A
6259 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
6260 >crunch-incoming-cookies</A
6261 > -<A
6262 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
6263 >crunch-outgoing-cookies</A
6264 >
6265  block-as-image      = +block +handle-as-image
6266  mercy-for-cookies   = -crunch-all-cookies -<A
6267 HREF="actions-file.html#SESSION-COOKIES-ONLY"
6268 >session-cookies-only</A
6269 > -<A
6270 HREF="actions-file.html#FILTER-CONTENT-COOKIES"
6271 >filter{content-cookies}</A
6272 >
6273
6274  # These aliases define combinations of actions
6275  # that are useful for certain types of sites:
6276  #
6277  fragile     = -<A
6278 HREF="actions-file.html#BLOCK"
6279 >block</A
6280 > -<A
6281 HREF="actions-file.html#FILTER"
6282 >filter</A
6283 > -crunch-all-cookies -<A
6284 HREF="actions-file.html#FAST-REDIRECTS"
6285 >fast-redirects</A
6286 > -<A
6287 HREF="actions-file.html#HIDE-REFERER"
6288 >hide-referrer</A
6289 > -<A
6290 HREF="actions-file.html#KILL-POPUPS"
6291 >kill-popups</A
6292 >
6293  shop        = -crunch-all-cookies -<A
6294 HREF="actions-file.html#FILTER-ALL-POPUPS"
6295 >filter{all-popups}</A
6296 > -<A
6297 HREF="actions-file.html#KILL-POPUPS"
6298 >kill-popups</A
6299 >
6300
6301  # Short names for other aliases, for really lazy people ;-)
6302  #
6303  c0 = +crunch-all-cookies
6304  c1 = -crunch-all-cookies</PRE
6305 ></TD
6306 ></TR
6307 ></TABLE
6308 ></P
6309 ><P
6310 > ...and put them to use. These sections would appear in the lower part of an 
6311  actions file and define exceptions to the default actions (as specified further
6312  up for the <SPAN
6313 CLASS="QUOTE"
6314 >"/"</SPAN
6315 > pattern):</P
6316 ><P
6317 > <TABLE
6318 BORDER="0"
6319 BGCOLOR="#E0E0E0"
6320 WIDTH="100%"
6321 ><TR
6322 ><TD
6323 ><PRE
6324 CLASS="SCREEN"
6325 > # These sites are either very complex or very keen on
6326  # user data and require minimal interference to work:
6327  #
6328  {fragile}
6329  .office.microsoft.com
6330  .windowsupdate.microsoft.com
6331  .nytimes.com
6332
6333  # Shopping sites:
6334  # Allow cookies (for setting and retrieving your customer data)
6335  #           
6336  {shop}
6337  .quietpc.com
6338  .worldpay.com   # for quietpc.com
6339  .scan.co.uk
6340
6341  # These shops require pop-ups:
6342  #
6343  {shop -kill-popups -filter{all-popups}}
6344   .dabs.com
6345   .overclockers.co.uk</PRE
6346 ></TD
6347 ></TR
6348 ></TABLE
6349 ></P
6350 ><P
6351 > Aliases like <SPAN
6352 CLASS="QUOTE"
6353 >"shop"</SPAN
6354 > and <SPAN
6355 CLASS="QUOTE"
6356 >"fragile"</SPAN
6357 > are often used for 
6358  <SPAN
6359 CLASS="QUOTE"
6360 >"problem"</SPAN
6361 > sites that require some actions to be disabled 
6362  in order to function properly.</P
6363 ></DIV
6364 ><DIV
6365 CLASS="SECT2"
6366 ><H2
6367 CLASS="SECT2"
6368 ><A
6369 NAME="ACT-EXAMPLES"
6370 ></A
6371 >8.7. Actions Files Tutorial</H2
6372 ><P
6373 > The above chapters have shown <A
6374 HREF="actions-file.html"
6375 >which actions files
6376  there are and how they are organized</A
6377 >, how actions are <A
6378 HREF="actions-file.html#ACTIONS"
6379 >specified</A
6380 > and <A
6381 HREF="actions-file.html#ACTIONS-APPLY"
6382 >applied
6383  to URLs</A
6384 >, how <A
6385 HREF="actions-file.html#AF-PATTERNS"
6386 >patterns</A
6387 > work, and how to
6388  define and use <A
6389 HREF="actions-file.html#ALIASES"
6390 >aliases</A
6391 >. Now, let's look at an
6392  example <TT
6393 CLASS="FILENAME"
6394 >default.action</TT
6395 > and <TT
6396 CLASS="FILENAME"
6397 >user.action</TT
6398 >
6399  file and see how all these pieces come together:</P
6400 ><DIV
6401 CLASS="SECT3"
6402 ><H3
6403 CLASS="SECT3"
6404 ><A
6405 NAME="AEN3608"
6406 ></A
6407 >8.7.1. default.action</H3
6408 ><P
6409 >Every config file should start with a short comment stating its purpose:</P
6410 ><P
6411 > <TABLE
6412 BORDER="0"
6413 BGCOLOR="#E0E0E0"
6414 WIDTH="100%"
6415 ><TR
6416 ><TD
6417 ><PRE
6418 CLASS="SCREEN"
6419 ># Sample default.action file &#60;ijbswa-developers@lists.sourceforge.net&#62;</PRE
6420 ></TD
6421 ></TR
6422 ></TABLE
6423 ></P
6424 ><P
6425 >Then, since this is the <TT
6426 CLASS="FILENAME"
6427 >default.action</TT
6428 > file, the
6429 first section is a special section for internal use that you needn't
6430 change or worry about:</P
6431 ><P
6432 > <TABLE
6433 BORDER="0"
6434 BGCOLOR="#E0E0E0"
6435 WIDTH="100%"
6436 ><TR
6437 ><TD
6438 ><PRE
6439 CLASS="SCREEN"
6440 >##########################################################################
6441 # Settings -- Don't change! For internal Privoxy use ONLY.
6442 ##########################################################################
6443
6444 {{settings}}
6445 for-privoxy-version=3.0</PRE
6446 ></TD
6447 ></TR
6448 ></TABLE
6449 ></P
6450 ><P
6451 >After that comes the (optional) alias section. We'll use the example
6452 section from the above <A
6453 HREF="actions-file.html#ALIASES"
6454 >chapter on aliases</A
6455 >,
6456 that also explains why and how aliases are used:</P
6457 ><P
6458 > <TABLE
6459 BORDER="0"
6460 BGCOLOR="#E0E0E0"
6461 WIDTH="100%"
6462 ><TR
6463 ><TD
6464 ><PRE
6465 CLASS="SCREEN"
6466 >##########################################################################
6467 # Aliases
6468 ##########################################################################
6469 {{alias}}
6470
6471  # These aliases just save typing later:
6472  # (Note that some already use other aliases!)
6473  #
6474  +crunch-all-cookies = +<A
6475 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
6476 >crunch-incoming-cookies</A
6477 > +<A
6478 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
6479 >crunch-outgoing-cookies</A
6480 >
6481  -crunch-all-cookies = -<A
6482 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
6483 >crunch-incoming-cookies</A
6484 > -<A
6485 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
6486 >crunch-outgoing-cookies</A
6487 >
6488  block-as-image      = +block +handle-as-image
6489  mercy-for-cookies   = -crunch-all-cookies -<A
6490 HREF="actions-file.html#SESSION-COOKIES-ONLY"
6491 >session-cookies-only</A
6492 > -<A
6493 HREF="actions-file.html#FILTER-CONTENT-COOKIES"
6494 >filter{content-cookies}</A
6495 >
6496
6497  # These aliases define combinations of actions
6498  # that are useful for certain types of sites:
6499  #
6500  fragile     = -<A
6501 HREF="actions-file.html#BLOCK"
6502 >block</A
6503 > -<A
6504 HREF="actions-file.html#FILTER"
6505 >filter</A
6506 > -crunch-all-cookies -<A
6507 HREF="actions-file.html#FAST-REDIRECTS"
6508 >fast-redirects</A
6509 > -<A
6510 HREF="actions-file.html#HIDE-REFERER"
6511 >hide-referrer</A
6512 > -<A
6513 HREF="actions-file.html#KILL-POPUPS"
6514 >kill-popups</A
6515 >
6516  shop        = -crunch-all-cookies -<A
6517 HREF="actions-file.html#FILTER-ALL-POPUPS"
6518 >filter{all-popups}</A
6519 > -<A
6520 HREF="actions-file.html#KILL-POPUPS"
6521 >kill-popups</A
6522 ></PRE
6523 ></TD
6524 ></TR
6525 ></TABLE
6526 ></P
6527 ><P
6528 > Now come the regular sections, i.e. sets of actions, accompanied
6529  by URL patterns to which they apply. Remember <SPAN
6530 CLASS="emphasis"
6531 ><I
6532 CLASS="EMPHASIS"
6533 >all actions
6534  are disabled when matching starts</I
6535 ></SPAN
6536 >, so we have to explicitly
6537  enable the ones we want.</P
6538 ><P
6539 > The first regular section is probably the most important. It has only
6540  one pattern, <SPAN
6541 CLASS="QUOTE"
6542 >"<TT
6543 CLASS="LITERAL"
6544 >/</TT
6545 >"</SPAN
6546 >, but this pattern
6547  <A
6548 HREF="actions-file.html#AF-PATTERNS"
6549 >matches all URLs</A
6550 >. Therefore, the
6551  set of actions used in this <SPAN
6552 CLASS="QUOTE"
6553 >"default"</SPAN
6554 > section <SPAN
6555 CLASS="emphasis"
6556 ><I
6557 CLASS="EMPHASIS"
6558 >will
6559  be applied to all requests as a start</I
6560 ></SPAN
6561 >. It can  be partly or
6562  wholly overridden by later matches further down this file, or in user.action,
6563  but it will still be largely responsible for your overall browsing
6564  experience.</P
6565 ><P
6566 > Again, at the start of matching, all actions are disabled, so there is
6567  no real need to disable any actions here, but we will do that nonetheless,
6568  to have a complete listing for your reference. (Remember: a <SPAN
6569 CLASS="QUOTE"
6570 >"+"</SPAN
6571 >
6572  preceding the action name enables the action, a <SPAN
6573 CLASS="QUOTE"
6574 >"-"</SPAN
6575 > disables!).
6576  Also note how this long line has been made more readable by splitting it into
6577  multiple lines with line continuation.</P
6578 ><P
6579 > <TABLE
6580 BORDER="0"
6581 BGCOLOR="#E0E0E0"
6582 WIDTH="100%"
6583 ><TR
6584 ><TD
6585 ><PRE
6586 CLASS="SCREEN"
6587 >##########################################################################
6588 # "Defaults" section:
6589 ##########################################################################
6590  { \
6591  -<A
6592 HREF="actions-file.html#ADD-HEADER"
6593 >add-header</A
6594 > \
6595  -<A
6596 HREF="actions-file.html#BLOCK"
6597 >block</A
6598 > \
6599  -<A
6600 HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
6601 >crunch-incoming-cookies</A
6602 > \
6603  -<A
6604 HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
6605 >crunch-outgoing-cookies</A
6606 > \
6607  +<A
6608 HREF="actions-file.html#DEANIMATE-GIFS"
6609 >deanimate-gifs</A
6610 > \
6611  -<A
6612 HREF="actions-file.html#DOWNGRADE-HTTP-VERSION"
6613 >downgrade-http-version</A
6614 > \
6615  +<A
6616 HREF="actions-file.html#FAST-REDIRECTS"
6617 >fast-redirects</A
6618 > \
6619  +<A
6620 HREF="actions-file.html#FILTER-JS-ANNOYANCES"
6621 >filter{js-annoyances}</A
6622 > \
6623  -<A
6624 HREF="actions-file.html#FILTER-JS-EVENTS"
6625 >filter{js-events}</A
6626 > \
6627  +<A
6628 HREF="actions-file.html#FILTER-HTML-ANNOYANCES"
6629 >filter{html-annoyances}</A
6630 > \
6631  -<A
6632 HREF="actions-file.html#FILTER-CONTENT-COOKIES"
6633 >filter{content-cookies}</A
6634 > \
6635  +<A
6636 HREF="actions-file.html#FILTER-REFRESH-TAGS"
6637 >filter{refresh-tags}</A
6638 > \
6639  +<A
6640 HREF="actions-file.html#FILTER-UNSOLICITED-POPUPS"
6641 >filter{unsolicited-popups}</A
6642 > \
6643  -<A
6644 HREF="actions-file.html#FILTER-ALL-POPUPS"
6645 >filter{all-popups}</A
6646 > \
6647  +<A
6648 HREF="actions-file.html#FILTER-IMG-REORDER"
6649 >filter{img-reorder}</A
6650 > \
6651  +<A
6652 HREF="actions-file.html#FILTER-BANNERS-BY-SIZE"
6653 >filter{banners-by-size}</A
6654 > \
6655  -<A
6656 HREF="actions-file.html#FILTER-BANNERS-BY-LINK"
6657 >filter{banners-by-link}</A
6658 > \
6659  +<A
6660 HREF="actions-file.html#FILTER-WEBBUGS"
6661 >filter{webbugs}</A
6662 > \
6663  -<A
6664 HREF="actions-file.html#FILTER-TINY-TEXTFORMS"
6665 >filter{tiny-textforms}</A
6666 > \
6667  +<A
6668 HREF="actions-file.html#FILTER-JUMPING-WINDOWS"
6669 >filter{jumping-windows}</A
6670 > \
6671  -<A
6672 HREF="actions-file.html#FILTER-FRAMESET-BORDERS"
6673 >filter{frameset-borders}</A
6674 > \
6675  -<A
6676 HREF="actions-file.html#FILTER-DEMORONIZER"
6677 >filter{demoronizer}</A
6678 > \
6679  -<A
6680 HREF="actions-file.html#FILTER-SHOCKWAVE-FLASH"
6681 >filter{shockwave-flash}</A
6682 > \
6683  -<A
6684 HREF="actions-file.html#FILTER-QUICKTIME-KIOSKMODE"
6685 >filter{quicktime-kioskmode}</A
6686 > \
6687  -<A
6688 HREF="actions-file.html#FILTER-FUN"
6689 >filter{fun}</A
6690 > \
6691  -<A
6692 HREF="actions-file.html#FILTER-CRUDE-PARENTAL"
6693 >filter{crude-parental}</A
6694 > \
6695  +<A
6696 HREF="actions-file.html#FILTER-IE-EXPLOITS"
6697 >filter{ie-exploits}</A
6698 > \     
6699  -<A
6700 HREF="actions-file.html#HANDLE-AS-IMAGE"
6701 >handle-as-image</A
6702 > \
6703  +<A
6704 HREF="actions-file.html#HIDE-FORWARDED-FOR-HEADERS"
6705 >hide-forwarded-for-headers</A
6706 > \
6707  +<A
6708 HREF="actions-file.html#HIDE-FROM-HEADER"
6709 >hide-from-header{block}</A
6710 > \
6711  +<A
6712 HREF="actions-file.html#HIDE-REFERER"
6713 >hide-referrer{forge}</A
6714 > \
6715  -<A
6716 HREF="actions-file.html#HIDE-USER-AGENT"
6717 >hide-user-agent</A
6718 > \
6719  -<A
6720 HREF="actions-file.html#KILL-POPUPS"
6721 >kill-popups</A
6722 > \
6723  -<A
6724 HREF="actions-file.html#LIMIT-CONNECT"
6725 >limit-connect</A
6726 > \
6727  +<A
6728 HREF="actions-file.html#PREVENT-COMPRESSION"
6729 >prevent-compression</A
6730 > \
6731  -<A
6732 HREF="actions-file.html#SEND-VANILLA-WAFER"
6733 >send-vanilla-wafer</A
6734 > \
6735  -<A
6736 HREF="actions-file.html#SEND-WAFER"
6737 >send-wafer</A
6738 > \
6739  +<A
6740 HREF="actions-file.html#SESSION-COOKIES-ONLY"
6741 >session-cookies-only</A
6742 > \
6743  +<A
6744 HREF="actions-file.html#SET-IMAGE-BLOCKER"
6745 >set-image-blocker{pattern}</A
6746 > \
6747  }
6748  / # forward slash will match *all* potential URL patterns.</PRE
6749 ></TD
6750 ></TR
6751 ></TABLE
6752 ></P
6753 ><P
6754 > The default behavior is now set. Note that some actions, like not hiding
6755  the user agent, are part of a <SPAN
6756 CLASS="QUOTE"
6757 >"general policy"</SPAN
6758 > that applies
6759  universally and won't get any exceptions defined later. Other choices,
6760  like not blocking (which is <SPAN
6761 CLASS="emphasis"
6762 ><I
6763 CLASS="EMPHASIS"
6764 >understandably</I
6765 ></SPAN
6766 > the
6767  default!) need exceptions, i.e. we need to specify explicitly what we
6768  want to block in later sections.</P
6769 ><P
6770 > The first of our specialized sections is concerned with <SPAN
6771 CLASS="QUOTE"
6772 >"fragile"</SPAN
6773 >
6774  sites, i.e. sites that require minimum interference, because they are either
6775  very complex or very keen on tracking you (and have mechanisms in place that
6776  make them unusable for people who avoid being tracked). We will simply use
6777  our pre-defined <TT
6778 CLASS="LITERAL"
6779 >fragile</TT
6780 > alias instead of stating the list
6781  of actions explicitly:</P
6782 ><P
6783 > <TABLE
6784 BORDER="0"
6785 BGCOLOR="#E0E0E0"
6786 WIDTH="100%"
6787 ><TR
6788 ><TD
6789 ><PRE
6790 CLASS="SCREEN"
6791 >##########################################################################
6792 # Exceptions for sites that'll break under the default action set:
6793 ##########################################################################
6794
6795 # "Fragile" Use a minimum set of actions for these sites (see alias above):
6796 #
6797 { fragile }
6798 .office.microsoft.com           # surprise, surprise!
6799 .windowsupdate.microsoft.com</PRE
6800 ></TD
6801 ></TR
6802 ></TABLE
6803 ></P
6804 ><P
6805 > Shopping sites are not as fragile, but they typically
6806  require cookies to log in, and pop-up windows for shopping
6807  carts or item details. Again, we'll use a pre-defined alias:</P
6808 ><P
6809 > <TABLE
6810 BORDER="0"
6811 BGCOLOR="#E0E0E0"
6812 WIDTH="100%"
6813 ><TR
6814 ><TD
6815 ><PRE
6816 CLASS="SCREEN"
6817 ># Shopping sites:
6818 #
6819 { shop }
6820 .quietpc.com 
6821 .worldpay.com   # for quietpc.com
6822 .jungle.com
6823 .scan.co.uk</PRE
6824 ></TD
6825 ></TR
6826 ></TABLE
6827 ></P
6828 ><P
6829 > The <TT
6830 CLASS="LITERAL"
6831 ><A
6832 HREF="actions-file.html#FAST-REDIRECTS"
6833 >fast-redirects</A
6834 ></TT
6835 >
6836  action, which we enabled per default above,  breaks some sites. So disable
6837  it for popular sites where we know it misbehaves:</P
6838 ><P
6839 > <TABLE
6840 BORDER="0"
6841 BGCOLOR="#E0E0E0"
6842 WIDTH="100%"
6843 ><TR
6844 ><TD
6845 ><PRE
6846 CLASS="SCREEN"
6847 >{ -<A
6848 HREF="actions-file.html#FAST-REDIRECTS"
6849 >fast-redirects</A
6850 > }
6851 login.yahoo.com
6852 edit.*.yahoo.com
6853 .google.com
6854 .altavista.com/.*(like|url|link):http
6855 .altavista.com/trans.*urltext=http
6856 .nytimes.com</PRE
6857 ></TD
6858 ></TR
6859 ></TABLE
6860 ></P
6861 ><P
6862 > It is important that <SPAN
6863 CLASS="APPLICATION"
6864 >Privoxy</SPAN
6865 > knows which
6866  URLs belong to images, so that <SPAN
6867 CLASS="emphasis"
6868 ><I
6869 CLASS="EMPHASIS"
6870 >if</I
6871 ></SPAN
6872 > they are to
6873  be blocked, a substitute image can be sent, rather than an HTML page.
6874  Contacting the remote site to find out is not an option, since it
6875  would destroy the loading time advantage of banner blocking, and it
6876  would feed the advertisers (in terms of money <SPAN
6877 CLASS="emphasis"
6878 ><I
6879 CLASS="EMPHASIS"
6880 >and</I
6881 ></SPAN
6882 >
6883  information). We can mark any URL as an image with the <TT
6884 CLASS="LITERAL"
6885 ><A
6886 HREF="actions-file.html#HANDLE-AS-IMAGE"
6887 >handle-as-image</A
6888 ></TT
6889 > action,
6890  and marking all URLs that end in a known image file extension is a
6891  good start:</P
6892 ><P
6893 > <TABLE
6894 BORDER="0"
6895 BGCOLOR="#E0E0E0"
6896 WIDTH="100%"
6897 ><TR
6898 ><TD
6899 ><PRE
6900 CLASS="SCREEN"
6901 >##########################################################################
6902 # Images:
6903 ##########################################################################
6904
6905 # Define which file types will be treated as images, in case they get
6906 # blocked further down this file:
6907 #
6908 { +<A
6909 HREF="actions-file.html#HANDLE-AS-IMAGE"
6910 >handle-as-image</A
6911 > }
6912 /.*\.(gif|jpe?g|png|bmp|ico)$</PRE
6913 ></TD
6914 ></TR
6915 ></TABLE
6916 ></P
6917 ><P
6918 > And then there are known banner sources. They often use scripts to
6919  generate the banners, so it won't be visible from the URL that the
6920  request is for an image. Hence we block them <SPAN
6921 CLASS="emphasis"
6922 ><I
6923 CLASS="EMPHASIS"
6924 >and</I
6925 ></SPAN
6926 >
6927  mark them as images in one go, with the help of our
6928  <TT
6929 CLASS="LITERAL"
6930 >block-as-image</TT
6931 > alias defined above. (We could of
6932  course just as well use <TT
6933 CLASS="LITERAL"
6934 >+<A
6935 HREF="actions-file.html#BLOCK"
6936 >block</A
6937 >
6938  +<A
6939 HREF="actions-file.html#HANDLE-AS-IMAGE"
6940 >handle-as-image</A
6941 ></TT
6942 > here.)
6943  Remember that the type of the replacement image is chosen by the
6944  <TT
6945 CLASS="LITERAL"
6946 ><A
6947 HREF="actions-file.html#SET-IMAGE-BLOCKER"
6948 >set-image-blocker</A
6949 ></TT
6950 >
6951  action. Since all URLs have matched the default section with its
6952  <TT
6953 CLASS="LITERAL"
6954 >+<A
6955 HREF="actions-file.html#SET-IMAGE-BLOCKER"
6956 >set-image-blocker</A
6957 >{pattern}</TT
6958 >
6959  action before, it still applies and needn't be repeated:</P
6960 ><P
6961 > <TABLE
6962 BORDER="0"
6963 BGCOLOR="#E0E0E0"
6964 WIDTH="100%"
6965 ><TR
6966 ><TD
6967 ><PRE
6968 CLASS="SCREEN"
6969 ># Known ad generators:
6970 #
6971 { block-as-image }
6972 ar.atwola.com 
6973 .ad.doubleclick.net
6974 .ad.*.doubleclick.net
6975 .a.yimg.com/(?:(?!/i/).)*$
6976 .a[0-9].yimg.com/(?:(?!/i/).)*$
6977 bs*.gsanet.com
6978 bs*.einets.com
6979 .qkimg.net</PRE
6980 ></TD
6981 ></TR
6982 ></TABLE
6983 ></P
6984 ><P
6985 > One of the most important jobs of <SPAN
6986 CLASS="APPLICATION"
6987 >Privoxy</SPAN
6988 >
6989  is to block banners. A huge bunch of them are already <SPAN
6990 CLASS="QUOTE"
6991 >"blocked"</SPAN
6992 >
6993  by the <TT
6994 CLASS="LITERAL"
6995 ><A
6996 HREF="actions-file.html#FILTER"
6997 >filter</A
6998 >{banners-by-size}</TT
6999 >
7000  action, which we enabled above, and which deletes the references to banner
7001  images from the pages while they are loaded, so the browser doesn't request
7002  them anymore, and hence they don't need to be blocked here. But this naturally
7003  doesn't catch all banners, and some people choose not to use filters, so we
7004  need a comprehensive list of patterns for banner URLs here, and apply the
7005  <TT
7006 CLASS="LITERAL"
7007 ><A
7008 HREF="actions-file.html#BLOCK"
7009 >block</A
7010 ></TT
7011 > action to them.</P
7012 ><P
7013 > First comes a bunch of generic patterns, which do most of the work, by
7014  matching typical domain and path name components of banners. Then comes
7015  a list of individual patterns for specific sites, which is omitted here
7016  to keep the example short:</P
7017 ><P
7018 > <TABLE
7019 BORDER="0"
7020 BGCOLOR="#E0E0E0"
7021 WIDTH="100%"
7022 ><TR
7023 ><TD
7024 ><PRE
7025 CLASS="SCREEN"
7026 >##########################################################################
7027 # Block these fine banners:
7028 ##########################################################################
7029 { <A
7030 HREF="actions-file.html#BLOCK"
7031 >+block</A
7032 > }
7033
7034 # Generic patterns:
7035
7036 ad*.
7037 .*ads.
7038 banner?.
7039 count*.
7040 /.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
7041 /(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/
7042
7043 # Site-specific patterns (abbreviated):
7044 #
7045 .hitbox.com</PRE
7046 ></TD
7047 ></TR
7048 ></TABLE
7049 ></P
7050 ><P
7051 > You wouldn't believe how many advertisers actually call their banner
7052  servers ads.<TT
7053 CLASS="REPLACEABLE"
7054 ><I
7055 >company</I
7056 ></TT
7057 >.com, or call the directory
7058  in which the banners are stored simply <SPAN
7059 CLASS="QUOTE"
7060 >"banners"</SPAN
7061 >. So the above
7062  generic patterns are surprisingly effective.</P
7063 ><P
7064 > But being very generic, they necessarily also catch URLs that we don't want
7065  to block. The pattern <TT
7066 CLASS="LITERAL"
7067 >.*ads.</TT
7068 > e.g. catches 
7069  <SPAN
7070 CLASS="QUOTE"
7071 >"nasty-<SPAN
7072 CLASS="emphasis"
7073 ><I
7074 CLASS="EMPHASIS"
7075 >ads</I
7076 ></SPAN
7077 >.nasty-corp.com"</SPAN
7078 > as intended,
7079  but also <SPAN
7080 CLASS="QUOTE"
7081 >"downlo<SPAN
7082 CLASS="emphasis"
7083 ><I
7084 CLASS="EMPHASIS"
7085 >ads</I
7086 ></SPAN
7087 >.sourcefroge.net"</SPAN
7088 > or
7089  <SPAN
7090 CLASS="QUOTE"
7091 >"<SPAN
7092 CLASS="emphasis"
7093 ><I
7094 CLASS="EMPHASIS"
7095 >ads</I
7096 ></SPAN
7097 >l.some-provider.net."</SPAN
7098 > So here come some
7099  well-known exceptions to the <TT
7100 CLASS="LITERAL"
7101 >+<A
7102 HREF="actions-file.html#BLOCK"
7103 >block</A
7104 ></TT
7105 >
7106  section above.</P
7107 ><P
7108 > Note that these are exceptions to exceptions from the default! Consider the URL
7109  <SPAN
7110 CLASS="QUOTE"
7111 >"downloads.sourcefroge.net"</SPAN
7112 >: Initially, all actions are deactivated,
7113  so it wouldn't get blocked. Then comes the defaults section, which matches the
7114  URL, but just deactivates the <TT
7115 CLASS="LITERAL"
7116 ><A
7117 HREF="actions-file.html#BLOCK"
7118 >block</A
7119 ></TT
7120 >
7121  action once again. Then it matches <TT
7122 CLASS="LITERAL"
7123 >.*ads.</TT
7124 >, an exception to the
7125  general non-blocking policy, and suddenly
7126  <TT
7127 CLASS="LITERAL"
7128 ><A
7129 HREF="actions-file.html#BLOCK"
7130 >+block</A
7131 ></TT
7132 > applies. And now, it'll match
7133  <TT
7134 CLASS="LITERAL"
7135 >.*loads.</TT
7136 >, where <TT
7137 CLASS="LITERAL"
7138 ><A
7139 HREF="actions-file.html#BLOCK"
7140 >-block</A
7141 ></TT
7142 >
7143  applies, so (unless it matches <SPAN
7144 CLASS="emphasis"
7145 ><I
7146 CLASS="EMPHASIS"
7147 >again</I
7148 ></SPAN
7149 > further down) it ends up
7150  with no <TT
7151 CLASS="LITERAL"
7152 ><A
7153 HREF="actions-file.html#BLOCK"
7154 >block</A
7155 ></TT
7156 > action applying.</P
7157 ><P
7158 > <TABLE
7159 BORDER="0"
7160 BGCOLOR="#E0E0E0"
7161 WIDTH="100%"
7162 ><TR
7163 ><TD
7164 ><PRE
7165 CLASS="SCREEN"
7166 >##########################################################################
7167 # Save some innocent victims of the above generic block patterns:
7168 ##########################################################################
7169
7170 # By domain:
7171
7172 { -<A
7173 HREF="actions-file.html#BLOCK"
7174 >block</A
7175 > }
7176 adv[io]*.  # (for advogato.org and advice.*)
7177 adsl.      # (has nothing to do with ads)
7178 ad[ud]*.   # (adult.* and add.*)
7179 .edu       # (universities don't host banners (yet!))
7180 .*loads.   # (downloads, uploads etc)
7181
7182 # By path:
7183 #
7184 /.*loads/
7185
7186 # Site-specific:
7187 #
7188 www.globalintersec.com/adv # (adv = advanced)
7189 www.ugu.com/sui/ugu/adv</PRE
7190 ></TD
7191 ></TR
7192 ></TABLE
7193 ></P
7194 ><P
7195 > Filtering source code can have nasty side effects,
7196  so make an exception for our friends at sourceforge.net,
7197  and all paths with <SPAN
7198 CLASS="QUOTE"
7199 >"cvs"</SPAN
7200 > in them. Note that
7201  <TT
7202 CLASS="LITERAL"
7203 >-<A
7204 HREF="actions-file.html#FILTER"
7205 >filter</A
7206 ></TT
7207 >
7208  disables <SPAN
7209 CLASS="emphasis"
7210 ><I
7211 CLASS="EMPHASIS"
7212 >all</I
7213 ></SPAN
7214 > filters in one fell swoop!</P
7215 ><P
7216 > <TABLE
7217 BORDER="0"
7218 BGCOLOR="#E0E0E0"
7219 WIDTH="100%"
7220 ><TR
7221 ><TD
7222 ><PRE
7223 CLASS="SCREEN"
7224 ># Don't filter code!
7225 #
7226 { -<A
7227 HREF="actions-file.html#FILTER"
7228 >filter</A
7229 > }
7230 /.*cvs
7231 .sourceforge.net</PRE
7232 ></TD
7233 ></TR
7234 ></TABLE
7235 ></P
7236 ><P
7237 > The actual <TT
7238 CLASS="FILENAME"
7239 >default.action</TT
7240 > is of course more
7241  comprehensive, but we hope this example made clear how it works.</P
7242 ></DIV
7243 ><DIV
7244 CLASS="SECT3"
7245 ><H3
7246 CLASS="SECT3"
7247 ><A
7248 NAME="AEN3774"
7249 ></A
7250 >8.7.2. user.action</H3
7251 ><P
7252 > So far we are painting with a broad brush by setting general policies,
7253  which would be a reasonable starting point for many people. Now, 
7254  you might want to be more specific and have customized rules that
7255  are more suitable to your personal habits and preferences. These would
7256  be for narrowly defined situations like your ISP or your bank, and should
7257  be placed in <TT
7258 CLASS="FILENAME"
7259 >user.action</TT
7260 >, which is parsed after all other 
7261  actions files and hence has the last word, over-riding any previously
7262  defined actions. <TT
7263 CLASS="FILENAME"
7264 >user.action</TT
7265 > is also a 
7266  <SPAN
7267 CLASS="emphasis"
7268 ><I
7269 CLASS="EMPHASIS"
7270 >safe</I
7271 ></SPAN
7272 > place for your personal settings, since
7273  <TT
7274 CLASS="FILENAME"
7275 >default.action</TT
7276 > is actively maintained by the
7277  <SPAN
7278 CLASS="APPLICATION"
7279 >Privoxy</SPAN
7280 > developers and you'll probably want
7281  to install updated versions from time to time.</P
7282 ><P
7283 > So let's look at a few examples of things that one might typically do in
7284  <TT
7285 CLASS="FILENAME"
7286 >user.action</TT
7287 >: </P
7288 ><P
7289 > <TABLE
7290 BORDER="0"
7291 BGCOLOR="#E0E0E0"
7292 WIDTH="100%"
7293 ><TR
7294 ><TD
7295 ><PRE
7296 CLASS="SCREEN"
7297 ># My user.action file. &#60;fred@foobar.com&#62;</PRE
7298 ></TD
7299 ></TR
7300 ></TABLE
7301 ></P
7302 ><P
7303 > As <A
7304 HREF="actions-file.html#ALIASES"
7305 >aliases</A
7306 > are local to the actions
7307  file that they are defined in, you can't use the ones from
7308  <TT
7309 CLASS="FILENAME"
7310 >default.action</TT
7311 >, unless you repeat them here:</P
7312 ><P
7313 > <TABLE
7314 BORDER="0"
7315 BGCOLOR="#E0E0E0"
7316 WIDTH="100%"
7317 ><TR
7318 ><TD
7319 ><PRE
7320 CLASS="SCREEN"
7321 ># Aliases are local to the file they are defined in.
7322 # (Re-)define aliases for this file:
7323 #
7324 {{alias}}
7325
7326 # These aliases just save typing later, and the alias names should 
7327 # be self explanatory.
7328 #
7329 +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
7330 -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
7331  allow-all-cookies  = -crunch-all-cookies -session-cookies-only
7332  allow-popups       = -filter{all-popups} -kill-popups
7333 +block-as-image     = +block +handle-as-image
7334 -block-as-image     = -block
7335
7336 # These aliases define combinations of actions that are useful for
7337 # certain types of sites:
7338 #
7339 fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referrer -kill-popups
7340 shop        = -crunch-all-cookies allow-popups
7341
7342 # Allow ads for selected useful free sites:
7343 #
7344 allow-ads   = -block -filter{banners-by-size} -filter{banners-by-link}</PRE
7345 ></TD
7346 ></TR
7347 ></TABLE
7348 >
7349
7350  </P
7351 ><P
7352 > Say you have accounts on some sites that you visit regularly, and
7353  you don't want to have to log in manually each time. So you'd like
7354  to allow persistent cookies for these sites. The
7355  <TT
7356 CLASS="LITERAL"
7357 >allow-all-cookies</TT
7358 > alias defined above does exactly
7359  that, i.e. it disables crunching of cookies in any direction, and the 
7360  processing of cookies to make them only temporary.</P
7361 ><P
7362 > <TABLE
7363 BORDER="0"
7364 BGCOLOR="#E0E0E0"
7365 WIDTH="100%"
7366 ><TR
7367 ><TD
7368 ><PRE
7369 CLASS="SCREEN"
7370 >{ allow-all-cookies }
7371 sourceforge.net
7372 sunsolve.sun.com
7373 .slashdot.org
7374 .yahoo.com
7375 .msdn.microsoft.com
7376 .redhat.com</PRE
7377 ></TD
7378 ></TR
7379 ></TABLE
7380 ></P
7381 ><P
7382 > Your bank is allergic to some filter, but you don't know which, so you disable them all:</P
7383 ><P
7384 > <TABLE
7385 BORDER="0"
7386 BGCOLOR="#E0E0E0"
7387 WIDTH="100%"
7388 ><TR
7389 ><TD
7390 ><PRE
7391 CLASS="SCREEN"
7392 >{ -<A
7393 HREF="actions-file.html#FILTER"
7394 >filter</A
7395 > }
7396 .your-home-banking-site.com</PRE
7397 ></TD
7398 ></TR
7399 ></TABLE
7400 ></P
7401 ><P
7402 > Some file types you may not want to filter for various reasons:</P
7403 ><P
7404 > <TABLE
7405 BORDER="0"
7406 BGCOLOR="#E0E0E0"
7407 WIDTH="100%"
7408 ><TR
7409 ><TD
7410 ><PRE
7411 CLASS="SCREEN"
7412 ># Technical documentation is likely to contain strings that might
7413 # erroneously get altered by the JavaScript-oriented filters:
7414 #
7415 .tldp.org
7416 /(.*/)?selfhtml/
7417
7418 # And this stupid host sends streaming video with a wrong MIME type,
7419 # so that Privoxy thinks it is getting HTML and starts filtering:
7420 #
7421 stupid-server.example.com/</PRE
7422 ></TD
7423 ></TR
7424 ></TABLE
7425 ></P
7426 ><P
7427 > Example of a simple <A
7428 HREF="actions-file.html#BLOCK"
7429 >block</A
7430 > action. Say you've
7431  seen an ad on your favourite page on example.com that you want to get rid of.
7432  You have right-clicked the image, selected <SPAN
7433 CLASS="QUOTE"
7434 >"copy image location"</SPAN
7435 >
7436  and pasted the URL below while removing the leading http://, into a 
7437  <TT
7438 CLASS="LITERAL"
7439 >{ +block }</TT
7440 > section. Note that <TT
7441 CLASS="LITERAL"
7442 >{ +handle-as-image
7443  }</TT
7444 > need not be specified, since all URLs ending in
7445  <TT
7446 CLASS="LITERAL"
7447 >.gif</TT
7448 > will be tagged as images by the general rules as set
7449  in default.action anyway:</P
7450 ><P
7451 > <TABLE
7452 BORDER="0"
7453 BGCOLOR="#E0E0E0"
7454 WIDTH="100%"
7455 ><TR
7456 ><TD
7457 ><PRE
7458 CLASS="SCREEN"
7459 >{ +<A
7460 HREF="actions-file.html#BLOCK"
7461 >block</A
7462 > }
7463 www.example.com/nasty-ads/sponsor.gif
7464 another.popular.site.net/more/junk/here/</PRE
7465 ></TD
7466 ></TR
7467 ></TABLE
7468 ></P
7469 ><P
7470 > The URLs of dynamically generated banners, especially from large banner
7471  farms, often don't use the well-known image file name extensions, which
7472  makes it impossible for <SPAN
7473 CLASS="APPLICATION"
7474 >Privoxy</SPAN
7475 > to guess
7476  the file type just by looking at the URL. 
7477  You can use the <TT
7478 CLASS="LITERAL"
7479 >+block-as-image</TT
7480 > alias defined above for
7481  these cases.
7482  Note that objects which match this rule but then turn out NOT to be an
7483  image are typically rendered as a <SPAN
7484 CLASS="QUOTE"
7485 >"broken image"</SPAN
7486 > icon by the
7487  browser. Use cautiously.</P
7488 ><P
7489 > <TABLE
7490 BORDER="0"
7491 BGCOLOR="#E0E0E0"
7492 WIDTH="100%"
7493 ><TR
7494 ><TD
7495 ><PRE
7496 CLASS="SCREEN"
7497 >{ +block-as-image }
7498 .doubleclick.net
7499 /Realmedia/ads/
7500 ar.atwola.com/</PRE
7501 ></TD
7502 ></TR
7503 ></TABLE
7504 ></P
7505 ><P
7506 > Now you noticed that the default configuration breaks Forbes Magazine,
7507  but you were too lazy to find out which action is the culprit, and you
7508  were again too lazy to give <A
7509 HREF="contact.html"
7510 >feedback</A
7511 >, so
7512  you just used the <TT
7513 CLASS="LITERAL"
7514 >fragile</TT
7515 > alias on the site, and
7516  -- <SPAN
7517 CLASS="emphasis"
7518 ><I
7519 CLASS="EMPHASIS"
7520 >whoa!</I
7521 ></SPAN
7522 > -- it worked. The <TT
7523 CLASS="LITERAL"
7524 >fragile</TT
7525 >
7526  aliases disables those actions that are most likely to break a site. Also,
7527  good for testing purposes to see if it is <SPAN
7528 CLASS="APPLICATION"
7529 >Privoxy</SPAN
7530 >
7531  that is causing the problem or not.</P
7532 ><P
7533 ><TABLE
7534 BORDER="0"
7535 BGCOLOR="#E0E0E0"
7536 WIDTH="100%"
7537 ><TR
7538 ><TD
7539 ><PRE
7540 CLASS="SCREEN"
7541 >{ fragile }
7542 .forbes.com</PRE
7543 ></TD
7544 ></TR
7545 ></TABLE
7546 ></P
7547 ><P
7548 > You like the <SPAN
7549 CLASS="QUOTE"
7550 >"fun"</SPAN
7551 > text replacements in <TT
7552 CLASS="FILENAME"
7553 >default.filter</TT
7554 >,
7555  but it is disabled in the distributed actions file. (My colleagues on the team just
7556  don't have a sense of humour, that's why! ;-). So you'd like to turn it on in your private,
7557  update-safe config, once and for all:</P
7558 ><P
7559 ><TABLE
7560 BORDER="0"
7561 BGCOLOR="#E0E0E0"
7562 WIDTH="100%"
7563 ><TR
7564 ><TD
7565 ><PRE
7566 CLASS="SCREEN"
7567 >{ +<A
7568 HREF="actions-file.html#FILTER-FUN"
7569 >filter{fun}</A
7570 > }
7571 / # For ALL sites!</PRE
7572 ></TD
7573 ></TR
7574 ></TABLE
7575 ></P
7576 ><P
7577 > Note that the above is not really a good idea: There are exceptions
7578  to the filters in <TT
7579 CLASS="FILENAME"
7580 >default.action</TT
7581 > for things that
7582  really shouldn't be filtered, like code on CVS-&#62;Web interfaces. Since
7583  <TT
7584 CLASS="FILENAME"
7585 >user.action</TT
7586 > has the last word, these exceptions
7587  won't be valid for the <SPAN
7588 CLASS="QUOTE"
7589 >"fun"</SPAN
7590 > filtering specified here.</P
7591 ><P
7592 > You might also worry about how your favourite free websites are
7593  funded, and find that they rely on displaying banner advertisements
7594  to survive. So you might want to specifically allow banners for those
7595  sites that you feel provide value to you:</P
7596 ><P
7597 ><TABLE
7598 BORDER="0"
7599 BGCOLOR="#E0E0E0"
7600 WIDTH="100%"
7601 ><TR
7602 ><TD
7603 ><PRE
7604 CLASS="SCREEN"
7605 >{ allow-ads }
7606 .sourceforge.net
7607 .slashdot.org
7608 .osdn.net</PRE
7609 ></TD
7610 ></TR
7611 ></TABLE
7612 >   </P
7613 ><P
7614 > Note that <TT
7615 CLASS="LITERAL"
7616 >allow-ads</TT
7617 > has been aliased to 
7618  <TT
7619 CLASS="LITERAL"
7620 >-<A
7621 HREF="actions-file.html#BLOCK"
7622 >block</A
7623 ></TT
7624 >, 
7625  <TT
7626 CLASS="LITERAL"
7627 >-<A
7628 HREF="actions-file.html#FILTER-BANNERS-BY-SIZE"
7629 >filter{banners-by-size}</A
7630 ></TT
7631 >, and 
7632  <TT
7633 CLASS="LITERAL"
7634 >-<A
7635 HREF="actions-file.html#FILTER-BANNERS-BY-LINK"
7636 >filter{banners-by-link}</A
7637 ></TT
7638 > above.</P
7639 ><P
7640 > <TT
7641 CLASS="FILENAME"
7642 >user.action</TT
7643 > is generally the best place to define
7644  exceptions and additions to the default policies of
7645  <TT
7646 CLASS="FILENAME"
7647 >default.action</TT
7648 >. Some actions are safe to have their
7649  default policies set here though. So let's set a default policy to have a
7650  <SPAN
7651 CLASS="QUOTE"
7652 >"blank"</SPAN
7653 > image as opposed to the checkerboard pattern for
7654  <SPAN
7655 CLASS="emphasis"
7656 ><I
7657 CLASS="EMPHASIS"
7658 >ALL</I
7659 ></SPAN
7660 > sites. <SPAN
7661 CLASS="QUOTE"
7662 >"/"</SPAN
7663 > of course matches all URL
7664  paths and patterns:</P
7665 ><P
7666 ><TABLE
7667 BORDER="0"
7668 BGCOLOR="#E0E0E0"
7669 WIDTH="100%"
7670 ><TR
7671 ><TD
7672 ><PRE
7673 CLASS="SCREEN"
7674 >{ +<A
7675 HREF="actions-file.html#SET-IMAGE-BLOCKER"
7676 >set-image-blocker{blank}</A
7677 > }
7678 / # ALL sites</PRE
7679 ></TD
7680 ></TR
7681 ></TABLE
7682 ></P
7683 ></DIV
7684 ></DIV
7685 ></DIV
7686 ><DIV
7687 CLASS="NAVFOOTER"
7688 ><HR
7689 ALIGN="LEFT"
7690 WIDTH="100%"><TABLE
7691 SUMMARY="Footer navigation table"
7692 WIDTH="100%"
7693 BORDER="0"
7694 CELLPADDING="0"
7695 CELLSPACING="0"
7696 ><TR
7697 ><TD
7698 WIDTH="33%"
7699 ALIGN="left"
7700 VALIGN="top"
7701 ><A
7702 HREF="config.html"
7703 ACCESSKEY="P"
7704 >Prev</A
7705 ></TD
7706 ><TD
7707 WIDTH="34%"
7708 ALIGN="center"
7709 VALIGN="top"
7710 ><A
7711 HREF="index.html"
7712 ACCESSKEY="H"
7713 >Home</A
7714 ></TD
7715 ><TD
7716 WIDTH="33%"
7717 ALIGN="right"
7718 VALIGN="top"
7719 ><A
7720 HREF="filter-file.html"
7721 ACCESSKEY="N"
7722 >Next</A
7723 ></TD
7724 ></TR
7725 ><TR
7726 ><TD
7727 WIDTH="33%"
7728 ALIGN="left"
7729 VALIGN="top"
7730 >The Main Configuration File</TD
7731 ><TD
7732 WIDTH="34%"
7733 ALIGN="center"
7734 VALIGN="top"
7735 >&nbsp;</TD
7736 ><TD
7737 WIDTH="33%"
7738 ALIGN="right"
7739 VALIGN="top"
7740 >Filter Files</TD
7741 ></TR
7742 ></TABLE
7743 ></DIV
7744 ></BODY
7745 ></HTML
7746 >