> <DIV
CLASS="TABLE"
><A
-NAME="AEN2176"
+NAME="AEN2207"
></A
><P
><B
><H2
CLASS="SECT2"
><A
-NAME="AEN2275"
+NAME="AEN2306"
>8.1. Finding the Right Mix</A
></H2
><P
><H2
CLASS="SECT2"
><A
-NAME="AEN2282"
+NAME="AEN2313"
>8.2. How to Edit</A
></H2
><P
>handle-as-image</TT
> +<TT
CLASS="LITERAL"
->block</TT
+>block{Banner ads.}</TT
> }
# Block these as if they were images. Send no block page.
banners.example.com
><P
> The pattern matching syntax is different for the domain and path parts of
the URL. The domain part uses a simple globbing type matching technique,
- while the path part uses a more flexible
+ while the path part uses more flexible
<A
HREF="http://en.wikipedia.org/wiki/Regular_expressions"
TARGET="_top"
><SPAN
CLASS="QUOTE"
>"Regular
- Expressions (PCRE)"</SPAN
+ Expressions"</SPAN
></A
-> based syntax.</P
+> (POSIX 1003.2).</P
><P
></P
><DIV
><H3
CLASS="SECT3"
><A
-NAME="AEN2373"
+NAME="AEN2404"
>8.4.1. The Domain Pattern</A
></H3
><P
><H3
CLASS="SECT3"
><A
-NAME="AEN2449"
+NAME="AEN2480"
>8.4.2. The Path Pattern</A
></H3
><P
> <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
-> uses Perl compatible (PCRE)
+> uses <SPAN
+CLASS="QUOTE"
+>"modern"</SPAN
+> POSIX 1003.2
<A
HREF="http://en.wikipedia.org/wiki/Regular_expressions"
TARGET="_top"
><SPAN
CLASS="QUOTE"
>"Regular
- Expression"</SPAN
+ Expressions"</SPAN
></A
-> based syntax
- (through the <A
-HREF="http://www.pcre.org/"
-TARGET="_top"
->PCRE</A
-> library) for
- matching the path portion (after the slash), and is thus more flexible.</P
+> for matching the path portion (after the slash),
+ and is thus more flexible.</P
><P
> There is an <A
HREF="appendix.html#REGEX"
>Appendix</A
> with a brief quick-start into regular
- expressions, and full (very technical) documentation on PCRE regex syntax is available on-line
- at <A
-HREF="http://www.pcre.org/man.txt"
-TARGET="_top"
->http://www.pcre.org/man.txt</A
->.
- You might also find the Perl man page on regular expressions (<TT
+ expressions, you also might want to have a look at your operating system's documentation
+ on regular expressions (try <TT
CLASS="LITERAL"
->man perlre</TT
->)
- useful, which is available on-line at <A
-HREF="http://perldoc.perl.org/perlre.html"
-TARGET="_top"
->http://perldoc.perl.org/perlre.html</A
->.</P
+>man re_format</TT
+>).</P
><P
> Note that the path pattern is automatically left-anchored at the <SPAN
CLASS="QUOTE"
>
Example: <TT
CLASS="LITERAL"
->+block</TT
+>+handle-as-image</TT
>
</P
></LI
>Type:</DT
><DD
><P
->Boolean.</P
+>Parameterized.</P
></DD
><DT
>Parameter:</DT
><DD
><P
->N/A</P
+>A block reason that should be given to the user.</P
></DD
><DT
>Notes:</DT
CLASS="QUOTE"
>"BLOCKED"</SPAN
> page
- for requests to blocked pages. This page contains links to find out why the request
- was blocked, and a click-through to the blocked content (the latter only if compiled with the
- force feature enabled). The <SPAN
-CLASS="QUOTE"
->"BLOCKED"</SPAN
-> page adapts to the available
- screen space -- it displays full-blown if space allows, or miniaturized and text-only
- if loaded into a small frame or window. If you are using <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
->
- right now, you can take a look at the
- <A
-HREF="http://ads.bannerserver.example.com/nasty-ads/sponsor.html"
-TARGET="_top"
-><SPAN
-CLASS="QUOTE"
->"BLOCKED"</SPAN
->
- page</A
->.
+ for requests to blocked pages. This page contains the block reason given as
+ parameter, a link to find out why the block action applies, and a click-through
+ to the blocked content (the latter only if the force feature is available and
+ enabled).
</P
><P
>
><TD
><PRE
CLASS="SCREEN"
->{+block}
+>{+block{No nasty stuff for you.}}
# Block and replace with "blocked" page
.nasty-stuff.example.com
-{+block +handle-as-image}
+{+block{Doubleclick banners.} +handle-as-image}
# Block and replace with image
.ad.doubleclick.net
.ads.r.us/banners/
-{+block +handle-as-empty-document}
+{+block{Layered ads.} +handle-as-empty-document}
# Block and then ignore
- adserver.exampleclick.net/.*\.js$</PRE
+ adserver.example.net/.*\.js$</PRE
></TD
></TR
></TABLE
># Tag every request with the User-Agent header
{+client-header-tagger{user-agent}}
/
+
+# Tagging itself doesn't change the action
+# settings, sections with TAG patterns do:
+#
+# If it's a download agent, use a different forwarding proxy,
+# show the real User-Agent and make sure resume works.
+{+forward-override{forward-socks5 10.0.0.2:2222 .} \
+ -hide-if-modified-since \
+ -overwrite-last-modified \
+ -hide-user-agent \
+ -filter \
+ -deanimate-gifs \
+}
+TAG:^User-Agent: NetBSD-ftp/
+TAG:^User-Agent: Novell ZYPP Installer
+TAG:^User-Agent: RPM APT-HTTP/
+TAG:^User-Agent: fetch libfetch/
+TAG:^User-Agent: Ubuntu APT-HTTP/
+TAG:^User-Agent: MPlayer/
</PRE
></TD
></TR
><TD
><PRE
CLASS="SCREEN"
->+filter{js-annoyances} # Get rid of particularly annoying JavaScript abuse</PRE
+>+filter{js-annoyances} # Get rid of particularly annoying JavaScript abuse.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{js-events} # Kill all JS event bindings (Radically destructive! Only for extra nasty sites)</PRE
+>+filter{js-events} # Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites).</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{html-annoyances} # Get rid of particularly annoying HTML abuse</PRE
+>+filter{html-annoyances} # Get rid of particularly annoying HTML abuse.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{content-cookies} # Kill cookies that come in the HTML or JS content</PRE
+>+filter{content-cookies} # Kill cookies that come in the HTML or JS content.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{refresh-tags} # Kill automatic refresh tags (for dial-on-demand setups)</PRE
+>+filter{refresh-tags} # Kill automatic refresh tags (for dial-on-demand setups).</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{img-reorder} # Reorder attributes in <img> tags to make the banners-by-* filters more effective</PRE
+>+filter{img-reorder} # Reorder attributes in <img> tags to make the banners-by-* filters more effective.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{banners-by-size} # Kill banners by size</PRE
+>+filter{banners-by-size} # Kill banners by size.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{banners-by-link} # Kill banners by their links to known clicktrackers</PRE
+>+filter{banners-by-link} # Kill banners by their links to known clicktrackers.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{webbugs} # Squish WebBugs (1x1 invisible GIFs used for user tracking)</PRE
+>+filter{webbugs} # Squish WebBugs (1x1 invisible GIFs used for user tracking).</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{tiny-textforms} # Extend those tiny textareas up to 40x80 and kill the hard wrap</PRE
+>+filter{tiny-textforms} # Extend those tiny textareas up to 40x80 and kill the hard wrap.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{jumping-windows} # Prevent windows from resizing and moving themselves</PRE
+>+filter{jumping-windows} # Prevent windows from resizing and moving themselves.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{frameset-borders} # Give frames a border and make them resizeable</PRE
+>+filter{frameset-borders} # Give frames a border and make them resizable.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{demoronizer} # Fix MS's non-standard use of standard charsets</PRE
+>+filter{demoronizer} # Fix MS's non-standard use of standard charsets.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{shockwave-flash} # Kill embedded Shockwave Flash objects</PRE
+>+filter{shockwave-flash} # Kill embedded Shockwave Flash objects.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{quicktime-kioskmode} # Make Quicktime movies savable</PRE
+>+filter{quicktime-kioskmode} # Make Quicktime movies saveable.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{crude-parental} # Crude parental filtering (demo only)</PRE
+>+filter{crude-parental} # Crude parental filtering. Note that this filter doesn't work reliable.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{ie-exploits} # Disable a known Internet Explorer bug exploits</PRE
+>+filter{ie-exploits} # Disable some known Internet Explorer bug exploits.</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{site-specifics} # Custom filters for specific site related problems</PRE
+>+filter{site-specifics} # Cure for site-specific problems. Don't apply generally!</PRE
></TD
></TR
></TABLE
</P
><P
> <A
-NAME="FILTER-GOOGLE"
+NAME="FILTER-NO-PING"
></A
>
<TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{google} # Removes text ads and other Google specific improvements</PRE
+>+filter{no-ping} # Removes non-standard ping attributes in <a> and <area> tags.</PRE
></TD
></TR
></TABLE
</P
><P
> <A
-NAME="FILTER-YAHOO"
+NAME="FILTER-GOOGLE"
></A
>
<TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{yahoo} # Removes text ads and other Yahoo specific improvements</PRE
+>+filter{google} # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement.</PRE
></TD
></TR
></TABLE
</P
><P
> <A
-NAME="FILTER-MSN"
+NAME="FILTER-YAHOO"
></A
>
<TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{msn} # Removes text ads and other MSN specific improvements</PRE
+>+filter{yahoo} # CSS-based block for Yahoo text ads. Also removes a width limitation.</PRE
></TD
></TR
></TABLE
</P
><P
> <A
-NAME="FILTER-BLOGSPOT"
+NAME="FILTER-MSN"
></A
>
<TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{blogspot} # Cleans up Blogspot blogs</PRE
+>+filter{msn} # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation.</PRE
></TD
></TR
></TABLE
</P
><P
> <A
-NAME="FILTER-NO-PING"
+NAME="FILTER-BLOGSPOT"
></A
>
<TABLE
><TD
><PRE
CLASS="SCREEN"
->+filter{no-ping} # Removes non-standard ping attributes from anchor and area tags</PRE
+>+filter{blogspot} # Cleans up some Blogspot blogs. Read the fine print before using this.</PRE
></TD
></TR
></TABLE
CLASS="SCREEN"
># Block all documents on example.org that end with ".js",
# but send an empty document instead of the usual HTML message.
-{+block +handle-as-empty-document}
+{+block{Blocked JavaScript} +handle-as-empty-document}
example.org/.*\.js$
</PRE
></TD
# These don't look like images, but they're banners and should be
# blocked as images:
#
-{+block +handle-as-image}
-some.nasty-banner-server.com/junk.cgi\?output=trash
-
-# Banner source! Who cares if they also have non-image content?
-ad.doubleclick.net </PRE
+{+block{Nasty banners.} +handle-as-image}
+nasty-banner-server.example.com/junk.cgi\?output=trash</PRE
></TD
></TR
></TABLE
><H4
CLASS="SECT3"
><A
-NAME="INSPECT-JPEGS"
->8.5.26. inspect-jpegs</A
-></H4
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->Typical use:</DT
-><DD
-><P
->Try to protect against a MS buffer over-run in JPEG processing</P
-></DD
-><DT
->Effect:</DT
-><DD
-><P
-> Protect against a known exploit
- </P
-></DD
-><DT
->Type:</DT
-><DD
-><P
->Boolean.</P
-></DD
-><DT
->Parameter:</DT
-><DD
-><P
-> N/A
- </P
-></DD
-><DT
->Notes:</DT
-><DD
-><P
-> See Microsoft Security Bulletin MS04-028. JPEG images are one of the most
- common image types found across the Internet. The exploit as described can
- allow execution of code on the target system, giving an attacker access
- to the system in question by merely planting an altered JPEG image, which
- would have no obvious indications of what lurks inside. This action
- tries to prevent this exploit if delivered through unencrypted HTTP.
- </P
-><P
-> Note that the exploit mentioned is several years old
- and it's unlikely that your client is still vulnerable
- against it. This action may be removed in one of the
- next releases.
- </P
-></DD
-><DT
->Example usage:</DT
-><DD
-><P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="90%"
-><TR
-><TD
-><PRE
-CLASS="SCREEN"
->+inspect-jpegs</PRE
-></TD
-></TR
-></TABLE
-></P
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><H4
-CLASS="SECT3"
-><A
-NAME="KILL-POPUPS"
->8.5.27. kill-popups<A
-NAME="KILL-POPUP"
-></A
-></A
-></H4
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->Typical use:</DT
-><DD
-><P
->Eliminate those annoying pop-up windows (deprecated)</P
-></DD
-><DT
->Effect:</DT
-><DD
-><P
-> While loading the document, replace JavaScript code that opens
- pop-up windows with (syntactically neutral) dummy code on the fly.
- </P
-></DD
-><DT
->Type:</DT
-><DD
-><P
->Boolean.</P
-></DD
-><DT
->Parameter:</DT
-><DD
-><P
-> N/A
- </P
-></DD
-><DT
->Notes:</DT
-><DD
-><P
-> This action is basically a built-in, hardwired special-purpose filter
- action, but there are important differences: For <TT
-CLASS="LITERAL"
->kill-popups</TT
->,
- the document need not be buffered, so it can be incrementally rendered while
- downloading. But <TT
-CLASS="LITERAL"
->kill-popups</TT
-> doesn't catch as many pop-ups as
- <TT
-CLASS="LITERAL"
-><A
-HREF="actions-file.html#FILTER-ALL-POPUPS"
->filter{<TT
-CLASS="REPLACEABLE"
-><I
->all-popups</I
-></TT
->}</A
-></TT
->
- does and is not as smart as <TT
-CLASS="LITERAL"
-><A
-HREF="actions-file.html#FILTER-UNSOLICITED-POPUPS"
->filter{<TT
-CLASS="REPLACEABLE"
-><I
->unsolicited-popups</I
-></TT
->}</A
->
- </TT
->is.
- </P
-><P
-> Think of it as a fast and efficient replacement for a filter that you
- can use if you don't want any filtering at all. Note that it doesn't make
- sense to combine it with any <TT
-CLASS="LITERAL"
-><A
-HREF="actions-file.html#FILTER"
->filter</A
-></TT
-> action,
- since as soon as one <TT
-CLASS="LITERAL"
-><A
-HREF="actions-file.html#FILTER"
->filter</A
-></TT
-> applies,
- the whole document needs to be buffered anyway, which destroys the advantage of
- the <TT
-CLASS="LITERAL"
->kill-popups</TT
-> action over its filter equivalent.
- </P
-><P
-> Killing all pop-ups unconditionally is problematic. Many shops and banks rely on
- pop-ups to display forms, shopping carts etc, and the <TT
-CLASS="LITERAL"
-><A
-HREF="actions-file.html#FILTER-UNSOLICITED-POPUPS"
->filter{<TT
-CLASS="REPLACEABLE"
-><I
->unsolicited-popups</I
-></TT
->}</A
->
- </TT
-> does a better job of catching only the unwanted ones.
- </P
-><P
-> If the only kind of pop-ups that you want to kill are exit consoles (those
- <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->really nasty</I
-></SPAN
-> windows that appear when you close an other
- one), you might want to use
- <TT
-CLASS="LITERAL"
-><A
-HREF="actions-file.html#FILTER"
->filter</A
->{<TT
-CLASS="REPLACEABLE"
-><I
->js-annoyances</I
-></TT
->}</TT
->
- instead.
- </P
-><P
-> This action is most appropriate for browsers that don't have any controls
- for unwanted pop-ups. Not recommended for general usage.
- </P
-><P
-> This action doesn't work very reliable and may be removed in future releases.
- </P
-></DD
-><DT
->Example usage:</DT
-><DD
-><P
-><TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="90%"
-><TR
-><TD
-><PRE
-CLASS="SCREEN"
->+kill-popups</PRE
-></TD
-></TR
-></TABLE
-></P
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><H4
-CLASS="SECT3"
-><A
NAME="LIMIT-CONNECT"
->8.5.28. limit-connect</A
+>8.5.26. limit-connect</A
></H4
><P
></P
<SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
-> only allows HTTP CONNECT
- requests to port 443 (the standard, secure HTTPS port). Use
- <TT
+> allows HTTP CONNECT requests to all
+ ports. Use <TT
CLASS="LITERAL"
>limit-connect</TT
-> if more fine-grained control is desired
- for some or all destinations.
+> if fine-grained control
+ is desired for some or all destinations.
</P
><P
> The CONNECT methods exists in HTTP to allow access to secure websites
>Privoxy</SPAN
>'s
filters. By specifying an invalid port range you can disable HTTPS entirely.
- If you plan to disable SSL by default, consider enabling
- <TT
-CLASS="LITERAL"
-><A
-HREF="actions-file.html#TREAT-FORBIDDEN-CONNECTS-LIKE-BLOCKS"
->treat-forbidden-connects-like-blocks</A
-></TT
->
- as well, to be able to quickly create exceptions.
</P
></DD
><DT
><TD
><PRE
CLASS="SCREEN"
->+limit-connect{443} # This is the default and need not be specified.
+>+limit-connect{443} # Port 443 is OK.
+limit-connect{80,443} # Ports 80 and 443 are OK.
+limit-connect{-3, 7, 20-100, 500-} # Ports less than 3, 7, 20 to 100 and above 500 are OK.
+limit-connect{-} # All ports are OK
CLASS="SECT3"
><A
NAME="PREVENT-COMPRESSION"
->8.5.29. prevent-compression</A
+>8.5.27. prevent-compression</A
></H4
><P
></P
HREF="actions-file.html#FILTER"
>filter</A
></TT
->, <TT
+> and
+ <TT
CLASS="LITERAL"
><A
HREF="actions-file.html#DEANIMATE-GIFS"
>deanimate-gifs</A
></TT
>
- and <TT
-CLASS="LITERAL"
-><A
-HREF="actions-file.html#KILL-POPUPS"
->kill-popups</A
-></TT
-> actions need
- access to the uncompressed data.
+ actions need access to the uncompressed data.
</P
><P
> When compiled with zlib support (available since <SPAN
CLASS="SECT3"
><A
NAME="OVERWRITE-LAST-MODIFIED"
->8.5.30. overwrite-last-modified</A
+>8.5.28. overwrite-last-modified</A
></H4
><P
></P
CLASS="SECT3"
><A
NAME="REDIRECT"
->8.5.31. redirect</A
+>8.5.29. redirect</A
></H4
><P
></P
><H4
CLASS="SECT3"
><A
-NAME="SEND-VANILLA-WAFER"
->8.5.32. send-vanilla-wafer</A
-></H4
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->Typical use:</DT
-><DD
-><P
-> Feed log analysis scripts with useless data.
- </P
-></DD
-><DT
->Effect:</DT
-><DD
-><P
-> Sends a cookie with each request stating that you do not accept any copyright
- on cookies sent to you, and asking the site operator not to track you.
- </P
-></DD
-><DT
->Type:</DT
-><DD
-><P
->Boolean.</P
-></DD
-><DT
->Parameter:</DT
-><DD
-><P
-> N/A
- </P
-></DD
-><DT
->Notes:</DT
-><DD
-><P
-> The vanilla wafer is a (relatively) unique header and could conceivably be used to track you.
- </P
-><P
-> This action is rarely used and not enabled in the default configuration.
- </P
-></DD
-><DT
->Example usage:</DT
-><DD
-><P
-> <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="90%"
-><TR
-><TD
-><PRE
-CLASS="SCREEN"
->+send-vanilla-wafer</PRE
-></TD
-></TR
-></TABLE
->
- </P
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><H4
-CLASS="SECT3"
-><A
-NAME="SEND-WAFER"
->8.5.33. send-wafer</A
-></H4
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->Typical use:</DT
-><DD
-><P
-> Send custom cookies or feed log analysis scripts with even more useless data.
- </P
-></DD
-><DT
->Effect:</DT
-><DD
-><P
-> Sends a custom, user-defined cookie with each request.
- </P
-></DD
-><DT
->Type:</DT
-><DD
-><P
->Multi-value.</P
-></DD
-><DT
->Parameter:</DT
-><DD
-><P
-> A string of the form <SPAN
-CLASS="QUOTE"
->"<TT
-CLASS="REPLACEABLE"
-><I
->name</I
-></TT
->=<TT
-CLASS="REPLACEABLE"
-><I
->value</I
-></TT
->"</SPAN
->.
- </P
-></DD
-><DT
->Notes:</DT
-><DD
-><P
-> Being multi-valued, multiple instances of this action can apply to the same request,
- resulting in multiple cookies being sent.
- </P
-><P
-> This action is rarely used and not enabled in the default configuration.
- </P
-></DD
-><DT
->Example usage (section):</DT
-><DD
-><P
-> <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="90%"
-><TR
-><TD
-><PRE
-CLASS="SCREEN"
->{+send-wafer{UsingPrivoxy=true}}
-my-internal-testing-server.void</PRE
-></TD
-></TR
-></TABLE
->
- </P
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><H4
-CLASS="SECT3"
-><A
NAME="SERVER-HEADER-FILTER"
->8.5.34. server-header-filter</A
+>8.5.30. server-header-filter</A
></H4
><P
></P
CLASS="SECT3"
><A
NAME="SERVER-HEADER-TAGGER"
->8.5.35. server-header-tagger</A
+>8.5.31. server-header-tagger</A
></H4
><P
></P
CLASS="SECT3"
><A
NAME="SESSION-COOKIES-ONLY"
->8.5.36. session-cookies-only</A
+>8.5.32. session-cookies-only</A
></H4
><P
></P
CLASS="SECT3"
><A
NAME="SET-IMAGE-BLOCKER"
->8.5.37. set-image-blocker</A
+>8.5.33. set-image-blocker</A
></H4
><P
></P
></DIV
><DIV
CLASS="SECT3"
-><H4
-CLASS="SECT3"
-><A
-NAME="TREAT-FORBIDDEN-CONNECTS-LIKE-BLOCKS"
->8.5.38. treat-forbidden-connects-like-blocks</A
-></H4
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->Typical use:</DT
-><DD
-><P
->Block forbidden connects with an easy to find error message.</P
-></DD
-><DT
->Effect:</DT
-><DD
-><P
-> If this action is enabled, <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> no longer
- makes a difference between forbidden connects and ordinary blocks.
- </P
-></DD
-><DT
->Type:</DT
-><DD
-><P
->Boolean</P
-></DD
-><DT
->Parameter:</DT
-><DD
-><P
->N/A</P
-></DD
-><DT
->Notes:</DT
-><DD
-><P
-> By default <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> answers
- <A
-HREF="actions-file.html#LIMIT-CONNECT"
->forbidden <SPAN
-CLASS="QUOTE"
->"Connect"</SPAN
-> requests</A
->
- with a short error message inside the headers. If the browser doesn't display
- headers (most don't), you just see an empty page.
- </P
-><P
-> With this action enabled, <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> displays
- the message that is used for ordinary blocks instead. If you decide
- to make an exception for the page in question, you can do so by
- following the <SPAN
-CLASS="QUOTE"
->"See why"</SPAN
-> link.
- </P
-><P
-> For <SPAN
-CLASS="QUOTE"
->"Connect"</SPAN
-> requests the clients tell
- <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> which host they are interested
- in, but not which document they plan to get later. As a result, the
- <SPAN
-CLASS="QUOTE"
->"Go there anyway"</SPAN
-> wouldn't work and is therefore suppressed.
- </P
-></DD
-><DT
->Example usage:</DT
-><DD
-><P
-> <TABLE
-BORDER="0"
-BGCOLOR="#E0E0E0"
-WIDTH="90%"
-><TR
-><TD
-><PRE
-CLASS="SCREEN"
->+treat-forbidden-connects-like-blocks</PRE
-></TD
-></TR
-></TABLE
->
- </P
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN4263"
->8.5.39. Summary</A
+NAME="AEN4101"
+>8.5.34. Summary</A
></H3
><P
> Note that many of these actions have the potential to cause a page to
HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
>crunch-outgoing-cookies</A
>
- +block-as-image = +block +handle-as-image
+ +block-as-image = +block{Blocked image.} +handle-as-image
allow-all-cookies = -crunch-all-cookies -<A
HREF="actions-file.html#SESSION-COOKIES-ONLY"
>session-cookies-only</A
HREF="actions-file.html#HIDE-REFERER"
>hide-referrer</A
> -<A
-HREF="actions-file.html#KILL-POPUPS"
->kill-popups</A
-> -<A
HREF="actions-file.html#PREVENT-COMPRESSION"
>prevent-compression</A
>
shop = -crunch-all-cookies -<A
HREF="actions-file.html#FILTER-ALL-POPUPS"
>filter{all-popups}</A
-> -<A
-HREF="actions-file.html#KILL-POPUPS"
->kill-popups</A
>
# Short names for other aliases, for really lazy people ;-)
# These shops require pop-ups:
#
- {-kill-popups -filter{all-popups} -filter{unsolicited-popups}}
+ {-filter{all-popups} -filter{unsolicited-popups}}
.dabs.com
.overclockers.co.uk</PRE
></TD
><H3
CLASS="SECT3"
><A
-NAME="AEN4328"
+NAME="AEN4164"
>8.7.1. default.action</A
></H3
><P
HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
>crunch-outgoing-cookies</A
>
- +block-as-image = +block +handle-as-image
+ +block-as-image = +block{Blocked image.} +handle-as-image
mercy-for-cookies = -crunch-all-cookies -<A
HREF="actions-file.html#SESSION-COOKIES-ONLY"
>session-cookies-only</A
> -<A
HREF="actions-file.html#HIDE-REFERER"
>hide-referrer</A
-> -<A
-HREF="actions-file.html#KILL-POPUPS"
->kill-popups</A
>
shop = -crunch-all-cookies -<A
HREF="actions-file.html#FILTER-ALL-POPUPS"
>filter{all-popups}</A
-> -<A
-HREF="actions-file.html#KILL-POPUPS"
->kill-popups</A
></PRE
></TD
></TR
##########################################################################
{ <A
HREF="actions-file.html#BLOCK"
->+block</A
+>+block{Banner ads.}</A
> }
# Generic patterns:
><H3
CLASS="SECT3"
><A
-NAME="AEN4464"
+NAME="AEN4298"
>8.7.2. user.action</A
></H3
><P
+crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
-crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
allow-all-cookies = -crunch-all-cookies -session-cookies-only
- allow-popups = -filter{all-popups} -kill-popups
-+block-as-image = +block +handle-as-image
+ allow-popups = -filter{all-popups}
++block-as-image = +block{Blocked as image.} +handle-as-image
-block-as-image = -block
# These aliases define combinations of actions that are useful for
# certain types of sites:
#
-fragile = -block -crunch-all-cookies -filter -fast-redirects -hide-referrer -kill-popups
+fragile = -block -crunch-all-cookies -filter -fast-redirects -hide-referrer
shop = -crunch-all-cookies allow-popups
# Allow ads for selected useful free sites:
and pasted the URL below while removing the leading http://, into a
<TT
CLASS="LITERAL"
->{ +block }</TT
+>{ +block{} }</TT
> section. Note that <TT
CLASS="LITERAL"
>{ +handle-as-image
>{ +<A
HREF="actions-file.html#BLOCK"
>block</A
-> }
+>{Nasty ads.} }
www.example.com/nasty-ads/sponsor\.gif
another.example.net/more/junk/here/</PRE
></TD
><H2
CLASS="SECT2"
><A
-NAME="AEN5349"
+NAME="AEN5184"
>14.2. Privoxy's Internal Pages</A
></H2
><P
Privoxy main page:
</P
><A
-NAME="AEN5363"
+NAME="AEN5198"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
editing of actions files:
</P
><A
-NAME="AEN5371"
+NAME="AEN5206"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
Show the source code version numbers:
</P
><A
-NAME="AEN5376"
+NAME="AEN5211"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
Show the browser's request headers:
</P
><A
-NAME="AEN5381"
+NAME="AEN5216"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
Show which actions apply to a URL and why:
</P
><A
-NAME="AEN5386"
+NAME="AEN5221"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
place:
</P
><A
-NAME="AEN5394"
+NAME="AEN5229"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
> Short cuts. Turn off, then on:
</P
><A
-NAME="AEN5398"
+NAME="AEN5233"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
</P
></BLOCKQUOTE
><A
-NAME="AEN5401"
+NAME="AEN5236"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><LI
><P
> <A
-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());"
+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());"
TARGET="_top"
>Privoxy - Enable</A
>
><LI
><P
> <A
-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());"
+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());"
TARGET="_top"
>Privoxy - Disable</A
>
><LI
><P
> <A
-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());"
+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());"
TARGET="_top"
>Privoxy - Toggle Privoxy</A
> (Toggles between enabled and disabled)
></LI
><LI
><P
-> If the <A
-HREF="actions-file.html#KILL-POPUPS"
-><SPAN
-CLASS="QUOTE"
->"+kill-popups"</SPAN
-></A
->
- action applies, and it is an HTML or JavaScript document, the popup-code in the
- response is filtered on-the-fly as it is received.
- </P
-></LI
-><LI
-><P
> If any <A
HREF="actions-file.html#FILTER"
><SPAN
-hide-if-modified-since
+hide-referrer {forge}
-hide-user-agent
- -inspect-jpegs
- -kill-popups
-limit-connect
-overwrite-last-modified
-prevent-compression
-redirect
- -send-vanilla-wafer
- -send-wafer
-server-header-filter{xml-to-html}
-server-header-filter{html-to-xml}
-session-cookies-only
- +set-image-blocker {pattern}
- -treat-forbidden-connects-like-blocks </PRE
+ +set-image-blocker {pattern} </PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
-> { +block }
+> { +block{Domains starts with "ad"} }
ad*.
- { +block }
+ { +block{Domain contains "ad"} }
.ad.
- { +block +handle-as-image }
+ { +block{Doubleclick banner server} +handle-as-image }
.[a-vx-z]*.doubleclick.net</PRE
></TD
></TR
> We'll just show the interesting part here - the explicit matches. It is
matched three different times. Two <SPAN
CLASS="QUOTE"
->"+block"</SPAN
+>"+block{}"</SPAN
> sections,
and a <SPAN
CLASS="QUOTE"
->"+block +handle-as-image"</SPAN
+>"+block{} +handle-as-image"</SPAN
>,
which is the expanded form of one of our aliases that had been defined as:
<SPAN
HREF="actions-file.html#BLOCK"
><SPAN
CLASS="QUOTE"
->"+block"</SPAN
+>"+block{}"</SPAN
></A
>
<SPAN
+hide-from-header{block}
+hide-referer{forge}
-hide-user-agent
- -inspect-jpegs
- -kill-popups
-overwrite-last-modified
+prevent-compression
-redirect
- -send-vanilla-wafer
- -send-wafer
-server-header-filter{xml-to-html}
-server-header-filter{html-to-xml}
+session-cookies-only
- +set-image-blocker{blank}
- -treat-forbidden-connects-like-blocks }
+ +set-image-blocker{blank} }
/
- { +block +handle-as-image }
+ { +block{Path contains "ads".} +handle-as-image }
/ads</PRE
></TD
></TR
><TD
><PRE
CLASS="SCREEN"
-> { +block +handle-as-image }
+> { +block{Path starts with "ads".} +handle-as-image }
/ads</PRE
></TD
></TR