generated
[privoxy.git] / doc / webserver / user-manual / appendix.html
1 <HTML
2 ><HEAD
3 ><TITLE
4 >Appendix</TITLE
5 ><META
6 NAME="GENERATOR"
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.64
8 "><LINK
9 REL="HOME"
10 TITLE="Privoxy User Manual"
11 HREF="index.html"><LINK
12 REL="PREVIOUS"
13 TITLE="See Also"
14 HREF="seealso.html"><LINK
15 REL="STYLESHEET"
16 TYPE="text/css"
17 HREF="../p_doc.css"></HEAD
18 ><BODY
19 CLASS="SECT1"
20 BGCOLOR="#EEEEEE"
21 TEXT="#000000"
22 LINK="#0000FF"
23 VLINK="#840084"
24 ALINK="#0000FF"
25 ><DIV
26 CLASS="NAVHEADER"
27 ><TABLE
28 WIDTH="100%"
29 BORDER="0"
30 CELLPADDING="0"
31 CELLSPACING="0"
32 ><TR
33 ><TH
34 COLSPAN="3"
35 ALIGN="center"
36 >Privoxy User Manual</TH
37 ></TR
38 ><TR
39 ><TD
40 WIDTH="10%"
41 ALIGN="left"
42 VALIGN="bottom"
43 ><A
44 HREF="seealso.html"
45 >Prev</A
46 ></TD
47 ><TD
48 WIDTH="80%"
49 ALIGN="center"
50 VALIGN="bottom"
51 ></TD
52 ><TD
53 WIDTH="10%"
54 ALIGN="right"
55 VALIGN="bottom"
56 >&nbsp;</TD
57 ></TR
58 ></TABLE
59 ><HR
60 ALIGN="LEFT"
61 WIDTH="100%"></DIV
62 ><DIV
63 CLASS="SECT1"
64 ><H1
65 CLASS="SECT1"
66 ><A
67 NAME="APPENDIX"
68 >9. Appendix</A
69 ></H1
70 ><DIV
71 CLASS="SECT2"
72 ><H2
73 CLASS="SECT2"
74 ><A
75 NAME="REGEX"
76 >9.1. Regular Expressions</A
77 ></H2
78 ><P
79 > <SPAN
80 CLASS="APPLICATION"
81 >Privoxy</SPAN
82 > can use <SPAN
83 CLASS="QUOTE"
84 >"regular expressions"</SPAN
85
86  in various config files. Assuming support for <SPAN
87 CLASS="QUOTE"
88 >"pcre"</SPAN
89 > (Perl
90  Compatible Regular Expressions) is compiled in, which is the default. Such
91  configuration directives do not require regular expressions, but they can be
92  used to increase flexibility by matching a pattern with wild-cards against
93  URLs.</P
94 ><P
95 > If you are reading this, you probably don't understand what <SPAN
96 CLASS="QUOTE"
97 >"regular
98  expressions"</SPAN
99 > are, or what they can do. So this will be a very brief
100  introduction only. A full explanation would require a book ;-)</P
101 ><P
102 > <SPAN
103 CLASS="QUOTE"
104 >"Regular expressions"</SPAN
105 > is a way of matching one character
106  expression against another to see if it matches or not. One of the
107  <SPAN
108 CLASS="QUOTE"
109 >"expressions"</SPAN
110 > is a literal string of readable characters
111  (letter, numbers, etc), and the other is a complex string of literal
112  characters combined with wild-cards, and other special characters, called
113  meta-characters. The <SPAN
114 CLASS="QUOTE"
115 >"meta-characters"</SPAN
116 > have special meanings and
117  are used to build the complex pattern to be matched against. Perl Compatible
118  Regular Expressions is an enhanced form of the regular expression language
119  with backward compatibility.</P
120 ><P
121 > To make a simple analogy, we do something similar when we use wild-card
122  characters when listing files with the <B
123 CLASS="COMMAND"
124 >dir</B
125 > command in DOS. 
126  <TT
127 CLASS="LITERAL"
128 >*.*</TT
129 > matches all filenames. The <SPAN
130 CLASS="QUOTE"
131 >"special"</SPAN
132 >
133  character here is the asterisk which matches any and all characters. We can be
134  more specific and use <TT
135 CLASS="LITERAL"
136 >?</TT
137 > to match just individual
138  characters. So <SPAN
139 CLASS="QUOTE"
140 >"dir file?.text"</SPAN
141 > would match
142  <SPAN
143 CLASS="QUOTE"
144 >"file1.txt"</SPAN
145 >, <SPAN
146 CLASS="QUOTE"
147 >"file2.txt"</SPAN
148 >, etc. We are pattern
149  matching, using a similar technique to <SPAN
150 CLASS="QUOTE"
151 >"regular expressions"</SPAN
152 >!</P
153 ><P
154 > Regular expressions do essentially the same thing, but are much, much more
155  powerful. There are many more <SPAN
156 CLASS="QUOTE"
157 >"special characters"</SPAN
158 > and ways of 
159  building complex patterns however. Let's look at a few of the common ones,
160  and then some examples:</P
161 ><P
162 ><P
163 ></P
164 ><TABLE
165 BORDER="0"
166 ><TBODY
167 ><TR
168 ><TD
169 >  <I
170 CLASS="EMPHASIS"
171 >.</I
172 > - Matches any single character, e.g. <SPAN
173 CLASS="QUOTE"
174 >"a"</SPAN
175 >,
176   <SPAN
177 CLASS="QUOTE"
178 >"A"</SPAN
179 >, <SPAN
180 CLASS="QUOTE"
181 >"4"</SPAN
182 >, <SPAN
183 CLASS="QUOTE"
184 >":"</SPAN
185 >, or <SPAN
186 CLASS="QUOTE"
187 >"@"</SPAN
188 >.
189  </TD
190 ></TR
191 ></TBODY
192 ></TABLE
193 ><P
194 ></P
195 ></P
196 ><P
197 ><P
198 ></P
199 ><TABLE
200 BORDER="0"
201 ><TBODY
202 ><TR
203 ><TD
204 >  <I
205 CLASS="EMPHASIS"
206 >?</I
207 > - The preceding character or expression is matched ZERO or ONE
208   times. Either/or.
209  </TD
210 ></TR
211 ></TBODY
212 ></TABLE
213 ><P
214 ></P
215 ></P
216 ><P
217 ><P
218 ></P
219 ><TABLE
220 BORDER="0"
221 ><TBODY
222 ><TR
223 ><TD
224 >  <I
225 CLASS="EMPHASIS"
226 >+</I
227 > - The preceding character or expression is matched ONE or MORE
228   times.
229  </TD
230 ></TR
231 ></TBODY
232 ></TABLE
233 ><P
234 ></P
235 ></P
236 ><P
237 ><P
238 ></P
239 ><TABLE
240 BORDER="0"
241 ><TBODY
242 ><TR
243 ><TD
244 >  <I
245 CLASS="EMPHASIS"
246 >*</I
247 > - The preceding character or expression is matched ZERO or MORE
248   times.
249  </TD
250 ></TR
251 ></TBODY
252 ></TABLE
253 ><P
254 ></P
255 ></P
256 ><P
257 ><P
258 ></P
259 ><TABLE
260 BORDER="0"
261 ><TBODY
262 ><TR
263 ><TD
264 >  <I
265 CLASS="EMPHASIS"
266 >\</I
267 > - The <SPAN
268 CLASS="QUOTE"
269 >"escape"</SPAN
270 > character denotes that
271   the following character should be taken literally. This is used where one of the 
272   special characters (e.g. <SPAN
273 CLASS="QUOTE"
274 >"."</SPAN
275 >) needs to be taken literally and
276   not as a special meta-character. Example: <SPAN
277 CLASS="QUOTE"
278 >"example\.com"</SPAN
279 >, makes 
280   sure the period is recognized only as a period (and not expanded to its 
281   metacharacter meaning of any single character).
282  </TD
283 ></TR
284 ></TBODY
285 ></TABLE
286 ><P
287 ></P
288 ></P
289 ><P
290 ><P
291 ></P
292 ><TABLE
293 BORDER="0"
294 ><TBODY
295 ><TR
296 ><TD
297 >  <I
298 CLASS="EMPHASIS"
299 >[]</I
300 > - Characters enclosed in brackets will be matched if
301   any of the enclosed characters are encountered. For instance, <SPAN
302 CLASS="QUOTE"
303 >"[0-9]"</SPAN
304 >
305   matches any numeric digit (zero through nine). As an example, we can combine 
306   this with <SPAN
307 CLASS="QUOTE"
308 >"+"</SPAN
309 > to match any digit one of more times: <SPAN
310 CLASS="QUOTE"
311 >"[0-9]+"</SPAN
312 >.
313  </TD
314 ></TR
315 ></TBODY
316 ></TABLE
317 ><P
318 ></P
319 ></P
320 ><P
321 ><P
322 ></P
323 ><TABLE
324 BORDER="0"
325 ><TBODY
326 ><TR
327 ><TD
328 >  <I
329 CLASS="EMPHASIS"
330 >()</I
331 > - parentheses are used to group a sub-expression,
332   or multiple sub-expressions.
333  </TD
334 ></TR
335 ></TBODY
336 ></TABLE
337 ><P
338 ></P
339 ></P
340 ><P
341 ><P
342 ></P
343 ><TABLE
344 BORDER="0"
345 ><TBODY
346 ><TR
347 ><TD
348 >  <I
349 CLASS="EMPHASIS"
350 >|</I
351 > - The <SPAN
352 CLASS="QUOTE"
353 >"bar"</SPAN
354 > character works like an
355   <SPAN
356 CLASS="QUOTE"
357 >"or"</SPAN
358 > conditional statement. A match is successful if the
359   sub-expression on either side of <SPAN
360 CLASS="QUOTE"
361 >"|"</SPAN
362 > matches. As an example:
363   <SPAN
364 CLASS="QUOTE"
365 >"/(this|that) example/"</SPAN
366 > uses grouping and the bar character 
367   and would match either <SPAN
368 CLASS="QUOTE"
369 >"this example"</SPAN
370 > or <SPAN
371 CLASS="QUOTE"
372 >"that
373   example"</SPAN
374 >, and nothing else.
375  </TD
376 ></TR
377 ></TBODY
378 ></TABLE
379 ><P
380 ></P
381 ></P
382 ><P
383 ><P
384 ></P
385 ><TABLE
386 BORDER="0"
387 ><TBODY
388 ><TR
389 ><TD
390 >  <I
391 CLASS="EMPHASIS"
392 >s/string1/string2/g</I
393 > - This is used to rewrite strings of text. 
394   <SPAN
395 CLASS="QUOTE"
396 >"string1"</SPAN
397 > is replaced by <SPAN
398 CLASS="QUOTE"
399 >"string2"</SPAN
400 > in this
401   example. There must of course be a match on <SPAN
402 CLASS="QUOTE"
403 >"string1"</SPAN
404 > first.
405  </TD
406 ></TR
407 ></TBODY
408 ></TABLE
409 ><P
410 ></P
411 ></P
412 ><P
413 > These are just some of the ones you are likely to use when matching URLs with 
414  <SPAN
415 CLASS="APPLICATION"
416 >Privoxy</SPAN
417 >, and is a long way from a definitive
418  list. This is enough to get us started with a few simple examples which may
419  be more illuminating:</P
420 ><P
421 > <I
422 CLASS="EMPHASIS"
423 ><TT
424 CLASS="LITERAL"
425 >/.*/banners/.*</TT
426 ></I
427 > - A  simple example
428  that uses the common combination of <SPAN
429 CLASS="QUOTE"
430 >"."</SPAN
431 > and <SPAN
432 CLASS="QUOTE"
433 >"*"</SPAN
434 > to 
435  denote any character, zero or more times. In other words, any string at all.
436  So we start with a literal forward slash, then our regular expression pattern 
437  (<SPAN
438 CLASS="QUOTE"
439 >".*"</SPAN
440 >) another literal forward slash, the string
441  <SPAN
442 CLASS="QUOTE"
443 >"banners"</SPAN
444 >, another forward slash, and lastly another
445  <SPAN
446 CLASS="QUOTE"
447 >".*"</SPAN
448 >. We are building 
449  a directory path here. This will match any file with the path that has a
450  directory named <SPAN
451 CLASS="QUOTE"
452 >"banners"</SPAN
453 > in it. The <SPAN
454 CLASS="QUOTE"
455 >".*"</SPAN
456 > matches
457  any characters, and this could conceivably be more forward slashes, so it
458  might expand into a much longer looking path. For example, this could match:
459  <SPAN
460 CLASS="QUOTE"
461 >"/eye/hate/spammers/banners/annoy_me_please.gif"</SPAN
462 >, or just
463  <SPAN
464 CLASS="QUOTE"
465 >"/banners/annoying.html"</SPAN
466 >, or almost an infinite number of other
467  possible combinations, just so it has <SPAN
468 CLASS="QUOTE"
469 >"banners"</SPAN
470 > in the path
471  somewhere.</P
472 ><P
473 > A now something a little more complex:</P
474 ><P
475 > <I
476 CLASS="EMPHASIS"
477 ><TT
478 CLASS="LITERAL"
479 >/.*/adv((er)?ts?|ertis(ing|ements?))?/</TT
480 ></I
481 > - 
482  We have several literal forward slashes again (<SPAN
483 CLASS="QUOTE"
484 >"/"</SPAN
485 >), so we are
486  building another expression that is a file path statement. We have another 
487  <SPAN
488 CLASS="QUOTE"
489 >".*"</SPAN
490 >, so we are matching against any conceivable sub-path, just so
491  it matches our expression. The only true literal that <I
492 CLASS="EMPHASIS"
493 >must
494  match</I
495 > our pattern is <SPAN
496 CLASS="APPLICATION"
497 >adv</SPAN
498 >, together with
499  the forward slashes. What comes after the <SPAN
500 CLASS="QUOTE"
501 >"adv"</SPAN
502 > string is the
503  interesting part. </P
504 ><P
505 > Remember the <SPAN
506 CLASS="QUOTE"
507 >"?"</SPAN
508 > means the preceding expression (either a
509  literal character or anything grouped with <SPAN
510 CLASS="QUOTE"
511 >"(...)"</SPAN
512 > in this case)
513  can exist or not, since this means either zero or one match. So
514  <SPAN
515 CLASS="QUOTE"
516 >"((er)?ts?|ertis(ing|ements?))"</SPAN
517 > is optional, as are the
518  individual sub-expressions: <SPAN
519 CLASS="QUOTE"
520 >"(er)"</SPAN
521 >,
522  <SPAN
523 CLASS="QUOTE"
524 >"(ing|ements?)"</SPAN
525 >, and the <SPAN
526 CLASS="QUOTE"
527 >"s"</SPAN
528 >. The <SPAN
529 CLASS="QUOTE"
530 >"|"</SPAN
531 >
532  means <SPAN
533 CLASS="QUOTE"
534 >"or"</SPAN
535 >. We have two of those. For instance, 
536  <SPAN
537 CLASS="QUOTE"
538 >"(ing|ements?)"</SPAN
539 >, can expand to match either <SPAN
540 CLASS="QUOTE"
541 >"ing"</SPAN
542
543  <I
544 CLASS="EMPHASIS"
545 >OR</I
546 > <SPAN
547 CLASS="QUOTE"
548 >"ements?"</SPAN
549 >. What is being done here, is an
550  attempt at matching as many variations of <SPAN
551 CLASS="QUOTE"
552 >"advertisement"</SPAN
553 >, and 
554  similar, as possible. So this would expand to match just <SPAN
555 CLASS="QUOTE"
556 >"adv"</SPAN
557 >,
558  or <SPAN
559 CLASS="QUOTE"
560 >"advert"</SPAN
561 >, or <SPAN
562 CLASS="QUOTE"
563 >"adverts"</SPAN
564 >, or
565  <SPAN
566 CLASS="QUOTE"
567 >"advertising"</SPAN
568 >, or <SPAN
569 CLASS="QUOTE"
570 >"advertisement"</SPAN
571 >, or
572  <SPAN
573 CLASS="QUOTE"
574 >"advertisements"</SPAN
575 >. You get the idea. But it would not match 
576  <SPAN
577 CLASS="QUOTE"
578 >"advertizements"</SPAN
579 > (with a <SPAN
580 CLASS="QUOTE"
581 >"z"</SPAN
582 >). We could fix that by
583  changing our regular expression to: 
584  <SPAN
585 CLASS="QUOTE"
586 >"/.*/adv((er)?ts?|erti(s|z)(ing|ements?))?/"</SPAN
587 >, which would then match
588  either spelling.</P
589 ><P
590 > <I
591 CLASS="EMPHASIS"
592 ><TT
593 CLASS="LITERAL"
594 >/.*/advert[0-9]+\.(gif|jpe?g)</TT
595 ></I
596 > - Again 
597  another path statement with forward slashes. Anything in the square brackets 
598  <SPAN
599 CLASS="QUOTE"
600 >"[]"</SPAN
601 > can be matched. This is using <SPAN
602 CLASS="QUOTE"
603 >"0-9"</SPAN
604 > as a
605  shorthand expression to mean any digit one through nine. It is the same as
606  saying <SPAN
607 CLASS="QUOTE"
608 >"0123456789"</SPAN
609 >. So any digit matches. The <SPAN
610 CLASS="QUOTE"
611 >"+"</SPAN
612 >
613  means one or more of the preceding expression must be included. The preceding 
614  expression here is what is in the square brackets -- in this case, any digit 
615  one through nine. Then, at the end, we have a grouping: <SPAN
616 CLASS="QUOTE"
617 >"(gif|jpe?g)"</SPAN
618 >. 
619  This includes a <SPAN
620 CLASS="QUOTE"
621 >"|"</SPAN
622 >, so this needs to match the expression on
623  either side of that bar character also. A simple <SPAN
624 CLASS="QUOTE"
625 >"gif"</SPAN
626 > on one side, and the other
627  side will in turn match either <SPAN
628 CLASS="QUOTE"
629 >"jpeg"</SPAN
630 > or <SPAN
631 CLASS="QUOTE"
632 >"jpg"</SPAN
633 >,
634  since the <SPAN
635 CLASS="QUOTE"
636 >"?"</SPAN
637 > means the letter <SPAN
638 CLASS="QUOTE"
639 >"e"</SPAN
640 > is optional and
641  can be matched once or not at all. So we are building an expression here to
642  match image GIF or JPEG type image file. It must include the literal
643  string <SPAN
644 CLASS="QUOTE"
645 >"advert"</SPAN
646 >, then one or more digits, and a <SPAN
647 CLASS="QUOTE"
648 >"."</SPAN
649 >
650  (which is now a literal, and not a special character, since it is escaped
651  with <SPAN
652 CLASS="QUOTE"
653 >"\"</SPAN
654 >), and lastly either <SPAN
655 CLASS="QUOTE"
656 >"gif"</SPAN
657 >, or
658  <SPAN
659 CLASS="QUOTE"
660 >"jpeg"</SPAN
661 >, or <SPAN
662 CLASS="QUOTE"
663 >"jpg"</SPAN
664 >. Some possible matches would
665  include: <SPAN
666 CLASS="QUOTE"
667 >"//advert1.jpg"</SPAN
668 >,
669  <SPAN
670 CLASS="QUOTE"
671 >"/nasty/ads/advert1234.gif"</SPAN
672 >,
673  <SPAN
674 CLASS="QUOTE"
675 >"/banners/from/hell/advert99.jpg"</SPAN
676 >. It would not match
677  <SPAN
678 CLASS="QUOTE"
679 >"advert1.gif"</SPAN
680 > (no leading slash), or
681  <SPAN
682 CLASS="QUOTE"
683 >"/adverts232.jpg"</SPAN
684 > (the expression does not include an
685  <SPAN
686 CLASS="QUOTE"
687 >"s"</SPAN
688 >), or <SPAN
689 CLASS="QUOTE"
690 >"/advert1.jsp"</SPAN
691 > (<SPAN
692 CLASS="QUOTE"
693 >"jsp"</SPAN
694 > is not
695  in the expression anywhere).</P
696 ><P
697 > <I
698 CLASS="EMPHASIS"
699 ><TT
700 CLASS="LITERAL"
701 >s/microsoft(?!.com)/MicroSuck/i</TT
702 ></I
703 > - This is 
704  a substitution. <SPAN
705 CLASS="QUOTE"
706 >"MicroSuck"</SPAN
707 > will replace any occurrence of 
708  <SPAN
709 CLASS="QUOTE"
710 >"microsoft"</SPAN
711 >.  The <SPAN
712 CLASS="QUOTE"
713 >"i"</SPAN
714 > at the end of the expression
715  means ignore case. The <SPAN
716 CLASS="QUOTE"
717 >"(?!.com)"</SPAN
718 > means 
719  the match should fail if <SPAN
720 CLASS="QUOTE"
721 >"microsoft"</SPAN
722 > is followed by
723  <SPAN
724 CLASS="QUOTE"
725 >".com"</SPAN
726 >. In other words, this acts like a <SPAN
727 CLASS="QUOTE"
728 >"NOT"</SPAN
729 >
730  modifier. In case this is a hyperlink, we don't want to break it ;-).</P
731 ><P
732 > We are barely scratching the surface of regular expressions here so that you
733  can understand the default <SPAN
734 CLASS="APPLICATION"
735 >Privoxy</SPAN
736 >
737  configuration files, and maybe use this knowledge to customize your own
738  installation. There is much, much more that can be done with regular
739  expressions. Now that you know enough to get started, you can learn more on
740  your own :/</P
741 ><P
742 > More reading on Perl Compatible Regular expressions: 
743  <A
744 HREF="http://www.perldoc.com/perl5.6/pod/perlre.html"
745 TARGET="_top"
746 >http://www.perldoc.com/perl5.6/pod/perlre.html</A
747 ></P
748 ></DIV
749 ><DIV
750 CLASS="SECT2"
751 ><H2
752 CLASS="SECT2"
753 ><A
754 NAME="AEN2452"
755 >9.2. <SPAN
756 CLASS="APPLICATION"
757 >Privoxy</SPAN
758 >'s Internal Pages</A
759 ></H2
760 ><P
761 > Since <SPAN
762 CLASS="APPLICATION"
763 >Privoxy</SPAN
764 > proxies each requested 
765  web page, it is easy for <SPAN
766 CLASS="APPLICATION"
767 >Privoxy</SPAN
768 > to 
769  trap certain special URLs. In this way, we can talk directly to
770  <SPAN
771 CLASS="APPLICATION"
772 >Privoxy</SPAN
773 >, and see how it is 
774  configured, see how our rules are being applied, change these 
775  rules and other configuration options, and even turn
776  <SPAN
777 CLASS="APPLICATION"
778 >Privoxy's</SPAN
779 > filtering off, all with 
780  a web browser.&#13;</P
781 ><P
782 > The URLs listed below are the special ones that allow direct access 
783  to <SPAN
784 CLASS="APPLICATION"
785 >Privoxy</SPAN
786 >. Of course,
787  <SPAN
788 CLASS="APPLICATION"
789 >Privoxy</SPAN
790 > must be running to access these. If 
791  not, you will get a friendly error message. Internet access is not 
792  necessary either.</P
793 ><P
794 > <P
795 ></P
796 ><UL
797 ><LI
798 ><P
799 >  
800    Privoxy main page: 
801   </P
802 ><A
803 NAME="AEN2467"
804 ></A
805 ><BLOCKQUOTE
806 CLASS="BLOCKQUOTE"
807 ><P
808
809      <A
810 HREF="http://config.privoxy.org/"
811 TARGET="_top"
812 >http://config.privoxy.org/</A
813 >
814    </P
815 ></BLOCKQUOTE
816 ><P
817 >   Alternately, this may be reached at <A
818 HREF="http://p.p/"
819 TARGET="_top"
820 >http://p.p/</A
821 >, but this
822    variation may not work as reliably as the above in some configurations.
823   </P
824 ></LI
825 ><LI
826 ><P
827 >  
828     Show information about the current configuration: 
829   </P
830 ><A
831 NAME="AEN2474"
832 ></A
833 ><BLOCKQUOTE
834 CLASS="BLOCKQUOTE"
835 ><P
836
837     <A
838 HREF="http://config.privoxy.org/show-status"
839 TARGET="_top"
840 >http://config.privoxy.org/show-status</A
841 >
842    </P
843 ></BLOCKQUOTE
844 ></LI
845 ><LI
846 ><P
847 >  
848     Show the source code version numbers:
849   </P
850 ><A
851 NAME="AEN2479"
852 ></A
853 ><BLOCKQUOTE
854 CLASS="BLOCKQUOTE"
855 ><P
856
857     <A
858 HREF="http://config.privoxy.org/show-version"
859 TARGET="_top"
860 >http://config.privoxy.org/show-version</A
861 >
862    </P
863 ></BLOCKQUOTE
864 ></LI
865 ><LI
866 ><P
867 >  
868    Show the client's request headers:
869   </P
870 ><A
871 NAME="AEN2484"
872 ></A
873 ><BLOCKQUOTE
874 CLASS="BLOCKQUOTE"
875 ><P
876
877     <A
878 HREF="http://config.privoxy.org/show-request"
879 TARGET="_top"
880 >http://config.privoxy.org/show-request</A
881 >
882    </P
883 ></BLOCKQUOTE
884 ></LI
885 ><LI
886 ><P
887 >  
888    Show which actions apply to a URL and why:
889   </P
890 ><A
891 NAME="AEN2489"
892 ></A
893 ><BLOCKQUOTE
894 CLASS="BLOCKQUOTE"
895 ><P
896
897     <A
898 HREF="http://config.privoxy.org/show-url-info"
899 TARGET="_top"
900 >http://config.privoxy.org/show-url-info</A
901 >
902    </P
903 ></BLOCKQUOTE
904 ></LI
905 ><LI
906 ><P
907 >  
908    Toggle Privoxy on or off. In this case, <SPAN
909 CLASS="QUOTE"
910 >"Privoxy"</SPAN
911 > continues 
912    to run, but only as a pass-through proxy, with no actions taking place:
913   </P
914 ><A
915 NAME="AEN2495"
916 ></A
917 ><BLOCKQUOTE
918 CLASS="BLOCKQUOTE"
919 ><P
920
921     <A
922 HREF="http://config.privoxy.org/toggle"
923 TARGET="_top"
924 >http://config.privoxy.org/toggle</A
925 >
926    </P
927 ></BLOCKQUOTE
928 ><P
929 >   Short cuts. Turn off, then on: 
930   </P
931 ><A
932 NAME="AEN2499"
933 ></A
934 ><BLOCKQUOTE
935 CLASS="BLOCKQUOTE"
936 ><P
937
938      <A
939 HREF="http://config.privoxy.org/toggle?set=disable"
940 TARGET="_top"
941 >http://config.privoxy.org/toggle?set=disable</A
942 >
943    </P
944 ></BLOCKQUOTE
945 ><A
946 NAME="AEN2502"
947 ></A
948 ><BLOCKQUOTE
949 CLASS="BLOCKQUOTE"
950 ><P
951
952      <A
953 HREF="http://config.privoxy.org/toggle?set=enable"
954 TARGET="_top"
955 >http://config.privoxy.org/toggle?set=enable</A
956 >
957    </P
958 ></BLOCKQUOTE
959 ></LI
960 ><LI
961 ><P
962 >  
963    Edit the actions list file:
964   </P
965 ><A
966 NAME="AEN2507"
967 ></A
968 ><BLOCKQUOTE
969 CLASS="BLOCKQUOTE"
970 ><P
971
972     <A
973 HREF="http://config.privoxy.org/edit-actions"
974 TARGET="_top"
975 >http://config.privoxy.org/edit-actions</A
976 >
977    </P
978 ></BLOCKQUOTE
979 ></LI
980 ></UL
981 ></P
982 ><P
983 > These may be bookmarked for quick reference. See next.&#13;</P
984 ><DIV
985 CLASS="SECT3"
986 ><H3
987 CLASS="SECT3"
988 ><A
989 NAME="BOOKMARKLETS"
990 >9.2.1. Bookmarklets</A
991 ></H3
992 ><P
993 > Below are some <SPAN
994 CLASS="QUOTE"
995 >"bookmarklets"</SPAN
996 > to allow you to easily access a
997  <SPAN
998 CLASS="QUOTE"
999 >"mini"</SPAN
1000 > version of some of <SPAN
1001 CLASS="APPLICATION"
1002 >Privoxy's</SPAN
1003 >
1004  special pages. They are designed for MS Internet Explorer, but should work
1005  equally well in Netscape, Mozilla, and other browsers which support
1006  JavaScript. They are designed to run directly from your bookmarks - not by
1007  clicking the links below (although that should work for testing).</P
1008 ><P
1009 > To save them, right-click the link and choose <SPAN
1010 CLASS="QUOTE"
1011 >"Add to Favorites"</SPAN
1012 >
1013  (IE) or <SPAN
1014 CLASS="QUOTE"
1015 >"Add Bookmark"</SPAN
1016 > (Netscape). You will get a warning that
1017  the bookmark <SPAN
1018 CLASS="QUOTE"
1019 >"may not be safe"</SPAN
1020 > - just click OK. Then you can run the
1021  Bookmarklet directly from your favorites/bookmarks. For even faster access,
1022  you can put them on the <SPAN
1023 CLASS="QUOTE"
1024 >"Links"</SPAN
1025 > bar (IE) or the <SPAN
1026 CLASS="QUOTE"
1027 >"Personal
1028  Toolbar"</SPAN
1029 > (Netscape), and run them with a single click. </P
1030 ><P
1031 > <P
1032 ></P
1033 ><UL
1034 ><LI
1035 ><P
1036 >    <A
1037 HREF="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=enabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
1038 TARGET="_top"
1039 >Enable Privoxy</A
1040 >
1041    </P
1042 ></LI
1043 ><LI
1044 ><P
1045 >    <A
1046 HREF="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=disabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
1047 TARGET="_top"
1048 >Disable Privoxy</A
1049 >
1050    </P
1051 ></LI
1052 ><LI
1053 ><P
1054 >    <A
1055 HREF="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=toggle','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
1056 TARGET="_top"
1057 >Toggle Privoxy</A
1058 > (Toggles between enabled and disabled)
1059    </P
1060 ></LI
1061 ><LI
1062 ><P
1063 >    <A
1064 HREF="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y','ijbstatus','width=250,height=2,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
1065 TARGET="_top"
1066 >View Privoxy Status</A
1067 >
1068    </P
1069 ></LI
1070 ><LI
1071 ><P
1072 >    <A
1073 HREF="javascript:w=Math.floor(screen.width/2);h=Math.floor(screen.height*0.9);void(window.open('http://www.privoxy.org/actions','Feedback','screenx='+w+',width='+w+',height='+h+',scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
1074 TARGET="_top"
1075 >Actions file feedback system</A
1076 >
1077    </P
1078 ></LI
1079 ></UL
1080 ></P
1081 ><P
1082 > Credit: The site which gave me the general idea for these bookmarklets is
1083  <A
1084 HREF="http://www.bookmarklets.com"
1085 TARGET="_top"
1086 >www.bookmarklets.com</A
1087 >. They
1088  have more information about bookmarklets. </P
1089 ></DIV
1090 ></DIV
1091 ><DIV
1092 CLASS="SECT2"
1093 ><H2
1094 CLASS="SECT2"
1095 ><A
1096 NAME="CHAIN"
1097 >9.3. Chain of Events</A
1098 ></H2
1099 ><P
1100 > Let's take a quick look at the basic sequence of events when a web page is 
1101  requested by your browser and <SPAN
1102 CLASS="APPLICATION"
1103 >Privoxy</SPAN
1104 > is on duty:</P
1105 ><P
1106 > <P
1107 ></P
1108 ><UL
1109 ><LI
1110 ><P
1111 >   First, the web browser requests a page, and this request is intercepted by 
1112   <SPAN
1113 CLASS="APPLICATION"
1114 >Privoxy</SPAN
1115 > immediately.
1116   </P
1117 ></LI
1118 ><LI
1119 ><P
1120 >   <SPAN
1121 CLASS="APPLICATION"
1122 >Privoxy</SPAN
1123 > traps any request for internal CGI 
1124   pages (e.g http://p.p/) and relays these back to the browser.
1125   </P
1126 ></LI
1127 ><LI
1128 ><P
1129 >   If the URL matches a <SPAN
1130 CLASS="QUOTE"
1131 >"+block"</SPAN
1132 > pattern, then it is blocked 
1133    and the banner displayed.
1134   </P
1135 ></LI
1136 ><LI
1137 ><P
1138 >   Untrusted URLs are blocked. If URLs are being added to the
1139    <TT
1140 CLASS="FILENAME"
1141 >trust</TT
1142 > file, then that is done.
1143   </P
1144 ></LI
1145 ><LI
1146 ><P
1147 >   <SPAN
1148 CLASS="QUOTE"
1149 >"+fast-redirect"</SPAN
1150 > is processed, stripping unwanted parts 
1151    of the request web page URL.
1152   </P
1153 ></LI
1154 ><LI
1155 ><P
1156 >   At this point, <SPAN
1157 CLASS="APPLICATION"
1158 >Privoxy</SPAN
1159 > relays the request to the
1160    web server, and requests the page (assuming nothing up to this point has
1161    prevented getting us from this far).
1162   </P
1163 ></LI
1164 ><LI
1165 ><P
1166 >   The first few hundred bytes are read from the web server and 
1167    <SPAN
1168 CLASS="QUOTE"
1169 >"+kill-popups"</SPAN
1170 > is processed, if enabled.
1171   </P
1172 ></LI
1173 ><LI
1174 ><P
1175 >   If <SPAN
1176 CLASS="QUOTE"
1177 >"+filter"</SPAN
1178 > applies, the rest of the page is read into
1179    memory and then the filters are processed. Filters are applied in the order they
1180    are specified in the <TT
1181 CLASS="FILENAME"
1182 >default.filter</TT
1183 > file.  The entire
1184    page, which is now filtered, is then sent by
1185    <SPAN
1186 CLASS="APPLICATION"
1187 >Privoxy</SPAN
1188 > to your browser.
1189   </P
1190 ></LI
1191 ><LI
1192 ><P
1193 >   As the browser receives the filtered page content, it will read and request any
1194    embedded URLs on the page, e.g. an ad image. As the browser requests these
1195    secondary URLs from whatever server they may be on,
1196    <SPAN
1197 CLASS="APPLICATION"
1198 >Privoxy</SPAN
1199 > handles these same as above, and the process
1200    is repeated for each such URL. Note that a fancy web page may have many, many
1201    such URLs for graphics, frames, etc.
1202   </P
1203 ></LI
1204 ></UL
1205 ></P
1206 ></DIV
1207 ><DIV
1208 CLASS="SECT2"
1209 ><H2
1210 CLASS="SECT2"
1211 ><A
1212 NAME="ACTIONSANAT"
1213 >9.4. Anatomy of an Action</A
1214 ></H2
1215 ><P
1216 > The way <SPAN
1217 CLASS="APPLICATION"
1218 >Privoxy</SPAN
1219 > applies <SPAN
1220 CLASS="QUOTE"
1221 >"actions"</SPAN
1222 >
1223  and <SPAN
1224 CLASS="QUOTE"
1225 >"filters"</SPAN
1226 > to any given URL can be complex, and not always so
1227  easy to understand what is happening. And sometimes we need to be able to
1228  <I
1229 CLASS="EMPHASIS"
1230 >see</I
1231 > just what <SPAN
1232 CLASS="APPLICATION"
1233 >Privoxy</SPAN
1234 > is
1235  doing. Especially, if something <SPAN
1236 CLASS="APPLICATION"
1237 >Privoxy</SPAN
1238 > is doing
1239  is causing us a problem inadvertently. It can be a little daunting to look at
1240  the actions and filters files themselves, since they tend to be filled with
1241  <SPAN
1242 CLASS="QUOTE"
1243 >"regular expressions"</SPAN
1244 > whose consequences are not always 
1245  so obvious. </P
1246 ><P
1247 > One quick test to see if <SPAN
1248 CLASS="APPLICATION"
1249 >Privoxy</SPAN
1250 > is causing a problem 
1251  or not, is to disable it temporarily. This should be the first troubleshooting 
1252  step. See <A
1253 HREF="appendix.html#BOOKMARKLETS"
1254 >the Bookmarklets</A
1255 > section on a quick 
1256  and easy way to do this (be sure to flush caches afterwards!).</P
1257 ><P
1258 > <SPAN
1259 CLASS="APPLICATION"
1260 >Privoxy</SPAN
1261 > also provides the 
1262  <A
1263 HREF="http://config.privoxy.org/show-url-info"
1264 TARGET="_top"
1265 >http://config.privoxy.org/show-url-info</A
1266 >
1267  page that can show us very specifically how <SPAN
1268 CLASS="APPLICATION"
1269 >actions</SPAN
1270 >
1271  are being applied to any given URL. This is a big help for troubleshooting.</P
1272 ><P
1273 > First, enter one URL (or partial URL) at the prompt, and then
1274  <SPAN
1275 CLASS="APPLICATION"
1276 >Privoxy</SPAN
1277 > will tell us 
1278  how the current configuration will handle it. This will not
1279  help with filtering effects (i.e. the <SPAN
1280 CLASS="QUOTE"
1281 >"+filter"</SPAN
1282 > action) from the
1283  <TT
1284 CLASS="FILENAME"
1285 >default.filter</TT
1286 > file since this is handled very differently 
1287  and not so easy to trap! It also will not tell you about any other URLs that
1288  may be embedded within the URL you are testing (i.e. a web page). For
1289  instance, images such as ads are expressed as URLs within the raw page source
1290  of HTML pages. So you will only get info for the actual URL that is pasted
1291  into the prompt area -- not any sub-URLs. If you want to know about embedded
1292  URLs like ads, you will have to dig those out of the HTML source. Use your
1293  browser's <SPAN
1294 CLASS="QUOTE"
1295 >"View Page Source"</SPAN
1296 > option for this. Or right click on
1297  the ad, and grab the URL.</P
1298 ><P
1299 > Let's look at an example, <A
1300 HREF="http://google.com"
1301 TARGET="_top"
1302 >google.com</A
1303 >, 
1304  one section at a time:</P
1305 ><P
1306 > <TABLE
1307 BORDER="0"
1308 BGCOLOR="#E0E0E0"
1309 WIDTH="100%"
1310 ><TR
1311 ><TD
1312 ><PRE
1313 CLASS="SCREEN"
1314 > System default actions:
1315
1316  { -add-header -block -deanimate-gifs -downgrade -fast-redirects -filter 
1317    -hide-forwarded -hide-from -hide-referer -hide-user-agent -image 
1318    -image-blocker -limit-connect -no-compression -no-cookies-keep 
1319    -no-cookies-read -no-cookies-set -no-popups -vanilla-wafer -wafer }
1320  
1321  </PRE
1322 ></TD
1323 ></TR
1324 ></TABLE
1325 ></P
1326 ><P
1327 > This is the top section, and only tells us of the compiled in defaults. This 
1328  is basically what <SPAN
1329 CLASS="APPLICATION"
1330 >Privoxy</SPAN
1331 > would do if there 
1332  were not any <SPAN
1333 CLASS="QUOTE"
1334 >"actions"</SPAN
1335 > defined, i.e. it does nothing. Every action 
1336  is disabled. This is not particularly informative for our purposes here. OK,
1337  next section:</P
1338 ><P
1339 > <TABLE
1340 BORDER="0"
1341 BGCOLOR="#E0E0E0"
1342 WIDTH="100%"
1343 ><TR
1344 ><TD
1345 ><PRE
1346 CLASS="SCREEN"
1347 >&#13; Matches for http://google.com:
1348
1349  { -add-header -block +deanimate-gifs -downgrade +fast-redirects 
1350    +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups} 
1351    +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal} 
1352    +filter{fun} +hide-forwarded +hide-from{block} +hide-referer{forge} 
1353    -hide-user-agent -image +image-blocker{blank} +no-compression 
1354    +no-cookies-keep -no-cookies-read -no-cookies-set +no-popups 
1355    -vanilla-wafer -wafer }
1356    /
1357
1358  { -no-cookies-keep -no-cookies-read -no-cookies-set }
1359   .google.com
1360
1361  { -fast-redirects }
1362   .google.com
1363
1364  </PRE
1365 ></TD
1366 ></TR
1367 ></TABLE
1368 ></P
1369 ><P
1370 > This is much more informative, and tells us how we have defined our 
1371  <SPAN
1372 CLASS="QUOTE"
1373 >"actions"</SPAN
1374 >, and which ones match for our example, 
1375  <SPAN
1376 CLASS="QUOTE"
1377 >"google.com"</SPAN
1378 >. The first grouping shows our default 
1379  settings, which would apply to all URLs. If you look at your <SPAN
1380 CLASS="QUOTE"
1381 >"actions"</SPAN
1382 >
1383  file, this would be the section just below the <SPAN
1384 CLASS="QUOTE"
1385 >"aliases"</SPAN
1386 > section 
1387  near the top. This applies to all URLs as signified by the single forward
1388  slash -- <SPAN
1389 CLASS="QUOTE"
1390 >"/"</SPAN
1391 >.
1392  </P
1393 ><P
1394 > These are the default actions we have enabled. But we can define additional
1395  actions that would be exceptions to these general rules, and then list 
1396  specific URLs that these exceptions would apply to. Last match wins.
1397  Just below this then are two explicit matches for <SPAN
1398 CLASS="QUOTE"
1399 >".google.com"</SPAN
1400 >.
1401  The first is negating our various cookie blocking actions (i.e. we will allow
1402  cookies here). The second is allowing <SPAN
1403 CLASS="QUOTE"
1404 >"fast-redirects"</SPAN
1405 >. Note
1406  that there is a leading dot here -- <SPAN
1407 CLASS="QUOTE"
1408 >".google.com"</SPAN
1409 >. This will
1410  match any hosts and sub-domains, in the google.com domain also, such as
1411  <SPAN
1412 CLASS="QUOTE"
1413 >"www.google.com"</SPAN
1414 >. So, apparently, we have these actions defined
1415  somewhere in the lower part of our actions file, and
1416  <SPAN
1417 CLASS="QUOTE"
1418 >"google.com"</SPAN
1419 > is referenced in these sections.&#13;</P
1420 ><P
1421 > And now we pull it altogether in the bottom section and summarize how
1422  <SPAN
1423 CLASS="APPLICATION"
1424 >Privoxy</SPAN
1425 > is applying all its <SPAN
1426 CLASS="QUOTE"
1427 >"actions"</SPAN
1428
1429  to <SPAN
1430 CLASS="QUOTE"
1431 >"google.com"</SPAN
1432 >:&#13;</P
1433 ><P
1434 > <TABLE
1435 BORDER="0"
1436 BGCOLOR="#E0E0E0"
1437 WIDTH="100%"
1438 ><TR
1439 ><TD
1440 ><PRE
1441 CLASS="SCREEN"
1442 >&#13; Final results:
1443
1444  -add-header -block -deanimate-gifs -downgrade -fast-redirects 
1445  +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups} 
1446  +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal} 
1447  +filter{fun} +hide-forwarded +hide-from{block} +hide-referer{forge} 
1448  -hide-user-agent -image +image-blocker{blank} -limit-connect +no-compression 
1449  -no-cookies-keep -no-cookies-read -no-cookies-set +no-popups -vanilla-wafer 
1450  -wafer
1451
1452  </PRE
1453 ></TD
1454 ></TR
1455 ></TABLE
1456 ></P
1457 ><P
1458 > Now another example, <SPAN
1459 CLASS="QUOTE"
1460 >"ad.doubleclick.net"</SPAN
1461 >:</P
1462 ><P
1463 > <TABLE
1464 BORDER="0"
1465 BGCOLOR="#E0E0E0"
1466 WIDTH="100%"
1467 ><TR
1468 ><TD
1469 ><PRE
1470 CLASS="SCREEN"
1471 >&#13; { +block +image }
1472   .ad.doubleclick.net
1473
1474  { +block +image }
1475   ad*.
1476
1477  { +block +image }
1478   .doubleclick.net
1479
1480  </PRE
1481 ></TD
1482 ></TR
1483 ></TABLE
1484 ></P
1485 ><P
1486 > We'll just show the interesting part here, the explicit matches. It is 
1487  matched three different times. Each as an <SPAN
1488 CLASS="QUOTE"
1489 >"+block +image"</SPAN
1490 >,
1491  which is the expanded form of one of our aliases that had been defined as: 
1492  <SPAN
1493 CLASS="QUOTE"
1494 >"+imageblock"</SPAN
1495 >. (<SPAN
1496 CLASS="QUOTE"
1497 >"Aliases"</SPAN
1498 > are defined in the 
1499  first section of the actions file and typically used to combine more 
1500  than one action.)</P
1501 ><P
1502 > Any one of these would have done the trick and blocked this as an unwanted 
1503  image. This is unnecessarily redundant since the last case effectively 
1504  would also cover the first. No point in taking chances with these guys 
1505  though ;-) Note that if you want an ad or obnoxious 
1506  URL to be invisible, it should be defined as <SPAN
1507 CLASS="QUOTE"
1508 >"ad.doubleclick.net"</SPAN
1509 >
1510  is done here -- as both a <SPAN
1511 CLASS="QUOTE"
1512 >"+block"</SPAN
1513 > <I
1514 CLASS="EMPHASIS"
1515 >and</I
1516 > an
1517  <SPAN
1518 CLASS="QUOTE"
1519 >"+image"</SPAN
1520 >. The custom alias <SPAN
1521 CLASS="QUOTE"
1522 >"+imageblock"</SPAN
1523 > does this
1524  for us.</P
1525 ><P
1526 > One last example. Let's try <SPAN
1527 CLASS="QUOTE"
1528 >"http://www.rhapsodyk.net/adsl/HOWTO/"</SPAN
1529 >.
1530  This one is giving us problems. We are getting a blank page. Hmmm...</P
1531 ><P
1532 > <TABLE
1533 BORDER="0"
1534 BGCOLOR="#E0E0E0"
1535 WIDTH="100%"
1536 ><TR
1537 ><TD
1538 ><PRE
1539 CLASS="SCREEN"
1540 >&#13; Matches for http://www.rhapsodyk.net/adsl/HOWTO/:
1541
1542  { -add-header -block +deanimate-gifs -downgrade +fast-redirects 
1543    +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups} 
1544    +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal} 
1545    +filter{fun} +hide-forwarded +hide-from{block} +hide-referer{forge} 
1546    -hide-user-agent -image +image-blocker{blank} +no-compression 
1547    +no-cookies-keep -no-cookies-read -no-cookies-set +no-popups 
1548    -vanilla-wafer -wafer }
1549    /
1550
1551  { +block +image }
1552   /ads
1553
1554  </PRE
1555 ></TD
1556 ></TR
1557 ></TABLE
1558 ></P
1559 ><P
1560 > Ooops, the <SPAN
1561 CLASS="QUOTE"
1562 >"/adsl/"</SPAN
1563 > is matching <SPAN
1564 CLASS="QUOTE"
1565 >"/ads"</SPAN
1566 >! But 
1567  we did not want this at all! Now we see why we get the blank page. We could
1568  now add a new action below this that explicitly does <I
1569 CLASS="EMPHASIS"
1570 >not</I
1571 >
1572  block (-block) pages with <SPAN
1573 CLASS="QUOTE"
1574 >"adsl"</SPAN
1575 >. There are various ways to
1576  handle such exceptions. Example:</P
1577 ><P
1578 > <TABLE
1579 BORDER="0"
1580 BGCOLOR="#E0E0E0"
1581 WIDTH="100%"
1582 ><TR
1583 ><TD
1584 ><PRE
1585 CLASS="SCREEN"
1586 >&#13; { -block }
1587   /adsl
1588  
1589  </PRE
1590 ></TD
1591 ></TR
1592 ></TABLE
1593 ></P
1594 ><P
1595 > Now the page displays ;-) Be sure to flush your browser's caches when 
1596  making such changes. Or, try using <TT
1597 CLASS="LITERAL"
1598 >Shift+Reload</TT
1599 >.</P
1600 ><P
1601 > But now what about a situation where we get no explicit matches like 
1602  we did with:</P
1603 ><P
1604 > <TABLE
1605 BORDER="0"
1606 BGCOLOR="#E0E0E0"
1607 WIDTH="100%"
1608 ><TR
1609 ><TD
1610 ><PRE
1611 CLASS="SCREEN"
1612 >&#13; { -block }
1613   /adsl
1614  
1615  </PRE
1616 ></TD
1617 ></TR
1618 ></TABLE
1619 ></P
1620 ><P
1621 > That actually was very telling and pointed us quickly to where the problem
1622  was. If you don't get this kind of match, then it means one of the default 
1623  rules in the first section is causing the problem. This would require some 
1624  guesswork, and maybe a little trial and error to isolate the offending rule.
1625  One likely cause would be one of the <SPAN
1626 CLASS="QUOTE"
1627 >"{+filter}"</SPAN
1628 > actions. Try 
1629  adding the URL for the site to one of aliases that turn off <SPAN
1630 CLASS="QUOTE"
1631 >"+filter"</SPAN
1632 >:</P
1633 ><P
1634 > <TABLE
1635 BORDER="0"
1636 BGCOLOR="#E0E0E0"
1637 WIDTH="100%"
1638 ><TR
1639 ><TD
1640 ><PRE
1641 CLASS="SCREEN"
1642 >&#13; {shop}
1643  .quietpc.com
1644  .worldpay.com   # for quietpc.com
1645  .jungle.com
1646  .scan.co.uk
1647  .forbes.com
1648  
1649  </PRE
1650 ></TD
1651 ></TR
1652 ></TABLE
1653 ></P
1654 ><P
1655 > <SPAN
1656 CLASS="QUOTE"
1657 >"{shop}"</SPAN
1658 > is an <SPAN
1659 CLASS="QUOTE"
1660 >"alias"</SPAN
1661 > that expands to 
1662  <SPAN
1663 CLASS="QUOTE"
1664 >"{ -filter -no-cookies -no-cookies-keep }"</SPAN
1665 >. Or you could do 
1666  your own exception to negate filtering:&#13;</P
1667 ><P
1668 > <TABLE
1669 BORDER="0"
1670 BGCOLOR="#E0E0E0"
1671 WIDTH="100%"
1672 ><TR
1673 ><TD
1674 ><PRE
1675 CLASS="SCREEN"
1676 >&#13; {-filter}
1677  .forbes.com
1678  
1679  </PRE
1680 ></TD
1681 ></TR
1682 ></TABLE
1683 ></P
1684 ><P
1685 > <SPAN
1686 CLASS="QUOTE"
1687 >"{fragile}"</SPAN
1688 > is an alias that disables most actions. This can be 
1689  used as a last resort for problem sites. Remember to flush caches! If this 
1690  still does not work, you will have to go through the remaining actions one by
1691  one to find which one(s) is causing the problem.</P
1692 ></DIV
1693 ></DIV
1694 ><DIV
1695 CLASS="NAVFOOTER"
1696 ><HR
1697 ALIGN="LEFT"
1698 WIDTH="100%"><TABLE
1699 WIDTH="100%"
1700 BORDER="0"
1701 CELLPADDING="0"
1702 CELLSPACING="0"
1703 ><TR
1704 ><TD
1705 WIDTH="33%"
1706 ALIGN="left"
1707 VALIGN="top"
1708 ><A
1709 HREF="seealso.html"
1710 >Prev</A
1711 ></TD
1712 ><TD
1713 WIDTH="34%"
1714 ALIGN="center"
1715 VALIGN="top"
1716 ><A
1717 HREF="index.html"
1718 >Home</A
1719 ></TD
1720 ><TD
1721 WIDTH="33%"
1722 ALIGN="right"
1723 VALIGN="top"
1724 >&nbsp;</TD
1725 ></TR
1726 ><TR
1727 ><TD
1728 WIDTH="33%"
1729 ALIGN="left"
1730 VALIGN="top"
1731 >See Also</TD
1732 ><TD
1733 WIDTH="34%"
1734 ALIGN="center"
1735 VALIGN="top"
1736 >&nbsp;</TD
1737 ><TD
1738 WIDTH="33%"
1739 ALIGN="right"
1740 VALIGN="top"
1741 >&nbsp;</TD
1742 ></TR
1743 ></TABLE
1744 ></DIV
1745 ></BODY
1746 ></HTML
1747 >