/*********************************************************************
*
- * File : $Source: /cvsroot/ijbswa/current/INSTALL,v $
+ * File : $Source: /cvsroot/ijbswa/current/doc/source/install.sgml,v $
*
* Purpose : INSTALL file to help with installing from source.
*
When building from a source tarball, first unpack the source:
- tar xzvf privoxy-3.0.26-stable-src.tar.gz
- cd privoxy-3.0.26-stable
+ tar xzvf privoxy-3.0.27-beta-src.tar.gz
+ cd privoxy-3.0.27-beta
For retrieving the current CVS sources, you'll need a CVS client installed.
Note that sources from CVS are typically development quality, and may not be
/*********************************************************************
*
- * File : $Source: /cvsroot/ijbswa/current/README,v $
+ * File : $Source: /cvsroot/ijbswa/current/doc/source/readme.sgml,v $
*
* Purpose : README file to give a short intro.
*
*
*********************************************************************/
-This README is included with Privoxy 3.0.26. See https://www.privoxy.org/ for
-more information. The current code maturity level is "stable".
+This README is included with the development version of Privoxy 3.0.27. See
+https://www.privoxy.org/ for more information. The current code maturity level
+is "UNRELEASED", but seems stable to us :).
-------------------------------------------------------------------------------
The actions list can be configured via the web interface accessed via http://
p.p/, as well other options.
+All configuration files are subject to unannounced changes during the
+development process.
+
-------------------------------------------------------------------------------
5. DOCUMENTATION
-There should be documentation in the 'doc' subdirectory. In particular, see the
-User Manual there, the FAQ, and those interested in Privoxy development, should
-look at developer-manual.
+There should be documentation in the 'doc' subdirectory, but it may not be
+completed at this point. In particular, see the User Manual there, the FAQ, and
+those interested in Privoxy development, should look at developer-manual.
-The source and configuration files are all well commented. The main
-configuration files are: 'config', 'default.action', and 'default.filter'.
+The most up to date source of information on the current development version,
+may still be either comments in the source code, or the included configuration
+files. The source and configuration files are all well commented. The main
+configuration files are: 'config', 'default.action', and 'default.filter' in
+the top-level source directory.
Included documentation may vary according to platform and packager. All
documentation is posted on https://www.privoxy.org, in case you don't have it,
directive is being used and the following debug options are enabled (all of
them):
- debug 1 # Log the destination for each request Privoxy let through. See also debug 1024.
+ debug 1 # Log the destination for each request Privoxy let through.
+ # See also debug 1024.
debug 2 # show each connection status
debug 4 # show I/O status
debug 8 # show header parsing
debug 128 # debug redirects
debug 256 # debug GIF de-animation
debug 512 # Common Log Format
- debug 1024 # Log the destination for requests Privoxy didn't let through, and the reason why.
+ debug 1024 # Log the destination for requests Privoxy didn't let through,
+ # and the reason why.
debug 4096 # Startup banner and warnings.
debug 8192 # Non-fatal errors
+ debug 65536 # Log applying actions
If you are having trouble with a filter, please additionally enable
debug 64 # debug regular expression filters
- If you are using Privoxy 3.0.17 or later and suspect that it interprets the
- request or the response incorrectly, please enable
+ If you suspect that Privoxy interprets the request or the response
+ incorrectly, please enable
debug 32768 # log all data read from the network
<html>
<head>
<title>Coding Guidelines</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy Developer Manual" href="index.html">
- <link rel="PREVIOUS" title="Documentation Guidelines" href=
- "documentation.html">
+ <link rel="PREVIOUS" title="Documentation Guidelines" href="documentation.html">
<link rel="NEXT" title="Testing Guidelines" href="testing.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy Developer Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "documentation.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="documentation.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="testing.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="testing.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="CODING" id="CODING">4. Coding
- Guidelines</a></h1>
+ <h1 class="SECT1"><a name="CODING" id="CODING">4. Coding Guidelines</a></h1>
<div class="SECT2">
<h2 class="SECT2"><a name="S1" id="S1">4.1. Introduction</a></h2>
- <p>This set of standards is designed to make our lives easier. It is
- developed with the simple goal of helping us keep the "new and improved
- <span class="APPLICATION">Privoxy</span>" consistent and reliable. Thus
- making maintenance easier and increasing chances of success of the
- project.</p>
- <p>And that of course comes back to us as individuals. If we can
- increase our development and product efficiencies then we can solve
- more of the request for changes/improvements and in general feel good
- about ourselves. ;-></p>
+ <p>This set of standards is designed to make our lives easier. It is developed with the simple goal of helping us
+ keep the "new and improved <span class="APPLICATION">Privoxy</span>" consistent and reliable. Thus making
+ maintenance easier and increasing chances of success of the project.</p>
+ <p>And that of course comes back to us as individuals. If we can increase our development and product
+ efficiencies then we can solve more of the request for changes/improvements and in general feel good about
+ ourselves. ;-></p>
</div>
<div class="SECT2">
<h2 class="SECT2"><a name="S2" id="S2">4.2. Using Comments</a></h2>
<div class="SECT3">
- <h3 class="SECT3"><a name="S3" id="S3">4.2.1. Comment, Comment,
- Comment</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Comment as much as possible without commenting the obvious. For
- example do not comment "variable_a is equal to variable_b". Instead
- explain why variable_a should be equal to the variable_b. Just
- because a person can read code does not mean they will understand why
- or what is being done. A reader may spend a lot more time figuring
- out what is going on when a simple comment or explanation would have
- prevented the extra research. Please help your fellow Privoxy
- developers out!</p>
- <p>The comments will also help justify the intent of the code. If the
- comment describes something different than what the code is doing
- then maybe a programming error is occurring.</p>
+ <h3 class="SECT3"><a name="S3" id="S3">4.2.1. Comment, Comment, Comment</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Comment as much as possible without commenting the obvious. For example do not comment "variable_a is equal
+ to variable_b". Instead explain why variable_a should be equal to the variable_b. Just because a person can
+ read code does not mean they will understand why or what is being done. A reader may spend a lot more time
+ figuring out what is going on when a simple comment or explanation would have prevented the extra research.
+ Please help your fellow Privoxy developers out!</p>
+ <p>The comments will also help justify the intent of the code. If the comment describes something different
+ than what the code is doing then maybe a programming error is occurring.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- /* if page size greater than 1k ... */
+ <pre class="PROGRAMLISTING">/* if page size greater than 1k ... */
if (page_length() > 1024)
{
... "block" the page up ...
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S4" id="S4">4.2.2. Use blocks for
- comments</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Comments can help or they can clutter. They help when they are
- differentiated from the code they describe. One line comments do not
- offer effective separation between the comment and the code. Block
- identifiers do, by surrounding the code with a clear, definable
- pattern.</p>
+ <h3 class="SECT3"><a name="S4" id="S4">4.2.2. Use blocks for comments</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Comments can help or they can clutter. They help when they are differentiated from the code they describe.
+ One line comments do not offer effective separation between the comment and the code. Block identifiers do, by
+ surrounding the code with a clear, definable pattern.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- /*********************************************************************
+ <pre class="PROGRAMLISTING">/*********************************************************************
* This will stand out clearly in your code!
*********************************************************************/
if (this_variable == that_variable)
</td>
</tr>
</table>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Exception:</i></span></p>
- <p>If you are trying to add a small logic comment and do not wish to
- "disrupt" the flow of the code, feel free to use a 1 line comment
- which is NOT on the same line as the code.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Exception:</i></span></p>
+ <p>If you are trying to add a small logic comment and do not wish to "disrupt" the flow of the code, feel free
+ to use a 1 line comment which is NOT on the same line as the code.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S5" id="S5">4.2.3. Keep Comments on their
- own line</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>It goes back to the question of readability. If the comment is on
- the same line as the code it will be harder to read than the comment
- that is on its own line.</p>
- <p>There are three exceptions to this rule, which should be violated
- freely and often: during the definition of variables, at the end of
- closing braces, when used to comment parameters.</p>
+ <h3 class="SECT3"><a name="S5" id="S5">4.2.3. Keep Comments on their own line</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>It goes back to the question of readability. If the comment is on the same line as the code it will be
+ harder to read than the comment that is on its own line.</p>
+ <p>There are three exceptions to this rule, which should be violated freely and often: during the definition of
+ variables, at the end of closing braces, when used to comment parameters.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- /*********************************************************************
+ <pre class="PROGRAMLISTING">/*********************************************************************
* This will stand out clearly in your code,
* But the second example won't.
*********************************************************************/
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S6" id="S6">4.2.4. Comment each logical
- step</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Logical steps should be commented to help others follow the intent
- of the written code and comments will make the code more
- readable.</p>
- <p>If you have 25 lines of code without a comment, you should
- probably go back into it to see where you forgot to put one.</p>
- <p>Most "for", "while", "do", etc... loops _probably_ need a comment.
- After all, these are usually major logic containers.</p>
+ <h3 class="SECT3"><a name="S6" id="S6">4.2.4. Comment each logical step</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Logical steps should be commented to help others follow the intent of the written code and comments will
+ make the code more readable.</p>
+ <p>If you have 25 lines of code without a comment, you should probably go back into it to see where you forgot
+ to put one.</p>
+ <p>Most "for", "while", "do", etc... loops _probably_ need a comment. After all, these are usually major logic
+ containers.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S7" id="S7">4.2.5. Comment All Functions
- Thoroughly</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>A reader of the code should be able to look at the comments just
- prior to the beginning of a function and discern the reason for its
- existence and the consequences of using it. The reader should not
- have to read through the code to determine if a given function is
- safe for a desired use. The proper information thoroughly presented
- at the introduction of a function not only saves time for subsequent
- maintenance or debugging, it more importantly aids in code reuse by
- allowing a user to determine the safety and applicability of any
- function for the problem at hand. As a result of such benefits, all
- functions should contain the information presented in the addendum
- section of this document.</p>
+ <h3 class="SECT3"><a name="S7" id="S7">4.2.5. Comment All Functions Thoroughly</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>A reader of the code should be able to look at the comments just prior to the beginning of a function and
+ discern the reason for its existence and the consequences of using it. The reader should not have to read
+ through the code to determine if a given function is safe for a desired use. The proper information thoroughly
+ presented at the introduction of a function not only saves time for subsequent maintenance or debugging, it
+ more importantly aids in code reuse by allowing a user to determine the safety and applicability of any
+ function for the problem at hand. As a result of such benefits, all functions should contain the information
+ presented in the addendum section of this document.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S8" id="S8">4.2.6. Comment at the end of
- braces if the content is more than one screen length</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Each closing brace should be followed on the same line by a
- comment that describes the origination of the brace if the original
- brace is off of the screen, or otherwise far away from the closing
- brace. This will simplify the debugging, maintenance, and readability
- of the code.</p>
- <p>As a suggestion , use the following flags to make the comment and
- its brace more readable:</p>
- <p>use following a closing brace: } /* -END- if() or while () or
- etc... */</p>
+ <h3 class="SECT3"><a name="S8" id="S8">4.2.6. Comment at the end of braces if the content is more than one
+ screen length</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Each closing brace should be followed on the same line by a comment that describes the origination of the
+ brace if the original brace is off of the screen, or otherwise far away from the closing brace. This will
+ simplify the debugging, maintenance, and readability of the code.</p>
+ <p>As a suggestion , use the following flags to make the comment and its brace more readable:</p>
+ <p>use following a closing brace: } /* -END- if() or while () or etc... */</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<div class="SECT2">
<h2 class="SECT2"><a name="S9" id="S9">4.3. Naming Conventions</a></h2>
<div class="SECT3">
- <h3 class="SECT3"><a name="S10" id="S10">4.3.1. Variable
- Names</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Use all lowercase, and separate words via an underscore ('_'). Do
- not start an identifier with an underscore. (ANSI C reserves these
- for use by the compiler and system headers.) Do not use identifiers
- which are reserved in ANSI C++. (E.g. template, class, true, false,
- ...). This is in case we ever decide to port Privoxy to C++.</p>
+ <h3 class="SECT3"><a name="S10" id="S10">4.3.1. Variable Names</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Use all lowercase, and separate words via an underscore ('_'). Do not start an identifier with an
+ underscore. (ANSI C reserves these for use by the compiler and system headers.) Do not use identifiers which
+ are reserved in ANSI C++. (E.g. template, class, true, false, ...). This is in case we ever decide to port
+ Privoxy to C++.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Instead
- of:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- int msiis5hack = 0; int msIis5Hack = 0;</pre>
+ <pre class="PROGRAMLISTING">int msiis5hack = 0; int msIis5Hack = 0;</pre>
</td>
</tr>
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S11" id="S11">4.3.2. Function
- Names</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Use all lowercase, and separate words via an underscore ('_'). Do
- not start an identifier with an underscore. (ANSI C reserves these
- for use by the compiler and system headers.) Do not use identifiers
- which are reserved in ANSI C++. (E.g. template, class, true, false,
- ...). This is in case we ever decide to port Privoxy to C++.</p>
+ <h3 class="SECT3"><a name="S11" id="S11">4.3.2. Function Names</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Use all lowercase, and separate words via an underscore ('_'). Do not start an identifier with an
+ underscore. (ANSI C reserves these for use by the compiler and system headers.) Do not use identifiers which
+ are reserved in ANSI C++. (E.g. template, class, true, false, ...). This is in case we ever decide to port
+ Privoxy to C++.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- int load_some_file(struct client_state *csp)</pre>
+ <pre class="PROGRAMLISTING">int load_some_file(struct client_state *csp)</pre>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Instead
- of:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- int loadsomefile(struct client_state *csp)
+ <pre class="PROGRAMLISTING">int loadsomefile(struct client_state *csp)
int loadSomeFile(struct client_state *csp)</pre>
</td>
</tr>
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S12" id="S12">4.3.3. Header file
- prototypes</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Use a descriptive parameter name in the function prototype in
- header files. Use the same parameter name in the header file that you
- use in the c file.</p>
+ <h3 class="SECT3"><a name="S12" id="S12">4.3.3. Header file prototypes</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Use a descriptive parameter name in the function prototype in header files. Use the same parameter name in
+ the header file that you use in the c file.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- (.h) extern int load_aclfile(struct client_state *csp);
+ <pre class="PROGRAMLISTING">(.h) extern int load_aclfile(struct client_state *csp);
(.c) int load_aclfile(struct client_state *csp)</pre>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Instead
- of:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- (.h) extern int load_aclfile(struct client_state *); or
+ <pre class="PROGRAMLISTING">(.h) extern int load_aclfile(struct client_state *); or
(.h) extern int load_aclfile();
(.c) int load_aclfile(struct client_state *csp)</pre>
</td>
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S13" id="S13">4.3.4. Enumerations, and
- #defines</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Use all capital letters, with underscores between words. Do not
- start an identifier with an underscore. (ANSI C reserves these for
- use by the compiler and system headers.)</p>
+ <h3 class="SECT3"><a name="S13" id="S13">4.3.4. Enumerations, and #defines</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Use all capital letters, with underscores between words. Do not start an identifier with an underscore.
+ (ANSI C reserves these for use by the compiler and system headers.)</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- (enumeration) : enum Boolean {FALSE, TRUE};
+ <pre class="PROGRAMLISTING">(enumeration) : enum Boolean {FALSE, TRUE};
(#define) : #define DEFAULT_SIZE 100;</pre>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> We
- have a standard naming scheme for #defines that toggle a feature in
- the preprocessor: FEATURE_>, where > is a short (preferably 1
- or 2 word) description.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> We have a standard naming scheme for #defines
+ that toggle a feature in the preprocessor: FEATURE_>, where > is a short (preferably 1 or 2 word)
+ description.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</div>
<div class="SECT3">
<h3 class="SECT3"><a name="S14" id="S14">4.3.5. Constants</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
<p>Spell common words out entirely (do not remove vowels).</p>
- <p>Use only widely-known domain acronyms and abbreviations.
- Capitalize all letters of an acronym.</p>
- <p>Use underscore (_) to separate adjacent acronyms and
- abbreviations. Never terminate a name with an underscore.</p>
+ <p>Use only widely-known domain acronyms and abbreviations. Capitalize all letters of an acronym.</p>
+ <p>Use underscore (_) to separate adjacent acronyms and abbreviations. Never terminate a name with an
+ underscore.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Instead
- of:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
<div class="SECT2">
<h2 class="SECT2"><a name="S15" id="S15">4.4. Using Space</a></h2>
<div class="SECT3">
- <h3 class="SECT3"><a name="S16" id="S16">4.4.1. Put braces on a line
- by themselves.</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>The brace needs to be on a line all by itself, not at the end of
- the statement. Curly braces should line up with the construct that
- they're associated with. This practice makes it easier to identify
- the opening and closing braces for a block.</p>
+ <h3 class="SECT3"><a name="S16" id="S16">4.4.1. Put braces on a line by themselves.</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>The brace needs to be on a line all by itself, not at the end of the statement. Curly braces should line up
+ with the construct that they're associated with. This practice makes it easier to identify the opening and
+ closing braces for a block.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Instead
- of:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span></p>
<p>if (this == that) { ... }</p>
<p>or</p>
<p>if (this == that) { ... }</p>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> In the
- special case that the if-statement is inside a loop, and it is
- trivial, i.e. it tests for a condition that is obvious from the
- purpose of the block, one-liners as above may optically preserve the
- loop structure and make it easier to read.</p>
- <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span>
- developer-discretion.</p>
- <p><span class="emphasis"><i class="EMPHASIS">Example
- exception:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> In the special case that the if-statement is
+ inside a loop, and it is trivial, i.e. it tests for a condition that is obvious from the purpose of the block,
+ one-liners as above may optically preserve the loop structure and make it easier to read.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span> developer-discretion.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Example exception:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S17" id="S17">4.4.2. ALL control
- statements should have a block</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Using braces to make a block will make your code more readable and
- less prone to error. All control statements should have a block
- defined.</p>
+ <h3 class="SECT3"><a name="S17" id="S17">4.4.2. ALL control statements should have a block</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Using braces to make a block will make your code more readable and less prone to error. All control
+ statements should have a block defined.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Instead
- of:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span></p>
<p>if (this == that) do_something(); do_something_else();</p>
<p>or</p>
<p>if (this == that) do_something();</p>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> The
- first example in "Instead of" will execute in a manner other than
- that which the developer desired (per indentation). Using code braces
- would have prevented this "feature". The "explanation" and
- "exception" from the point above also applies.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> The first example in "Instead of" will execute
+ in a manner other than that which the developer desired (per indentation). Using code braces would have
+ prevented this "feature". The "explanation" and "exception" from the point above also applies.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S18" id="S18">4.4.3. Do not
- belabor/blow-up boolean expressions</a></h3>
+ <h3 class="SECT3"><a name="S18" id="S18">4.4.3. Do not belabor/blow-up boolean expressions</a></h3>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- structure->flag = (condition);</pre>
+ <pre class="PROGRAMLISTING">structure->flag = (condition);</pre>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Instead
- of:</i></span></p>
- <p>if (condition) { structure->flag = 1; } else {
- structure->flag = 0; }</p>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> The
- former is readable and concise. The later is wordy and inefficient.
- Please assume that any developer new to the project has at least a
- "good" knowledge of C/C++. (Hope I do not offend by that last comment
- ... 8-)</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span></p>
+ <p>if (condition) { structure->flag = 1; } else { structure->flag = 0; }</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> The former is readable and concise. The later is
+ wordy and inefficient. Please assume that any developer new to the project has at least a "good" knowledge of
+ C/C++. (Hope I do not offend by that last comment ... 8-)</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S19" id="S19">4.4.4. Use white space
- freely because it is free</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Make it readable. The notable exception to using white space
- freely is listed in the next guideline.</p>
+ <h3 class="SECT3"><a name="S19" id="S19">4.4.4. Use white space freely because it is free</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Make it readable. The notable exception to using white space freely is listed in the next guideline.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S20" id="S20">4.4.5. Don't use white space
- around structure operators</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>- structure pointer operator ( "->" ) - member operator ( "." )
- - functions and parentheses</p>
- <p>It is a general coding practice to put pointers, references, and
- function parentheses next to names. With spaces, the connection
- between the object and variable/function name is not as clear.</p>
+ <h3 class="SECT3"><a name="S20" id="S20">4.4.5. Don't use white space around structure operators</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>- structure pointer operator ( "->" ) - member operator ( "." ) - functions and parentheses</p>
+ <p>It is a general coding practice to put pointers, references, and function parentheses next to names. With
+ spaces, the connection between the object and variable/function name is not as clear.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span>
- a_struct -> a_member; a_struct . a_member; function_name ();</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> a_struct -> a_member; a_struct .
+ a_member; function_name ();</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S21" id="S21">4.4.6. Make the last brace
- of a function stand out</a></h3>
+ <h3 class="SECT3"><a name="S21" id="S21">4.4.6. Make the last brace of a function stand out</a></h3>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Instead
- of:</i></span></p>
- <p>int function1( ... ) { ...code... return(ret_code); } int
- function2( ... ) { }</p>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> Use 1
- blank line before the closing brace and 2 lines afterward. This makes
- the end of function standout to the most casual viewer. Although
- function comments help separate functions, this is still a good
- coding practice. In fact, I follow these rules when using blocks in
- "for", "while", "do" loops, and long if {} statements too. After all
- whitespace is free!</p>
- <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span>
- developer-discretion on the number of blank lines. Enforced is the
- end of function comments.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span></p>
+ <p>int function1( ... ) { ...code... return(ret_code); } int function2( ... ) { }</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> Use 1 blank line before the closing brace and 2
+ lines afterward. This makes the end of function standout to the most casual viewer. Although function comments
+ help separate functions, this is still a good coding practice. In fact, I follow these rules when using blocks
+ in "for", "while", "do" loops, and long if {} statements too. After all whitespace is free!</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span> developer-discretion on the number of blank
+ lines. Enforced is the end of function comments.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S22" id="S22">4.4.7. Use 3 character
- indentions</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>If some use 8 character TABs and some use 3 character TABs, the
- code can look *very* ragged. So use 3 character indentions only. If
- you like to use TABs, pass your code through a filter such as "expand
- -t3" before checking in your code.</p>
+ <h3 class="SECT3"><a name="S22" id="S22">4.4.7. Use 3 character indentions</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>If some use 8 character TABs and some use 3 character TABs, the code can look *very* ragged. So use 3
+ character indentions only. If you like to use TABs, pass your code through a filter such as "expand -t3" before
+ checking in your code.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- static const char * const url_code_map[256] =
+ <pre class="PROGRAMLISTING">static const char * const url_code_map[256] =
{
NULL, ...
};
<div class="SECT2">
<h2 class="SECT2"><a name="S23" id="S23">4.5. Initializing</a></h2>
<div class="SECT3">
- <h3 class="SECT3"><a name="S24" id="S24">4.5.1. Initialize all
- variables</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Do not assume that the variables declared will not be used until
- after they have been assigned a value somewhere else in the code.
- Remove the chance of accidentally using an unassigned variable.</p>
+ <h3 class="SECT3"><a name="S24" id="S24">4.5.1. Initialize all variables</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Do not assume that the variables declared will not be used until after they have been assigned a value
+ somewhere else in the code. Remove the chance of accidentally using an unassigned variable.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> It is
- much easier to debug a SIGSEGV if the message says you are trying to
- access memory address 00000000 and not 129FA012; or array_ptr[20]
- causes a SIGSEV vs. array_ptr[0].</p>
- <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span>
- developer-discretion if and only if the variable is assigned a value
- "shortly after" declaration.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> It is much easier to debug a SIGSEGV if the
+ message says you are trying to access memory address 00000000 and not 129FA012; or array_ptr[20] causes a
+ SIGSEV vs. array_ptr[0].</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span> developer-discretion if and only if the
+ variable is assigned a value "shortly after" declaration.</p>
</div>
</div>
<div class="SECT2">
<h2 class="SECT2"><a name="S25" id="S25">4.6. Functions</a></h2>
<div class="SECT3">
- <h3 class="SECT3"><a name="S26" id="S26">4.6.1. Name functions that
- return a boolean as a question.</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Value should be phrased as a question that would logically be
- answered as a true or false statement</p>
+ <h3 class="SECT3"><a name="S26" id="S26">4.6.1. Name functions that return a boolean as a question.</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Value should be phrased as a question that would logically be answered as a true or false statement</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S27" id="S27">4.6.2. Always specify a
- return type for a function.</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>The default return for a function is an int. To avoid ambiguity,
- create a return for a function when the return has a purpose, and
- create a void return type if the function does not need to return
- anything.</p>
+ <h3 class="SECT3"><a name="S27" id="S27">4.6.2. Always specify a return type for a function.</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>The default return for a function is an int. To avoid ambiguity, create a return for a function when the
+ return has a purpose, and create a void return type if the function does not need to return anything.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S28" id="S28">4.6.3. Minimize function
- calls when iterating by using variables</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>It is easy to write the following code, and a clear argument can
- be made that the code is easy to understand:</p>
+ <h3 class="SECT3"><a name="S28" id="S28">4.6.3. Minimize function calls when iterating by using
+ variables</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>It is easy to write the following code, and a clear argument can be made that the code is easy to
+ understand:</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- for (size_t cnt = 0; cnt < block_list_length(); cnt++)
+ <pre class="PROGRAMLISTING">for (size_t cnt = 0; cnt < block_list_length(); cnt++)
{
....
}</pre>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span>
- Unfortunately, this makes a function call for each and every
- iteration. This increases the overhead in the program, because the
- compiler has to look up the function each time, call it, and return a
- value. Depending on what occurs in the block_list_length() call, it
- might even be creating and destroying structures with each iteration,
- even though in each case it is comparing "cnt" to the same value,
- over and over. Remember too - even a call to block_list_length() is a
- function call, with the same overhead.</p>
- <p>Instead of using a function call during the iterations, assign the
- value to a variable, and evaluate using the variable.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> Unfortunately, this makes a function call for
+ each and every iteration. This increases the overhead in the program, because the compiler has to look up the
+ function each time, call it, and return a value. Depending on what occurs in the block_list_length() call, it
+ might even be creating and destroying structures with each iteration, even though in each case it is comparing
+ "cnt" to the same value, over and over. Remember too - even a call to block_list_length() is a function call,
+ with the same overhead.</p>
+ <p>Instead of using a function call during the iterations, assign the value to a variable, and evaluate using
+ the variable.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Exceptions:</i></span>
- if the value of block_list_length() *may* change or could
- *potentially* change, then you must code the function call in the
- for/while loop.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Exceptions:</i></span> if the value of block_list_length() *may*
+ change or could *potentially* change, then you must code the function call in the for/while loop.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S29" id="S29">4.6.4. Pass and Return by
- Const Reference</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>This allows a developer to define a const pointer and call your
- function. If your function does not have the const keyword, we may
- not be able to use your function. Consider strcmp, if it were defined
- as: extern int strcmp(char *s1, char *s2);</p>
- <p>I could then not use it to compare argv's in main: int main(int
- argc, const char *argv[]) { strcmp(argv[0], "privoxy"); }</p>
- <p>Both these pointers are *const*! If the c runtime library
- maintainers do it, we should too.</p>
+ <h3 class="SECT3"><a name="S29" id="S29">4.6.4. Pass and Return by Const Reference</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>This allows a developer to define a const pointer and call your function. If your function does not have the
+ const keyword, we may not be able to use your function. Consider strcmp, if it were defined as: extern int
+ strcmp(char *s1, char *s2);</p>
+ <p>I could then not use it to compare argv's in main: int main(int argc, const char *argv[]) { strcmp(argv[0],
+ "privoxy"); }</p>
+ <p>Both these pointers are *const*! If the c runtime library maintainers do it, we should too.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S30" id="S30">4.6.5. Pass and Return by
- Value</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Most structures cannot fit onto a normal stack entry (i.e. they
- are not 4 bytes or less). Aka, a function declaration like: int
- load_aclfile(struct client_state csp)</p>
- <p>would not work. So, to be consistent, we should declare all
- prototypes with "pass by value": int load_aclfile(struct client_state
- *csp)</p>
+ <h3 class="SECT3"><a name="S30" id="S30">4.6.5. Pass and Return by Value</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Most structures cannot fit onto a normal stack entry (i.e. they are not 4 bytes or less). Aka, a function
+ declaration like: int load_aclfile(struct client_state csp)</p>
+ <p>would not work. So, to be consistent, we should declare all prototypes with "pass by value": int
+ load_aclfile(struct client_state *csp)</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S31" id="S31">4.6.6. Names of include
- files</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Your include statements should contain the file name without a
- path. The path should be listed in the Makefile, using -I as
- processor directive to search the indicated paths. An exception to
- this would be for some proprietary software that utilizes a partial
- path to distinguish their header files from system or other header
+ <h3 class="SECT3"><a name="S31" id="S31">4.6.6. Names of include files</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Your include statements should contain the file name without a path. The path should be listed in the
+ Makefile, using -I as processor directive to search the indicated paths. An exception to this would be for some
+ proprietary software that utilizes a partial path to distinguish their header files from system or other header
files.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- #include <iostream.h> /* This is not a local include */
+ <pre class="PROGRAMLISTING">#include <iostream.h> /* This is not a local include */
#include "config.h" /* This IS a local include */</pre>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Exception:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Exception:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- /* This is not a local include, but requires a path element. */
+ <pre class="PROGRAMLISTING">/* This is not a local include, but requires a path element. */
#include <sys/fileName.h></pre>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span>
- Please! do not add "-I." to the Makefile without a _very_ good
- reason. This duplicates the #include "file.h" behavior.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> Please! do not add "-I." to the Makefile without
+ a _very_ good reason. This duplicates the #include "file.h" behavior.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S32" id="S32">4.6.7. Provide multiple
- inclusion protection</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Prevents compiler and linker errors resulting from redefinition of
- items.</p>
- <p>Wrap each header file with the following syntax to prevent
- multiple inclusions of the file. Of course, replace PROJECT_H with
- your file name, with "." Changed to "_", and make it uppercase.</p>
+ <h3 class="SECT3"><a name="S32" id="S32">4.6.7. Provide multiple inclusion protection</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Prevents compiler and linker errors resulting from redefinition of items.</p>
+ <p>Wrap each header file with the following syntax to prevent multiple inclusions of the file. Of course,
+ replace PROJECT_H with your file name, with "." Changed to "_", and make it uppercase.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S33" id="S33">4.6.8. Use `extern "C"` when
- appropriate</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>If our headers are included from C++, they must declare our
- functions as `extern "C"`. This has no cost in C, but increases the
- potential re-usability of our code.</p>
+ <h3 class="SECT3"><a name="S33" id="S33">4.6.8. Use `extern "C"` when appropriate</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>If our headers are included from C++, they must declare our functions as `extern "C"`. This has no cost in
+ C, but increases the potential re-usability of our code.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S34" id="S34">4.6.9. Where Possible, Use
- Forward Struct Declaration Instead of Includes</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Useful in headers that include pointers to other struct's.
- Modifications to excess header files may cause needless compiles.</p>
+ <h3 class="SECT3"><a name="S34" id="S34">4.6.9. Where Possible, Use Forward Struct Declaration Instead of
+ Includes</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Useful in headers that include pointers to other struct's. Modifications to excess header files may cause
+ needless compiles.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- /*********************************************************************
+ <pre class="PROGRAMLISTING">/*********************************************************************
* We're avoiding an include statement here!
*********************************************************************/
struct file_list;
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> If you
- declare "file_list xyz;" (without the pointer), then including the
- proper header file is necessary. If you only want to prototype a
- pointer, however, the header file is unnecessary.</p>
- <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span> Use
- with discretion.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> If you declare "file_list xyz;" (without the
+ pointer), then including the proper header file is necessary. If you only want to prototype a pointer, however,
+ the header file is unnecessary.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span> Use with discretion.</p>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="S35" id="S35">4.7. General Coding
- Practices</a></h2>
+ <h2 class="SECT2"><a name="S35" id="S35">4.7. General Coding Practices</a></h2>
<div class="SECT3">
- <h3 class="SECT3"><a name="S36" id="S36">4.7.1. Turn on
- warnings</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation</i></span></p>
- <p>Compiler warnings are meant to help you find bugs. You should turn
- on as many as possible. With GCC, the switch is "-Wall". Try and fix
- as many warnings as possible.</p>
+ <h3 class="SECT3"><a name="S36" id="S36">4.7.1. Turn on warnings</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation</i></span></p>
+ <p>Compiler warnings are meant to help you find bugs. You should turn on as many as possible. With GCC, the
+ switch is "-Wall". Try and fix as many warnings as possible.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S37" id="S37">4.7.2. Provide a default
- case for all switch statements</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>What you think is guaranteed is never really guaranteed. The value
- that you don't think you need to check is the one that someday will
- be passed. So, to protect yourself from the unknown, always have a
- default step in a switch statement.</p>
+ <h3 class="SECT3"><a name="S37" id="S37">4.7.2. Provide a default case for all switch statements</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>What you think is guaranteed is never really guaranteed. The value that you don't think you need to check is
+ the one that someday will be passed. So, to protect yourself from the unknown, always have a default step in a
+ switch statement.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> If you
- already have a default condition, you are obviously exempt from this
- point. Of note, most of the WIN32 code calls `DefWindowProc' after
- the switch statement. This API call *should* be included in a default
- statement.</p>
- <p><span class="emphasis"><i class="EMPHASIS">Another
- Note:</i></span> This is not so much a readability issue as a robust
- programming issue. The "anomaly code goes here" may be no more than a
- print to the STDERR stream (as in load_config). Or it may really be
- an abort condition.</p>
- <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span>
- Programmer discretion is advised.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> If you already have a default condition, you are
+ obviously exempt from this point. Of note, most of the WIN32 code calls `DefWindowProc' after the switch
+ statement. This API call *should* be included in a default statement.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Another Note:</i></span> This is not so much a readability issue
+ as a robust programming issue. The "anomaly code goes here" may be no more than a print to the STDERR stream
+ (as in load_config). Or it may really be an abort condition.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span> Programmer discretion is advised.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S38" id="S38">4.7.3. Try to avoid falling
- through cases in a switch statement.</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>In general, you will want to have a 'break' statement within each
- 'case' of a switch statement. This allows for the code to be more
- readable and understandable, and furthermore can prevent unwanted
- surprises if someone else later gets creative and moves the code
- around.</p>
- <p>The language allows you to plan the fall through from one case
- statement to another simply by omitting the break statement within
- the case statement. This feature does have benefits, but should only
- be used in rare cases. In general, use a break statement for each
- case statement.</p>
- <p>If you choose to allow fall through, you should comment both the
- fact of the fall through and reason why you felt it was
- necessary.</p>
+ <h3 class="SECT3"><a name="S38" id="S38">4.7.3. Try to avoid falling through cases in a switch
+ statement.</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>In general, you will want to have a 'break' statement within each 'case' of a switch statement. This allows
+ for the code to be more readable and understandable, and furthermore can prevent unwanted surprises if someone
+ else later gets creative and moves the code around.</p>
+ <p>The language allows you to plan the fall through from one case statement to another simply by omitting the
+ break statement within the case statement. This feature does have benefits, but should only be used in rare
+ cases. In general, use a break statement for each case statement.</p>
+ <p>If you choose to allow fall through, you should comment both the fact of the fall through and reason why you
+ felt it was necessary.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S40" id="S40">4.7.4. Don't mix size_t and
- other types</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>The type of size_t varies across platforms. Do not make
- assumptions about whether it is signed or unsigned, or about how long
- it is. Do not compare a size_t against another variable of a
- different type (or even against a constant) without casting one of
- the values.</p>
+ <h3 class="SECT3"><a name="S40" id="S40">4.7.4. Don't mix size_t and other types</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>The type of size_t varies across platforms. Do not make assumptions about whether it is signed or unsigned,
+ or about how long it is. Do not compare a size_t against another variable of a different type (or even against
+ a constant) without casting one of the values.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S41" id="S41">4.7.5. Declare each variable
- and struct on its own line.</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>It can be tempting to declare a series of variables all on one
- line. Don't.</p>
+ <h3 class="SECT3"><a name="S41" id="S41">4.7.5. Declare each variable and struct on its own line.</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>It can be tempting to declare a series of variables all on one line. Don't.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Instead
- of:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Instead of:</i></span></p>
<p>long a, b, c;</p>
- <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span>
- - there is more room for comments on the individual variables -
- easier to add new variables without messing up the original ones -
- when searching on a variable to find its type, there is less clutter
- to "visually" eliminate</p>
- <p><span class="emphasis"><i class="EMPHASIS">Exceptions:</i></span>
- when you want to declare a bunch of loop variables or other trivial
- variables; feel free to declare them on one line. You should,
- although, provide a good comment on their functions.</p>
- <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span>
- developer-discretion.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span> - there is more room for comments on the
+ individual variables - easier to add new variables without messing up the original ones - when searching on a
+ variable to find its type, there is less clutter to "visually" eliminate</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Exceptions:</i></span> when you want to declare a bunch of loop
+ variables or other trivial variables; feel free to declare them on one line. You should, although, provide a
+ good comment on their functions.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span> developer-discretion.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S42" id="S42">4.7.6. Use malloc/zalloc
- sparingly</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>Create a local struct (on the stack) if the variable will live and
- die within the context of one function call.</p>
- <p>Only "malloc" a struct (on the heap) if the variable's life will
- extend beyond the context of one function call.</p>
+ <h3 class="SECT3"><a name="S42" id="S42">4.7.6. Use malloc/zalloc sparingly</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>Create a local struct (on the stack) if the variable will live and die within the context of one function
+ call.</p>
+ <p>Only "malloc" a struct (on the heap) if the variable's life will extend beyond the context of one function
+ call.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- If a function creates a struct and stores a pointer to it in a
+ <pre class="PROGRAMLISTING">If a function creates a struct and stores a pointer to it in a
list, then it should definitely be allocated via `malloc'.</pre>
</td>
</tr>
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S43" id="S43">4.7.7. The Programmer Who
- Uses 'malloc' is Responsible for Ensuring 'free'</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>If you have to "malloc" an instance, you are responsible for
- insuring that the instance is `free'd, even if the deallocation event
- falls within some other programmer's code. You are also responsible
- for ensuring that deletion is timely (i.e. not too soon, not too
- late). This is known as "low-coupling" and is a "good thing (tm)".
- You may need to offer a free/unload/destructor type function to
- accommodate this.</p>
+ <h3 class="SECT3"><a name="S43" id="S43">4.7.7. The Programmer Who Uses 'malloc' is Responsible for Ensuring
+ 'free'</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>If you have to "malloc" an instance, you are responsible for insuring that the instance is `free'd, even if
+ the deallocation event falls within some other programmer's code. You are also responsible for ensuring that
+ deletion is timely (i.e. not too soon, not too late). This is known as "low-coupling" and is a "good thing
+ (tm)". You may need to offer a free/unload/destructor type function to accommodate this.</p>
<p><span class="emphasis"><i class="EMPHASIS">Example:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- int load_re_filterfile(struct client_state *csp) { ... }
+ <pre class="PROGRAMLISTING">int load_re_filterfile(struct client_state *csp) { ... }
static void unload_re_filterfile(void *f) { ... }</pre>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Exceptions:</i></span></p>
- <p>The developer cannot be expected to provide `free'ing functions
- for C run-time library functions ... such as `strdup'.</p>
- <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span>
- developer-discretion. The "main" use of this standard is for
- allocating and freeing data structures (complex or nested).</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Exceptions:</i></span></p>
+ <p>The developer cannot be expected to provide `free'ing functions for C run-time library functions ... such as
+ `strdup'.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Status:</i></span> developer-discretion. The "main" use of this
+ standard is for allocating and freeing data structures (complex or nested).</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S44" id="S44">4.7.8. Add loaders to the
- `file_list' structure and in order</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>I have ordered all of the "blocker" file code to be in alpha
- order. It is easier to add/read new blockers when you expect a
- certain order.</p>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> It may
- appear that the alpha order is broken in places by POPUP tests coming
- before PCRS tests. But since POPUPs can also be referred to as
- KILLPOPUPs, it is clear that it should come first.</p>
+ <h3 class="SECT3"><a name="S44" id="S44">4.7.8. Add loaders to the `file_list' structure and in order</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>I have ordered all of the "blocker" file code to be in alpha order. It is easier to add/read new blockers
+ when you expect a certain order.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> It may appear that the alpha order is broken in
+ places by POPUP tests coming before PCRS tests. But since POPUPs can also be referred to as KILLPOPUPs, it is
+ clear that it should come first.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="S45" id="S45">4.7.9. "Uncertain" new code
- and/or changes to existing code, use XXX</a></h3>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Explanation:</i></span></p>
- <p>If you have enough confidence in new code or confidence in your
- changes, but are not *quite* sure of the repercussions, add this:</p>
- <p>/* XXX: this code has a logic error on platform XYZ, * attempting
- to fix */ #ifdef PLATFORM ...changed code here... #endif</p>
+ <h3 class="SECT3"><a name="S45" id="S45">4.7.9. "Uncertain" new code and/or changes to existing code, use
+ XXX</a></h3>
+ <p><span class="emphasis"><i class="EMPHASIS">Explanation:</i></span></p>
+ <p>If you have enough confidence in new code or confidence in your changes, but are not *quite* sure of the
+ repercussions, add this:</p>
+ <p>/* XXX: this code has a logic error on platform XYZ, * attempting to fix */ #ifdef PLATFORM ...changed code
+ here... #endif</p>
<p>or:</p>
- <p>/* XXX: I think the original author really meant this... */
- ...changed code here...</p>
+ <p>/* XXX: I think the original author really meant this... */ ...changed code here...</p>
<p>or:</p>
- <p>/* XXX: new code that *may* break something else... */ ...new code
- here...</p>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> If you
- make it clear that this may or may not be a "good thing (tm)", it
- will be easier to identify and include in the project (or conversely
- exclude from the project).</p>
+ <p>/* XXX: new code that *may* break something else... */ ...new code here...</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> If you make it clear that this may or may not be
+ a "good thing (tm)", it will be easier to identify and include in the project (or conversely exclude from the
+ project).</p>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="S46" id="S46">4.8. Addendum: Template for
- files and function comment blocks:</a></h2>
- <p><span class="emphasis"><i class="EMPHASIS">Example for file
- comments:</i></span></p>
+ <h2 class="SECT2"><a name="S46" id="S46">4.8. Addendum: Template for files and function comment blocks:</a></h2>
+ <p><span class="emphasis"><i class="EMPHASIS">Example for file comments:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- const char FILENAME_rcs[] = "$I<!-- Break CVS Substitution -->d$";
+ <pre class="PROGRAMLISTING">const char FILENAME_rcs[] = "$I<!-- Break CVS Substitution -->d$";
/*********************************************************************
*
* File : $S<!-- Break CVS Substitution -->ource$
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> This
- declares the rcs variables that should be added to the "show-version"
- page. If this is a brand new creation by you, you are free to change
- the "Copyright" section to represent the rights you wish to
- maintain.</p>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> The
- formfeed character that is present right after the comment flower box
- is handy for (X|GNU)Emacs users to skip the verbiage and get to the
- heart of the code (via `forward-page' and `backward-page'). Please
- include it if you can.</p>
- <p><span class="emphasis"><i class="EMPHASIS">Example for file header
- comments:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> This declares the rcs variables that should be
+ added to the "show-version" page. If this is a brand new creation by you, you are free to change the "Copyright"
+ section to represent the rights you wish to maintain.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> The formfeed character that is present right after
+ the comment flower box is handy for (X|GNU)Emacs users to skip the verbiage and get to the heart of the code (via
+ `forward-page' and `backward-page'). Please include it if you can.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Example for file header comments:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Example for function
- comments:</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Example for function comments:</i></span></p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- /*********************************************************************
+ <pre class="PROGRAMLISTING">/*********************************************************************
*
* Function : FUNCTION_NAME
*
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> If we
- all follow this practice, we should be able to parse our code to create
- a "self-documenting" web page.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Note:</i></span> If we all follow this practice, we should be able
+ to parse our code to create a "self-documenting" web page.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href=
- "documentation.html" accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="testing.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="documentation.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="testing.html" accesskey="N">Next</a></td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">Documentation
- Guidelines</td>
+ <td width="33%" align="left" valign="top">Documentation Guidelines</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">Testing Guidelines</td>
</tr>
<html>
<head>
<title>The CVS Repository</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy Developer Manual" href="index.html">
<link rel="PREVIOUS" title="Introduction" href="introduction.html">
- <link rel="NEXT" title="Documentation Guidelines" href=
- "documentation.html">
+ <link rel="NEXT" title="Documentation Guidelines" href="documentation.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy Developer Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "introduction.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="introduction.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "documentation.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="documentation.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
<h1 class="SECT1"><a name="CVS" id="CVS">2. The CVS Repository</a></h1>
- <p>If you become part of the active development team, you will eventually
- need write access to our holy grail, the CVS repository. One of the team
- members will need to set this up for you. Please read this chapter
- completely before accessing via CVS.</p>
+ <p>If you become part of the active development team, you will eventually need write access to our holy grail, the
+ CVS repository. One of the team members will need to set this up for you. Please read this chapter completely
+ before accessing via CVS.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="CVSACCESS" id="CVSACCESS">2.1. Access to
- CVS</a></h2>
- <p>The project's CVS repository is hosted on <a href=
- "https://sourceforge.net/" target="_top">SourceForge.</a> For
- historical reasons, the CVS server is called <tt class=
- "LITERAL">ijbswa.cvs.sourceforge.net</tt>, the repository is called
- <tt class="LITERAL">ijbswa</tt>, and the source tree module is called
- <tt class="LITERAL">current</tt>.</p>
+ <h2 class="SECT2"><a name="CVSACCESS" id="CVSACCESS">2.1. Access to CVS</a></h2>
+ <p>The project's CVS repository is hosted on <a href="https://sourceforge.net/" target="_top">SourceForge.</a>
+ For historical reasons, the CVS server is called <tt class="LITERAL">ijbswa.cvs.sourceforge.net</tt>, the
+ repository is called <tt class="LITERAL">ijbswa</tt>, and the source tree module is called <tt class=
+ "LITERAL">current</tt>.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="CVSBRANCHES" id="CVSBRANCHES">2.2.
- Branches</a></h2>
- <p>Within the CVS repository, there are modules and branches. As
- mentioned, the sources are in the <tt class="LITERAL">current</tt>
- <span class="QUOTE">"module"</span>. Other modules are present for
- platform specific issues. There is a webview of the CVS hierarchy at
- <a href="http://ijbswa.cvs.sourceforge.net/viewvc/ijbswa/" target=
- "_top">http://ijbswa.cvs.sourceforge.net/viewvc/ijbswa/</a>, which
- might help with visualizing how these pieces fit together.</p>
- <p>At one time there were two distinct branches: stable and unstable.
- The more drastic changes were to be in the unstable branch. These
- branches have now been merged to minimize time and effort of
- maintaining two branches.</p>
+ <h2 class="SECT2"><a name="CVSBRANCHES" id="CVSBRANCHES">2.2. Branches</a></h2>
+ <p>Within the CVS repository, there are modules and branches. As mentioned, the sources are in the <tt class=
+ "LITERAL">current</tt> <span class="QUOTE">"module"</span>. Other modules are present for platform specific
+ issues. There is a webview of the CVS hierarchy at <a href="http://ijbswa.cvs.sourceforge.net/viewvc/ijbswa/"
+ target="_top">http://ijbswa.cvs.sourceforge.net/viewvc/ijbswa/</a>, which might help with visualizing how these
+ pieces fit together.</p>
+ <p>At one time there were two distinct branches: stable and unstable. The more drastic changes were to be in the
+ unstable branch. These branches have now been merged to minimize time and effort of maintaining two branches.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="CVSCOMMIT" id="CVSCOMMIT">2.3. CVS Commit
- Guidelines</a></h2>
- <p>The source tree is the heart of every software project. Every effort
- must be made to ensure that it is readable, compilable and consistent
- at all times. We expect anyone with CVS access to strictly adhere to
- the following guidelines:</p>
+ <h2 class="SECT2"><a name="CVSCOMMIT" id="CVSCOMMIT">2.3. CVS Commit Guidelines</a></h2>
+ <p>The source tree is the heart of every software project. Every effort must be made to ensure that it is
+ readable, compilable and consistent at all times. We expect anyone with CVS access to strictly adhere to the
+ following guidelines:</p>
<p>Basic Guidelines, for all branches:</p>
<ul>
<li>
- <p>Please don't commit even a small change without testing it
- thoroughly first. When we're close to a public release, ask a
- fellow developer to review your changes.</p>
+ <p>Please don't commit even a small change without testing it thoroughly first. When we're close to a public
+ release, ask a fellow developer to review your changes.</p>
</li>
<li>
- <p>Your commit message should give a concise overview of
- <span class="emphasis"><i class="EMPHASIS">what you
- changed</i></span> (no big details) and <span class=
- "emphasis"><i class="EMPHASIS">why you changed it</i></span> Just
- check previous messages for good examples.</p>
+ <p>Your commit message should give a concise overview of <span class="emphasis"><i class="EMPHASIS">what you
+ changed</i></span> (no big details) and <span class="emphasis"><i class="EMPHASIS">why you changed
+ it</i></span> Just check previous messages for good examples.</p>
</li>
<li>
- <p>Don't use the same message on multiple files, unless it equally
- applies to all those files.</p>
+ <p>Don't use the same message on multiple files, unless it equally applies to all those files.</p>
</li>
<li>
- <p>If your changes span multiple files, and the code won't
- recompile unless all changes are committed (e.g. when changing the
- signature of a function), then commit all files one after another,
- without long delays in between. If necessary, prepare the commit
- messages in advance.</p>
+ <p>If your changes span multiple files, and the code won't recompile unless all changes are committed (e.g.
+ when changing the signature of a function), then commit all files one after another, without long delays in
+ between. If necessary, prepare the commit messages in advance.</p>
</li>
<li>
- <p>Before changing things on CVS, make sure that your changes are
- in line with the team's general consensus on what should be
- done.</p>
+ <p>Before changing things on CVS, make sure that your changes are in line with the team's general consensus
+ on what should be done.</p>
</li>
<li>
- <p>Note that near a major public release, we get more cautious.
- There is always the possibility to submit a patch to the <a href=
- "https://sourceforge.net/tracker/?atid=311118&group_id=11118&func=browse"
+ <p>Note that near a major public release, we get more cautious. There is always the possibility to submit a
+ patch to the <a href="https://sourceforge.net/tracker/?atid=311118&group_id=11118&func=browse"
target="_top">patch tracker</a> instead.</p>
</li>
</ul>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="introduction.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href=
- "documentation.html" accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="introduction.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="documentation.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Introduction</td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top">Documentation
- Guidelines</td>
+ <td width="33%" align="right" valign="top">Documentation Guidelines</td>
</tr>
</table>
</div>
<html>
<head>
<title>Documentation Guidelines</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy Developer Manual" href="index.html">
<link rel="PREVIOUS" title="The CVS Repository" href="cvs.html">
<link rel="NEXT" title="Coding Guidelines" href="coding.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy Developer Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="cvs.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="cvs.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="coding.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="coding.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="DOCUMENTATION" id="DOCUMENTATION">3.
- Documentation Guidelines</a></h1>
- <p>All formal documents are maintained in Docbook SGML and located in the
- <samp class="COMPUTEROUTPUT">doc/source/*</samp> directory. You will need
- <a href="http://www.docbook.org" target="_top">Docbook</a>, the Docbook
- DTD's and the Docbook modular stylesheets (or comparable alternatives),
- and either <span class="APPLICATION">jade</span> or <span class=
- "APPLICATION">openjade</span> (recommended) installed in order to build
- docs from source. Currently there is <a href="../user-manual/index.html"
- target="_top"><i class="CITETITLE">user-manual</i></a>, <a href=
- "../faq/index.html" target="_top"><i class="CITETITLE">FAQ</i></a>, and,
- of course this, the <i class="CITETITLE">developer-manual</i> in this
- format. The <i class="CITETITLE">README</i>, <i class=
- "CITETITLE">AUTHORS</i>, <i class="CITETITLE">INSTALL</i>, <i class=
- "CITETITLE">privoxy.1</i> (man page), and <i class="CITETITLE">config</i>
- files are also now maintained as Docbook SGML. These files, when built,
- in the top-level source directory are generated files! Also, the
- <span class="APPLICATION">Privoxy</span> <tt class=
- "FILENAME">index.html</tt> (and a variation on this file, <tt class=
- "FILENAME">privoxy-index.html</tt>, meant for inclusion with doc
- packages), are maintained as SGML as well. <span class=
- "emphasis"><i class="EMPHASIS">DO NOT edit these directly</i></span>.
- Edit the SGML source, or contact someone involved in the
- documentation.</p>
- <p><tt class="FILENAME">config</tt> requires some special handling. The
- reason it is maintained this way is so that the extensive comments in the
- file mirror those in <i class="CITETITLE">user-manual</i>. But the
- conversion process requires going from SGML to HTML to text to special
- formatting required for the embedded comments. Some of this does not
- survive so well. Especially some of the examples that are longer than 80
- characters. The build process for this file outputs to <tt class=
- "FILENAME">config.new</tt>, which should be reviewed for errors and
- mis-formatting. Once satisfied that it is correct, then it should be hand
- copied to <tt class="FILENAME">config</tt>.</p>
- <p>Other, less formal documents (e.g. <tt class="FILENAME">LICENSE</tt>)
- are maintained as plain text files in the top-level source directory.</p>
- <p>Packagers are encouraged to include this documentation. For those
- without the ability to build the docs locally, text versions of each are
- kept in CVS. HTML versions are also being kept in CVS under <tt class=
+ <h1 class="SECT1"><a name="DOCUMENTATION" id="DOCUMENTATION">3. Documentation Guidelines</a></h1>
+ <p>All formal documents are maintained in Docbook SGML and located in the <samp class=
+ "COMPUTEROUTPUT">doc/source/*</samp> directory. You will need <a href="http://www.docbook.org" target=
+ "_top">Docbook</a>, the Docbook DTD's and the Docbook modular stylesheets (or comparable alternatives), and either
+ <span class="APPLICATION">jade</span> or <span class="APPLICATION">openjade</span> (recommended) installed in order
+ to build docs from source. Currently there is <a href="../user-manual/index.html" target="_top"><i class=
+ "CITETITLE">user-manual</i></a>, <a href="../faq/index.html" target="_top"><i class="CITETITLE">FAQ</i></a>, and,
+ of course this, the <i class="CITETITLE">developer-manual</i> in this format. The <i class="CITETITLE">README</i>,
+ <i class="CITETITLE">AUTHORS</i>, <i class="CITETITLE">INSTALL</i>, <i class="CITETITLE">privoxy.1</i> (man page),
+ and <i class="CITETITLE">config</i> files are also now maintained as Docbook SGML. These files, when built, in the
+ top-level source directory are generated files! Also, the <span class="APPLICATION">Privoxy</span> <tt class=
+ "FILENAME">index.html</tt> (and a variation on this file, <tt class="FILENAME">privoxy-index.html</tt>, meant for
+ inclusion with doc packages), are maintained as SGML as well. <span class="emphasis"><i class="EMPHASIS">DO NOT
+ edit these directly</i></span>. Edit the SGML source, or contact someone involved in the documentation.</p>
+ <p><tt class="FILENAME">config</tt> requires some special handling. The reason it is maintained this way is so that
+ the extensive comments in the file mirror those in <i class="CITETITLE">user-manual</i>. But the conversion process
+ requires going from SGML to HTML to text to special formatting required for the embedded comments. Some of this
+ does not survive so well. Especially some of the examples that are longer than 80 characters. The build process for
+ this file outputs to <tt class="FILENAME">config.new</tt>, which should be reviewed for errors and mis-formatting.
+ Once satisfied that it is correct, then it should be hand copied to <tt class="FILENAME">config</tt>.</p>
+ <p>Other, less formal documents (e.g. <tt class="FILENAME">LICENSE</tt>) are maintained as plain text files in the
+ top-level source directory.</p>
+ <p>Packagers are encouraged to include this documentation. For those without the ability to build the docs locally,
+ text versions of each are kept in CVS. HTML versions are also being kept in CVS under <tt class=
"FILENAME">doc/webserver/*</tt>.</p>
- <p>Formal documents are built with the Makefile targets of <samp class=
- "COMPUTEROUTPUT">make dok</samp>. The build process uses the document
- SGML sources in <samp class="COMPUTEROUTPUT">doc/source/*/*</samp> to
- update all text files in <samp class="COMPUTEROUTPUT">doc/text/</samp>
- and to update all HTML documents in <samp class=
+ <p>Formal documents are built with the Makefile targets of <samp class="COMPUTEROUTPUT">make dok</samp>. The build
+ process uses the document SGML sources in <samp class="COMPUTEROUTPUT">doc/source/*/*</samp> to update all text
+ files in <samp class="COMPUTEROUTPUT">doc/text/</samp> and to update all HTML documents in <samp class=
"COMPUTEROUTPUT">doc/webserver/</samp>.</p>
- <p>Documentation writers should please make sure documents build
- successfully before committing to CVS, if possible.</p>
+ <p>Documentation writers should please make sure documents build successfully before committing to CVS, if
+ possible.</p>
<p>How do you update the webserver (i.e. the pages on privoxy.org)?</p>
<ol type="1">
<li>
- <p>First, build the docs by running <samp class="COMPUTEROUTPUT">make
- dok</samp>.</p>
+ <p>First, build the docs by running <samp class="COMPUTEROUTPUT">make dok</samp>.</p>
</li>
<li>
- <p>Run <samp class="COMPUTEROUTPUT">make webserver</samp> which
- copies all files from <samp class=
- "COMPUTEROUTPUT">doc/webserver</samp> to the sourceforge webserver
- via scp.</p>
+ <p>Run <samp class="COMPUTEROUTPUT">make webserver</samp> which copies all files from <samp class=
+ "COMPUTEROUTPUT">doc/webserver</samp> to the sourceforge webserver via scp.</p>
</li>
</ol>
- <p>Finished docs should be occasionally submitted to CVS (<tt class=
- "FILENAME">doc/webserver/*/*.html</tt>) so that those without the ability
- to build them locally, have access to them if needed. This is especially
- important just prior to a new release! Please do this <span class=
- "emphasis"><i class="EMPHASIS">after</i></span> the <tt class=
- "LITERAL">$VERSION</tt> and other release specific data in <tt class=
- "FILENAME">configure.in</tt> has been updated (this is done just prior to
- a new release).</p>
+ <p>Finished docs should be occasionally submitted to CVS (<tt class="FILENAME">doc/webserver/*/*.html</tt>) so that
+ those without the ability to build them locally, have access to them if needed. This is especially important just
+ prior to a new release! Please do this <span class="emphasis"><i class="EMPHASIS">after</i></span> the <tt class=
+ "LITERAL">$VERSION</tt> and other release specific data in <tt class="FILENAME">configure.in</tt> has been updated
+ (this is done just prior to a new release).</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="SGML" id="SGML">3.1. Quickstart to Docbook
- and SGML</a></h2>
- <p>If you are not familiar with SGML, it is a markup language similar
- to HTML. Actually, not a mark up language per se, but a language used
- to define markup languages. In fact, HTML is an SGML application. Both
- will use <span class="QUOTE">"tags"</span> to format text and other
- content. SGML tags can be much more varied, and flexible, but do much
- of the same kinds of things. The tags, or <span class=
- "QUOTE">"elements"</span>, are definable in SGML. There is no set
- <span class="QUOTE">"standards"</span>. Since we are using <span class=
- "APPLICATION">Docbook</span>, our tags are those that are defined by
- <span class="APPLICATION">Docbook</span>. Much of how the finish
- document is rendered is determined by the <span class=
- "QUOTE">"stylesheets"</span>. The stylesheets determine how each tag
- gets translated to HTML, or other formats.</p>
- <p>Tags in Docbook SGML need to be always <span class=
- "QUOTE">"closed"</span>. If not, you will likely generate errors.
- Example: <tt class="LITERAL"><title>My Title</title></tt>.
- They are also case-insensitive, but we strongly suggest using all lower
- case. This keeps compatibility with [Docbook] <span class=
+ <h2 class="SECT2"><a name="SGML" id="SGML">3.1. Quickstart to Docbook and SGML</a></h2>
+ <p>If you are not familiar with SGML, it is a markup language similar to HTML. Actually, not a mark up language
+ per se, but a language used to define markup languages. In fact, HTML is an SGML application. Both will use
+ <span class="QUOTE">"tags"</span> to format text and other content. SGML tags can be much more varied, and
+ flexible, but do much of the same kinds of things. The tags, or <span class="QUOTE">"elements"</span>, are
+ definable in SGML. There is no set <span class="QUOTE">"standards"</span>. Since we are using <span class=
+ "APPLICATION">Docbook</span>, our tags are those that are defined by <span class="APPLICATION">Docbook</span>.
+ Much of how the finish document is rendered is determined by the <span class="QUOTE">"stylesheets"</span>. The
+ stylesheets determine how each tag gets translated to HTML, or other formats.</p>
+ <p>Tags in Docbook SGML need to be always <span class="QUOTE">"closed"</span>. If not, you will likely generate
+ errors. Example: <tt class="LITERAL"><title>My Title</title></tt>. They are also case-insensitive,
+ but we strongly suggest using all lower case. This keeps compatibility with [Docbook] <span class=
"APPLICATION">XML</span>.</p>
- <p>Our documents use <span class="QUOTE">"sections"</span> for the most
- part. Sections will be processed into HTML headers (e.g. <tt class=
- "LITERAL">h1</tt> for <tt class="LITERAL">sect1</tt>). The <span class=
- "APPLICATION">Docbook</span> stylesheets will use these to also
- generate the Table of Contents for each doc. Our TOC's are set to a
- depth of three. Meaning <tt class="LITERAL">sect1</tt>, <tt class=
- "LITERAL">sect2</tt>, and <tt class="LITERAL">sect3</tt> will have TOC
- entries, but <tt class="LITERAL">sect4</tt> will not. Each section
- requires a <tt class="LITERAL"><title></tt> element, and at least
- one <tt class="LITERAL"><para></tt>. There is a limit of five
- section levels in Docbook, but generally three should be sufficient for
- our purposes.</p>
+ <p>Our documents use <span class="QUOTE">"sections"</span> for the most part. Sections will be processed into
+ HTML headers (e.g. <tt class="LITERAL">h1</tt> for <tt class="LITERAL">sect1</tt>). The <span class=
+ "APPLICATION">Docbook</span> stylesheets will use these to also generate the Table of Contents for each doc. Our
+ TOC's are set to a depth of three. Meaning <tt class="LITERAL">sect1</tt>, <tt class="LITERAL">sect2</tt>, and
+ <tt class="LITERAL">sect3</tt> will have TOC entries, but <tt class="LITERAL">sect4</tt> will not. Each section
+ requires a <tt class="LITERAL"><title></tt> element, and at least one <tt class=
+ "LITERAL"><para></tt>. There is a limit of five section levels in Docbook, but generally three should be
+ sufficient for our purposes.</p>
<p>Some common elements that you likely will use:</p>
<table border="0">
<tbody>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS"><para></para></i></span>, paragraph
- delimiter. Most text needs to be within paragraph elements (there
- are some exceptions).</td>
+ <td><span class="emphasis"><i class="EMPHASIS"><para></para></i></span>, paragraph delimiter.
+ Most text needs to be within paragraph elements (there are some exceptions).</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS"><emphasis></emphasis></i></span>, the
+ <td><span class="emphasis"><i class="EMPHASIS"><emphasis></emphasis></i></span>, the
stylesheets make this italics.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS"><filename></filename></i></span>, files
- and directories.</td>
+ <td><span class="emphasis"><i class="EMPHASIS"><filename></filename></i></span>, files and
+ directories.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS"><command></command></i></span>, command
+ <td><span class="emphasis"><i class="EMPHASIS"><command></command></i></span>, command
examples.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS"><literallayout></literallayout></i></span>,
- like <tt class="LITERAL"><pre></tt>, more or less.</td>
+ <td><span class="emphasis"><i class="EMPHASIS"><literallayout></literallayout></i></span>, like
+ <tt class="LITERAL"><pre></tt>, more or less.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS"><itemizedlist></itemizedlist></i></span>,
- list with bullets.</td>
+ <td><span class="emphasis"><i class="EMPHASIS"><itemizedlist></itemizedlist></i></span>, list
+ with bullets.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS"><listitem></listitem></i></span>, member
- of the above.</td>
+ <td><span class="emphasis"><i class="EMPHASIS"><listitem></listitem></i></span>, member of the
+ above.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS"><screen></screen></i></span>, screen
- output, implies <tt class=
- "LITERAL"><literallayout></tt>.</td>
+ <td><span class="emphasis"><i class="EMPHASIS"><screen></screen></i></span>, screen output,
+ implies <tt class="LITERAL"><literallayout></tt>.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class="EMPHASIS"><ulink
- url="example.com"></ulink></i></span>, like HTML
- <tt class="LITERAL"><a></tt> tag.</td>
+ <td><span class="emphasis"><i class="EMPHASIS"><ulink url="example.com"></ulink></i></span>,
+ like HTML <tt class="LITERAL"><a></tt> tag.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS"><quote></quote></i></span>, for, doh,
- quoting text.</td>
+ <td><span class="emphasis"><i class="EMPHASIS"><quote></quote></i></span>, for, doh, quoting
+ text.</td>
</tr>
</tbody>
</table>
- <p>Look at any of the existing docs for examples of all these and
- more.</p>
+ <p>Look at any of the existing docs for examples of all these and more.</p>
<p>You might also find <span class="QUOTE">"<a href=
- "http://opensource.bureau-cornavin.com/crash-course/index.html" target=
- "_top">Writing Documentation Using DocBook - A Crash Course</a>"</span>
- useful.</p>
+ "http://opensource.bureau-cornavin.com/crash-course/index.html" target="_top">Writing Documentation Using DocBook
+ - A Crash Course</a>"</span> useful.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="DOCSTYLE" id="DOCSTYLE">3.2. <span class=
- "APPLICATION">Privoxy</span> Documentation Style</a></h2>
- <p>It will be easier if everyone follows a similar writing style. This
- just makes it easier to read what someone else has written if it is all
- done in a similar fashion.</p>
+ <h2 class="SECT2"><a name="DOCSTYLE" id="DOCSTYLE">3.2. <span class="APPLICATION">Privoxy</span> Documentation
+ Style</a></h2>
+ <p>It will be easier if everyone follows a similar writing style. This just makes it easier to read what someone
+ else has written if it is all done in a similar fashion.</p>
<p>Here it is:</p>
<ul>
<li>
<p>All tags should be lower case.</p>
</li>
<li>
- <p>Tags delimiting a <span class="emphasis"><i class=
- "EMPHASIS">block</i></span> of text (even small blocks) should be
- on their own line. Like:</p>
+ <p>Tags delimiting a <span class="emphasis"><i class="EMPHASIS">block</i></span> of text (even small blocks)
+ should be on their own line. Like:</p>
<p class="LITERALLAYOUT"> <para><br>
Some text goes here.<br>
</para><br>
- </p>Tags marking
- individual words, or few words, should be in-line:
+ </p>Tags marking individual words, or few words, should be in-line:
<p class="LITERALLAYOUT">
Just to <emphasis>emphasize</emphasis>, some text goes here.<br>
</p>
</li>
<li>
- <p>Tags should be nested and step indented for block text like:
- (except in-line tags)</p>
+ <p>Tags should be nested and step indented for block text like: (except in-line tags)</p>
<p class="LITERALLAYOUT"> <para><br>
<itemizedlist><br>
<para><br>
</para><br>
</itemizedlist><br>
</para><br>
- </p>This makes it easier
- to find the text amongst the tags ;-)
+ </p>This makes it easier to find the text amongst the tags ;-)
</li>
<li>
- <p>Use white space to separate logical divisions within a document,
- like between sections. Running everything together consistently
- makes it harder to read and work on.</p>
+ <p>Use white space to separate logical divisions within a document, like between sections. Running everything
+ together consistently makes it harder to read and work on.</p>
</li>
<li>
- <p>Do not hesitate to make comments. Comments can either use the
- <comment> element, or the <!-- --> style comment
- familiar from HTML. (Note in Docbook v4.x <comment> is
- replaced by <remark>.)</p>
+ <p>Do not hesitate to make comments. Comments can either use the <comment> element, or the <!--
+ --> style comment familiar from HTML. (Note in Docbook v4.x <comment> is replaced by
+ <remark>.)</p>
</li>
<li>
- <p>We have an international audience. Refrain from slang, or
- English idiosyncrasies (too many to list :). Humor also does not
- translate well sometimes.</p>
+ <p>We have an international audience. Refrain from slang, or English idiosyncrasies (too many to list :).
+ Humor also does not translate well sometimes.</p>
</li>
<li>
- <p>Try to keep overall line lengths in source files to 80
- characters or less for obvious reasons. This is not always
- possible, with lengthy URLs for instance.</p>
+ <p>Try to keep overall line lengths in source files to 80 characters or less for obvious reasons. This is not
+ always possible, with lengthy URLs for instance.</p>
</li>
<li>
- <p>Our documents are available in differing formats. Right now,
- they are just plain text and/or HTML, but others are always a
- future possibility. Be careful with URLs (<ulink>), and avoid
- this mistake:</p>
- <p>My favorite site is <ulink
- url="http://example.com">here</ulink>.</p>
- <p>This will render as <span class="QUOTE">"My favorite site is
- here"</span>, which is not real helpful in a text doc. Better like
- this:</p>
- <p>My favorite site is <ulink
- url="http://example.com">example.com</ulink>.</p>
+ <p>Our documents are available in differing formats. Right now, they are just plain text and/or HTML, but
+ others are always a future possibility. Be careful with URLs (<ulink>), and avoid this mistake:</p>
+ <p>My favorite site is <ulink url="http://example.com">here</ulink>.</p>
+ <p>This will render as <span class="QUOTE">"My favorite site is here"</span>, which is not real helpful in a
+ text doc. Better like this:</p>
+ <p>My favorite site is <ulink url="http://example.com">example.com</ulink>.</p>
</li>
<li>
- <p>All documents should be spell checked occasionally. <span class=
- "APPLICATION">aspell</span> can check SGML with the <tt class=
- "LITERAL">-H</tt> option. (<span class="APPLICATION">ispell</span>
- I think too.)</p>
+ <p>All documents should be spell checked occasionally. <span class="APPLICATION">aspell</span> can check SGML
+ with the <tt class="LITERAL">-H</tt> option. (<span class="APPLICATION">ispell</span> I think too.)</p>
</li>
</ul>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="AEN207" id="AEN207">3.3. Privoxy Custom
- Entities</a></h2>
- <p><span class="APPLICATION">Privoxy</span> documentation is using a
- number of customized <span class="QUOTE">"entities"</span> to
- facilitate documentation maintenance.</p>
- <p>We are using a set of <span class="QUOTE">"boilerplate"</span> files
- with generic text, that is used by multiple docs. This way we can write
- something once, and use it repeatedly without having to re-write the
- same content over and over again. If editing such a file, keep in mind
- that it should be <span class="emphasis"><i class=
- "EMPHASIS">generic</i></span>. That is the purpose; so it can be used
- in varying contexts without additional modifications.</p>
- <p>We are also using what <span class="APPLICATION">Docbook</span>
- calls <span class="QUOTE">"internal entities"</span>. These are like
- variables in programming. Well, sort of. For instance, we have the
- <tt class="LITERAL">p-version</tt> entity that contains the current
- <span class="APPLICATION">Privoxy</span> version string. You are
- strongly encouraged to use these where possible. Some of these
- obviously require re-setting with each release (done by the Makefile).
- A sampling of custom entities are listed below. See any of the main
- docs for examples.</p>
+ <h2 class="SECT2"><a name="AEN207" id="AEN207">3.3. Privoxy Custom Entities</a></h2>
+ <p><span class="APPLICATION">Privoxy</span> documentation is using a number of customized <span class=
+ "QUOTE">"entities"</span> to facilitate documentation maintenance.</p>
+ <p>We are using a set of <span class="QUOTE">"boilerplate"</span> files with generic text, that is used by
+ multiple docs. This way we can write something once, and use it repeatedly without having to re-write the same
+ content over and over again. If editing such a file, keep in mind that it should be <span class=
+ "emphasis"><i class="EMPHASIS">generic</i></span>. That is the purpose; so it can be used in varying contexts
+ without additional modifications.</p>
+ <p>We are also using what <span class="APPLICATION">Docbook</span> calls <span class="QUOTE">"internal
+ entities"</span>. These are like variables in programming. Well, sort of. For instance, we have the <tt class=
+ "LITERAL">p-version</tt> entity that contains the current <span class="APPLICATION">Privoxy</span> version
+ string. You are strongly encouraged to use these where possible. Some of these obviously require re-setting with
+ each release (done by the Makefile). A sampling of custom entities are listed below. See any of the main docs for
+ examples.</p>
<ul>
<li>
- <p>Re- <span class="QUOTE">"boilerplate"</span> text entities are
- defined like:</p>
- <p><tt class="LITERAL"><!entity supported SYSTEM
- "supported.sgml"></tt></p>
- <p>In this example, the contents of the file, <tt class=
- "FILENAME">supported.sgml</tt> is available for inclusion anywhere
- in the doc. To make this happen, just reference the now defined
- entity: <tt class="LITERAL">&supported;</tt> (starts with an
- ampersand and ends with a semi-colon), and the contents will be
- dumped into the finished doc at that point.</p>
+ <p>Re- <span class="QUOTE">"boilerplate"</span> text entities are defined like:</p>
+ <p><tt class="LITERAL"><!entity supported SYSTEM "supported.sgml"></tt></p>
+ <p>In this example, the contents of the file, <tt class="FILENAME">supported.sgml</tt> is available for
+ inclusion anywhere in the doc. To make this happen, just reference the now defined entity: <tt class=
+ "LITERAL">&supported;</tt> (starts with an ampersand and ends with a semi-colon), and the contents will
+ be dumped into the finished doc at that point.</p>
</li>
<li>
- <p>Commonly used <span class="QUOTE">"internal
- entities"</span>:</p>
+ <p>Commonly used <span class="QUOTE">"internal entities"</span>:</p>
<table border="0">
<tbody>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS">p-version</i></span>: the <span class=
- "APPLICATION">Privoxy</span> version string, e.g.
- <span class="QUOTE">"3.0.27"</span>.</td>
+ <td><span class="emphasis"><i class="EMPHASIS">p-version</i></span>: the <span class=
+ "APPLICATION">Privoxy</span> version string, e.g. <span class="QUOTE">"3.0.27"</span>.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS">p-status</i></span>: the project status, either
- <span class="QUOTE">"alpha"</span>, <span class=
- "QUOTE">"beta"</span>, or <span class=
+ <td><span class="emphasis"><i class="EMPHASIS">p-status</i></span>: the project status, either
+ <span class="QUOTE">"alpha"</span>, <span class="QUOTE">"beta"</span>, or <span class=
"QUOTE">"stable"</span>.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS">p-not-stable</i></span>: use to conditionally
- include text in <span class="QUOTE">"not stable"</span>
- releases (e.g. <span class="QUOTE">"beta"</span>).</td>
+ <td><span class="emphasis"><i class="EMPHASIS">p-not-stable</i></span>: use to conditionally include
+ text in <span class="QUOTE">"not stable"</span> releases (e.g. <span class="QUOTE">"beta"</span>).</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS">p-stable</i></span>: just the opposite.</td>
+ <td><span class="emphasis"><i class="EMPHASIS">p-stable</i></span>: just the opposite.</td>
</tr>
<tr>
- <td><span class="emphasis"><i class=
- "EMPHASIS">p-text</i></span>: this doc is only generated as
+ <td><span class="emphasis"><i class="EMPHASIS">p-text</i></span>: this doc is only generated as
text.</td>
</tr>
</tbody>
</table>
</li>
</ul>
- <p>There are others in various places that are defined for a specific
- purpose. Read the source!</p>
+ <p>There are others in various places that are defined for a specific purpose. Read the source!</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="cvs.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="coding.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="cvs.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="coding.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">The CVS Repository</td>
<html>
<head>
<title>Privoxy Developer Manual</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="NEXT" title="Introduction" href="introduction.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="ARTICLE">
<div class="TITLEPAGE">
- <h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy Developer
- Manual</a></h1>
- <p class="PUBDATE"><sub><a href=
- "https://www.privoxy.org/user-manual/copyright.html" target=
- "_top">Copyright</a> � 2001-2016 by <a href="https://www.privoxy.org/"
- target="_top">Privoxy Developers</a></sub><br></p>
- <p class="PUBDATE">$Id: developer-manual.sgml,v 2.84 2017/06/26
- 12:10:07 fabiankeil Exp $<br></p>
+ <h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy Developer Manual</a></h1>
+ <p class="PUBDATE"><sub><a href="https://www.privoxy.org/user-manual/copyright.html" target="_top">Copyright</a>
+ � 2001-2016 by <a href="https://www.privoxy.org/" target="_top">Privoxy Developers</a></sub><br></p>
+ <p class="PUBDATE">$Id: developer-manual.sgml,v 2.83 2017/06/08 13:08:39 fabiankeil Exp $<br></p>
<div>
<div class="ABSTRACT">
<a name="AEN9" id="AEN9"></a>
- <p>The developer manual provides guidance on coding, testing,
- packaging, documentation and other issues of importance to those
- involved with <span class="APPLICATION">Privoxy</span> development.
- It is mandatory (and helpful!) reading for anyone who wants to join
- the team. Note that it's currently out of date and may not be
+ <p>The developer manual provides guidance on coding, testing, packaging, documentation and other issues of
+ importance to those involved with <span class="APPLICATION">Privoxy</span> development. It is mandatory (and
+ helpful!) reading for anyone who wants to join the team. Note that it's currently out of date and may not be
entirely correct. As always, patches are welcome.</p>
- <p>Please note that this document is constantly evolving. This copy
- represents the state at the release of version 3.0.27. You can find
- the latest version of the this manual at <a href=
- "https://www.privoxy.org/developer-manual/" target=
- "_top">https://www.privoxy.org/developer-manual/</a>. Please have a
- look at the <a href=
- "https://www.privoxy.org/user-manual/contact.html" target=
- "_top">contact section in the user manual</a> if you are interested
- in contacting the developers.</p>
+ <p>Please note that this document is constantly evolving. This copy represents the state at the release of
+ version 3.0.27. You can find the latest version of the this manual at <a href=
+ "https://www.privoxy.org/developer-manual/" target="_top">https://www.privoxy.org/developer-manual/</a>.
+ Please have a look at the <a href="https://www.privoxy.org/user-manual/contact.html" target="_top">contact
+ section in the user manual</a> if you are interested in contacting the developers.</p>
</div>
</div>
<hr>
<dt>1. <a href="introduction.html">Introduction</a></dt>
<dd>
<dl>
- <dt>1.1. <a href="introduction.html#QUICKSTART">Quickstart to
- Privoxy Development</a></dt>
+ <dt>1.1. <a href="introduction.html#QUICKSTART">Quickstart to Privoxy Development</a></dt>
</dl>
</dd>
<dt>2. <a href="cvs.html">The CVS Repository</a></dt>
<dl>
<dt>2.1. <a href="cvs.html#CVSACCESS">Access to CVS</a></dt>
<dt>2.2. <a href="cvs.html#CVSBRANCHES">Branches</a></dt>
- <dt>2.3. <a href="cvs.html#CVSCOMMIT">CVS Commit
- Guidelines</a></dt>
+ <dt>2.3. <a href="cvs.html#CVSCOMMIT">CVS Commit Guidelines</a></dt>
</dl>
</dd>
<dt>3. <a href="documentation.html">Documentation Guidelines</a></dt>
<dd>
<dl>
- <dt>3.1. <a href="documentation.html#SGML">Quickstart to Docbook
- and SGML</a></dt>
- <dt>3.2. <a href="documentation.html#DOCSTYLE"><span class=
- "APPLICATION">Privoxy</span> Documentation Style</a></dt>
- <dt>3.3. <a href="documentation.html#AEN207">Privoxy Custom
- Entities</a></dt>
+ <dt>3.1. <a href="documentation.html#SGML">Quickstart to Docbook and SGML</a></dt>
+ <dt>3.2. <a href="documentation.html#DOCSTYLE"><span class="APPLICATION">Privoxy</span> Documentation
+ Style</a></dt>
+ <dt>3.3. <a href="documentation.html#AEN207">Privoxy Custom Entities</a></dt>
</dl>
</dd>
<dt>4. <a href="coding.html">Coding Guidelines</a></dt>
<dt>4.2. <a href="coding.html#S2">Using Comments</a></dt>
<dd>
<dl>
- <dt>4.2.1. <a href="coding.html#S3">Comment, Comment,
- Comment</a></dt>
- <dt>4.2.2. <a href="coding.html#S4">Use blocks for
- comments</a></dt>
- <dt>4.2.3. <a href="coding.html#S5">Keep Comments on their
- own line</a></dt>
- <dt>4.2.4. <a href="coding.html#S6">Comment each logical
- step</a></dt>
- <dt>4.2.5. <a href="coding.html#S7">Comment All Functions
- Thoroughly</a></dt>
- <dt>4.2.6. <a href="coding.html#S8">Comment at the end of
- braces if the content is more than one screen length</a></dt>
+ <dt>4.2.1. <a href="coding.html#S3">Comment, Comment, Comment</a></dt>
+ <dt>4.2.2. <a href="coding.html#S4">Use blocks for comments</a></dt>
+ <dt>4.2.3. <a href="coding.html#S5">Keep Comments on their own line</a></dt>
+ <dt>4.2.4. <a href="coding.html#S6">Comment each logical step</a></dt>
+ <dt>4.2.5. <a href="coding.html#S7">Comment All Functions Thoroughly</a></dt>
+ <dt>4.2.6. <a href="coding.html#S8">Comment at the end of braces if the content is more than one screen
+ length</a></dt>
</dl>
</dd>
<dt>4.3. <a href="coding.html#S9">Naming Conventions</a></dt>
<dl>
<dt>4.3.1. <a href="coding.html#S10">Variable Names</a></dt>
<dt>4.3.2. <a href="coding.html#S11">Function Names</a></dt>
- <dt>4.3.3. <a href="coding.html#S12">Header file
- prototypes</a></dt>
- <dt>4.3.4. <a href="coding.html#S13">Enumerations, and
- #defines</a></dt>
+ <dt>4.3.3. <a href="coding.html#S12">Header file prototypes</a></dt>
+ <dt>4.3.4. <a href="coding.html#S13">Enumerations, and #defines</a></dt>
<dt>4.3.5. <a href="coding.html#S14">Constants</a></dt>
</dl>
</dd>
<dt>4.4. <a href="coding.html#S15">Using Space</a></dt>
<dd>
<dl>
- <dt>4.4.1. <a href="coding.html#S16">Put braces on a line by
- themselves.</a></dt>
- <dt>4.4.2. <a href="coding.html#S17">ALL control statements
- should have a block</a></dt>
- <dt>4.4.3. <a href="coding.html#S18">Do not belabor/blow-up
- boolean expressions</a></dt>
- <dt>4.4.4. <a href="coding.html#S19">Use white space freely
- because it is free</a></dt>
- <dt>4.4.5. <a href="coding.html#S20">Don't use white space
- around structure operators</a></dt>
- <dt>4.4.6. <a href="coding.html#S21">Make the last brace of a
- function stand out</a></dt>
- <dt>4.4.7. <a href="coding.html#S22">Use 3 character
- indentions</a></dt>
+ <dt>4.4.1. <a href="coding.html#S16">Put braces on a line by themselves.</a></dt>
+ <dt>4.4.2. <a href="coding.html#S17">ALL control statements should have a block</a></dt>
+ <dt>4.4.3. <a href="coding.html#S18">Do not belabor/blow-up boolean expressions</a></dt>
+ <dt>4.4.4. <a href="coding.html#S19">Use white space freely because it is free</a></dt>
+ <dt>4.4.5. <a href="coding.html#S20">Don't use white space around structure operators</a></dt>
+ <dt>4.4.6. <a href="coding.html#S21">Make the last brace of a function stand out</a></dt>
+ <dt>4.4.7. <a href="coding.html#S22">Use 3 character indentions</a></dt>
</dl>
</dd>
<dt>4.5. <a href="coding.html#S23">Initializing</a></dt>
<dd>
<dl>
- <dt>4.5.1. <a href="coding.html#S24">Initialize all
- variables</a></dt>
+ <dt>4.5.1. <a href="coding.html#S24">Initialize all variables</a></dt>
</dl>
</dd>
<dt>4.6. <a href="coding.html#S25">Functions</a></dt>
<dd>
<dl>
- <dt>4.6.1. <a href="coding.html#S26">Name functions that
- return a boolean as a question.</a></dt>
- <dt>4.6.2. <a href="coding.html#S27">Always specify a return
- type for a function.</a></dt>
- <dt>4.6.3. <a href="coding.html#S28">Minimize function calls
- when iterating by using variables</a></dt>
- <dt>4.6.4. <a href="coding.html#S29">Pass and Return by Const
- Reference</a></dt>
- <dt>4.6.5. <a href="coding.html#S30">Pass and Return by
- Value</a></dt>
- <dt>4.6.6. <a href="coding.html#S31">Names of include
- files</a></dt>
- <dt>4.6.7. <a href="coding.html#S32">Provide multiple
- inclusion protection</a></dt>
- <dt>4.6.8. <a href="coding.html#S33">Use `extern "C"` when
- appropriate</a></dt>
- <dt>4.6.9. <a href="coding.html#S34">Where Possible, Use
- Forward Struct Declaration Instead of Includes</a></dt>
+ <dt>4.6.1. <a href="coding.html#S26">Name functions that return a boolean as a question.</a></dt>
+ <dt>4.6.2. <a href="coding.html#S27">Always specify a return type for a function.</a></dt>
+ <dt>4.6.3. <a href="coding.html#S28">Minimize function calls when iterating by using variables</a></dt>
+ <dt>4.6.4. <a href="coding.html#S29">Pass and Return by Const Reference</a></dt>
+ <dt>4.6.5. <a href="coding.html#S30">Pass and Return by Value</a></dt>
+ <dt>4.6.6. <a href="coding.html#S31">Names of include files</a></dt>
+ <dt>4.6.7. <a href="coding.html#S32">Provide multiple inclusion protection</a></dt>
+ <dt>4.6.8. <a href="coding.html#S33">Use `extern "C"` when appropriate</a></dt>
+ <dt>4.6.9. <a href="coding.html#S34">Where Possible, Use Forward Struct Declaration Instead of
+ Includes</a></dt>
</dl>
</dd>
- <dt>4.7. <a href="coding.html#S35">General Coding
- Practices</a></dt>
+ <dt>4.7. <a href="coding.html#S35">General Coding Practices</a></dt>
<dd>
<dl>
- <dt>4.7.1. <a href="coding.html#S36">Turn on
- warnings</a></dt>
- <dt>4.7.2. <a href="coding.html#S37">Provide a default case
- for all switch statements</a></dt>
- <dt>4.7.3. <a href="coding.html#S38">Try to avoid falling
- through cases in a switch statement.</a></dt>
- <dt>4.7.4. <a href="coding.html#S40">Don't mix size_t and
- other types</a></dt>
- <dt>4.7.5. <a href="coding.html#S41">Declare each variable
- and struct on its own line.</a></dt>
- <dt>4.7.6. <a href="coding.html#S42">Use malloc/zalloc
- sparingly</a></dt>
- <dt>4.7.7. <a href="coding.html#S43">The Programmer Who Uses
- 'malloc' is Responsible for Ensuring 'free'</a></dt>
- <dt>4.7.8. <a href="coding.html#S44">Add loaders to the
- `file_list' structure and in order</a></dt>
- <dt>4.7.9. <a href="coding.html#S45">"Uncertain" new code
- and/or changes to existing code, use XXX</a></dt>
+ <dt>4.7.1. <a href="coding.html#S36">Turn on warnings</a></dt>
+ <dt>4.7.2. <a href="coding.html#S37">Provide a default case for all switch statements</a></dt>
+ <dt>4.7.3. <a href="coding.html#S38">Try to avoid falling through cases in a switch statement.</a></dt>
+ <dt>4.7.4. <a href="coding.html#S40">Don't mix size_t and other types</a></dt>
+ <dt>4.7.5. <a href="coding.html#S41">Declare each variable and struct on its own line.</a></dt>
+ <dt>4.7.6. <a href="coding.html#S42">Use malloc/zalloc sparingly</a></dt>
+ <dt>4.7.7. <a href="coding.html#S43">The Programmer Who Uses 'malloc' is Responsible for Ensuring
+ 'free'</a></dt>
+ <dt>4.7.8. <a href="coding.html#S44">Add loaders to the `file_list' structure and in order</a></dt>
+ <dt>4.7.9. <a href="coding.html#S45">"Uncertain" new code and/or changes to existing code, use
+ XXX</a></dt>
</dl>
</dd>
- <dt>4.8. <a href="coding.html#S46">Addendum: Template for files
- and function comment blocks:</a></dt>
+ <dt>4.8. <a href="coding.html#S46">Addendum: Template for files and function comment blocks:</a></dt>
</dl>
</dd>
<dt>5. <a href="testing.html">Testing Guidelines</a></dt>
<dd>
<dl>
- <dt>5.1. <a href="testing.html#TESTING-PLAN">Testplan for
- releases</a></dt>
+ <dt>5.1. <a href="testing.html#TESTING-PLAN">Testplan for releases</a></dt>
<dt>5.2. <a href="testing.html#FUZZING">Fuzzing Privoxy</a></dt>
</dl>
</dd>
<dt>6. <a href="newrelease.html">Releasing a New Version</a></dt>
<dd>
<dl>
- <dt>6.1. <a href="newrelease.html#VERSIONNUMBERS">Version
- numbers</a></dt>
- <dt>6.2. <a href="newrelease.html#BEFORERELEASE">Before the
- Release: Freeze</a></dt>
- <dt>6.3. <a href="newrelease.html#THERELEASE">Building and
- Releasing the Packages</a></dt>
+ <dt>6.1. <a href="newrelease.html#VERSIONNUMBERS">Version numbers</a></dt>
+ <dt>6.2. <a href="newrelease.html#BEFORERELEASE">Before the Release: Freeze</a></dt>
+ <dt>6.3. <a href="newrelease.html#THERELEASE">Building and Releasing the Packages</a></dt>
<dd>
<dl>
- <dt>6.3.1. <a href="newrelease.html#PACK-GUIDELINES">Note on
- Privoxy Packaging</a></dt>
- <dt>6.3.2. <a href=
- "newrelease.html#NEWRELEASE-TARBALL">Source Tarball</a></dt>
- <dt>6.3.3. <a href="newrelease.html#NEWRELEASE-RPM">SuSE,
- Conectiva or Red Hat RPM</a></dt>
- <dt>6.3.4. <a href=
- "newrelease.html#NEWRELEASE-OS2">OS/2</a></dt>
- <dt>6.3.5. <a href=
- "newrelease.html#NEWRELEASE-SOLARIS">Solaris</a></dt>
- <dt>6.3.6. <a href=
- "newrelease.html#NEWRELEASE-WINDOWS">Windows</a></dt>
- <dt>6.3.7. <a href=
- "newrelease.html#NEWRELEASE-DEBIAN">Debian</a></dt>
- <dt>6.3.8. <a href="newrelease.html#NEWRELEASE-MACOSX">Mac OS
- X</a></dt>
- <dt>6.3.9. <a href=
- "newrelease.html#NEWRELEASE-FREEBSD">FreeBSD</a></dt>
+ <dt>6.3.1. <a href="newrelease.html#PACK-GUIDELINES">Note on Privoxy Packaging</a></dt>
+ <dt>6.3.2. <a href="newrelease.html#NEWRELEASE-TARBALL">Source Tarball</a></dt>
+ <dt>6.3.3. <a href="newrelease.html#NEWRELEASE-RPM">SuSE, Conectiva or Red Hat RPM</a></dt>
+ <dt>6.3.4. <a href="newrelease.html#NEWRELEASE-OS2">OS/2</a></dt>
+ <dt>6.3.5. <a href="newrelease.html#NEWRELEASE-SOLARIS">Solaris</a></dt>
+ <dt>6.3.6. <a href="newrelease.html#NEWRELEASE-WINDOWS">Windows</a></dt>
+ <dt>6.3.7. <a href="newrelease.html#NEWRELEASE-DEBIAN">Debian</a></dt>
+ <dt>6.3.8. <a href="newrelease.html#NEWRELEASE-MACOSX">Mac OS X</a></dt>
+ <dt>6.3.9. <a href="newrelease.html#NEWRELEASE-FREEBSD">FreeBSD</a></dt>
</dl>
</dd>
- <dt>6.4. <a href="newrelease.html#RELEASING">Uploading and
- Releasing Your Package</a></dt>
- <dt>6.5. <a href="newrelease.html#AFTERRELEASE">After the
- Release</a></dt>
+ <dt>6.4. <a href="newrelease.html#RELEASING">Uploading and Releasing Your Package</a></dt>
+ <dt>6.5. <a href="newrelease.html#AFTERRELEASE">After the Release</a></dt>
</dl>
</dd>
<dt>7. <a href="webserver-update.html">Update the Webserver</a></dt>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="33%" align="left" valign="top"> </td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top"><a href=
- "introduction.html" accesskey="N">Next</a></td>
+ <td width="33%" align="right" valign="top"><a href="introduction.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top"> </td>
<html>
<head>
<title>Introduction</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy Developer Manual" href="index.html">
<link rel="PREVIOUS" title="Privoxy Developer Manual" href="index.html">
<link rel="NEXT" title="The CVS Repository" href="cvs.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy Developer Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="index.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="index.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="cvs.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="cvs.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="INTRODUCTION" id="INTRODUCTION">1.
- Introduction</a></h1>
- <p><span class="APPLICATION">Privoxy</span>, as an heir to <span class=
- "APPLICATION">Junkbuster</span>, is a Free Software project and the code
- is licensed under the GNU General Public License version 2. As such,
- <span class="APPLICATION">Privoxy</span> development is potentially open
- to anyone who has the time, knowledge, and desire to contribute in any
- capacity. Our goals are simply to continue the mission, to improve
- <span class="APPLICATION">Privoxy</span>, and to make it available to as
- wide an audience as possible.</p>
- <p>One does not have to be a programmer to contribute. Packaging,
- testing, documenting and porting, are all important jobs as well.</p>
+ <h1 class="SECT1"><a name="INTRODUCTION" id="INTRODUCTION">1. Introduction</a></h1>
+ <p><span class="APPLICATION">Privoxy</span>, as an heir to <span class="APPLICATION">Junkbuster</span>, is a Free
+ Software project and the code is licensed under the GNU General Public License version 2. As such, <span class=
+ "APPLICATION">Privoxy</span> development is potentially open to anyone who has the time, knowledge, and desire to
+ contribute in any capacity. Our goals are simply to continue the mission, to improve <span class=
+ "APPLICATION">Privoxy</span>, and to make it available to as wide an audience as possible.</p>
+ <p>One does not have to be a programmer to contribute. Packaging, testing, documenting and porting, are all
+ important jobs as well.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="QUICKSTART" id="QUICKSTART">1.1. Quickstart
- to Privoxy Development</a></h2>
- <p>The first step is to join the <a href=
- "https://lists.privoxy.org/mailman/listinfo/privoxy-devel" target=
- "_top">privoxy-devel mailing list</a>. You can submit your ideas, or
- even better patches. Patches are best submitted to the Sourceforge
- tracker set up for this purpose, but can be sent to the list for review
- too.</p>
- <p>You will also need to have a cvs package installed, which will
- entail having ssh installed as well (which seems to be a requirement of
- SourceForge), in order to access the cvs repository. Having the GNU
- build tools is also going to be important (particularly, autoconf and
- gmake).</p>
- <p>For the time being (read, this section is under construction), you
- can also refer to the extensive comments in the source code. In fact,
- reading the code is recommended in any case.</p>
+ <h2 class="SECT2"><a name="QUICKSTART" id="QUICKSTART">1.1. Quickstart to Privoxy Development</a></h2>
+ <p>The first step is to join the <a href="https://lists.privoxy.org/mailman/listinfo/privoxy-devel" target=
+ "_top">privoxy-devel mailing list</a>. You can submit your ideas, or even better patches. Patches are best
+ submitted to the Sourceforge tracker set up for this purpose, but can be sent to the list for review too.</p>
+ <p>You will also need to have a cvs package installed, which will entail having ssh installed as well (which
+ seems to be a requirement of SourceForge), in order to access the cvs repository. Having the GNU build tools is
+ also going to be important (particularly, autoconf and gmake).</p>
+ <p>For the time being (read, this section is under construction), you can also refer to the extensive comments in
+ the source code. In fact, reading the code is recommended in any case.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="index.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="cvs.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="index.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="cvs.html" accesskey="N">Next</a></td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">Privoxy Developer
- Manual</td>
+ <td width="33%" align="left" valign="top">Privoxy Developer Manual</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">The CVS Repository</td>
</tr>
<html>
<head>
<title>Releasing a New Version</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy Developer Manual" href="index.html">
<link rel="PREVIOUS" title="Testing Guidelines" href="testing.html">
<link rel="NEXT" title="Update the Webserver" href="webserver-update.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy Developer Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="testing.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="testing.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "webserver-update.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="webserver-update.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="NEWRELEASE" id="NEWRELEASE">6. Releasing a New
- Version</a></h1>
- <p>When we release versions of <span class="APPLICATION">Privoxy</span>,
- our work leaves our cozy secret lab and has to work in the cold
- RealWorld[tm]. Once it is released, there is no way to call it back, so
- it is very important that great care is taken to ensure that everything
- runs fine, and not to introduce problems in the very last minute.</p>
- <p>So when releasing a new version, please adhere exactly to the
- procedure outlined in this chapter.</p>
- <p>The following programs are required to follow this process: <tt class=
- "FILENAME">ncftpput</tt> (ncftp), <tt class="FILENAME">scp, ssh</tt>
- (ssh), <tt class="FILENAME">gmake</tt> (GNU's version of make), autoconf,
+ <h1 class="SECT1"><a name="NEWRELEASE" id="NEWRELEASE">6. Releasing a New Version</a></h1>
+ <p>When we release versions of <span class="APPLICATION">Privoxy</span>, our work leaves our cozy secret lab and
+ has to work in the cold RealWorld[tm]. Once it is released, there is no way to call it back, so it is very
+ important that great care is taken to ensure that everything runs fine, and not to introduce problems in the very
+ last minute.</p>
+ <p>So when releasing a new version, please adhere exactly to the procedure outlined in this chapter.</p>
+ <p>The following programs are required to follow this process: <tt class="FILENAME">ncftpput</tt> (ncftp),
+ <tt class="FILENAME">scp, ssh</tt> (ssh), <tt class="FILENAME">gmake</tt> (GNU's version of make), autoconf,
cvs.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="VERSIONNUMBERS" id="VERSIONNUMBERS">6.1.
- Version numbers</a></h2>
- <p>First you need to determine which version number the release will
- have. <span class="APPLICATION">Privoxy</span> version numbers consist
- of three numbers, separated by dots, like in X.Y.Z (e.g. 3.0.0),
- where:</p>
+ <h2 class="SECT2"><a name="VERSIONNUMBERS" id="VERSIONNUMBERS">6.1. Version numbers</a></h2>
+ <p>First you need to determine which version number the release will have. <span class=
+ "APPLICATION">Privoxy</span> version numbers consist of three numbers, separated by dots, like in X.Y.Z (e.g.
+ 3.0.0), where:</p>
<ul>
<li>
- <p>X, the version major, is rarely ever changed. It is increased by
- one if turning a development branch into stable substantially
- changes the functionality, user interface or configuration syntax.
- Majors 1 and 2 were <span class="APPLICATION">Junkbuster</span>,
- and 3 will be the first stable <span class=
+ <p>X, the version major, is rarely ever changed. It is increased by one if turning a development branch into
+ stable substantially changes the functionality, user interface or configuration syntax. Majors 1 and 2 were
+ <span class="APPLICATION">Junkbuster</span>, and 3 will be the first stable <span class=
"APPLICATION">Privoxy</span> release.</p>
</li>
<li>
- <p>Y, the version minor, represents the branch within the major
- version. At any point in time, there are two branches being
- maintained: The stable branch, with an even minor, say, 2N, in
- which no functionality is being added and only bug-fixes are made,
- and 2N+1, the development branch, in which the further development
- of <span class="APPLICATION">Privoxy</span> takes place. This
- enables us to turn the code upside down and inside out, while at
- the same time providing and maintaining a stable version. The minor
- is reset to zero (and one) when the major is incremented. When a
- development branch has matured to the point where it can be turned
- into stable, the old stable branch 2N is given up (i.e. no longer
- maintained), the former development branch 2N+1 becomes the new
- stable branch 2N+2, and a new development branch 2N+3 is
- opened.</p>
+ <p>Y, the version minor, represents the branch within the major version. At any point in time, there are two
+ branches being maintained: The stable branch, with an even minor, say, 2N, in which no functionality is being
+ added and only bug-fixes are made, and 2N+1, the development branch, in which the further development of
+ <span class="APPLICATION">Privoxy</span> takes place. This enables us to turn the code upside down and inside
+ out, while at the same time providing and maintaining a stable version. The minor is reset to zero (and one)
+ when the major is incremented. When a development branch has matured to the point where it can be turned into
+ stable, the old stable branch 2N is given up (i.e. no longer maintained), the former development branch 2N+1
+ becomes the new stable branch 2N+2, and a new development branch 2N+3 is opened.</p>
</li>
<li>
- <p>Z, the point or sub version, represents a release of the
- software within a branch. It is therefore incremented immediately
- before each code freeze. In development branches, only the even
- point versions correspond to actual releases, while the odd ones
- denote the evolving state of the sources on CVS in between. It
- follows that Z is odd on CVS in development branches most of the
- time. There, it gets increased to an even number immediately before
- a code freeze, and is increased to an odd number again immediately
- thereafter. This ensures that builds from CVS snapshots are easily
- distinguished from released versions. The point version is reset to
- zero when the minor changes.</p>
- <p>Stable branches work a little differently, since there should be
- little to no development happening in such branches. Remember, only
- bugfixes, which presumably should have had some testing before
- being committed. Stable branches will then have their version
- reported as <tt class="LITERAL">0.0.0</tt>, during that period
- between releases when changes are being added. This is to denote
- that this code is <span class="emphasis"><i class="EMPHASIS">not
- for release</i></span>. Then as the release nears, the version is
- bumped according: e.g. <tt class="LITERAL">3.0.1 -> 0.0.0 ->
- 3.0.2</tt>.</p>
+ <p>Z, the point or sub version, represents a release of the software within a branch. It is therefore
+ incremented immediately before each code freeze. In development branches, only the even point versions
+ correspond to actual releases, while the odd ones denote the evolving state of the sources on CVS in between.
+ It follows that Z is odd on CVS in development branches most of the time. There, it gets increased to an even
+ number immediately before a code freeze, and is increased to an odd number again immediately thereafter. This
+ ensures that builds from CVS snapshots are easily distinguished from released versions. The point version is
+ reset to zero when the minor changes.</p>
+ <p>Stable branches work a little differently, since there should be little to no development happening in
+ such branches. Remember, only bugfixes, which presumably should have had some testing before being committed.
+ Stable branches will then have their version reported as <tt class="LITERAL">0.0.0</tt>, during that period
+ between releases when changes are being added. This is to denote that this code is <span class=
+ "emphasis"><i class="EMPHASIS">not for release</i></span>. Then as the release nears, the version is bumped
+ according: e.g. <tt class="LITERAL">3.0.1 -> 0.0.0 -> 3.0.2</tt>.</p>
</li>
</ul>
- <p>In summary, the main CVS trunk is the development branch where new
- features are being worked on for the next stable series. This should
- almost always be where the most activity takes place. There is always
- at least one stable branch from the trunk, e.g now it is <tt class=
- "LITERAL">3.0</tt>, which is only used to release stable versions. Once
- the initial *.0 release of the stable branch has been done, then as a
- rule, only bugfixes that have had prior testing should be committed to
- the stable branch. Once there are enough bugfixes to justify a new
- release, the version of this branch is again incremented Example: 3.0.0
- -> 3.0.1 -> 3.0.2, etc are all stable releases from within the
- stable branch. 3.1.x is currently the main trunk, and where work on
- 3.2.x is taking place. If any questions, please post to the devel list
- <span class="emphasis"><i class="EMPHASIS">before</i></span> committing
- to a stable branch!</p>
- <p>Developers should remember too that if they commit a bugfix to the
- stable branch, this will more than likely require a separate submission
- to the main trunk, since these are separate development trees within
- CVS. If you are working on both, then this would require at least two
- separate check outs (i.e main trunk, <span class="emphasis"><i class=
- "EMPHASIS">and</i></span> the stable release branch, which is
- <tt class="LITERAL">v_3_0_branch</tt> at the moment).</p>
+ <p>In summary, the main CVS trunk is the development branch where new features are being worked on for the next
+ stable series. This should almost always be where the most activity takes place. There is always at least one
+ stable branch from the trunk, e.g now it is <tt class="LITERAL">3.0</tt>, which is only used to release stable
+ versions. Once the initial *.0 release of the stable branch has been done, then as a rule, only bugfixes that
+ have had prior testing should be committed to the stable branch. Once there are enough bugfixes to justify a new
+ release, the version of this branch is again incremented Example: 3.0.0 -> 3.0.1 -> 3.0.2, etc are all
+ stable releases from within the stable branch. 3.1.x is currently the main trunk, and where work on 3.2.x is
+ taking place. If any questions, please post to the devel list <span class="emphasis"><i class=
+ "EMPHASIS">before</i></span> committing to a stable branch!</p>
+ <p>Developers should remember too that if they commit a bugfix to the stable branch, this will more than likely
+ require a separate submission to the main trunk, since these are separate development trees within CVS. If you
+ are working on both, then this would require at least two separate check outs (i.e main trunk, <span class=
+ "emphasis"><i class="EMPHASIS">and</i></span> the stable release branch, which is <tt class=
+ "LITERAL">v_3_0_branch</tt> at the moment).</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="BEFORERELEASE" id="BEFORERELEASE">6.2.
- Before the Release: Freeze</a></h2>
- <p>The following <span class="emphasis"><i class="EMPHASIS">must be
- done by one of the developers</i></span> prior to each new release.</p>
+ <h2 class="SECT2"><a name="BEFORERELEASE" id="BEFORERELEASE">6.2. Before the Release: Freeze</a></h2>
+ <p>The following <span class="emphasis"><i class="EMPHASIS">must be done by one of the developers</i></span>
+ prior to each new release.</p>
<ul>
<li>
- <p>Make sure that everybody who has worked on the code in the last
- couple of days has had a chance to yell <span class=
- "QUOTE">"no!"</span> in case they have pending changes/fixes in
- their pipelines. Announce the freeze so that nobody will interfere
- with last minute changes.</p>
+ <p>Make sure that everybody who has worked on the code in the last couple of days has had a chance to yell
+ <span class="QUOTE">"no!"</span> in case they have pending changes/fixes in their pipelines. Announce the
+ freeze so that nobody will interfere with last minute changes.</p>
</li>
<li>
- <p>Increment the version number (point from odd to even in
- development branches!) in <tt class="FILENAME">configure.in</tt>
- and update the code status (CODE_STATUS="xxx") to one of "alpha",
- "beta" or "stable". Rebuild configure and GNUMakefile to make sure
- the updated values are being used.</p>
+ <p>Increment the version number (point from odd to even in development branches!) in <tt class=
+ "FILENAME">configure.in</tt> and update the code status (CODE_STATUS="xxx") to one of "alpha", "beta" or
+ "stable". Rebuild configure and GNUMakefile to make sure the updated values are being used.</p>
</li>
<li>
- <p>Use the dok-release target to update the sgml documentation
- source files.</p>
+ <p>Use the dok-release target to update the sgml documentation source files.</p>
</li>
<li>
- <p>If action file processing has changed and is not
- backward-compatible, make sure the "for-privoxy-version=x.y.z"
- minimum version number in default.action.master has been
- updated:</p>
+ <p>If action file processing has changed and is not backward-compatible, make sure the
+ "for-privoxy-version=x.y.z" minimum version number in default.action.master has been updated:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</table>
</li>
<li>
- <p>All documentation should be rebuild after the version bump.
- Finished docs should be then be committed to CVS (for those without
- the ability to build these). Some docs may require rather obscure
- processing tools. <tt class="FILENAME">config</tt>, the man page
- (and the html version of the man page) fall in this category.
- README, the man page, AUTHORS, and config should all also be
- committed to CVS for other packagers. The formal docs should be
- uploaded to the webserver. See the Section "Updating the webserver"
- in this manual for details.</p>
+ <p>All documentation should be rebuild after the version bump. Finished docs should be then be committed to
+ CVS (for those without the ability to build these). Some docs may require rather obscure processing tools.
+ <tt class="FILENAME">config</tt>, the man page (and the html version of the man page) fall in this category.
+ README, the man page, AUTHORS, and config should all also be committed to CVS for other packagers. The formal
+ docs should be uploaded to the webserver. See the Section "Updating the webserver" in this manual for
+ details.</p>
</li>
<li>
- <p>The <i class="CITETITLE">User Manual</i> is also used for
- context sensitive help for the CGI editor. This is version
- sensitive, so that the user will get appropriate help for his/her
- release. So with each release a fresh version should be uploaded to
- the webserver (this is in addition to the main <i class=
- "CITETITLE">User Manual</i> link from the main page since we need
- to keep manuals for various versions available). The CGI pages will
- link to something like <tt class=
- "LITERAL">http://privoxy.org/$(VERSION)/user-manual/</tt>. This
- will need to be updated for each new release. There is no Makefile
- target for this at this time!!! It needs to be done manually.</p>
+ <p>The <i class="CITETITLE">User Manual</i> is also used for context sensitive help for the CGI editor. This
+ is version sensitive, so that the user will get appropriate help for his/her release. So with each release a
+ fresh version should be uploaded to the webserver (this is in addition to the main <i class="CITETITLE">User
+ Manual</i> link from the main page since we need to keep manuals for various versions available). The CGI
+ pages will link to something like <tt class="LITERAL">http://privoxy.org/$(VERSION)/user-manual/</tt>. This
+ will need to be updated for each new release. There is no Makefile target for this at this time!!! It needs
+ to be done manually.</p>
</li>
<li>
- <p>All developers should look at the <tt class=
- "FILENAME">ChangeLog</tt> and make sure noteworthy changes are
+ <p>All developers should look at the <tt class="FILENAME">ChangeLog</tt> and make sure noteworthy changes are
referenced.</p>
</li>
<li>
- <p><span class="emphasis"><i class="EMPHASIS">Commit all files that
- were changed in the above steps!</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Commit all files that were changed in the above
+ steps!</i></span></p>
</li>
<li>
- <p>Tag all files in CVS with the version number with <span class=
- "QUOTE">"<b class="COMMAND">cvs tag v_X_Y_Z</b>"</span>. Don't use
- vX_Y_Z, ver_X_Y_Z, v_X.Y.Z (won't work) etc.</p>
+ <p>Tag all files in CVS with the version number with <span class="QUOTE">"<b class="COMMAND">cvs tag
+ v_X_Y_Z</b>"</span>. Don't use vX_Y_Z, ver_X_Y_Z, v_X.Y.Z (won't work) etc.</p>
</li>
<li>
- <p>If the release was in a development branch, increase the point
- version from even to odd (X.Y.(Z+1)) again in <tt class=
- "FILENAME">configure.in</tt> and commit your change.</p>
+ <p>If the release was in a development branch, increase the point version from even to odd (X.Y.(Z+1)) again
+ in <tt class="FILENAME">configure.in</tt> and commit your change.</p>
</li>
<li>
- <p>On the webserver, copy the user manual to a new top-level
- directory called <tt class="FILENAME">X.Y.Z</tt>. This ensures that
- help links from the CGI pages, which have the version as a prefix,
- will go into the right version of the manual. If this is a
- development branch release, also symlink <tt class=
- "FILENAME">X.Y.(Z-1)</tt> to <tt class="FILENAME">X.Y.Z</tt> and
- <tt class="FILENAME">X.Y.(Z+1)</tt> to <tt class="FILENAME">.</tt>
- (i.e. dot).</p>
+ <p>On the webserver, copy the user manual to a new top-level directory called <tt class=
+ "FILENAME">X.Y.Z</tt>. This ensures that help links from the CGI pages, which have the version as a prefix,
+ will go into the right version of the manual. If this is a development branch release, also symlink
+ <tt class="FILENAME">X.Y.(Z-1)</tt> to <tt class="FILENAME">X.Y.Z</tt> and <tt class=
+ "FILENAME">X.Y.(Z+1)</tt> to <tt class="FILENAME">.</tt> (i.e. dot).</p>
</li>
</ul>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="THERELEASE" id="THERELEASE">6.3. Building
- and Releasing the Packages</a></h2>
- <p>Now the individual packages can be built and released. Note that for
- GPL reasons the first package to be released is always the source
- tarball.</p>
- <p>For <span class="emphasis"><i class="EMPHASIS">all</i></span> types
- of packages, including the source tarball, <span class=
- "emphasis"><i class="EMPHASIS">you must make sure that you build from
- clean sources by exporting the right version from CVS into an empty
- directory</i></span> (just press return when asked for a password):</p>
+ <h2 class="SECT2"><a name="THERELEASE" id="THERELEASE">6.3. Building and Releasing the Packages</a></h2>
+ <p>Now the individual packages can be built and released. Note that for GPL reasons the first package to be
+ released is always the source tarball.</p>
+ <p>For <span class="emphasis"><i class="EMPHASIS">all</i></span> types of packages, including the source tarball,
+ <span class="emphasis"><i class="EMPHASIS">you must make sure that you build from clean sources by exporting the
+ right version from CVS into an empty directory</i></span> (just press return when asked for a password):</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- mkdir dist # delete or choose different name if it already exists
+ <pre class="PROGRAMLISTING"> mkdir dist # delete or choose different name if it already exists
cd dist
cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login
cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current</pre>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Do NOT change</i></span>
- a single bit, including, but not limited to version information after
- export from CVS. This is to make sure that all release packages, and
- with them, all future bug reports, are based on exactly the same
- code.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Do NOT change</i></span> a single bit, including, but not limited
+ to version information after export from CVS. This is to make sure that all release packages, and with them, all
+ future bug reports, are based on exactly the same code.</p>
<div class="WARNING">
<table class="WARNING" border="1" width="100%">
<tr>
</tr>
<tr>
<td align="left">
- <p>Every significant release of Privoxy has included at least
- one package that either had incorrect versions of files,
- missing files, or incidental leftovers from a previous build
- process that gave unknown numbers of users headaches to try to
- figure out what was wrong. PLEASE, make sure you are using
- pristene sources, and are following the prescribed process!</p>
+ <p>Every significant release of Privoxy has included at least one package that either had incorrect
+ versions of files, missing files, or incidental leftovers from a previous build process that gave unknown
+ numbers of users headaches to try to figure out what was wrong. PLEASE, make sure you are using pristene
+ sources, and are following the prescribed process!</p>
</td>
</tr>
</table>
</div>
- <p>Please find additional instructions for the source tarball and the
- individual platform dependent binary packages below. And details on the
- Sourceforge release process below that.</p>
+ <p>Please find additional instructions for the source tarball and the individual platform dependent binary
+ packages below. And details on the Sourceforge release process below that.</p>
<div class="SECT3">
- <h3 class="SECT3"><a name="PACK-GUIDELINES" id=
- "PACK-GUIDELINES">6.3.1. Note on Privoxy Packaging</a></h3>
- <p>Please keep these general guidelines in mind when putting together
- your package. These apply to <span class="emphasis"><i class=
- "EMPHASIS">all</i></span> platforms!</p>
+ <h3 class="SECT3"><a name="PACK-GUIDELINES" id="PACK-GUIDELINES">6.3.1. Note on Privoxy Packaging</a></h3>
+ <p>Please keep these general guidelines in mind when putting together your package. These apply to <span class=
+ "emphasis"><i class="EMPHASIS">all</i></span> platforms!</p>
<ul>
<li>
- <p><span class="APPLICATION">Privoxy</span> <span class=
- "emphasis"><i class="EMPHASIS">requires</i></span> write access
- to: all <tt class="FILENAME">*.action</tt> files, all logfiles,
- and the <tt class="FILENAME">trust</tt> file. You will need to
- determine the best way to do this for your platform.</p>
+ <p><span class="APPLICATION">Privoxy</span> <span class="emphasis"><i class="EMPHASIS">requires</i></span>
+ write access to: all <tt class="FILENAME">*.action</tt> files, all logfiles, and the <tt class=
+ "FILENAME">trust</tt> file. You will need to determine the best way to do this for your platform.</p>
</li>
<li>
- <p>Please include up to date documentation. At a bare
- minimum:</p>
+ <p>Please include up to date documentation. At a bare minimum:</p>
<table border="0">
<tbody>
<tr>
- <td><tt class="FILENAME">LICENSE</tt> (top-level
- directory)</td>
+ <td><tt class="FILENAME">LICENSE</tt> (top-level directory)</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><tt class="FILENAME">README</tt> (top-level
- directory)</td>
+ <td><tt class="FILENAME">README</tt> (top-level directory)</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><tt class="FILENAME">AUTHORS</tt> (top-level
- directory)</td>
+ <td><tt class="FILENAME">AUTHORS</tt> (top-level directory)</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><tt class="FILENAME">man page</tt> (top-level
- directory, Unix-like platforms only)</td>
+ <td><tt class="FILENAME">man page</tt> (top-level directory, Unix-like platforms only)</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><tt class="FILENAME">The User Manual</tt>
- (doc/webserver/user-manual/)</td>
+ <td><tt class="FILENAME">The User Manual</tt> (doc/webserver/user-manual/)</td>
</tr>
</tbody>
</table>
</tr>
</tbody>
</table>
- <p>Also suggested: <tt class="FILENAME">Developer Manual</tt>
- (doc/webserver/developer-manual) and <tt class=
- "FILENAME">ChangeLog</tt> (top-level directory). <tt class=
- "FILENAME">FAQ</tt> and the manuals are HTML docs. There are also
- text versions in <tt class="FILENAME">doc/text/</tt> which could
- conceivably also be included.</p>
- <p>The documentation has been designed such that the manuals are
- linked to each other from parallel directories, and should be
- packaged that way. <tt class="FILENAME">privoxy-index.html</tt>
- can also be included and can serve as a focal point for docs and
- other links of interest (and possibly renamed to <tt class=
- "FILENAME">index.html</tt>). This should be one level up from the
- manuals. There is a link also on this page to an HTMLized version
- of the man page. To avoid 404 for this, it is in CVS as
- <tt class="FILENAME">doc/webserver/man-page/privoxy-man-page.html</tt>,
- and should be included along with the manuals. There is also a
- css stylesheets that can be included for better presentation:
- <tt class="FILENAME">p_doc.css</tt>. This should be in the same
- directory with <tt class="FILENAME">privoxy-index.html</tt>,
- (i.e. one level up from the manual directories).</p>
+ <p>Also suggested: <tt class="FILENAME">Developer Manual</tt> (doc/webserver/developer-manual) and
+ <tt class="FILENAME">ChangeLog</tt> (top-level directory). <tt class="FILENAME">FAQ</tt> and the manuals
+ are HTML docs. There are also text versions in <tt class="FILENAME">doc/text/</tt> which could conceivably
+ also be included.</p>
+ <p>The documentation has been designed such that the manuals are linked to each other from parallel
+ directories, and should be packaged that way. <tt class="FILENAME">privoxy-index.html</tt> can also be
+ included and can serve as a focal point for docs and other links of interest (and possibly renamed to
+ <tt class="FILENAME">index.html</tt>). This should be one level up from the manuals. There is a link also
+ on this page to an HTMLized version of the man page. To avoid 404 for this, it is in CVS as <tt class=
+ "FILENAME">doc/webserver/man-page/privoxy-man-page.html</tt>, and should be included along with the
+ manuals. There is also a css stylesheets that can be included for better presentation: <tt class=
+ "FILENAME">p_doc.css</tt>. This should be in the same directory with <tt class=
+ "FILENAME">privoxy-index.html</tt>, (i.e. one level up from the manual directories).</p>
</li>
<li>
- <p><tt class="FILENAME">user.action</tt> and <tt class=
- "FILENAME">user.filter</tt> are designed for local preferences.
- Make sure these do not get overwritten! <tt class=
- "FILENAME">config</tt> should not be overwritten either. This has
- especially important configuration data in it. <tt class=
- "FILENAME">trust</tt> should be left in tact as well.</p>
+ <p><tt class="FILENAME">user.action</tt> and <tt class="FILENAME">user.filter</tt> are designed for local
+ preferences. Make sure these do not get overwritten! <tt class="FILENAME">config</tt> should not be
+ overwritten either. This has especially important configuration data in it. <tt class="FILENAME">trust</tt>
+ should be left in tact as well.</p>
</li>
<li>
- <p>Other configuration files (<tt class=
- "FILENAME">default.action</tt> and <tt class=
- "FILENAME">default.filter</tt>) should be installed as the new
- defaults, but all previously installed configuration files should
- be preserved as backups. This is just good manners :-) These
- files are likely to change between releases and contain important
- new features and bug fixes.</p>
+ <p>Other configuration files (<tt class="FILENAME">default.action</tt> and <tt class=
+ "FILENAME">default.filter</tt>) should be installed as the new defaults, but all previously installed
+ configuration files should be preserved as backups. This is just good manners :-) These files are likely to
+ change between releases and contain important new features and bug fixes.</p>
</li>
<li>
- <p>Please check platform specific notes in this doc, if you
- haven't done <span class="QUOTE">"Privoxy"</span> packaging
- before for other platform specific issues. Conversely, please add
- any notes that you know are important for your platform (or
- contact one of the doc maintainers to do this if you can't).</p>
+ <p>Please check platform specific notes in this doc, if you haven't done <span class=
+ "QUOTE">"Privoxy"</span> packaging before for other platform specific issues. Conversely, please add any
+ notes that you know are important for your platform (or contact one of the doc maintainers to do this if
+ you can't).</p>
</li>
<li>
- <p>Packagers should do a <span class="QUOTE">"clean"</span>
- install of their package after building it. So any previous
- installs should be removed first to ensure the integrity of the
- newly built package. Then run the package for a while to make
- sure there are no obvious problems, before uploading.</p>
+ <p>Packagers should do a <span class="QUOTE">"clean"</span> install of their package after building it. So
+ any previous installs should be removed first to ensure the integrity of the newly built package. Then run
+ the package for a while to make sure there are no obvious problems, before uploading.</p>
</li>
</ul>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="NEWRELEASE-TARBALL" id=
- "NEWRELEASE-TARBALL">6.3.2. Source Tarball</a></h3>
- <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that
- you have freshly exported the right version into an empty
- directory</i></span>. (See "Building and releasing packages" above).
- Then run:</p>
+ <h3 class="SECT3"><a name="NEWRELEASE-TARBALL" id="NEWRELEASE-TARBALL">6.3.2. Source Tarball</a></h3>
+ <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that you have freshly exported the right version
+ into an empty directory</i></span>. (See "Building and releasing packages" above). Then run:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Go to the displayed URL and release the file publicly on
- Sourceforge. For the change log field, use the relevant section of
- the <tt class="FILENAME">ChangeLog</tt> file.</p>
+ <p>Go to the displayed URL and release the file publicly on Sourceforge. For the change log field, use the
+ relevant section of the <tt class="FILENAME">ChangeLog</tt> file.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="NEWRELEASE-RPM" id="NEWRELEASE-RPM">6.3.3.
- SuSE, Conectiva or Red Hat RPM</a></h3>
- <p>In following text, replace <tt class=
- "REPLACEABLE"><i>dist</i></tt> with either <span class=
- "QUOTE">"rh"</span> for Red Hat or <span class="QUOTE">"suse"</span>
- for SuSE.</p>
- <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that
- you have freshly exported the right version into an empty
- directory</i></span>. (See "Building and releasing packages"
- above).</p>
- <p>As the only exception to not changing anything after export from
- CVS, now examine the file <tt class=
- "FILENAME">privoxy-</tt><tt class="REPLACEABLE"><i>dist</i></tt><tt class="FILENAME">.spec</tt>
- and make sure that the version information and the RPM release number
- are correct. The RPM release numbers for each version start at one.
- Hence it must be reset to one if this is the first RPM for <tt class=
- "REPLACEABLE"><i>dist</i></tt> which is built from version X.Y.Z.
- Check the <a href=
- "https://sourceforge.net/project/showfiles.php?group_id=11118"
- target="_top">file list</a> if unsure. Else, it must be set to the
- highest already available RPM release number for that version plus
- one.</p>
+ <h3 class="SECT3"><a name="NEWRELEASE-RPM" id="NEWRELEASE-RPM">6.3.3. SuSE, Conectiva or Red Hat RPM</a></h3>
+ <p>In following text, replace <tt class="REPLACEABLE"><i>dist</i></tt> with either <span class=
+ "QUOTE">"rh"</span> for Red Hat or <span class="QUOTE">"suse"</span> for SuSE.</p>
+ <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that you have freshly exported the right version
+ into an empty directory</i></span>. (See "Building and releasing packages" above).</p>
+ <p>As the only exception to not changing anything after export from CVS, now examine the file <tt class=
+ "FILENAME">privoxy-</tt><tt class="REPLACEABLE"><i>dist</i></tt><tt class="FILENAME">.spec</tt> and make sure
+ that the version information and the RPM release number are correct. The RPM release numbers for each version
+ start at one. Hence it must be reset to one if this is the first RPM for <tt class=
+ "REPLACEABLE"><i>dist</i></tt> which is built from version X.Y.Z. Check the <a href=
+ "https://sourceforge.net/project/showfiles.php?group_id=11118" target="_top">file list</a> if unsure. Else, it
+ must be set to the highest already available RPM release number for that version plus one.</p>
<p>Then run:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING"> make <tt class=
- "REPLACEABLE"><i>dist</i></tt>-dist</pre>
+ <pre class="PROGRAMLISTING"> make <tt class="REPLACEABLE"><i>dist</i></tt>-dist</pre>
</td>
</tr>
</table>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING"> make <tt class=
- "REPLACEABLE"><i>dist</i></tt>-upload <tt class=
+ <pre class="PROGRAMLISTING"> make <tt class="REPLACEABLE"><i>dist</i></tt>-upload <tt class=
"REPLACEABLE"><i>rpm_packagerev</i></tt></pre>
</td>
</tr>
</table>
- <p>where <tt class="REPLACEABLE"><i>rpm_packagerev</i></tt> is the
- RPM release number as determined above. Go to the displayed URL and
- release the file publicly on Sourceforge. Use the release notes and
- change log from the source tarball package.</p>
+ <p>where <tt class="REPLACEABLE"><i>rpm_packagerev</i></tt> is the RPM release number as determined above. Go
+ to the displayed URL and release the file publicly on Sourceforge. Use the release notes and change log from
+ the source tarball package.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="NEWRELEASE-OS2" id="NEWRELEASE-OS2">6.3.4.
- OS/2</a></h3>
- <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that
- you have freshly exported the right version into an empty
- directory</i></span>. (See "Building and releasing packages" above).
- Then get the OS/2 Setup module:</p>
+ <h3 class="SECT3"><a name="NEWRELEASE-OS2" id="NEWRELEASE-OS2">6.3.4. OS/2</a></h3>
+ <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that you have freshly exported the right version
+ into an empty directory</i></span>. (See "Building and releasing packages" above). Then get the OS/2 Setup
+ module:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>You will need a mix of development tools. The main compilation
- takes place with IBM Visual Age C++. Some ancillary work takes place
- with GNU tools, available from various sources like hobbes.nmsu.edu.
- Specificially, you will need <tt class="FILENAME">autoheader</tt>,
- <tt class="FILENAME">autoconf</tt> and <tt class="FILENAME">sh</tt>
- tools. The packaging takes place with WarpIN, available from various
- sources, including its home page: <a href=
- "http://www.xworkplace.org/" target="_top">xworkplace</a>.</p>
- <p>Change directory to the <tt class="FILENAME">os2setup</tt>
- directory. Edit the os2build.cmd file to set the final executable
- filename. For example,</p>
+ <p>You will need a mix of development tools. The main compilation takes place with IBM Visual Age C++. Some
+ ancillary work takes place with GNU tools, available from various sources like hobbes.nmsu.edu. Specificially,
+ you will need <tt class="FILENAME">autoheader</tt>, <tt class="FILENAME">autoconf</tt> and <tt class=
+ "FILENAME">sh</tt> tools. The packaging takes place with WarpIN, available from various sources, including its
+ home page: <a href="http://www.xworkplace.org/" target="_top">xworkplace</a>.</p>
+ <p>Change directory to the <tt class="FILENAME">os2setup</tt> directory. Edit the os2build.cmd file to set the
+ final executable filename. For example,</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- installExeName='privoxyos2_setup_X.Y.Z.exe'</pre>
+ <pre class="PROGRAMLISTING"> installExeName='privoxyos2_setup_X.Y.Z.exe'</pre>
</td>
</tr>
</table>
- <p>Next, edit the <tt class="FILENAME">IJB.wis</tt> file so the
- release number matches in the <tt class="FILENAME">PACKAGEID</tt>
- section:</p>
+ <p>Next, edit the <tt class="FILENAME">IJB.wis</tt> file so the release number matches in the <tt class=
+ "FILENAME">PACKAGEID</tt> section:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z"</pre>
+ <pre class="PROGRAMLISTING"> PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z"</pre>
</td>
</tr>
</table>
</td>
</tr>
</table>
- <p>You will find the WarpIN-installable executable in the <tt class=
- "FILENAME">./files</tt> directory. Upload this anonymously to
- <tt class="FILENAME">uploads.sourceforge.net/incoming</tt>, create a
- release for it, and you're done. Use the release notes and Change Log
- from the source tarball package.</p>
+ <p>You will find the WarpIN-installable executable in the <tt class="FILENAME">./files</tt> directory. Upload
+ this anonymously to <tt class="FILENAME">uploads.sourceforge.net/incoming</tt>, create a release for it, and
+ you're done. Use the release notes and Change Log from the source tarball package.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="NEWRELEASE-SOLARIS" id=
- "NEWRELEASE-SOLARIS">6.3.5. Solaris</a></h3>
+ <h3 class="SECT3"><a name="NEWRELEASE-SOLARIS" id="NEWRELEASE-SOLARIS">6.3.5. Solaris</a></h3>
<p>Login to Sourceforge's compilefarm via ssh:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>Choose the right operating system (not the Debian one). When
- logged in, <span class="emphasis"><i class="EMPHASIS">make sure that
- you have freshly exported the right version into an empty
- directory</i></span>. (See "Building and releasing packages" above).
- Then run:</p>
+ <p>Choose the right operating system (not the Debian one). When logged in, <span class="emphasis"><i class=
+ "EMPHASIS">make sure that you have freshly exported the right version into an empty directory</i></span>. (See
+ "Building and releasing packages" above). Then run:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>which creates a gzip'ed tar archive. Sadly, you cannot use
- <b class="COMMAND">make solaris-upload</b> on the Sourceforge machine
- (no ncftpput). You now have to manually upload the archive to
- Sourceforge's ftp server and release the file publicly. Use the
- release notes and Change Log from the source tarball package.</p>
+ <p>which creates a gzip'ed tar archive. Sadly, you cannot use <b class="COMMAND">make solaris-upload</b> on the
+ Sourceforge machine (no ncftpput). You now have to manually upload the archive to Sourceforge's ftp server and
+ release the file publicly. Use the release notes and Change Log from the source tarball package.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="NEWRELEASE-WINDOWS" id=
- "NEWRELEASE-WINDOWS">6.3.6. Windows</a></h3>
- <p>Use the <a href=
- "http://www.fruitbat.org/Cygwin/index.html#cygwincirca" target=
- "_top">Cygwin Time Machine</a> to install the last 1.5 version of
- Cygwin. Run the following commands from within the Cygwin 1.5 bash
- shell.</p>
- <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that
- you have freshly exported the right version into an empty
- directory</i></span>. (See "Building and releasing packages" above).
- Then get the Windows setup module:</p>
+ <h3 class="SECT3"><a name="NEWRELEASE-WINDOWS" id="NEWRELEASE-WINDOWS">6.3.6. Windows</a></h3>
+ <p>Use the <a href="http://www.fruitbat.org/Cygwin/index.html#cygwincirca" target="_top">Cygwin Time
+ Machine</a> to install the last 1.5 version of Cygwin. Run the following commands from within the Cygwin 1.5
+ bash shell.</p>
+ <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that you have freshly exported the right version
+ into an empty directory</i></span>. (See "Building and releasing packages" above). Then get the Windows setup
+ module:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Then you can build the package. This is fully automated, and is
- controlled by <tt class="FILENAME">winsetup/GNUmakefile</tt>. All you
- need to do is:</p>
+ <p>Then you can build the package. This is fully automated, and is controlled by <tt class=
+ "FILENAME">winsetup/GNUmakefile</tt>. All you need to do is:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Now you can manually rename <tt class=
- "FILENAME">privoxy_setup.exe</tt> to <tt class=
- "FILENAME">privoxy_setup_X_Y_Z.exe</tt>, and upload it to
- SourceForge. When releasing the package on SourceForge, use the
- release notes and Change Log from the source tarball package.</p>
+ <p>Now you can manually rename <tt class="FILENAME">privoxy_setup.exe</tt> to <tt class=
+ "FILENAME">privoxy_setup_X_Y_Z.exe</tt>, and upload it to SourceForge. When releasing the package on
+ SourceForge, use the release notes and Change Log from the source tarball package.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="NEWRELEASE-DEBIAN" id=
- "NEWRELEASE-DEBIAN">6.3.7. Debian</a></h3>
- <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that
- you have freshly exported the right version into an empty
- directory</i></span>. (See "Building and releasing packages" above).
- Then add a log entry to <tt class="FILENAME">debian/changelog</tt>,
- if it is not already there, for example by running:</p>
+ <h3 class="SECT3"><a name="NEWRELEASE-DEBIAN" id="NEWRELEASE-DEBIAN">6.3.7. Debian</a></h3>
+ <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that you have freshly exported the right version
+ into an empty directory</i></span>. (See "Building and releasing packages" above). Then add a log entry to
+ <tt class="FILENAME">debian/changelog</tt>, if it is not already there, for example by running:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- debchange -v 3.0.27-UNRELEASED-1 "New upstream version"</pre>
+ <pre class="PROGRAMLISTING"> debchange -v 3.0.27-UNRELEASED-1 "New upstream version"</pre>
</td>
</tr>
</table>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- dpkg-buildpackage -rfakeroot -us -uc -b</pre>
+ <pre class="PROGRAMLISTING"> dpkg-buildpackage -rfakeroot -us -uc -b</pre>
</td>
</tr>
</table>
- <p>This will create <tt class=
- "FILENAME">../privoxy_3.0.27-UNRELEASED-1_i386.deb</tt> which can be
- uploaded. To upload the package to Sourceforge, simply issue</p>
+ <p>This will create <tt class="FILENAME">../privoxy_3.0.27-UNRELEASED-1_i386.deb</tt> which can be uploaded. To
+ upload the package to Sourceforge, simply issue</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</table>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="NEWRELEASE-MACOSX" id=
- "NEWRELEASE-MACOSX">6.3.8. Mac OS X</a></h3>
- <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that
- you have freshly exported the right version into an empty
- directory</i></span>. (See "Building and releasing packages"
- above).</p>
- <p>There are three modules available in the CVS repository for use on
- Mac OS X, though technically only two of them generate a release (the
- other can be used to install from source).</p>
+ <h3 class="SECT3"><a name="NEWRELEASE-MACOSX" id="NEWRELEASE-MACOSX">6.3.8. Mac OS X</a></h3>
+ <p>First, <span class="emphasis"><i class="EMPHASIS">make sure that you have freshly exported the right version
+ into an empty directory</i></span>. (See "Building and releasing packages" above).</p>
+ <p>There are three modules available in the CVS repository for use on Mac OS X, though technically only two of
+ them generate a release (the other can be used to install from source).</p>
<div class="SECT4">
- <h4 class="SECT4"><a name="OS-X-OSXPACKAGEBUILDER-MODULE" id=
- "OS-X-OSXPACKAGEBUILDER-MODULE">6.3.8.1. OSXPackageBuilder
- module</a></h4>
- <p>The OSXPackageBuilder module generates OS X installer packages
- supporting all Macs running OS X 10.4 and above. Obtain it from CVS
- as follows into a folder parallel to the exported privoxy
- source:</p>
+ <h4 class="SECT4"><a name="OS-X-OSXPACKAGEBUILDER-MODULE" id="OS-X-OSXPACKAGEBUILDER-MODULE">6.3.8.1.
+ OSXPackageBuilder module</a></h4>
+ <p>The OSXPackageBuilder module generates OS X installer packages supporting all Macs running OS X 10.4 and
+ above. Obtain it from CVS as follows into a folder parallel to the exported privoxy source:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>The module contains complete instructions on its usage in the
- file <tt class="FILENAME">OS X Package Builder HOWTO.txt</tt>.</p>
- <p>Once the package(s) have been generated, you can then upload
- them directly to the Files section of the Sourceforge project in
- the Macintosh (OS X) folder. Each new version release of Privoxy
- should have a new subfolder created in which to store its files.
- Please ensure that the folder contains a readme file that makes it
- clear which package is for whichversion of OS X.</p>
+ <p>The module contains complete instructions on its usage in the file <tt class="FILENAME">OS X Package
+ Builder HOWTO.txt</tt>.</p>
+ <p>Once the package(s) have been generated, you can then upload them directly to the Files section of the
+ Sourceforge project in the Macintosh (OS X) folder. Each new version release of Privoxy should have a new
+ subfolder created in which to store its files. Please ensure that the folder contains a readme file that
+ makes it clear which package is for whichversion of OS X.</p>
</div>
<div class="SECT4">
- <h4 class="SECT4"><a name="OS-X-OSXSETUP-MODULE" id=
- "OS-X-OSXSETUP-MODULE">6.3.8.2. osxsetup module
+ <h4 class="SECT4"><a name="OS-X-OSXSETUP-MODULE" id="OS-X-OSXSETUP-MODULE">6.3.8.2. osxsetup module
(DEPRECATED)</a></h4>
- <p><span class="emphasis"><i class="EMPHASIS">This module is
- deprecated since the installer it generates places all Privoxy
- files in one folder in a non-standard location, and supports only
- Intel Macs running OS X 10.6 or higher.</i></span></p>
- <p>Check out the module from CVS as follows into a folder parallel
- to the exported privoxy source:</p>
+ <p><span class="emphasis"><i class="EMPHASIS">This module is deprecated since the installer it generates
+ places all Privoxy files in one folder in a non-standard location, and supports only Intel Macs running OS X
+ 10.6 or higher.</i></span></p>
+ <p>Check out the module from CVS as follows into a folder parallel to the exported privoxy source:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>This will run <tt class="FILENAME">autoheader</tt>, <tt class=
- "FILENAME">autoconf</tt> and <tt class="FILENAME">configure</tt> as
- well as <tt class="FILENAME">make</tt>. Finally, it will copy over
- the necessary files to the ./osxsetup/files directory for further
- processing by <tt class="FILENAME">PackageMaker</tt>.</p>
- <p>Bring up PackageMaker with the PrivoxyPackage.pmsp definition
- file, modify the package name to match the release, and hit the
- "Create package" button. If you specify ./Privoxy.pkg as the output
- package name, you can then create the distributable zip file with
- the command:</p>
+ <p>This will run <tt class="FILENAME">autoheader</tt>, <tt class="FILENAME">autoconf</tt> and <tt class=
+ "FILENAME">configure</tt> as well as <tt class="FILENAME">make</tt>. Finally, it will copy over the necessary
+ files to the ./osxsetup/files directory for further processing by <tt class="FILENAME">PackageMaker</tt>.</p>
+ <p>Bring up PackageMaker with the PrivoxyPackage.pmsp definition file, modify the package name to match the
+ release, and hit the "Create package" button. If you specify ./Privoxy.pkg as the output package name, you
+ can then create the distributable zip file with the command:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg</pre>
+ <pre class="PROGRAMLISTING"> zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg</pre>
</td>
</tr>
</table>
- <p>You can then upload this file directly to the Files section of
- the Sourceforge project in the Macintosh (OS X) folder. Each new
- version release of Privoxy should have a new subfolder created in
- which to store its files. Please ensure that the folder contains a
- readme file that makes it clear which version(s) of OS X the
+ <p>You can then upload this file directly to the Files section of the Sourceforge project in the Macintosh
+ (OS X) folder. Each new version release of Privoxy should have a new subfolder created in which to store its
+ files. Please ensure that the folder contains a readme file that makes it clear which version(s) of OS X the
package supports.</p>
</div>
<div class="SECT4">
- <h4 class="SECT4"><a name="OS-X-MACSETUP-MODULE" id=
- "OS-X-MACSETUP-MODULE">6.3.8.3. macsetup module</a></h4>
- <p>The macsetup module is ideal if you wish to build and install
- Privoxy from source on a single machine.</p>
- <p>Check out the module from CVS as follows into a folder parallel
- to the exported privoxy source:</p>
+ <h4 class="SECT4"><a name="OS-X-MACSETUP-MODULE" id="OS-X-MACSETUP-MODULE">6.3.8.3. macsetup module</a></h4>
+ <p>The macsetup module is ideal if you wish to build and install Privoxy from source on a single machine.</p>
+ <p>Check out the module from CVS as follows into a folder parallel to the exported privoxy source:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>The module contains complete instructions on its usage in its
- <tt class="FILENAME">README</tt> file. The end result will be the
- exported version of Privoxy installed on the build machine.</p>
+ <p>The module contains complete instructions on its usage in its <tt class="FILENAME">README</tt> file. The
+ end result will be the exported version of Privoxy installed on the build machine.</p>
</div>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="NEWRELEASE-FREEBSD" id=
- "NEWRELEASE-FREEBSD">6.3.9. FreeBSD</a></h3>
- <p>Update the www/privoxy port and submit a diff upstream. For
- details see the <a href=
- "https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/"
- target="_top">FreeBSD Porter's Handbook</a>.</p>
+ <h3 class="SECT3"><a name="NEWRELEASE-FREEBSD" id="NEWRELEASE-FREEBSD">6.3.9. FreeBSD</a></h3>
+ <p>Update the www/privoxy port and submit a diff upstream. For details see the <a href=
+ "https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/" target="_top">FreeBSD Porter's
+ Handbook</a>.</p>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="RELEASING" id="RELEASING">6.4. Uploading and
- Releasing Your Package</a></h2>
- <p>After the package is ready, it is time to upload it to SourceForge,
- and go through the release steps. The upload is done via FTP:</p>
+ <h2 class="SECT2"><a name="RELEASING" id="RELEASING">6.4. Uploading and Releasing Your Package</a></h2>
+ <p>After the package is ready, it is time to upload it to SourceForge, and go through the release steps. The
+ upload is done via FTP:</p>
<ul>
<li>
- <p>Upload to: <a href="ftp://upload.sourceforge.net/incoming"
- target="_top">ftp://upload.sourceforge.net/incoming</a></p>
+ <p>Upload to: <a href="ftp://upload.sourceforge.net/incoming" target=
+ "_top">ftp://upload.sourceforge.net/incoming</a></p>
</li>
<li>
<p>user: <tt class="LITERAL">anonymous</tt></p>
</li>
<li>
- <p>password: <tt class=
- "LITERAL">ijbswa-developers@lists.sourceforge.net</tt></p>
+ <p>password: <tt class="LITERAL">ijbswa-developers@lists.sourceforge.net</tt></p>
</li>
</ul>
- <p>Or use the <b class="COMMAND">make</b> targets as described
- above.</p>
- <p>Once this done go to <a href=
- "https://sourceforge.net/project/admin/editpackages.php?group_id=11118"
- target=
- "_top">https://sourceforge.net/project/admin/editpackages.php?group_id=11118</a>,
- making sure you are logged in. Find your target platform in the second
- column, and click <tt class="LITERAL">Add Release</tt>. You will then
- need to create a new release for your package, using the format of
- <tt class="LITERAL">$VERSION ($CODE_STATUS)</tt>, e.g. <span class=
- "emphasis"><i class="EMPHASIS">3.0.27 (beta)</i></span>.</p>
- <p>Now just follow the prompts. Be sure to add any appropriate Release
- notes. You should see your freshly uploaded packages in <span class=
- "QUOTE">"Step 2. Add Files To This Release"</span>. Check the
- appropriate box(es). Remember at each step to hit the <span class=
- "QUOTE">"Refresh/Submit"</span> buttons! You should now see your
- file(s) listed in Step 3. Fill out the forms with the appropriate
- information for your platform, being sure to hit <span class=
- "QUOTE">"Update"</span> for each file. If anyone is monitoring your
- platform, check the <span class="QUOTE">"email"</span> box at the very
- bottom to notify them of the new package. This should do it!</p>
- <p>If you have made errors, or need to make changes, you can go through
- essentially the same steps, but select <tt class="LITERAL">Edit
- Release</tt>, instead of <tt class="LITERAL">Add Release</tt>.</p>
+ <p>Or use the <b class="COMMAND">make</b> targets as described above.</p>
+ <p>Once this done go to <a href="https://sourceforge.net/project/admin/editpackages.php?group_id=11118" target=
+ "_top">https://sourceforge.net/project/admin/editpackages.php?group_id=11118</a>, making sure you are logged in.
+ Find your target platform in the second column, and click <tt class="LITERAL">Add Release</tt>. You will then
+ need to create a new release for your package, using the format of <tt class="LITERAL">$VERSION
+ ($CODE_STATUS)</tt>, e.g. <span class="emphasis"><i class="EMPHASIS">3.0.27 (beta)</i></span>.</p>
+ <p>Now just follow the prompts. Be sure to add any appropriate Release notes. You should see your freshly
+ uploaded packages in <span class="QUOTE">"Step 2. Add Files To This Release"</span>. Check the appropriate
+ box(es). Remember at each step to hit the <span class="QUOTE">"Refresh/Submit"</span> buttons! You should now see
+ your file(s) listed in Step 3. Fill out the forms with the appropriate information for your platform, being sure
+ to hit <span class="QUOTE">"Update"</span> for each file. If anyone is monitoring your platform, check the
+ <span class="QUOTE">"email"</span> box at the very bottom to notify them of the new package. This should do
+ it!</p>
+ <p>If you have made errors, or need to make changes, you can go through essentially the same steps, but select
+ <tt class="LITERAL">Edit Release</tt>, instead of <tt class="LITERAL">Add Release</tt>.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="AFTERRELEASE" id="AFTERRELEASE">6.5. After
- the Release</a></h2>
- <p>When all (or: most of the) packages have been uploaded and made
- available, send an email to the <a href=
- "mailto:privoxy-announce@lists.privoxy.org" target="_top">announce
- mailing list</a>, Subject: "Version X.Y.Z available for download". Be
- sure to include the <a href=
- "https://sourceforge.net/project/showfiles.php?group_id=11118" target=
- "_top">download location</a>, the release notes and the Changelog.
- Also, post an updated News item on the project page Sourceforge, and
- update the Home page and docs linked from the Home page (see below).
- Other news sites and release oriented sites, such as Freshmeat, should
- also be notified.</p>
+ <h2 class="SECT2"><a name="AFTERRELEASE" id="AFTERRELEASE">6.5. After the Release</a></h2>
+ <p>When all (or: most of the) packages have been uploaded and made available, send an email to the <a href=
+ "mailto:privoxy-announce@lists.privoxy.org" target="_top">announce mailing list</a>, Subject: "Version X.Y.Z
+ available for download". Be sure to include the <a href=
+ "https://sourceforge.net/project/showfiles.php?group_id=11118" target="_top">download location</a>, the release
+ notes and the Changelog. Also, post an updated News item on the project page Sourceforge, and update the Home
+ page and docs linked from the Home page (see below). Other news sites and release oriented sites, such as
+ Freshmeat, should also be notified.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="testing.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href=
- "webserver-update.html" accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="testing.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="webserver-update.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Testing Guidelines</td>
<html>
<head>
<title>Testing Guidelines</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy Developer Manual" href="index.html">
<link rel="PREVIOUS" title="Coding Guidelines" href="coding.html">
<link rel="NEXT" title="Releasing a New Version" href="newrelease.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy Developer Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="coding.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="coding.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "newrelease.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="newrelease.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="TESTING" id="TESTING">5. Testing
- Guidelines</a></h1>
+ <h1 class="SECT1"><a name="TESTING" id="TESTING">5. Testing Guidelines</a></h1>
<p>To be filled.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="TESTING-PLAN" id="TESTING-PLAN">5.1.
- Testplan for releases</a></h2>
+ <h2 class="SECT2"><a name="TESTING-PLAN" id="TESTING-PLAN">5.1. Testplan for releases</a></h2>
<p>Explain release numbers. major, minor. developer releases. etc.</p>
<ol type="1">
<li>
<p>Remove any existing rpm with rpm -e</p>
</li>
<li>
- <p>Remove any file that was left over. This includes (but is not
- limited to)</p>
+ <p>Remove any file that was left over. This includes (but is not limited to)</p>
<ul>
<li>
<p>/var/log/privoxy</p>
<p>Install the rpm. Any error messages?</p>
</li>
<li>
- <p>start,stop,status <span class="APPLICATION">Privoxy</span> with
- the specific script (e.g. /etc/rc.d/init/privoxy stop). Reboot your
- machine. Does autostart work?</p>
+ <p>start,stop,status <span class="APPLICATION">Privoxy</span> with the specific script (e.g.
+ /etc/rc.d/init/privoxy stop). Reboot your machine. Does autostart work?</p>
</li>
<li>
- <p>Start browsing. Does <span class="APPLICATION">Privoxy</span>
- work? Logfile written?</p>
+ <p>Start browsing. Does <span class="APPLICATION">Privoxy</span> work? Logfile written?</p>
</li>
<li>
<p>Remove the rpm. Any error messages? All files removed?</p>
</ol>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="FUZZING" id="FUZZING">5.2. Fuzzing
- Privoxy</a></h2>
- <p>To make fuzzing more convenient, Privoxy can be configured with
- --enable-fuzz which will result in the --fuzz option becoming
- available.</p>
+ <h2 class="SECT2"><a name="FUZZING" id="FUZZING">5.2. Fuzzing Privoxy</a></h2>
+ <p>To make fuzzing more convenient, Privoxy can be configured with --enable-fuzz which will result in the --fuzz
+ option becoming available.</p>
<p>Example (tested on ElectroBSD):</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- # Compile Privoxy with instrumentation for afl
+ <pre class="PROGRAMLISTING"># Compile Privoxy with instrumentation for afl
$ export CC=afl-clang
$ export CFLAGS="-fsanitize=address -ggdb"
$ export CPPFLAGS=-I/usr/local/include/
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="coding.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="newrelease.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="coding.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="newrelease.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Coding Guidelines</td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top">Releasing a New
- Version</td>
+ <td width="33%" align="right" valign="top">Releasing a New Version</td>
</tr>
</table>
</div>
<html>
<head>
<title>Update the Webserver</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy Developer Manual" href="index.html">
- <link rel="PREVIOUS" title="Releasing a New Version" href=
- "newrelease.html">
+ <link rel="PREVIOUS" title="Releasing a New Version" href="newrelease.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy Developer Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "newrelease.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="newrelease.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
<td width="10%" align="right" valign="bottom"> </td>
</tr>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="WEBSERVER-UPDATE" id="WEBSERVER-UPDATE">7.
- Update the Webserver</a></h1>
- <p>The webserver should be updated at least with each stable release.
- When updating, please follow these steps to make sure that no broken
- links, inconsistent contents or permission problems will occur (as it has
- many times in the past!):</p>
- <p>If you have changed anything in the stable-branch documentation source
- SGML files, do:</p>
+ <h1 class="SECT1"><a name="WEBSERVER-UPDATE" id="WEBSERVER-UPDATE">7. Update the Webserver</a></h1>
+ <p>The webserver should be updated at least with each stable release. When updating, please follow these steps to
+ make sure that no broken links, inconsistent contents or permission problems will occur (as it has many times in
+ the past!):</p>
+ <p>If you have changed anything in the stable-branch documentation source SGML files, do:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>That will generate <tt class=
- "FILENAME">doc/webserver/user-manual</tt>, <tt class=
- "FILENAME">doc/webserver/developer-manual</tt>, <tt class=
- "FILENAME">doc/webserver/faq</tt>, <tt class=
+ <p>That will generate <tt class="FILENAME">doc/webserver/user-manual</tt>, <tt class=
+ "FILENAME">doc/webserver/developer-manual</tt>, <tt class="FILENAME">doc/webserver/faq</tt>, <tt class=
"FILENAME">doc/webserver/index.html</tt> automatically.</p>
<p>If you changed the manual page sources, generate <tt class=
- "FILENAME">doc/webserver/man-page/privoxy-man-page.html</tt> by running
- <span class="QUOTE">"<b class="COMMAND">make man</b>"</span>. (This is a
- separate target due to dependencies on some obscure perl scripts [now in
- CVS, but not well tested]. See comments in <tt class=
- "FILENAME">GNUmakefile</tt>.)</p>
- <p>If you want to add new files to the webserver, create them locally in
- the <tt class="FILENAME">doc/webserver/*</tt> directory (or create new
- directories under <tt class="FILENAME">doc/webserver</tt>).</p>
- <p>Next, commit any changes from the above steps to CVS. All set? If
- these are docs in the stable branch, then do:</p>
+ "FILENAME">doc/webserver/man-page/privoxy-man-page.html</tt> by running <span class="QUOTE">"<b class=
+ "COMMAND">make man</b>"</span>. (This is a separate target due to dependencies on some obscure perl scripts [now in
+ CVS, but not well tested]. See comments in <tt class="FILENAME">GNUmakefile</tt>.)</p>
+ <p>If you want to add new files to the webserver, create them locally in the <tt class=
+ "FILENAME">doc/webserver/*</tt> directory (or create new directories under <tt class=
+ "FILENAME">doc/webserver</tt>).</p>
+ <p>Next, commit any changes from the above steps to CVS. All set? If these are docs in the stable branch, then
+ do:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>This will do the upload to <a href="https://www.privoxy.org/" target=
- "_top">the webserver</a> (www.privoxy.org) and ensure all files and
- directories there are group writable.</p>
- <p>Please do <span class="emphasis"><i class="EMPHASIS">NOT</i></span>
- use any other means of transferring files to the webserver to avoid
- permission problems. Also, please do not upload docs from development
- branches or versions. The publicly posted docs should be in sync with the
- last official release.</p>
+ <p>This will do the upload to <a href="https://www.privoxy.org/" target="_top">the webserver</a> (www.privoxy.org)
+ and ensure all files and directories there are group writable.</p>
+ <p>Please do <span class="emphasis"><i class="EMPHASIS">NOT</i></span> use any other means of transferring files to
+ the webserver to avoid permission problems. Also, please do not upload docs from development branches or versions.
+ The publicly posted docs should be in sync with the last official release.</p>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="newrelease.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
+ <td width="33%" align="left" valign="top"><a href="newrelease.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
<td width="33%" align="right" valign="top"> </td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">Releasing a New
- Version</td>
+ <td width="33%" align="left" valign="top">Releasing a New Version</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top"> </td>
</tr>
<html>
<head>
<title>Configuration</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy Frequently Asked Questions" href=
- "index.html">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
+ <link rel="HOME" title="Privoxy Frequently Asked Questions" href="index.html">
<link rel="PREVIOUS" title="Installation" href="installation.html">
<link rel="NEXT" title="Miscellaneous" href="misc.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy Frequently Asked
- Questions</th>
+ <th colspan="3" align="center">Privoxy Frequently Asked Questions</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "installation.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="installation.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="misc.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="misc.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="CONFIGURATION" id="CONFIGURATION">3.
- Configuration</a></h1>
+ <h1 class="SECT1"><a name="CONFIGURATION" id="CONFIGURATION">3. Configuration</a></h1>
<div class="SECT2">
- <h3 class="SECT2"><a name="ACTIONSFILE" id="ACTIONSFILE">3.1. What
- exactly is an <span class="QUOTE">"actions"</span> file?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> utilizes the concept of
- <span class="QUOTE">" <a href=
- "../user-manual/actions-file.html#ACTIONS" target=
- "_top">actions</a>"</span> that are used to manipulate and control web
- page data. <a href="../user-manual/actions-file.html" target=
- "_top">Actions files</a> are where these <a href=
- "../user-manual/actions-file.html#ACTIONS" target="_top">actions</a>
- that <span class="APPLICATION">Privoxy</span> could take while
- processing a certain request, are configured. Typically, you would
- define a set of default actions that apply globally to all URLs, then
- add exceptions to these defaults where needed. There is a wide array of
- actions available that give the user a high degree of control and
- flexibility on how to process each and every web page.</p>
- <p>Actions can be defined on a <a href=
- "../user-manual/actions-file.html#AF-PATTERNS" target="_top">URL
- pattern</a> basis, i.e. for single URLs, whole web sites, groups or
- parts thereof etc. Actions can also be grouped together and then
- applied to requests matching one or more patterns. There are many
- possible actions that might apply to any given site. As an example, if
- you are blocking <a href="http://en.wikipedia.org/wiki/Browser_cookie"
- target="_top">cookies</a> as one of your default actions, but need to
- accept cookies from a given site, you would need to define an exception
- for this site in one of your actions files, preferably in <tt class=
- "FILENAME">user.action</tt>.</p>
+ <h3 class="SECT2"><a name="ACTIONSFILE" id="ACTIONSFILE">3.1. What exactly is an <span class=
+ "QUOTE">"actions"</span> file?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> utilizes the concept of <span class="QUOTE">" <a href=
+ "../user-manual/actions-file.html#ACTIONS" target="_top">actions</a>"</span> that are used to manipulate and
+ control web page data. <a href="../user-manual/actions-file.html" target="_top">Actions files</a> are where these
+ <a href="../user-manual/actions-file.html#ACTIONS" target="_top">actions</a> that <span class=
+ "APPLICATION">Privoxy</span> could take while processing a certain request, are configured. Typically, you would
+ define a set of default actions that apply globally to all URLs, then add exceptions to these defaults where
+ needed. There is a wide array of actions available that give the user a high degree of control and flexibility on
+ how to process each and every web page.</p>
+ <p>Actions can be defined on a <a href="../user-manual/actions-file.html#AF-PATTERNS" target="_top">URL
+ pattern</a> basis, i.e. for single URLs, whole web sites, groups or parts thereof etc. Actions can also be
+ grouped together and then applied to requests matching one or more patterns. There are many possible actions that
+ might apply to any given site. As an example, if you are blocking <a href=
+ "http://en.wikipedia.org/wiki/Browser_cookie" target="_top">cookies</a> as one of your default actions, but need
+ to accept cookies from a given site, you would need to define an exception for this site in one of your actions
+ files, preferably in <tt class="FILENAME">user.action</tt>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="ACTIONSS" id="ACTIONSS">3.2. The
- <span class="QUOTE">"actions"</span> concept confuses me. Please list
- some of these <span class="QUOTE">"actions"</span>.</a></h3>
- <p>For a comprehensive discussion of the actions concept, please refer
- to the <a href="../user-manual/actions-file.html" target="_top">actions
- file chapter</a> in the <a href="../user-manual/index.html" target=
- "_top">User Manual</a>. It includes a <a href=
- "../user-manual/actions-file.html#ACTIONS" target="_top">list of all
- actions</a> and an <a href=
- "../user-manual/actions-file.html#ACT-EXAMPLES" target="_top">actions
- file tutorial</a> to get you started.</p>
+ <h3 class="SECT2"><a name="ACTIONSS" id="ACTIONSS">3.2. The <span class="QUOTE">"actions"</span> concept confuses
+ me. Please list some of these <span class="QUOTE">"actions"</span>.</a></h3>
+ <p>For a comprehensive discussion of the actions concept, please refer to the <a href=
+ "../user-manual/actions-file.html" target="_top">actions file chapter</a> in the <a href=
+ "../user-manual/index.html" target="_top">User Manual</a>. It includes a <a href=
+ "../user-manual/actions-file.html#ACTIONS" target="_top">list of all actions</a> and an <a href=
+ "../user-manual/actions-file.html#ACT-EXAMPLES" target="_top">actions file tutorial</a> to get you started.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="ACTCONFIG" id="ACTCONFIG">3.3. How are
- actions files configured? What is the easiest way to do this?</a></h3>
- <p>Actions files are just text files in a special syntax and can be
- edited with a text editor. But probably the easiest way is to access
- <span class="APPLICATION">Privoxy</span>'s user interface with your web
- browser at <a href="http://config.privoxy.org/" target=
- "_top">http://config.privoxy.org/</a> (Shortcut: <a href="http://p.p/"
- target="_top">http://p.p/</a>) and then select <span class=
- "QUOTE">"<a href="http://config.privoxy.org/show-status" target=
- "_top">View & change the current configuration</a>"</span> from the
- menu. Note that this feature must be explicitly enabled in the main
- config file (see <a href=
- "../user-manual/config.html#ENABLE-EDIT-ACTIONS" target=
- "_top">enable-edit-actions</a>).</p>
+ <h3 class="SECT2"><a name="ACTCONFIG" id="ACTCONFIG">3.3. How are actions files configured? What is the easiest
+ way to do this?</a></h3>
+ <p>Actions files are just text files in a special syntax and can be edited with a text editor. But probably the
+ easiest way is to access <span class="APPLICATION">Privoxy</span>'s user interface with your web browser at
+ <a href="http://config.privoxy.org/" target="_top">http://config.privoxy.org/</a> (Shortcut: <a href=
+ "http://p.p/" target="_top">http://p.p/</a>) and then select <span class="QUOTE">"<a href=
+ "http://config.privoxy.org/show-status" target="_top">View & change the current configuration</a>"</span>
+ from the menu. Note that this feature must be explicitly enabled in the main config file (see <a href=
+ "../user-manual/config.html#ENABLE-EDIT-ACTIONS" target="_top">enable-edit-actions</a>).</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="AEN420" id="AEN420">3.4. There are several
- different <span class="QUOTE">"actions"</span> files. What are the
- differences?</a></h3>
- <p>Please have a look at the <a href="../user-manual/actions-file.html"
- target="_top">the actions chapter</a> in the <a href=
- "../user-manual/index.html" target="_top">User Manual</a> for a
- detailed explanation.</p>
+ <h3 class="SECT2"><a name="AEN420" id="AEN420">3.4. There are several different <span class=
+ "QUOTE">"actions"</span> files. What are the differences?</a></h3>
+ <p>Please have a look at the <a href="../user-manual/actions-file.html" target="_top">the actions chapter</a> in
+ the <a href="../user-manual/index.html" target="_top">User Manual</a> for a detailed explanation.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="GETUPDATES" id="GETUPDATES">3.5. Where can I
- get updated Actions Files?</a></h3>
- <p>Based on your feedback and the continuing development, updates of
- <tt class="FILENAME">default.action</tt> will be made available from
- time to time on the <a href=
- "https://sourceforge.net/project/showfiles.php?group_id=11118" target=
- "_top">files section</a> of our <a href=
- "https://sourceforge.net/projects/ijbswa/" target="_top">project
- page</a>.</p>
- <p>If you wish to receive an email notification whenever we release
- updates of <span class="APPLICATION">Privoxy</span> or the actions
- file, <a href=
- "https://lists.privoxy.org/mailman/listinfo/privoxy-announce" target=
- "_top">subscribe to our announce mailing list</a>,
- privoxy-announce@lists.privoxy.org.</p>
+ <h3 class="SECT2"><a name="GETUPDATES" id="GETUPDATES">3.5. Where can I get updated Actions Files?</a></h3>
+ <p>Based on your feedback and the continuing development, updates of <tt class="FILENAME">default.action</tt>
+ will be made available from time to time on the <a href=
+ "https://sourceforge.net/project/showfiles.php?group_id=11118" target="_top">files section</a> of our <a href=
+ "https://sourceforge.net/projects/ijbswa/" target="_top">project page</a>.</p>
+ <p>If you wish to receive an email notification whenever we release updates of <span class=
+ "APPLICATION">Privoxy</span> or the actions file, <a href=
+ "https://lists.privoxy.org/mailman/listinfo/privoxy-announce" target="_top">subscribe to our announce mailing
+ list</a>, privoxy-announce@lists.privoxy.org.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="NEWCONFIG" id="NEWCONFIG">3.6. Can I use my
- old config files?</a></h3>
- <p>The syntax and purpose of configuration files has remained roughly
- the same throughout the 3.x series, but backwards compatibility is not
- guaranteed. Also each release contains updated, <span class=
- "QUOTE">"improved"</span> versions and it is therefore strongly
- recommended to install the newer configuration files and merge back
- your modifications.</p>
+ <h3 class="SECT2"><a name="NEWCONFIG" id="NEWCONFIG">3.6. Can I use my old config files?</a></h3>
+ <p>The syntax and purpose of configuration files has remained roughly the same throughout the 3.x series, but
+ backwards compatibility is not guaranteed. Also each release contains updated, <span class=
+ "QUOTE">"improved"</span> versions and it is therefore strongly recommended to install the newer configuration
+ files and merge back your modifications.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="DIFFICULT" id="DIFFICULT">3.7. Why is the
- configuration so complicated?</a></h3>
- <p><span class="QUOTE">"Complicated"</span> is in the eye of the
- beholder.</p>
- <p>Privoxy is currently mainly written by and for people who are
- already familiar with the underlying concepts like regular expressions,
- HTTP and HTML, or are willing to become familiar with them to be able
- to get the most out of a powerful and flexible tool such as
- Privoxy.</p>
- <p>While everybody is expected to be able to get a Privoxy default
- installation up and running, fine-tuning requires a certain amount of
- background information and Privoxy's documentation mainly concentrates
- on the Privoxy-specific parts while only providing references to the
- rest.</p>
- <p>If you or anyone you know has the skills, time and energy to reduce
- the barrier of entry, please <a href="general.html#PARTICIPATE">get
- involved</a>.</p>
+ <h3 class="SECT2"><a name="DIFFICULT" id="DIFFICULT">3.7. Why is the configuration so complicated?</a></h3>
+ <p><span class="QUOTE">"Complicated"</span> is in the eye of the beholder.</p>
+ <p>Privoxy is currently mainly written by and for people who are already familiar with the underlying concepts
+ like regular expressions, HTTP and HTML, or are willing to become familiar with them to be able to get the most
+ out of a powerful and flexible tool such as Privoxy.</p>
+ <p>While everybody is expected to be able to get a Privoxy default installation up and running, fine-tuning
+ requires a certain amount of background information and Privoxy's documentation mainly concentrates on the
+ Privoxy-specific parts while only providing references to the rest.</p>
+ <p>If you or anyone you know has the skills, time and energy to reduce the barrier of entry, please <a href=
+ "general.html#PARTICIPATE">get involved</a>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="YAHOO" id="YAHOO">3.8. How can I make my
- Yahoo/Hotmail/Gmail account work?</a></h3>
- <p>The default configuration shouldn't impact the usability of any of
- these services. It may, however, make all <a href=
- "http://en.wikipedia.org/wiki/Browser_cookie" target="_top">cookies</a>
- temporary, so that your browser will forget your login credentials in
- between browser sessions. If you would like not to have to log in
- manually each time you access those websites, simply turn off all
- cookie handling for them in the <tt class="FILENAME">user.action</tt>
- file. An example for yahoo might look like:</p>
+ <h3 class="SECT2"><a name="YAHOO" id="YAHOO">3.8. How can I make my Yahoo/Hotmail/Gmail account work?</a></h3>
+ <p>The default configuration shouldn't impact the usability of any of these services. It may, however, make all
+ <a href="http://en.wikipedia.org/wiki/Browser_cookie" target="_top">cookies</a> temporary, so that your browser
+ will forget your login credentials in between browser sessions. If you would like not to have to log in manually
+ each time you access those websites, simply turn off all cookie handling for them in the <tt class=
+ "FILENAME">user.action</tt> file. An example for yahoo might look like:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
<pre class="SCREEN"># Allow all cookies for Yahoo login:
#
{ -<a href="../user-manual/actions-file.html#CRUNCH-INCOMING-COOKIES" target=
-"_top">crunch-incoming-cookies</a> -<a href=
-"../user-manual/actions-file.html#CRUNCH-OUTGOING-COOKIES" target=
-"_top">crunch-outgoing-cookies</a> -<a href=
-"../user-manual/actions-file.html#SESSION-COOKIES-ONLY" target=
+"_top">crunch-incoming-cookies</a> -<a href="../user-manual/actions-file.html#CRUNCH-OUTGOING-COOKIES" target=
+"_top">crunch-outgoing-cookies</a> -<a href="../user-manual/actions-file.html#SESSION-COOKIES-ONLY" target=
"_top">session-cookies-only</a> }
.login.yahoo.com</pre>
</td>
</tr>
</table>
- <p>These kinds of sites are often quite complex and heavy with <a href=
- "http://en.wikipedia.org/wiki/Javascript" target="_top">Javascript</a>
- and thus <span class="QUOTE">"fragile"</span>. So if <span class=
- "emphasis"><i class="EMPHASIS">still</i></span> a problem, we have an
- <a href="../user-manual/actions-file.html#ALIASES" target=
- "_top">alias</a> just for such sticky situations:</p>
+ <p>These kinds of sites are often quite complex and heavy with <a href="http://en.wikipedia.org/wiki/Javascript"
+ target="_top">Javascript</a> and thus <span class="QUOTE">"fragile"</span>. So if <span class=
+ "emphasis"><i class="EMPHASIS">still</i></span> a problem, we have an <a href=
+ "../user-manual/actions-file.html#ALIASES" target="_top">alias</a> just for such sticky situations:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Be sure to flush your browser's caches whenever making these kinds
- of changes, just to make sure the changes <span class=
- "QUOTE">"take"</span>.</p>
- <p>Make sure the domain, host and path are appropriate as well. Your
- browser can tell you where you are specifically and you should use that
- information for your configuration settings. Note that above it is not
- referenced as <tt class="LITERAL">gmail.com</tt>, which is a valid
- domain name.</p>
+ <p>Be sure to flush your browser's caches whenever making these kinds of changes, just to make sure the changes
+ <span class="QUOTE">"take"</span>.</p>
+ <p>Make sure the domain, host and path are appropriate as well. Your browser can tell you where you are
+ specifically and you should use that information for your configuration settings. Note that above it is not
+ referenced as <tt class="LITERAL">gmail.com</tt>, which is a valid domain name.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="CONFIGFILES" id="CONFIGFILES">3.9. What's
- the difference between the <span class="QUOTE">"Cautious"</span>,
- <span class="QUOTE">"Medium"</span> and <span class=
- "QUOTE">"Advanced"</span> defaults?</a></h3>
- <p>Configuring <span class="APPLICATION">Privoxy</span> is not entirely
- trivial. To help you get started, we provide you with three different
- default action <span class="QUOTE">"profiles"</span> in the web based
- actions file editor at <a href="http://config.privoxy.org/show-status"
- target="_top">http://config.privoxy.org/show-status</a>. See the
- <a href="../user-manual/actions-file.html" target="_top"><i class=
- "CITETITLE">User Manual</i></a> for a list of actions, and how the
- default profiles are set.</p>
- <p>Where the defaults are likely to break some sites, exceptions for
- known popular <span class="QUOTE">"problem"</span> sites are included,
- but in general, the more aggressive your default settings are, the more
- exceptions you will have to make later. New users are best to start off
- in <span class="QUOTE">"Cautious"</span> setting. This is safest and
- will have the fewest problems. See the <a href=
- "../user-manual/index.html" target="_top"><i class="CITETITLE">User
- Manual</i></a> for a more detailed discussion.</p>
- <p>It should be noted that the <span class="QUOTE">"Advanced"</span>
- profile (formerly known as the <span class=
- "QUOTE">"Adventuresome"</span> profile) is more aggressive, and will
- make use of some of <span class="APPLICATION">Privoxy's</span> advanced
- features. Use at your own risk!</p>
+ <h3 class="SECT2"><a name="CONFIGFILES" id="CONFIGFILES">3.9. What's the difference between the <span class=
+ "QUOTE">"Cautious"</span>, <span class="QUOTE">"Medium"</span> and <span class="QUOTE">"Advanced"</span>
+ defaults?</a></h3>
+ <p>Configuring <span class="APPLICATION">Privoxy</span> is not entirely trivial. To help you get started, we
+ provide you with three different default action <span class="QUOTE">"profiles"</span> in the web based actions
+ file editor at <a href="http://config.privoxy.org/show-status" target=
+ "_top">http://config.privoxy.org/show-status</a>. See the <a href="../user-manual/actions-file.html" target=
+ "_top"><i class="CITETITLE">User Manual</i></a> for a list of actions, and how the default profiles are set.</p>
+ <p>Where the defaults are likely to break some sites, exceptions for known popular <span class=
+ "QUOTE">"problem"</span> sites are included, but in general, the more aggressive your default settings are, the
+ more exceptions you will have to make later. New users are best to start off in <span class=
+ "QUOTE">"Cautious"</span> setting. This is safest and will have the fewest problems. See the <a href=
+ "../user-manual/index.html" target="_top"><i class="CITETITLE">User Manual</i></a> for a more detailed
+ discussion.</p>
+ <p>It should be noted that the <span class="QUOTE">"Advanced"</span> profile (formerly known as the <span class=
+ "QUOTE">"Adventuresome"</span> profile) is more aggressive, and will make use of some of <span class=
+ "APPLICATION">Privoxy's</span> advanced features. Use at your own risk!</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="BROWSECONFIG" id="BROWSECONFIG">3.10. Why
- can I change the configuration with a browser? Does that not raise
- security issues?</a></h3>
- <p>It may seem strange that regular users can edit the config files
- with their browsers, although the whole <tt class=
- "FILENAME">/etc/privoxy</tt> hierarchy belongs to the user <span class=
- "QUOTE">"privoxy"</span>, with only 644 permissions.</p>
- <p>When you use the browser-based editor, <span class=
- "APPLICATION">Privoxy</span> itself is writing to the config files.
- Because <span class="APPLICATION">Privoxy</span> is running as the user
- <span class="QUOTE">"privoxy"</span>, it can update its own config
- files.</p>
- <p>If you run <span class="APPLICATION">Privoxy</span> for multiple
- untrusted users (e.g. in a LAN) or aren't entirely in control of your
- own browser, you will probably want to make sure that the web-based
- editor and remote toggle features are <span class="QUOTE">"off"</span>
- by setting <span class="QUOTE">"<tt class="LITERAL"><a href=
- "../user-manual/config.html#ENABLE-EDIT-ACTIONS" target=
- "_top">enable-edit-actions</a> 0</tt>"</span> and <span class=
- "QUOTE">"<tt class="LITERAL"><a href=
- "../user-manual/config.html#ENABLE-REMOTE-TOGGLE" target=
- "_top">enable-remote-toggle</a> 0</tt>"</span> in the <a href=
- "../user-manual/config.html" target="_top">main configuration
- file</a>.</p>
- <p>As of <span class="APPLICATION">Privoxy</span> 3.0.7 these options
- are disabled by default.</p>
+ <h3 class="SECT2"><a name="BROWSECONFIG" id="BROWSECONFIG">3.10. Why can I change the configuration with a
+ browser? Does that not raise security issues?</a></h3>
+ <p>It may seem strange that regular users can edit the config files with their browsers, although the whole
+ <tt class="FILENAME">/etc/privoxy</tt> hierarchy belongs to the user <span class="QUOTE">"privoxy"</span>, with
+ only 644 permissions.</p>
+ <p>When you use the browser-based editor, <span class="APPLICATION">Privoxy</span> itself is writing to the
+ config files. Because <span class="APPLICATION">Privoxy</span> is running as the user <span class=
+ "QUOTE">"privoxy"</span>, it can update its own config files.</p>
+ <p>If you run <span class="APPLICATION">Privoxy</span> for multiple untrusted users (e.g. in a LAN) or aren't
+ entirely in control of your own browser, you will probably want to make sure that the web-based editor and remote
+ toggle features are <span class="QUOTE">"off"</span> by setting <span class="QUOTE">"<tt class="LITERAL"><a href=
+ "../user-manual/config.html#ENABLE-EDIT-ACTIONS" target="_top">enable-edit-actions</a> 0</tt>"</span> and
+ <span class="QUOTE">"<tt class="LITERAL"><a href="../user-manual/config.html#ENABLE-REMOTE-TOGGLE" target=
+ "_top">enable-remote-toggle</a> 0</tt>"</span> in the <a href="../user-manual/config.html" target="_top">main
+ configuration file</a>.</p>
+ <p>As of <span class="APPLICATION">Privoxy</span> 3.0.7 these options are disabled by default.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="FILTERFILE" id="FILTERFILE">3.11. What is
- the <tt class="FILENAME">default.filter</tt> file? What is a
- <span class="QUOTE">"filter"</span>?</a></h3>
- <p>The <a href="../user-manual/filter-file.html" target=
- "_top"><tt class="FILENAME">default.filter</tt></a> file is where
- <span class="emphasis"><i class="EMPHASIS">filters</i></span> as
- supplied by the developers are defined. Filters are a special subset of
- actions that can be used to modify or remove web page content or
- headers on the fly. Content filters can be applied to <span class=
- "emphasis"><i class="EMPHASIS">anything</i></span> in the page source,
- header filters can be applied to either server or client headers.
- Regular expressions are used to accomplish this.</p>
- <p>There are a number of pre-defined filters to deal with common
- annoyances. The filters are only defined here, to invoke them, you need
- to use the <a href="../user-manual/actions-file.html#FILTER" target=
- "_top"><tt class="LITERAL">filter</tt> action</a> in one of the actions
- files. Content filtering is automatically disabled for inappropriate
- MIME types, but if you know better than Privoxy what should or should
- not be filtered you can filter any content you like.</p>
- <p>Filters should <span class="emphasis"><i class=
- "EMPHASIS">not</i></span> be confused with <a href=
- "../user-manual/actions-file.html#BLOCK" target="_top"><tt class=
- "LITERAL">blocks</tt></a>, which is a completely different action, and
- is more typically used to block ads and unwanted sites.</p>
- <p>If you are familiar with regular expressions, and HTML, you can look
- at the provided <tt class="FILENAME">default.filter</tt> with a text
- editor and define your own filters. This is potentially a very powerful
- feature, but requires some expertise in both regular expressions and
- HTML/HTTP. You should place any modifications to the default filters,
- or any new ones you create in a separate file, such as <tt class=
- "FILENAME">user.filter</tt>, so they won't be overwritten during
- upgrades. The ability to define multiple filter files in <tt class=
- "FILENAME">config</tt> is a new feature as of v. 3.0.5.</p>
- <p>There is no GUI editor option for this part of the configuration,
- but you can disable/enable the various pre-defined filters of the
- included <tt class="FILENAME">default.filter</tt> file with the
- <a href="http://config.privoxy.org/show-status" target="_top">web-based
- actions file editor</a>. Note that the custom actions editor must be
- explicitly enabled in the main config file (see <a href=
- "../user-manual/config.html#ENABLE-EDIT-ACTIONS" target=
- "_top">enable-edit-actions</a>).</p>
- <p>If you intend to develop your own filters, you might want to have a
- look at <a href="https://www.fabiankeil.de/sourcecode/pft/" target=
- "_top">Privoxy-Filter-Test</a>.</p>
+ <h3 class="SECT2"><a name="FILTERFILE" id="FILTERFILE">3.11. What is the <tt class="FILENAME">default.filter</tt>
+ file? What is a <span class="QUOTE">"filter"</span>?</a></h3>
+ <p>The <a href="../user-manual/filter-file.html" target="_top"><tt class="FILENAME">default.filter</tt></a> file
+ is where <span class="emphasis"><i class="EMPHASIS">filters</i></span> as supplied by the developers are defined.
+ Filters are a special subset of actions that can be used to modify or remove web page content or headers on the
+ fly. Content filters can be applied to <span class="emphasis"><i class="EMPHASIS">anything</i></span> in the page
+ source, header filters can be applied to either server or client headers. Regular expressions are used to
+ accomplish this.</p>
+ <p>There are a number of pre-defined filters to deal with common annoyances. The filters are only defined here,
+ to invoke them, you need to use the <a href="../user-manual/actions-file.html#FILTER" target="_top"><tt class=
+ "LITERAL">filter</tt> action</a> in one of the actions files. Content filtering is automatically disabled for
+ inappropriate MIME types, but if you know better than Privoxy what should or should not be filtered you can
+ filter any content you like.</p>
+ <p>Filters should <span class="emphasis"><i class="EMPHASIS">not</i></span> be confused with <a href=
+ "../user-manual/actions-file.html#BLOCK" target="_top"><tt class="LITERAL">blocks</tt></a>, which is a completely
+ different action, and is more typically used to block ads and unwanted sites.</p>
+ <p>If you are familiar with regular expressions, and HTML, you can look at the provided <tt class=
+ "FILENAME">default.filter</tt> with a text editor and define your own filters. This is potentially a very
+ powerful feature, but requires some expertise in both regular expressions and HTML/HTTP. You should place any
+ modifications to the default filters, or any new ones you create in a separate file, such as <tt class=
+ "FILENAME">user.filter</tt>, so they won't be overwritten during upgrades. The ability to define multiple filter
+ files in <tt class="FILENAME">config</tt> is a new feature as of v. 3.0.5.</p>
+ <p>There is no GUI editor option for this part of the configuration, but you can disable/enable the various
+ pre-defined filters of the included <tt class="FILENAME">default.filter</tt> file with the <a href=
+ "http://config.privoxy.org/show-status" target="_top">web-based actions file editor</a>. Note that the custom
+ actions editor must be explicitly enabled in the main config file (see <a href=
+ "../user-manual/config.html#ENABLE-EDIT-ACTIONS" target="_top">enable-edit-actions</a>).</p>
+ <p>If you intend to develop your own filters, you might want to have a look at <a href=
+ "https://www.fabiankeil.de/sourcecode/pft/" target="_top">Privoxy-Filter-Test</a>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="LANCONFIG" id="LANCONFIG">3.12. How can I
- set up Privoxy to act as a proxy for my LAN?</a></h3>
- <p>By default, <span class="APPLICATION">Privoxy</span> only responds
- to requests from <tt class="LITERAL">127.0.0.1</tt> (localhost). To
- have it act as a server for a network, this needs to be changed in the
- <a href="../user-manual/config.html" target="_top">main configuration
- file</a>. Look for the <tt class="LITERAL"><a href=
- "../user-manual/config.html#LISTEN-ADDRESS" target=
- "_top">listen-address</a></tt> option, which may be commented out with
- a <span class="QUOTE">"#"</span> symbol. Make sure it is uncommented,
- and assign it the address of the LAN gateway interface, and port number
- to use. Assuming your LAN address is 192.168.1.1 and you wish to run
- <span class="APPLICATION">Privoxy</span> on port 8118, this line should
- look like:</p>
+ <h3 class="SECT2"><a name="LANCONFIG" id="LANCONFIG">3.12. How can I set up Privoxy to act as a proxy for my
+ LAN?</a></h3>
+ <p>By default, <span class="APPLICATION">Privoxy</span> only responds to requests from <tt class=
+ "LITERAL">127.0.0.1</tt> (localhost). To have it act as a server for a network, this needs to be changed in the
+ <a href="../user-manual/config.html" target="_top">main configuration file</a>. Look for the <tt class=
+ "LITERAL"><a href="../user-manual/config.html#LISTEN-ADDRESS" target="_top">listen-address</a></tt> option, which
+ may be commented out with a <span class="QUOTE">"#"</span> symbol. Make sure it is uncommented, and assign it the
+ address of the LAN gateway interface, and port number to use. Assuming your LAN address is 192.168.1.1 and you
+ wish to run <span class="APPLICATION">Privoxy</span> on port 8118, this line should look like:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Save the file, and restart <span class="APPLICATION">Privoxy</span>.
- Configure all browsers on the network then to use this address and port
- number.</p>
- <p>Alternately, you can have <span class="APPLICATION">Privoxy</span>
- listen on all available interfaces:</p>
+ <p>Save the file, and restart <span class="APPLICATION">Privoxy</span>. Configure all browsers on the network
+ then to use this address and port number.</p>
+ <p>Alternately, you can have <span class="APPLICATION">Privoxy</span> listen on all available interfaces:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>And then use <span class="APPLICATION">Privoxy's</span> <a href=
- "../user-manual/config.html#PERMIT-ACCESS" target=
- "_top">permit-access</a> feature to limit connections. A firewall in
- this situation is recommended as well.</p>
- <p>The above steps should be the same for any TCP network, regardless
- of operating system.</p>
- <p>If you run <span class="APPLICATION">Privoxy</span> on a LAN with
- untrusted users, we recommend that you double-check the <a href=
- "../user-manual/config.html#ACCESS-CONTROL" target="_top">access
- control and security</a> options!</p>
+ <p>And then use <span class="APPLICATION">Privoxy's</span> <a href="../user-manual/config.html#PERMIT-ACCESS"
+ target="_top">permit-access</a> feature to limit connections. A firewall in this situation is recommended as
+ well.</p>
+ <p>The above steps should be the same for any TCP network, regardless of operating system.</p>
+ <p>If you run <span class="APPLICATION">Privoxy</span> on a LAN with untrusted users, we recommend that you
+ double-check the <a href="../user-manual/config.html#ACCESS-CONTROL" target="_top">access control and
+ security</a> options!</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="NOSEEUM" id="NOSEEUM">3.13. Instead of ads,
- now I get a checkerboard pattern. I don't want to see
- anything.</a></h3>
- <p>The replacement for blocked images can be controlled with the
- <a href="../user-manual/actions-file.html#SET-IMAGE-BLOCKER" target=
- "_top"><tt class="LITERAL">set-image-blocker</tt> action</a>. You have
- the choice of a checkerboard pattern, a transparent 1x1 GIF image (aka
- <span class="QUOTE">"blank"</span>), or a redirect to a custom image of
- your choice. Note that this choice only has effect for images which are
- blocked as images, i.e. whose URLs match both a <tt class=
- "LITERAL"><a href="../user-manual/actions-file.html#HANDLE-AS-IMAGE"
- target="_top">handle-as-image</a></tt> <span class="emphasis"><i class=
- "EMPHASIS">and</i></span> <tt class="LITERAL"><a href=
- "../user-manual/actions-file.html#BLOCK" target="_top">block</a></tt>
- action.</p>
- <p>If you want to see nothing, then change the <a href=
- "../user-manual/actions-file.html#SET-IMAGE-BLOCKER" target=
- "_top"><tt class="LITERAL">set-image-blocker</tt> action</a> to
- <span class="QUOTE">"blank"</span>. This can be done by editing the
- <tt class="FILENAME">user.action</tt> file, or through the <a href=
- "http://config.privoxy.org/show-status" target="_top">web-based actions
- file editor</a>.</p>
+ <h3 class="SECT2"><a name="NOSEEUM" id="NOSEEUM">3.13. Instead of ads, now I get a checkerboard pattern. I don't
+ want to see anything.</a></h3>
+ <p>The replacement for blocked images can be controlled with the <a href=
+ "../user-manual/actions-file.html#SET-IMAGE-BLOCKER" target="_top"><tt class="LITERAL">set-image-blocker</tt>
+ action</a>. You have the choice of a checkerboard pattern, a transparent 1x1 GIF image (aka <span class=
+ "QUOTE">"blank"</span>), or a redirect to a custom image of your choice. Note that this choice only has effect
+ for images which are blocked as images, i.e. whose URLs match both a <tt class="LITERAL"><a href=
+ "../user-manual/actions-file.html#HANDLE-AS-IMAGE" target="_top">handle-as-image</a></tt> <span class=
+ "emphasis"><i class="EMPHASIS">and</i></span> <tt class="LITERAL"><a href=
+ "../user-manual/actions-file.html#BLOCK" target="_top">block</a></tt> action.</p>
+ <p>If you want to see nothing, then change the <a href="../user-manual/actions-file.html#SET-IMAGE-BLOCKER"
+ target="_top"><tt class="LITERAL">set-image-blocker</tt> action</a> to <span class="QUOTE">"blank"</span>. This
+ can be done by editing the <tt class="FILENAME">user.action</tt> file, or through the <a href=
+ "http://config.privoxy.org/show-status" target="_top">web-based actions file editor</a>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="WHYSEEUM" id="WHYSEEUM">3.14. Why would
- anybody want to see a checkerboard pattern?</a></h3>
- <p>Remember that <a href="general.html#WHATSANAD">telling which image
- is an ad and which isn't</a>, is an educated guess. While we hope that
- the standard configuration is rather smart, it will make occasional
- mistakes. The checkerboard image is visually decent, and it shows you
- where images have been blocked, which can be very helpful in case some
- navigation aid or otherwise innocent image was erroneously blocked. It
- is recommended for new users so they can <span class=
- "QUOTE">"see"</span> what is happening. Some people might also enjoy
- seeing how many banners they <span class="emphasis"><i class=
- "EMPHASIS">don't</i></span> have to see.</p>
+ <h3 class="SECT2"><a name="WHYSEEUM" id="WHYSEEUM">3.14. Why would anybody want to see a checkerboard
+ pattern?</a></h3>
+ <p>Remember that <a href="general.html#WHATSANAD">telling which image is an ad and which isn't</a>, is an
+ educated guess. While we hope that the standard configuration is rather smart, it will make occasional mistakes.
+ The checkerboard image is visually decent, and it shows you where images have been blocked, which can be very
+ helpful in case some navigation aid or otherwise innocent image was erroneously blocked. It is recommended for
+ new users so they can <span class="QUOTE">"see"</span> what is happening. Some people might also enjoy seeing how
+ many banners they <span class="emphasis"><i class="EMPHASIS">don't</i></span> have to see.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="BLOCKEDBYTEXT" id="BLOCKEDBYTEXT">3.15. I
- see some images being replaced with text instead of the checkerboard
- image. Why and how do I get rid of this?</a></h3>
- <p>This happens when the banners are not embedded in the HTML code of
- the page itself, but in separate HTML (sub)documents that are loaded
- into (i)frames or (i)layers, and these external HTML documents are
- blocked. Being non-images they get replaced by a substitute HTML page
- rather than a substitute image, which wouldn't work out technically,
- since the browser expects and accepts only HTML when it has requested
- an HTML document.</p>
- <p>The substitute page adapts to the available space and shows itself
- as a miniature two-liner if loaded into small frames, or full-blown
- with a large red "BLOCKED" banner if space allows.</p>
- <p>If you prefer the banners to be blocked by images, you must see to
- it that the HTML documents in which they are embedded are not blocked.
- Clicking the <span class="QUOTE">"See why"</span> link offered in the
- substitute page will show you which rule blocked the page. After
- changing the rule and un-blocking the HTML documents, the browser will
- try to load the actual banner images and the usual image blocking will
- (hopefully!) kick in.</p>
+ <h3 class="SECT2"><a name="BLOCKEDBYTEXT" id="BLOCKEDBYTEXT">3.15. I see some images being replaced with text
+ instead of the checkerboard image. Why and how do I get rid of this?</a></h3>
+ <p>This happens when the banners are not embedded in the HTML code of the page itself, but in separate HTML
+ (sub)documents that are loaded into (i)frames or (i)layers, and these external HTML documents are blocked. Being
+ non-images they get replaced by a substitute HTML page rather than a substitute image, which wouldn't work out
+ technically, since the browser expects and accepts only HTML when it has requested an HTML document.</p>
+ <p>The substitute page adapts to the available space and shows itself as a miniature two-liner if loaded into
+ small frames, or full-blown with a large red "BLOCKED" banner if space allows.</p>
+ <p>If you prefer the banners to be blocked by images, you must see to it that the HTML documents in which they
+ are embedded are not blocked. Clicking the <span class="QUOTE">"See why"</span> link offered in the substitute
+ page will show you which rule blocked the page. After changing the rule and un-blocking the HTML documents, the
+ browser will try to load the actual banner images and the usual image blocking will (hopefully!) kick in.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SRVANY" id="SRVANY">3.16. Can Privoxy run as
- a service on Win2K/NT/XP?</a></h3>
- <p>Yes. Version 3.0.5 introduces full <span class=
- "APPLICATION">Windows</span> service functionality. See <a href=
- "../user-manual/installation.html#installation-pack-win" target=
- "_top">the <i class="CITETITLE">User Manual</i></a> for details on how
- to install and configure <span class="APPLICATION">Privoxy</span> as a
+ <h3 class="SECT2"><a name="SRVANY" id="SRVANY">3.16. Can Privoxy run as a service on Win2K/NT/XP?</a></h3>
+ <p>Yes. Version 3.0.5 introduces full <span class="APPLICATION">Windows</span> service functionality. See
+ <a href="../user-manual/installation.html#installation-pack-win" target="_top">the <i class="CITETITLE">User
+ Manual</i></a> for details on how to install and configure <span class="APPLICATION">Privoxy</span> as a
service.</p>
- <p>Earlier 3.x versions could run as a system service using <b class=
- "COMMAND">srvany.exe</b>. See the discussion at <a href=
- "https://sourceforge.net/tracker/?func=detail&atid=361118&aid=485617&group_id=11118"
- target=
- "_top">https://sourceforge.net/tracker/?func=detail&atid=361118&aid=485617&group_id=11118</a>,
+ <p>Earlier 3.x versions could run as a system service using <b class="COMMAND">srvany.exe</b>. See the discussion
+ at <a href="https://sourceforge.net/tracker/?func=detail&atid=361118&aid=485617&group_id=11118"
+ target="_top">https://sourceforge.net/tracker/?func=detail&atid=361118&aid=485617&group_id=11118</a>,
for details, and a sample configuration.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="OTHERPROXY" id="OTHERPROXY">3.17. How can I
- make Privoxy work with other proxies?</a></h3>
- <p>This can be done and is often useful to combine the benefits of
- <span class="APPLICATION">Privoxy</span> with those of a another proxy,
- for example to cache content. See the <a href=
- "../user-manual/config.html#FORWARDING" target="_top">forwarding
- chapter</a> in the <a href="../user-manual/index.html" target=
- "_top">User Manual</a> which describes how to do this. If you intend to
- use Privoxy with Tor, please also have a look at <a href=
+ <h3 class="SECT2"><a name="OTHERPROXY" id="OTHERPROXY">3.17. How can I make Privoxy work with other
+ proxies?</a></h3>
+ <p>This can be done and is often useful to combine the benefits of <span class="APPLICATION">Privoxy</span> with
+ those of a another proxy, for example to cache content. See the <a href="../user-manual/config.html#FORWARDING"
+ target="_top">forwarding chapter</a> in the <a href="../user-manual/index.html" target="_top">User Manual</a>
+ which describes how to do this. If you intend to use Privoxy with Tor, please also have a look at <a href=
"misc.html#TOR">How do I use Privoxy together with Tor</a>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="PORT-80" id="PORT-80">3.18. Can I just set
- Privoxy to use port 80 and thus avoid individual browser
- configuration?</a></h3>
- <p>No, its more complicated than that. This only works with special
- kinds of proxies known as <span class="QUOTE">"intercepting"</span>
- proxies (<a href="configuration.html#INTERCEPTING">see below</a>).</p>
+ <h3 class="SECT2"><a name="PORT-80" id="PORT-80">3.18. Can I just set Privoxy to use port 80 and thus avoid
+ individual browser configuration?</a></h3>
+ <p>No, its more complicated than that. This only works with special kinds of proxies known as <span class=
+ "QUOTE">"intercepting"</span> proxies (<a href="configuration.html#INTERCEPTING">see below</a>).</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="TRANSPARENT" id="TRANSPARENT">3.19. Can
- Privoxy run as a <span class="QUOTE">"transparent"</span>
- proxy?</a></h3>
- <p>The whole idea of Privoxy is to modify client requests and server
- responses in all sorts of ways and therefore it's not a transparent
- proxy as described in <a href="http://tools.ietf.org/html/rfc2616"
- target="_top">RFC 2616</a>.</p>
- <p>However, some people say <span class="QUOTE">"transparent
- proxy"</span> when they mean <span class="QUOTE">"intercepting
- proxy"</span>. If you are one of them, please read the <a href=
+ <h3 class="SECT2"><a name="TRANSPARENT" id="TRANSPARENT">3.19. Can Privoxy run as a <span class=
+ "QUOTE">"transparent"</span> proxy?</a></h3>
+ <p>The whole idea of Privoxy is to modify client requests and server responses in all sorts of ways and therefore
+ it's not a transparent proxy as described in <a href="http://tools.ietf.org/html/rfc2616" target="_top">RFC
+ 2616</a>.</p>
+ <p>However, some people say <span class="QUOTE">"transparent proxy"</span> when they mean <span class=
+ "QUOTE">"intercepting proxy"</span>. If you are one of them, please read the <a href=
"configuration.html#INTERCEPTING">next entry</a>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="INTERCEPTING" id="INTERCEPTING">3.20. Can
- Privoxy run as a <span class="QUOTE">"intercepting"</span>
- proxy?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> can't intercept traffic
- itself, but it can handle requests that where intercepted and
- redirected with a packet filter (like <span class=
- "APPLICATION">PF</span> or <span class="APPLICATION">iptables</span>),
- as long as the <tt class="LITERAL">Host</tt> header is present.</p>
- <p>As the <tt class="LITERAL">Host</tt> header is required by HTTP/1.1
- and as most web sites rely on it anyway, this limitation shouldn't be a
- problem.</p>
- <p>Please refer to your packet filter's documentation to learn how to
- intercept and redirect traffic into <span class=
- "APPLICATION">Privoxy</span>. Afterward you just have to configure
- <span class="APPLICATION">Privoxy</span> to <a href=
- "../user-manual/config.html#ACCEPT-INTERCEPTED-REQUESTS" target=
+ <h3 class="SECT2"><a name="INTERCEPTING" id="INTERCEPTING">3.20. Can Privoxy run as a <span class=
+ "QUOTE">"intercepting"</span> proxy?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> can't intercept traffic itself, but it can handle requests that where
+ intercepted and redirected with a packet filter (like <span class="APPLICATION">PF</span> or <span class=
+ "APPLICATION">iptables</span>), as long as the <tt class="LITERAL">Host</tt> header is present.</p>
+ <p>As the <tt class="LITERAL">Host</tt> header is required by HTTP/1.1 and as most web sites rely on it anyway,
+ this limitation shouldn't be a problem.</p>
+ <p>Please refer to your packet filter's documentation to learn how to intercept and redirect traffic into
+ <span class="APPLICATION">Privoxy</span>. Afterward you just have to configure <span class=
+ "APPLICATION">Privoxy</span> to <a href="../user-manual/config.html#ACCEPT-INTERCEPTED-REQUESTS" target=
"_top">accept intercepted requests</a>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="OUTLOOK" id="OUTLOOK">3.21. How can I
- configure Privoxy for use with Outlook?</a></h3>
- <p>Versions of <span class="APPLICATION">Outlook</span> prior to Office
- 2007, use <span class="APPLICATION">Internet Explorer</span> components
- to both render HTML, and fetch any HTTP requests that may be embedded
- in an HTML email. So however you have <span class=
- "APPLICATION">Privoxy</span> configured to work with IE, this
- configuration should automatically be shared, at least with older
- version of Internet Explorer.</p>
- <p>Starting with Office 2007, Microsoft is instead using the MS-Word
- rendering engine with Outlook. It is unknown whether this can be
- configured to use a proxy.</p>
+ <h3 class="SECT2"><a name="OUTLOOK" id="OUTLOOK">3.21. How can I configure Privoxy for use with Outlook?</a></h3>
+ <p>Versions of <span class="APPLICATION">Outlook</span> prior to Office 2007, use <span class=
+ "APPLICATION">Internet Explorer</span> components to both render HTML, and fetch any HTTP requests that may be
+ embedded in an HTML email. So however you have <span class="APPLICATION">Privoxy</span> configured to work with
+ IE, this configuration should automatically be shared, at least with older version of Internet Explorer.</p>
+ <p>Starting with Office 2007, Microsoft is instead using the MS-Word rendering engine with Outlook. It is unknown
+ whether this can be configured to use a proxy.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="OUTLOOK-MORE" id="OUTLOOK-MORE">3.22. How
- can I have separate rules just for HTML mail?</a></h3>
- <p>The short answer is, you can't. <span class=
- "APPLICATION">Privoxy</span> has no way of knowing which particular
- application makes a request, so there is no way to distinguish between
- web pages and HTML mail. <span class="APPLICATION">Privoxy</span> just
- blindly proxies all requests. In the case of <span class=
- "APPLICATION">Outlook Express</span> (see above), OE uses IE anyway,
- and there is no way for <span class="APPLICATION">Privoxy</span> to
- ever be able to distinguish between them (nor could any other proxy
- type application for that matter).</p>
- <p>For a good discussion of some of the issues involved (including
- privacy and security issues), see <a href=
- "https://sourceforge.net/tracker/?func=detail&atid=211118&aid=629518&group_id=11118"
- target=
+ <h3 class="SECT2"><a name="OUTLOOK-MORE" id="OUTLOOK-MORE">3.22. How can I have separate rules just for HTML
+ mail?</a></h3>
+ <p>The short answer is, you can't. <span class="APPLICATION">Privoxy</span> has no way of knowing which
+ particular application makes a request, so there is no way to distinguish between web pages and HTML mail.
+ <span class="APPLICATION">Privoxy</span> just blindly proxies all requests. In the case of <span class=
+ "APPLICATION">Outlook Express</span> (see above), OE uses IE anyway, and there is no way for <span class=
+ "APPLICATION">Privoxy</span> to ever be able to distinguish between them (nor could any other proxy type
+ application for that matter).</p>
+ <p>For a good discussion of some of the issues involved (including privacy and security issues), see <a href=
+ "https://sourceforge.net/tracker/?func=detail&atid=211118&aid=629518&group_id=11118" target=
"_top">https://sourceforge.net/tracker/?func=detail&atid=211118&aid=629518&group_id=11118</a>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SNEAKY-COOKIES" id="SNEAKY-COOKIES">3.23. I
- sometimes notice cookies sneaking through. How?</a></h3>
- <p><a href="http://en.wikipedia.org/wiki/Browser_cookie" target=
- "_top">Cookies</a> can be set in several ways. The classic method is
- via the <tt class="LITERAL">Set-Cookie</tt> HTTP header. This is
- straightforward, and an easy one to manipulate, such as the
- <span class="APPLICATION">Privoxy</span> concept of <a href=
- "../user-manual/actions-file.html#SESSION-COOKIES-ONLY" target=
- "_top">session-cookies-only</a>. There is also the possibility of using
- <a href="http://en.wikipedia.org/wiki/Javascript" target=
- "_top">Javascript</a> to set cookies (<span class=
- "APPLICATION">Privoxy</span> calls these <tt class=
- "LITERAL">content-cookies</tt>). This is trickier because the syntax
- can vary widely, and thus requires a certain amount of guesswork. It is
- not realistic to catch all of these short of disabling Javascript,
- which would break many sites. And lastly, if the cookies are embedded
- in a HTTPS/SSL secure session via Javascript, they are beyond
- <span class="APPLICATION">Privoxy's</span> reach.</p>
- <p>All in all, <span class="APPLICATION">Privoxy</span> can help manage
- cookies in general, can help minimize the loss of privacy posed by
- cookies, but can't realistically stop all cookies.</p>
+ <h3 class="SECT2"><a name="SNEAKY-COOKIES" id="SNEAKY-COOKIES">3.23. I sometimes notice cookies sneaking through.
+ How?</a></h3>
+ <p><a href="http://en.wikipedia.org/wiki/Browser_cookie" target="_top">Cookies</a> can be set in several ways.
+ The classic method is via the <tt class="LITERAL">Set-Cookie</tt> HTTP header. This is straightforward, and an
+ easy one to manipulate, such as the <span class="APPLICATION">Privoxy</span> concept of <a href=
+ "../user-manual/actions-file.html#SESSION-COOKIES-ONLY" target="_top">session-cookies-only</a>. There is also the
+ possibility of using <a href="http://en.wikipedia.org/wiki/Javascript" target="_top">Javascript</a> to set
+ cookies (<span class="APPLICATION">Privoxy</span> calls these <tt class="LITERAL">content-cookies</tt>). This is
+ trickier because the syntax can vary widely, and thus requires a certain amount of guesswork. It is not realistic
+ to catch all of these short of disabling Javascript, which would break many sites. And lastly, if the cookies are
+ embedded in a HTTPS/SSL secure session via Javascript, they are beyond <span class="APPLICATION">Privoxy's</span>
+ reach.</p>
+ <p>All in all, <span class="APPLICATION">Privoxy</span> can help manage cookies in general, can help minimize the
+ loss of privacy posed by cookies, but can't realistically stop all cookies.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="EVIL-COOKIES" id="EVIL-COOKIES">3.24. Are
- all cookies bad? Why?</a></h3>
- <p>No, in fact there are many beneficial uses of <a href=
- "http://en.wikipedia.org/wiki/Browser_cookie" target=
- "_top">cookies</a>. Cookies are just a method that browsers can use to
- store data between pages, or between browser sessions. Sometimes there
- is a good reason for this, and the user's life is a bit easier as a
- result. But there is a long history of some websites taking advantage
- of this layer of trust, and using the data they glean from you and your
- browsing habits for their own purposes, and maybe to your potential
- detriment. Such sites are using you and storing their data on your
- system. That is why the privacy conscious watch from whom those cookies
- come, and why they really <span class="emphasis"><i class=
- "EMPHASIS">need</i></span> to be there.</p>
- <p>See the <a href="http://en.wikipedia.org/wiki/Browser_cookie"
- target="_top">Wikipedia cookie definition</a> for more.</p>
+ <h3 class="SECT2"><a name="EVIL-COOKIES" id="EVIL-COOKIES">3.24. Are all cookies bad? Why?</a></h3>
+ <p>No, in fact there are many beneficial uses of <a href="http://en.wikipedia.org/wiki/Browser_cookie" target=
+ "_top">cookies</a>. Cookies are just a method that browsers can use to store data between pages, or between
+ browser sessions. Sometimes there is a good reason for this, and the user's life is a bit easier as a result. But
+ there is a long history of some websites taking advantage of this layer of trust, and using the data they glean
+ from you and your browsing habits for their own purposes, and maybe to your potential detriment. Such sites are
+ using you and storing their data on your system. That is why the privacy conscious watch from whom those cookies
+ come, and why they really <span class="emphasis"><i class="EMPHASIS">need</i></span> to be there.</p>
+ <p>See the <a href="http://en.wikipedia.org/wiki/Browser_cookie" target="_top">Wikipedia cookie definition</a>
+ for more.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="ALLOW-COOKIES" id="ALLOW-COOKIES">3.25. How
- can I allow permanent cookies for my trusted sites?</a></h3>
- <p>There are several actions that relate to cookies. The default
- behavior is to allow only <span class="QUOTE">"session cookies"</span>,
- which means the cookies only last for the current browser session. This
- eliminates most kinds of abuse related to cookies. But there may be
- cases where you want cookies to last.</p>
- <p>To disable all cookie actions, so that cookies are allowed
- unrestricted, both in and out, for <tt class=
+ <h3 class="SECT2"><a name="ALLOW-COOKIES" id="ALLOW-COOKIES">3.25. How can I allow permanent cookies for my
+ trusted sites?</a></h3>
+ <p>There are several actions that relate to cookies. The default behavior is to allow only <span class=
+ "QUOTE">"session cookies"</span>, which means the cookies only last for the current browser session. This
+ eliminates most kinds of abuse related to cookies. But there may be cases where you want cookies to last.</p>
+ <p>To disable all cookie actions, so that cookies are allowed unrestricted, both in and out, for <tt class=
"LITERAL">example.com</tt>:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>Place the above in <tt class="FILENAME">user.action</tt>. Note that
- some of these may be off by default anyway, so this might be redundant,
- but there is no harm being explicit in what you want to happen.
- <tt class="FILENAME">user.action</tt> includes an alias for this
- situation, called <tt class="LITERAL">allow-all-cookies</tt>.</p>
+ <p>Place the above in <tt class="FILENAME">user.action</tt>. Note that some of these may be off by default
+ anyway, so this might be redundant, but there is no harm being explicit in what you want to happen. <tt class=
+ "FILENAME">user.action</tt> includes an alias for this situation, called <tt class=
+ "LITERAL">allow-all-cookies</tt>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="MULTIPLES" id="MULTIPLES">3.26. Can I have
- separate configurations for different users?</a></h3>
- <p>Each instance of <span class="APPLICATION">Privoxy</span> has its
- own configuration, including such attributes as the TCP port that it
- listens on. What you can do is run multiple instances of <span class=
- "APPLICATION">Privoxy</span>, each with a unique <a href=
- "../user-manual/config.html#LISTEN-ADDRESS" target=
- "_top">listen-address</a> configuration setting, and configuration
- path, and then each of these can have their own configurations. Think
- of it as per-port configuration.</p>
- <p>Simple enough for a few users, but for large installations, consider
- having groups of users that might share like configurations.</p>
+ <h3 class="SECT2"><a name="MULTIPLES" id="MULTIPLES">3.26. Can I have separate configurations for different
+ users?</a></h3>
+ <p>Each instance of <span class="APPLICATION">Privoxy</span> has its own configuration, including such attributes
+ as the TCP port that it listens on. What you can do is run multiple instances of <span class=
+ "APPLICATION">Privoxy</span>, each with a unique <a href="../user-manual/config.html#LISTEN-ADDRESS" target=
+ "_top">listen-address</a> configuration setting, and configuration path, and then each of these can have their
+ own configurations. Think of it as per-port configuration.</p>
+ <p>Simple enough for a few users, but for large installations, consider having groups of users that might share
+ like configurations.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="WHITELISTS" id="WHITELISTS">3.27. Can I
- set-up Privoxy as a whitelist of <span class="QUOTE">"good"</span>
- sites?</a></h3>
- <p>Sure. There are a couple of things you can do for simple
- white-listing. Here's one real easy one:</p>
+ <h3 class="SECT2"><a name="WHITELISTS" id="WHITELISTS">3.27. Can I set-up Privoxy as a whitelist of <span class=
+ "QUOTE">"good"</span> sites?</a></h3>
+ <p>Sure. There are a couple of things you can do for simple white-listing. Here's one real easy one:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- ############################################################
+ <pre class="SCREEN"> ############################################################
# Blacklist
############################################################
- { <a href="../user-manual/actions-file.html#BLOCK" target=
-"_top">+block</a> }
+ { <a href="../user-manual/actions-file.html#BLOCK" target="_top">+block</a> }
/ # Block *all* URLs
############################################################
# Whitelist
############################################################
- { <a href="../user-manual/actions-file.html#BLOCK" target=
-"_top">-block</a> }
+ { <a href="../user-manual/actions-file.html#BLOCK" target="_top">-block</a> }
kids.example.com
toys.example.com
games.example.com</pre>
</td>
</tr>
</table>
- <p>This allows access to only those three sites by first blocking all
- URLs, and then subsequently allowing three specific exceptions.</p>
- <p>Another approach is <span class="APPLICATION">Privoxy's</span>
- <tt class="LITERAL">trustfile</tt> concept, which incorporates the
- notion of <span class="QUOTE">"trusted referrers"</span>. See the
- <a href="../user-manual/config.html#TRUSTFILE" target="_top">Trust
- documentation</a> for details.</p>
- <p>These are fairly simple approaches and are not completely foolproof.
- There are various other configuration options that should be disabled
- (described elsewhere here and in <a href="../user-manual/" target=
- "_top">the User Manual</a>) so that users can't modify their own
- configuration and easily circumvent the whitelist.</p>
+ <p>This allows access to only those three sites by first blocking all URLs, and then subsequently allowing three
+ specific exceptions.</p>
+ <p>Another approach is <span class="APPLICATION">Privoxy's</span> <tt class="LITERAL">trustfile</tt> concept,
+ which incorporates the notion of <span class="QUOTE">"trusted referrers"</span>. See the <a href=
+ "../user-manual/config.html#TRUSTFILE" target="_top">Trust documentation</a> for details.</p>
+ <p>These are fairly simple approaches and are not completely foolproof. There are various other configuration
+ options that should be disabled (described elsewhere here and in <a href="../user-manual/" target="_top">the User
+ Manual</a>) so that users can't modify their own configuration and easily circumvent the whitelist.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="NO-ADBLOCK" id="NO-ADBLOCK">3.28. How can I
- turn off ad-blocking?</a></h3>
- <p>Ad blocking is achieved through a complex application of various
- <span class="APPLICATION">Privoxy</span> <a href=
- "../user-manual/actions-file.html" target="_top">actions</a>. These
- actions are deployed against simple images, banners, flash animations,
- text pages, JavaScript, pop-ups and pop-unders, etc., so its not as
- simple as just turning one or two actions off. The various actions that
- make up <span class="APPLICATION">Privoxy</span> ad blocking are
- hard-coded into the default configuration files. It has been assumed
- that everyone using <span class="APPLICATION">Privoxy</span> is
- interested in this particular feature.</p>
- <p>If you want to do without this, there are several approaches you can
- take: You can manually undo the many block rules in <tt class=
- "FILENAME">default.action</tt>. Or even easier, just create your own
- <tt class="FILENAME">default.action</tt> file from scratch without the
- many ad blocking rules, and corresponding exceptions. Or lastly, if you
- are not concerned about the additional blocks that are done for privacy
- reasons, you can very easily over-ride <span class="emphasis"><i class=
- "EMPHASIS">all</i></span> blocking with the following very simple rule
- in your <tt class="FILENAME">user.action</tt>:</p>
+ <h3 class="SECT2"><a name="NO-ADBLOCK" id="NO-ADBLOCK">3.28. How can I turn off ad-blocking?</a></h3>
+ <p>Ad blocking is achieved through a complex application of various <span class="APPLICATION">Privoxy</span>
+ <a href="../user-manual/actions-file.html" target="_top">actions</a>. These actions are deployed against simple
+ images, banners, flash animations, text pages, JavaScript, pop-ups and pop-unders, etc., so its not as simple as
+ just turning one or two actions off. The various actions that make up <span class="APPLICATION">Privoxy</span> ad
+ blocking are hard-coded into the default configuration files. It has been assumed that everyone using
+ <span class="APPLICATION">Privoxy</span> is interested in this particular feature.</p>
+ <p>If you want to do without this, there are several approaches you can take: You can manually undo the many
+ block rules in <tt class="FILENAME">default.action</tt>. Or even easier, just create your own <tt class=
+ "FILENAME">default.action</tt> file from scratch without the many ad blocking rules, and corresponding
+ exceptions. Or lastly, if you are not concerned about the additional blocks that are done for privacy reasons,
+ you can very easily over-ride <span class="emphasis"><i class="EMPHASIS">all</i></span> blocking with the
+ following very simple rule in your <tt class="FILENAME">user.action</tt>:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
<pre class="SCREEN"> # Unblock everybody, everywhere
- { <a href="../user-manual/actions-file.html#BLOCK" target=
-"_top">-block</a> }
+ { <a href="../user-manual/actions-file.html#BLOCK" target="_top">-block</a> }
/ # UN-Block *all* URLs</pre>
</td>
</tr>
</table>
- <p>Or even a more comprehensive reversing of various ad related
- actions:</p>
+ <p>Or even a more comprehensive reversing of various ad related actions:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # Unblock everybody, everywhere, and turn off appropriate filtering, etc
- { <a href="../user-manual/actions-file.html#BLOCK" target=
-"_top">-block</a> \
- <a href="../user-manual/actions-file.html#FILTER-BANNERS-BY-SIZE" target=
-"_top">-filter{banners-by-size}</a> \
- <a href="../user-manual/actions-file.html#FILTER-BANNERS-BY-LINK" target=
-"_top">-filter{banners-by-link}</a> \
+ <pre class="SCREEN"> # Unblock everybody, everywhere, and turn off appropriate filtering, etc
+ { <a href="../user-manual/actions-file.html#BLOCK" target="_top">-block</a> \
+ <a href="../user-manual/actions-file.html#FILTER-BANNERS-BY-SIZE" target="_top">-filter{banners-by-size}</a> \
+ <a href="../user-manual/actions-file.html#FILTER-BANNERS-BY-LINK" target="_top">-filter{banners-by-link}</a> \
<tt class="LITERAL">allow-popups</tt> \
}
/ # UN-Block *all* URLs and allow ads</pre>
</td>
</tr>
</table>
- <p>This last <span class="QUOTE">"action"</span> in this compound
- statement, <tt class="LITERAL">allow-popups</tt>, is an <a href=
- "../user-manual/actions-file.html#ALIASES" target="_top">alias</a> that
- disables various pop-up blocking features.</p>
+ <p>This last <span class="QUOTE">"action"</span> in this compound statement, <tt class=
+ "LITERAL">allow-popups</tt>, is an <a href="../user-manual/actions-file.html#ALIASES" target="_top">alias</a>
+ that disables various pop-up blocking features.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="TEMPLATES" id="TEMPLATES">3.29. How can I
- have custom template pages, like the <span class="emphasis"><i class=
- "EMPHASIS">BLOCKED</i></span> page?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> <span class=
- "QUOTE">"templates"</span> are specialized text files utilized by
- <span class="APPLICATION">Privoxy</span> for various purposes and can
- easily be modified using any text editor. All the template pages are
- installed in a sub-directory appropriately named: <tt class=
- "FILENAME">templates</tt>. Knowing something about HTML syntax will of
- course be helpful.</p>
- <p>Be forewarned that the default templates are subject to being
- overwritten during upgrades. You can, however, create completely new
- templates, place them in another directory and specify the alternate
- path in the main <tt class="FILENAME">config</tt>. For details, have a
- look at the <a href="../user-manual/config.html#templdir" target=
- "_top">templdir</a> option.</p>
+ <h3 class="SECT2"><a name="TEMPLATES" id="TEMPLATES">3.29. How can I have custom template pages, like the
+ <span class="emphasis"><i class="EMPHASIS">BLOCKED</i></span> page?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> <span class="QUOTE">"templates"</span> are specialized text files
+ utilized by <span class="APPLICATION">Privoxy</span> for various purposes and can easily be modified using any
+ text editor. All the template pages are installed in a sub-directory appropriately named: <tt class=
+ "FILENAME">templates</tt>. Knowing something about HTML syntax will of course be helpful.</p>
+ <p>Be forewarned that the default templates are subject to being overwritten during upgrades. You can, however,
+ create completely new templates, place them in another directory and specify the alternate path in the main
+ <tt class="FILENAME">config</tt>. For details, have a look at the <a href="../user-manual/config.html#templdir"
+ target="_top">templdir</a> option.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="BLOCKALL" id="BLOCKALL">3.30. How can I
- remove the <span class="QUOTE">"Go There Anyway"</span> link from the
- <span class="emphasis"><i class="EMPHASIS">BLOCKED</i></span>
- page?</a></h3>
- <p>There is more than one way to do it (although Perl is not
- involved).</p>
- <p>Editing the BLOCKED template page (see above) may dissuade some
- users, but this method is easily circumvented. Where you need this
- level of control, you might want to build <span class=
- "APPLICATION">Privoxy</span> from source, and disable various features
- that are available as compile-time options. You should <b class=
+ <h3 class="SECT2"><a name="BLOCKALL" id="BLOCKALL">3.30. How can I remove the <span class="QUOTE">"Go There
+ Anyway"</span> link from the <span class="emphasis"><i class="EMPHASIS">BLOCKED</i></span> page?</a></h3>
+ <p>There is more than one way to do it (although Perl is not involved).</p>
+ <p>Editing the BLOCKED template page (see above) may dissuade some users, but this method is easily circumvented.
+ Where you need this level of control, you might want to build <span class="APPLICATION">Privoxy</span> from
+ source, and disable various features that are available as compile-time options. You should <b class=
"COMMAND">configure</b> the sources as follows:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- ./configure --disable-toggle --disable-editor --disable-force</pre>
+ <pre class="SCREEN"> ./configure --disable-toggle --disable-editor --disable-force</pre>
</td>
</tr>
</table>
- <p>This will create an executable with hard-coded security features so
- that <span class="APPLICATION">Privoxy</span> does not allow easy
- bypassing of blocked sites, or changing the current configuration via
- any connected user's web browser.</p>
- <p>Finally, all of these features can also be toggled on/off via
- options in <span class="APPLICATION">Privoxy's</span> main <a href=
- "../user-manual/config.html#ACCESS-CONTROL" target="_top">config</a>
+ <p>This will create an executable with hard-coded security features so that <span class=
+ "APPLICATION">Privoxy</span> does not allow easy bypassing of blocked sites, or changing the current
+ configuration via any connected user's web browser.</p>
+ <p>Finally, all of these features can also be toggled on/off via options in <span class=
+ "APPLICATION">Privoxy's</span> main <a href="../user-manual/config.html#ACCESS-CONTROL" target="_top">config</a>
file which means you don't have to recompile anything.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="installation.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="misc.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="installation.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="misc.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Installation</td>
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
- <title>Contacting the developers, Bug Reporting and Feature
- Requests</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy Frequently Asked Questions" href=
- "index.html">
+ <title>Contacting the developers, Bug Reporting and Feature Requests</title>
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
+ <link rel="HOME" title="Privoxy Frequently Asked Questions" href="index.html">
<link rel="PREVIOUS" title="Troubleshooting" href="trouble.html">
- <link rel="NEXT" title="Privoxy Copyright, License and History" href=
- "copyright.html">
+ <link rel="NEXT" title="Privoxy Copyright, License and History" href="copyright.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy Frequently Asked
- Questions</th>
+ <th colspan="3" align="center">Privoxy Frequently Asked Questions</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="trouble.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="trouble.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "copyright.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="copyright.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="CONTACT" id="CONTACT">6. Contacting the
- developers, Bug Reporting and Feature Requests</a></h1>
- <p>We value your feedback. In fact, we rely on it to improve <span class=
- "APPLICATION">Privoxy</span> and its configuration. However, please note
- the following hints, so we can provide you with the best support.</p>
+ <h1 class="SECT1"><a name="CONTACT" id="CONTACT">6. Contacting the developers, Bug Reporting and Feature
+ Requests</a></h1>
+ <p>We value your feedback. In fact, we rely on it to improve <span class="APPLICATION">Privoxy</span> and its
+ configuration. However, please note the following hints, so we can provide you with the best support.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="SUFFICIENT-INFORMATION" id=
- "SUFFICIENT-INFORMATION">6.1. Please provide sufficient
+ <h2 class="SECT2"><a name="SUFFICIENT-INFORMATION" id="SUFFICIENT-INFORMATION">6.1. Please provide sufficient
information</a></h2>
- <p>A lot of support requests don't contain enough information and can't
- be solved without a lot of back and forth which causes unnecessary
- delays. Reading this section should help to prevent that.</p>
- <p>Before contacting us to report a problem, please try to verify that
- it is a <span class="APPLICATION">Privoxy</span> problem, and not a
- browser or site problem or documented behaviour that just happens to be
- different than what you expected. If unsure, try <a href=
- "http://config.privoxy.org/toggle?set=disable" target="_top">toggling
- off</a> <span class="APPLICATION">Privoxy</span>, and see if the
- problem persists.</p>
- <p>If you are using your own custom configuration, please try the
- default configuration to see if the problem is configuration related.
- If you're having problems with a feature that is disabled by default,
- please ask around on the mailing list if others can reproduce the
- problem.</p>
- <p>If you aren't using the latest Privoxy version, the problem may have
- been found and fixed in the meantime. We would appreciate if you could
- take the time to <a href=
- "https://www.privoxy.org/user-manual/installation.html" target=
- "_top">upgrade to the latest version</a> and verify that the problem
- still exists.</p>
- <p>Please be sure to provide the following information when reporting
- problems or requesting support:</p>
+ <p>A lot of support requests don't contain enough information and can't be solved without a lot of back and forth
+ which causes unnecessary delays. Reading this section should help to prevent that.</p>
+ <p>Before contacting us to report a problem, please try to verify that it is a <span class=
+ "APPLICATION">Privoxy</span> problem, and not a browser or site problem or documented behaviour that just happens
+ to be different than what you expected. If unsure, try <a href="http://config.privoxy.org/toggle?set=disable"
+ target="_top">toggling off</a> <span class="APPLICATION">Privoxy</span>, and see if the problem persists.</p>
+ <p>If you are using your own custom configuration, please try the default configuration to see if the problem is
+ configuration related. If you're having problems with a feature that is disabled by default, please ask around on
+ the mailing list if others can reproduce the problem.</p>
+ <p>If you aren't using the latest Privoxy version, the problem may have been found and fixed in the meantime. We
+ would appreciate if you could take the time to <a href="https://www.privoxy.org/user-manual/installation.html"
+ target="_top">upgrade to the latest version</a> and verify that the problem still exists.</p>
+ <p>Please be sure to provide the following information when reporting problems or requesting support:</p>
<ul>
<li>
- <p>The exact <span class="APPLICATION">Privoxy</span> version you
- are using.</p>
+ <p>The exact <span class="APPLICATION">Privoxy</span> version you are using.</p>
</li>
<li>
- <p>The operating system and versions you run <span class=
- "APPLICATION">Privoxy</span> on, e.g. <span class=
+ <p>The operating system and versions you run <span class="APPLICATION">Privoxy</span> on, e.g. <span class=
"APPLICATION">Windows XP SP2</span>.</p>
</li>
<li>
- <p>The name, platform, and version of the <span class=
- "APPLICATION">browser</span> you were using (e.g. <span class=
- "APPLICATION">Internet Explorer v5.5</span> for Mac).</p>
+ <p>The name, platform, and version of the <span class="APPLICATION">browser</span> you were using (e.g.
+ <span class="APPLICATION">Internet Explorer v5.5</span> for Mac).</p>
</li>
<li>
- <p>The URL where the problem occurred, or some way for us to
- duplicate the problem (e.g. <tt class=
+ <p>The URL where the problem occurred, or some way for us to duplicate the problem (e.g. <tt class=
"LITERAL">http://somesite.example.com/?somethingelse=123</tt>).</p>
</li>
<li>
- <p>Whether your version of <span class="APPLICATION">Privoxy</span>
- is one supplied by the <span class="APPLICATION">Privoxy</span>
- developers via SourceForge, or if you got your copy somewhere
- else.</p>
+ <p>Whether your version of <span class="APPLICATION">Privoxy</span> is one supplied by the <span class=
+ "APPLICATION">Privoxy</span> developers via SourceForge, or if you got your copy somewhere else.</p>
</li>
<li>
- <p>Whether you are using <span class="APPLICATION">Privoxy</span>
- together with another proxy such as <span class=
- "APPLICATION">Tor</span>. If so, please temporary disable the other
- proxy to see if the symptoms change.</p>
+ <p>Whether you are using <span class="APPLICATION">Privoxy</span> together with another proxy such as
+ <span class="APPLICATION">Tor</span>. If so, please temporary disable the other proxy to see if the symptoms
+ change.</p>
</li>
<li>
- <p>Whether you are using a personal firewall product. If so, does
- <span class="APPLICATION">Privoxy</span> work without it?</p>
+ <p>Whether you are using a personal firewall product. If so, does <span class="APPLICATION">Privoxy</span>
+ work without it?</p>
</li>
<li>
- <p>Any other pertinent information to help identify the problem
- such as config or log file excerpts (yes, you should have log file
- entries for each action taken). To get a meaningful logfile, please
- make sure that the <a href="../user-manual/config.html#LOGFILE"
- target="_top">logfile directive</a> is being used and the following
- <a href="../user-manual/config.html#DEBUG" target="_top">debug
- options</a> are enabled (all of them):</p>
+ <p>Any other pertinent information to help identify the problem such as config or log file excerpts (yes, you
+ should have log file entries for each action taken). To get a meaningful logfile, please make sure that the
+ <a href="../user-manual/config.html#LOGFILE" target="_top">logfile directive</a> is being used and the
+ following <a href="../user-manual/config.html#DEBUG" target="_top">debug options</a> are enabled (all of
+ them):</p>
<p class="LITERALLAYOUT">
- debug 1 # Log the destination for each request Privoxy let through. See also debug 1024.<br>
+ debug 1 # Log the destination for each request Privoxy let through.<br>
- debug 2 # show each connection status<br>
+ # See also debug 1024.<br>
+ debug 2 # show each connection status<br>
debug 4 # show I/O status<br>
-
debug 8 # show header parsing<br>
-
debug 128 # debug redirects<br>
debug 256 # debug GIF de-animation<br>
-
debug 512 # Common Log Format<br>
+ debug 1024 # Log the destination for requests Privoxy didn't let through,<br>
- debug 1024 # Log the destination for requests Privoxy didn't let through, and the reason why.<br>
+ # and the reason why.<br>
debug 4096 # Startup banner and warnings.<br>
-
debug 8192 # Non-fatal errors<br>
debug 65536 # Log applying actions</p>
- <p>If you are having trouble with a filter, please additionally
- enable</p>
+ <p>If you are having trouble with a filter, please additionally enable</p>
<p class="LITERALLAYOUT">
- debug 64 # debug regular expression filters</p>If
- you suspect that Privoxy interprets the request or the response
- incorrectly, please enable
+ debug 64 # debug regular expression filters</p>If you suspect
+ that Privoxy interprets the request or the response incorrectly, please enable
<p class="LITERALLAYOUT">
debug 32768 # log all data read from the network</p>
- <p>It's easy for us to ignore log messages that aren't relevant but
- missing log messages may make it impossible to investigate a
- problem. If you aren't sure which of the debug directives are
- relevant, please just enable all of them and let us worry about
- it.</p>
- <p>Note that Privoxy log files may contain sensitive information so
- please don't submit any logfiles you didn't read first. You can
- mask sensitive information as long as it's clear that you removed
- something.</p>
+ <p>It's easy for us to ignore log messages that aren't relevant but missing log messages may make it
+ impossible to investigate a problem. If you aren't sure which of the debug directives are relevant, please
+ just enable all of them and let us worry about it.</p>
+ <p>Note that Privoxy log files may contain sensitive information so please don't submit any logfiles you
+ didn't read first. You can mask sensitive information as long as it's clear that you removed something.</p>
</li>
</ul>
- <p>You don't have to tell us your actual name when filing a problem
- report, but if you don't, please use a nickname so we can differentiate
- between your messages and the ones entered by other "anonymous" users
- that may respond to your request if they have the same problem or
- already found a solution. Note that due to spam the trackers may not
- always allow to post without being logged into SourceForge. If that's
- the case, you are still free to create a login that isn't directly
- linked to your name, though.</p>
- <p>Please also check the status of your request a few days after
- submitting it, as we may request additional information. If you use a
- SF id, you should automatically get a mail when someone responds to
- your request. Please don't bother to add an email address when using
- the tracker. If you prefer to communicate through email, just use one
- of the mailing lists directly.</p>
- <p>If you are new to reporting problems, you might be interested in
- <a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html" target=
- "_top">How to Report Bugs Effectively</a>.</p>
- <p>The <a href=
- "https://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT" target=
- "_top">appendix of the Privoxy User Manual</a> also has helpful
- information on understanding <tt class="LITERAL">actions</tt>, and
+ <p>You don't have to tell us your actual name when filing a problem report, but if you don't, please use a
+ nickname so we can differentiate between your messages and the ones entered by other "anonymous" users that may
+ respond to your request if they have the same problem or already found a solution. Note that due to spam the
+ trackers may not always allow to post without being logged into SourceForge. If that's the case, you are still
+ free to create a login that isn't directly linked to your name, though.</p>
+ <p>Please also check the status of your request a few days after submitting it, as we may request additional
+ information. If you use a SF id, you should automatically get a mail when someone responds to your request.
+ Please don't bother to add an email address when using the tracker. If you prefer to communicate through email,
+ just use one of the mailing lists directly.</p>
+ <p>If you are new to reporting problems, you might be interested in <a href=
+ "http://www.chiark.greenend.org.uk/~sgtatham/bugs.html" target="_top">How to Report Bugs Effectively</a>.</p>
+ <p>The <a href="https://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT" target="_top">appendix of the
+ Privoxy User Manual</a> also has helpful information on understanding <tt class="LITERAL">actions</tt>, and
<tt class="LITERAL">action</tt> debugging.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="CONTACT-SUPPORT" id="CONTACT-SUPPORT">6.2.
- Get Support</a></h2>
+ <h2 class="SECT2"><a name="CONTACT-SUPPORT" id="CONTACT-SUPPORT">6.2. Get Support</a></h2>
<p>All users are welcome to discuss their issues on the <a href=
- "https://lists.privoxy.org/mailman/listinfo/privoxy-users" target=
- "_top">users mailing list</a>, where the developers also hang
- around.</p>
- <p>Please don't send private support requests to individual Privoxy
- developers, either use the mailing lists or the support trackers.</p>
- <p>If you have to contact a Privoxy developer directly for other
- reasons, please send a real mail and do not bother with SourceForge's
- messaging system. Answers to SourceForge messages are usually bounced
- by SourceForge's mail server in which case the developer wasted time
- writing a response you don't get. From your point of view it will look
- like your message has been completely ignored, so this is frustrating
- for all parties involved.</p>
- <p>Note that the Privoxy mailing lists are moderated. Posts from
- unsubscribed addresses have to be accepted manually by a moderator.
- This may cause a delay of several days and if you use a subject that
- doesn't clearly mention Privoxy or one of its features, your message
- may be accidentally discarded as spam.</p>
- <p>If you aren't subscribed, you should therefore spend a few seconds
- to come up with a proper subject. Additionally you should make it clear
- that you want to get CC'd. Otherwise some responses will be directed to
- the mailing list only, and you won't see them.</p>
+ "https://lists.privoxy.org/mailman/listinfo/privoxy-users" target="_top">users mailing list</a>, where the
+ developers also hang around.</p>
+ <p>Please don't send private support requests to individual Privoxy developers, either use the mailing lists or
+ the support trackers.</p>
+ <p>If you have to contact a Privoxy developer directly for other reasons, please send a real mail and do not
+ bother with SourceForge's messaging system. Answers to SourceForge messages are usually bounced by SourceForge's
+ mail server in which case the developer wasted time writing a response you don't get. From your point of view it
+ will look like your message has been completely ignored, so this is frustrating for all parties involved.</p>
+ <p>Note that the Privoxy mailing lists are moderated. Posts from unsubscribed addresses have to be accepted
+ manually by a moderator. This may cause a delay of several days and if you use a subject that doesn't clearly
+ mention Privoxy or one of its features, your message may be accidentally discarded as spam.</p>
+ <p>If you aren't subscribed, you should therefore spend a few seconds to come up with a proper subject.
+ Additionally you should make it clear that you want to get CC'd. Otherwise some responses will be directed to the
+ mailing list only, and you won't see them.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="REPORTING" id="REPORTING">6.3. Reporting
- Problems</a></h2>
- <p><span class="QUOTE">"Problems"</span> for our purposes, come in two
- forms:</p>
+ <h2 class="SECT2"><a name="REPORTING" id="REPORTING">6.3. Reporting Problems</a></h2>
+ <p><span class="QUOTE">"Problems"</span> for our purposes, come in two forms:</p>
<ul>
<li>
- <p>Configuration issues, such as ads that slip through, or sites
- that don't function properly due to one <span class=
- "APPLICATION">Privoxy</span> <span class="QUOTE">"action"</span> or
- another being turned <span class="QUOTE">"on"</span>.</p>
+ <p>Configuration issues, such as ads that slip through, or sites that don't function properly due to one
+ <span class="APPLICATION">Privoxy</span> <span class="QUOTE">"action"</span> or another being turned
+ <span class="QUOTE">"on"</span>.</p>
</li>
<li>
- <p><span class="QUOTE">"Bugs"</span> in the programming code that
- makes up <span class="APPLICATION">Privoxy</span>, such as that
- might cause a crash. Documentation issues, for example spelling
+ <p><span class="QUOTE">"Bugs"</span> in the programming code that makes up <span class=
+ "APPLICATION">Privoxy</span>, such as that might cause a crash. Documentation issues, for example spelling
errors and unclear descriptions, are bugs, too.</p>
</li>
</ul>
<div class="SECT3">
- <h3 class="SECT3"><a name="CONTACT-ADS" id="CONTACT-ADS">6.3.1.
- Reporting Ads or Other Configuration Problems</a></h3>
- <p>Please send feedback on ads that slipped through, innocent images
- that were blocked, sites that don't work properly, and other
- configuration related problem of <tt class=
- "FILENAME">default.action</tt> file, to <a href=
- "https://sourceforge.net/tracker/?group_id=11118&atid=460288"
- target=
- "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>,
- the Actions File Tracker.</p>
+ <h3 class="SECT3"><a name="CONTACT-ADS" id="CONTACT-ADS">6.3.1. Reporting Ads or Other Configuration
+ Problems</a></h3>
+ <p>Please send feedback on ads that slipped through, innocent images that were blocked, sites that don't work
+ properly, and other configuration related problem of <tt class="FILENAME">default.action</tt> file, to <a href=
+ "https://sourceforge.net/tracker/?group_id=11118&atid=460288" target=
+ "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>, the Actions File Tracker.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="CONTACT-BUGS" id="CONTACT-BUGS">6.3.2.
- Reporting Bugs</a></h3>
- <p>Before reporting bugs, please make sure that the bug has
- <span class="emphasis"><i class="EMPHASIS">not already been
- submitted</i></span> and observe the additional hints at the top of
- the <a href=
- "https://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118"
- target="_top">submit form</a>. If already submitted, please feel free
- to add any info to the original report that might help to solve the
+ <h3 class="SECT3"><a name="CONTACT-BUGS" id="CONTACT-BUGS">6.3.2. Reporting Bugs</a></h3>
+ <p>Before reporting bugs, please make sure that the bug has <span class="emphasis"><i class="EMPHASIS">not
+ already been submitted</i></span> and observe the additional hints at the top of the <a href=
+ "https://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118" target="_top">submit form</a>.
+ If already submitted, please feel free to add any info to the original report that might help to solve the
issue.</p>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="SECURITY-CONTACT" id="SECURITY-CONTACT">6.4.
- Reporting security problems</a></h2>
- <p>If you discovered a security problem or merely suspect that a bug
- might be a security issue, please mail Fabian Keil
- <fk@fabiankeil.de> (OpenPGP fingerprint: 4F36 C17F 3816 9136 54A1
- E850 6918 2291 8BA2 371C).</p>
- <p>Usually you should get a response within a day, otherwise it's
- likely that either your mail or the response didn't make it. If that
- happens, please mail to the developer list to request a status
- update.</p>
+ <h2 class="SECT2"><a name="SECURITY-CONTACT" id="SECURITY-CONTACT">6.4. Reporting security problems</a></h2>
+ <p>If you discovered a security problem or merely suspect that a bug might be a security issue, please mail
+ Fabian Keil <fk@fabiankeil.de> (OpenPGP fingerprint: 4F36 C17F 3816 9136 54A1 E850 6918 2291 8BA2
+ 371C).</p>
+ <p>Usually you should get a response within a day, otherwise it's likely that either your mail or the response
+ didn't make it. If that happens, please mail to the developer list to request a status update.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="MAILING-LISTS" id="MAILING-LISTS">6.5.
- Mailing Lists</a></h2>
- <p>If you prefer to communicate through email, instead of using a web
- interface, feel free to use one of the mailing lists. To discuss issues
- that haven't been completely diagnosed yet, please use the Privoxy
- users list. Technically interested users and people who wish to
- contribute to the project are always welcome on the developers list.
- You can find an overview of all <span class=
- "APPLICATION">Privoxy</span>-related mailing lists, including list
- archives, at: <a href="https://lists.privoxy.org/mailman/listinfo"
- target="_top">https://lists.privoxy.org/mailman/listinfo</a>. The lists
- hosted on privoxy.org have been created in 2016, the previously-used
- lists hosted at SourceForge are deprecated but the archives may still
- be useful: <a href="https://sourceforge.net/mail/?group_id=11118"
- target="_top">https://sourceforge.net/mail/?group_id=11118</a>.</p>
+ <h2 class="SECT2"><a name="MAILING-LISTS" id="MAILING-LISTS">6.5. Mailing Lists</a></h2>
+ <p>If you prefer to communicate through email, instead of using a web interface, feel free to use one of the
+ mailing lists. To discuss issues that haven't been completely diagnosed yet, please use the Privoxy users list.
+ Technically interested users and people who wish to contribute to the project are always welcome on the
+ developers list. You can find an overview of all <span class="APPLICATION">Privoxy</span>-related mailing lists,
+ including list archives, at: <a href="https://lists.privoxy.org/mailman/listinfo" target=
+ "_top">https://lists.privoxy.org/mailman/listinfo</a>. The lists hosted on privoxy.org have been created in 2016,
+ the previously-used lists hosted at SourceForge are deprecated but the archives may still be useful: <a href=
+ "https://sourceforge.net/mail/?group_id=11118" target=
+ "_top">https://sourceforge.net/mail/?group_id=11118</a>.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="SF-TRACKERS" id="SF-TRACKERS">6.6.
- SourceForge support trackers</a></h2>
- <p>The <a href=
- "https://sourceforge.net/tracker/?group_id=11118&atid=211118"
- target="_top">SourceForge support trackers</a> may be used as well, but
- have various technical problems that are unlikely to be fixed anytime
- soon. If you don't get a timely response, please try the mailing list
- as well.</p>
+ <h2 class="SECT2"><a name="SF-TRACKERS" id="SF-TRACKERS">6.6. SourceForge support trackers</a></h2>
+ <p>The <a href="https://sourceforge.net/tracker/?group_id=11118&atid=211118" target="_top">SourceForge
+ support trackers</a> may be used as well, but have various technical problems that are unlikely to be fixed
+ anytime soon. If you don't get a timely response, please try the mailing list as well.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="trouble.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="copyright.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="trouble.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="copyright.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Troubleshooting</td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top">Privoxy Copyright, License
- and History</td>
+ <td width="33%" align="right" valign="top">Privoxy Copyright, License and History</td>
</tr>
</table>
</div>
<html>
<head>
<title>Privoxy Copyright, License and History</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy Frequently Asked Questions" href=
- "index.html">
- <link rel="PREVIOUS" title=
- "Contacting the developers, Bug Reporting and Feature Requests" href=
- "contact.html">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
+ <link rel="HOME" title="Privoxy Frequently Asked Questions" href="index.html">
+ <link rel="PREVIOUS" title="Contacting the developers, Bug Reporting and Feature Requests" href="contact.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy Frequently Asked
- Questions</th>
+ <th colspan="3" align="center">Privoxy Frequently Asked Questions</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="contact.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="contact.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
<td width="10%" align="right" valign="bottom"> </td>
</tr>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="COPYRIGHT" id="COPYRIGHT">7. Privoxy
- Copyright, License and History</a></h1>
- <p>Copyright � 2001-2017 by Privoxy Developers <code class=
- "EMAIL"><<a href=
+ <h1 class="SECT1"><a name="COPYRIGHT" id="COPYRIGHT">7. Privoxy Copyright, License and History</a></h1>
+ <p>Copyright � 2001-2017 by Privoxy Developers <code class="EMAIL"><<a href=
"mailto:privoxy-devel@lists.privoxy.org">privoxy-devel@lists.privoxy.org</a>></code></p>
- <p>Some source code is based on code Copyright � 1997 by Anonymous Coders
- and Junkbusters, Inc. and licensed under the <i class="CITETITLE">GNU
- General Public License</i>.</p>
- <p>Portions of this document are <span class="QUOTE">"borrowed"</span>
- from the original <span class="APPLICATION">Junkbuster</span> (tm) FAQ,
- and modified as appropriate for <span class=
+ <p>Some source code is based on code Copyright � 1997 by Anonymous Coders and Junkbusters, Inc. and licensed under
+ the <i class="CITETITLE">GNU General Public License</i>.</p>
+ <p>Portions of this document are <span class="QUOTE">"borrowed"</span> from the original <span class=
+ "APPLICATION">Junkbuster</span> (tm) FAQ, and modified as appropriate for <span class=
"APPLICATION">Privoxy</span>.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="AEN1507" id="AEN1507">7.1. License</a></h2>
- <p><span class="APPLICATION">Privoxy</span> is free software; you can
- redistribute it and/or modify it under the terms of the <i class=
- "CITETITLE">GNU General Public License</i>, version 2, as published by
- the Free Software Foundation.</p>
- <p><span class="APPLICATION">Privoxy</span> is distributed in the hope
- that it will be useful, but WITHOUT ANY WARRANTY; without even the
- implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the <a href=
- "https://www.privoxy.org/user-manual/copyright.html#LICENSE" target=
- "_top"><i class="CITETITLE">license</i></a> for details.</p>
+ <h2 class="SECT2"><a name="AEN1518" id="AEN1518">7.1. License</a></h2>
+ <p><span class="APPLICATION">Privoxy</span> is free software; you can redistribute it and/or modify it under the
+ terms of the <i class="CITETITLE">GNU General Public License</i>, version 2, as published by the Free Software
+ Foundation.</p>
+ <p><span class="APPLICATION">Privoxy</span> is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ <a href="https://www.privoxy.org/user-manual/copyright.html#LICENSE" target="_top"><i class=
+ "CITETITLE">license</i></a> for details.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="AEN1516" id="AEN1516">7.2. History</a></h2>
- <p>A long time ago, there was the <span class="APPLICATION">Internet
- Junkbuster</span>, by Anonymous Coders and Junkbusters Corporation.
- This saved many users a lot of pain in the early days of web
- advertising and user tracking.</p>
- <p>But the web, its protocols and standards, and with it, the
- techniques for forcing ads on users, give up autonomy over their
- browsing, and for tracking them, keeps evolving. Unfortunately, the
- <span class="APPLICATION">Internet Junkbuster</span> did not. Version
- 2.0.2, published in 1998, was the last official release, available from
- Junkbusters Corporation. Fortunately, it had been released under the
- GNU <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
- target="_top">GPL</a>, which allowed further development by others.</p>
- <p>So Stefan Waldherr started maintaining an improved version of the
- software, to which eventually a number of people contributed patches.
- It could already replace banners with a transparent image, and had a
- first version of pop-up killing, but it was still very closely based on
- the original, with all its limitations, such as the lack of HTTP/1.1
- support, flexible per-site configuration, or content modification. The
- last release from this effort was version 2.0.2-10, published in
- 2000.</p>
- <p>Then, some <a href=
- "https://www.privoxy.org/user-manual/copyright.html#AUTHORS" target=
- "_top">developers</a> picked up the thread, and started turning the
- software inside out, upside down, and then reassembled it, adding many
- <a href=
- "https://www.privoxy.org/user-manual/introduction.html#FEATURES"
- target="_top">new features</a> along the way.</p>
- <p>The result of this is <span class="APPLICATION">Privoxy</span>,
- whose first stable version, 3.0, was released August, 2002.</p>
- <p>As of 2012 the Junkbusters Corporation's website
- (http://www.junkbusters.com/) has been shut down, but Privoxy is still
- actively maintained.</p>
+ <h2 class="SECT2"><a name="AEN1527" id="AEN1527">7.2. History</a></h2>
+ <p>A long time ago, there was the <span class="APPLICATION">Internet Junkbuster</span>, by Anonymous Coders and
+ Junkbusters Corporation. This saved many users a lot of pain in the early days of web advertising and user
+ tracking.</p>
+ <p>But the web, its protocols and standards, and with it, the techniques for forcing ads on users, give up
+ autonomy over their browsing, and for tracking them, keeps evolving. Unfortunately, the <span class=
+ "APPLICATION">Internet Junkbuster</span> did not. Version 2.0.2, published in 1998, was the last official
+ release, available from Junkbusters Corporation. Fortunately, it had been released under the GNU <a href=
+ "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" target="_top">GPL</a>, which allowed further development
+ by others.</p>
+ <p>So Stefan Waldherr started maintaining an improved version of the software, to which eventually a number of
+ people contributed patches. It could already replace banners with a transparent image, and had a first version of
+ pop-up killing, but it was still very closely based on the original, with all its limitations, such as the lack
+ of HTTP/1.1 support, flexible per-site configuration, or content modification. The last release from this effort
+ was version 2.0.2-10, published in 2000.</p>
+ <p>Then, some <a href="https://www.privoxy.org/user-manual/copyright.html#AUTHORS" target="_top">developers</a>
+ picked up the thread, and started turning the software inside out, upside down, and then reassembled it, adding
+ many <a href="https://www.privoxy.org/user-manual/introduction.html#FEATURES" target="_top">new features</a>
+ along the way.</p>
+ <p>The result of this is <span class="APPLICATION">Privoxy</span>, whose first stable version, 3.0, was released
+ August, 2002.</p>
+ <p>As of 2012 the Junkbusters Corporation's website (http://www.junkbusters.com/) has been shut down, but Privoxy
+ is still actively maintained.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="contact.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
+ <td width="33%" align="left" valign="top"><a href="contact.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
<td width="33%" align="right" valign="top"> </td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">Contacting the developers,
- Bug Reporting and Feature Requests</td>
+ <td width="33%" align="left" valign="top">Contacting the developers, Bug Reporting and Feature Requests</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top"> </td>
</tr>
<html>
<head>
<title>General Information</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy Frequently Asked Questions" href=
- "index.html">
- <link rel="PREVIOUS" title="Privoxy Frequently Asked Questions" href=
- "index.html">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
+ <link rel="HOME" title="Privoxy Frequently Asked Questions" href="index.html">
+ <link rel="PREVIOUS" title="Privoxy Frequently Asked Questions" href="index.html">
<link rel="NEXT" title="Installation" href="installation.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy Frequently Asked
- Questions</th>
+ <th colspan="3" align="center">Privoxy Frequently Asked Questions</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="index.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="index.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "installation.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="installation.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="GENERAL" id="GENERAL">1. General
- Information</a></h1>
+ <h1 class="SECT1"><a name="GENERAL" id="GENERAL">1. General Information</a></h1>
<div class="SECT2">
- <h3 class="SECT2"><a name="WHO-USES" id="WHO-USES">1.1. Who should give
- <span class="APPLICATION">Privoxy</span> a try?</a></h3>
- <p>Anyone who is interested in security, privacy, or in finer-grained
- control over their web and Internet experience.</p>
+ <h3 class="SECT2"><a name="WHO-USES" id="WHO-USES">1.1. Who should give <span class="APPLICATION">Privoxy</span>
+ a try?</a></h3>
+ <p>Anyone who is interested in security, privacy, or in finer-grained control over their web and Internet
+ experience.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="BESTCHOICE" id="BESTCHOICE">1.2. Is Privoxy
- the best choice for me?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> is certainly a good choice,
- especially for those who want more control and security. Those with the
- willingness to read the documentation and the ability to fine-tune
- their installation will benefit the most.</p>
- <p>One of <span class="APPLICATION">Privoxy's</span> strengths is that
- it is highly configurable giving you the ability to completely
- personalize your installation. Being familiar with, or at least having
- an interest in learning about <a href=
- "http://en.wikipedia.org/wiki/Http" target="_top">HTTP</a> and other
- networking protocols, <a href="http://en.wikipedia.org/wiki/Html"
- target="_top">HTML</a>, and <a href=
- "http://en.wikipedia.org/wiki/Regular_expressions" target=
- "_top"><span class="QUOTE">"Regular Expressions"</span></a> will be a
- big plus and will help you get the most out of <span class=
- "APPLICATION">Privoxy</span>. A new installation just includes a very
- basic configuration. The user should take this as a starting point
- only, and enhance it as he or she sees fit. In fact, the user is
- encouraged, and expected to, fine-tune the configuration.</p>
- <p>Much of <span class="APPLICATION">Privoxy's</span> configuration can
- be done with a <a href="http://en.wikipedia.org/wiki/Web_browser"
- target="_top">Web browser</a>. But there are areas where configuration
- is done using a <a href="http://en.wikipedia.org/wiki/Text_editors"
- target="_top">text editor</a> to edit configuration files. Also note
- that the web-based action editor doesn't use authentication and should
- only be enabled in environments where all clients with access to
- <span class="APPLICATION">Privoxy</span> listening port can be
- trusted.</p>
+ <h3 class="SECT2"><a name="BESTCHOICE" id="BESTCHOICE">1.2. Is Privoxy the best choice for me?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> is certainly a good choice, especially for those who want more
+ control and security. Those with the willingness to read the documentation and the ability to fine-tune their
+ installation will benefit the most.</p>
+ <p>One of <span class="APPLICATION">Privoxy's</span> strengths is that it is highly configurable giving you the
+ ability to completely personalize your installation. Being familiar with, or at least having an interest in
+ learning about <a href="http://en.wikipedia.org/wiki/Http" target="_top">HTTP</a> and other networking protocols,
+ <a href="http://en.wikipedia.org/wiki/Html" target="_top">HTML</a>, and <a href=
+ "http://en.wikipedia.org/wiki/Regular_expressions" target="_top"><span class="QUOTE">"Regular
+ Expressions"</span></a> will be a big plus and will help you get the most out of <span class=
+ "APPLICATION">Privoxy</span>. A new installation just includes a very basic configuration. The user should take
+ this as a starting point only, and enhance it as he or she sees fit. In fact, the user is encouraged, and
+ expected to, fine-tune the configuration.</p>
+ <p>Much of <span class="APPLICATION">Privoxy's</span> configuration can be done with a <a href=
+ "http://en.wikipedia.org/wiki/Web_browser" target="_top">Web browser</a>. But there are areas where configuration
+ is done using a <a href="http://en.wikipedia.org/wiki/Text_editors" target="_top">text editor</a> to edit
+ configuration files. Also note that the web-based action editor doesn't use authentication and should only be
+ enabled in environments where all clients with access to <span class="APPLICATION">Privoxy</span> listening port
+ can be trusted.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="PROXYMORON" id="PROXYMORON">1.3. What is a
- <span class="QUOTE">"proxy"</span>? How does Privoxy work?</a></h3>
- <p>A <a href="http://en.wikipedia.org/wiki/Proxy_server" target=
- "_top">web proxy</a> is a service, based on a software such as
- <span class="APPLICATION">Privoxy</span>, that clients (i.e. browsers)
- can use instead of connecting to web servers directly. The clients then
- ask the proxy to request objects (web pages, images, movies etc) on
- their behalf and to forward the data to the clients. It is a
- <span class="QUOTE">"go-between"</span>. For details, see <a href=
- "http://en.wikipedia.org/wiki/Proxy_server" target="_top">Wikipedia's
- proxy definition</a>.</p>
- <p>There are many reasons to use web proxies, such as security
- (firewalling), efficiency (caching) and others, and there are any
- number of proxies to accommodate those needs.</p>
- <p><span class="APPLICATION">Privoxy</span> is a proxy that is
- primarily focused on privacy enhancement, ad and junk elimination and
- freeing the user from restrictions placed on his activities. Sitting
- between your browser(s) and the Internet, it is in a perfect position
- to filter outbound personal information that your browser is leaking,
- as well as inbound junk. It uses a variety of techniques to do this,
- all of which are under your complete control via the various
- configuration files and options. Being a proxy also makes it easier to
- share configurations among multiple browsers and/or users.</p>
+ <h3 class="SECT2"><a name="PROXYMORON" id="PROXYMORON">1.3. What is a <span class="QUOTE">"proxy"</span>? How
+ does Privoxy work?</a></h3>
+ <p>A <a href="http://en.wikipedia.org/wiki/Proxy_server" target="_top">web proxy</a> is a service, based on a
+ software such as <span class="APPLICATION">Privoxy</span>, that clients (i.e. browsers) can use instead of
+ connecting to web servers directly. The clients then ask the proxy to request objects (web pages, images, movies
+ etc) on their behalf and to forward the data to the clients. It is a <span class="QUOTE">"go-between"</span>. For
+ details, see <a href="http://en.wikipedia.org/wiki/Proxy_server" target="_top">Wikipedia's proxy
+ definition</a>.</p>
+ <p>There are many reasons to use web proxies, such as security (firewalling), efficiency (caching) and others,
+ and there are any number of proxies to accommodate those needs.</p>
+ <p><span class="APPLICATION">Privoxy</span> is a proxy that is primarily focused on privacy enhancement, ad and
+ junk elimination and freeing the user from restrictions placed on his activities. Sitting between your browser(s)
+ and the Internet, it is in a perfect position to filter outbound personal information that your browser is
+ leaking, as well as inbound junk. It uses a variety of techniques to do this, all of which are under your
+ complete control via the various configuration files and options. Being a proxy also makes it easier to share
+ configurations among multiple browsers and/or users.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="OTHERSTUFF" id="OTHERSTUFF">1.4. Does
- Privoxy do anything more than ad blocking?</a></h3>
- <p>Yes, ad blocking is but one possible use. There are many, many ways
- <span class="APPLICATION">Privoxy</span> can be used to sanitize and
- customize web browsing.</p>
+ <h3 class="SECT2"><a name="OTHERSTUFF" id="OTHERSTUFF">1.4. Does Privoxy do anything more than ad
+ blocking?</a></h3>
+ <p>Yes, ad blocking is but one possible use. There are many, many ways <span class="APPLICATION">Privoxy</span>
+ can be used to sanitize and customize web browsing.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="NEWJB" id="NEWJB">1.5. What is this new
- version of <span class="QUOTE">"Junkbuster"</span>?</a></h3>
- <p>A long time ago, there was the <span class="APPLICATION">Internet
- Junkbuster</span>, by Anonymous Coders and Junkbusters Corporation.
- This saved many users a lot of pain in the early days of web
- advertising and user tracking.</p>
- <p>But the web, its protocols and standards, and with it, the
- techniques for forcing ads on users, give up autonomy over their
- browsing, and for tracking them, keeps evolving. Unfortunately, the
- <span class="APPLICATION">Internet Junkbuster</span> did not. Version
- 2.0.2, published in 1998, was the last official release, available from
- Junkbusters Corporation. Fortunately, it had been released under the
- GNU <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
- target="_top">GPL</a>, which allowed further development by others.</p>
- <p>So Stefan Waldherr started maintaining an improved version of the
- software, to which eventually a number of people contributed patches.
- It could already replace banners with a transparent image, and had a
- first version of pop-up killing, but it was still very closely based on
- the original, with all its limitations, such as the lack of HTTP/1.1
- support, flexible per-site configuration, or content modification. The
- last release from this effort was version 2.0.2-10, published in
- 2000.</p>
- <p>Then, some <a href=
- "https://www.privoxy.org/user-manual/copyright.html#AUTHORS" target=
- "_top">developers</a> picked up the thread, and started turning the
- software inside out, upside down, and then reassembled it, adding many
- <a href=
- "https://www.privoxy.org/user-manual/introduction.html#FEATURES"
- target="_top">new features</a> along the way.</p>
- <p>The result of this is <span class="APPLICATION">Privoxy</span>,
- whose first stable version, 3.0, was released August, 2002.</p>
- <p>As of 2012 the Junkbusters Corporation's website
- (http://www.junkbusters.com/) has been shut down, but Privoxy is still
- actively maintained.</p>
+ <h3 class="SECT2"><a name="NEWJB" id="NEWJB">1.5. What is this new version of <span class=
+ "QUOTE">"Junkbuster"</span>?</a></h3>
+ <p>A long time ago, there was the <span class="APPLICATION">Internet Junkbuster</span>, by Anonymous Coders and
+ Junkbusters Corporation. This saved many users a lot of pain in the early days of web advertising and user
+ tracking.</p>
+ <p>But the web, its protocols and standards, and with it, the techniques for forcing ads on users, give up
+ autonomy over their browsing, and for tracking them, keeps evolving. Unfortunately, the <span class=
+ "APPLICATION">Internet Junkbuster</span> did not. Version 2.0.2, published in 1998, was the last official
+ release, available from Junkbusters Corporation. Fortunately, it had been released under the GNU <a href=
+ "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" target="_top">GPL</a>, which allowed further development
+ by others.</p>
+ <p>So Stefan Waldherr started maintaining an improved version of the software, to which eventually a number of
+ people contributed patches. It could already replace banners with a transparent image, and had a first version of
+ pop-up killing, but it was still very closely based on the original, with all its limitations, such as the lack
+ of HTTP/1.1 support, flexible per-site configuration, or content modification. The last release from this effort
+ was version 2.0.2-10, published in 2000.</p>
+ <p>Then, some <a href="https://www.privoxy.org/user-manual/copyright.html#AUTHORS" target="_top">developers</a>
+ picked up the thread, and started turning the software inside out, upside down, and then reassembled it, adding
+ many <a href="https://www.privoxy.org/user-manual/introduction.html#FEATURES" target="_top">new features</a>
+ along the way.</p>
+ <p>The result of this is <span class="APPLICATION">Privoxy</span>, whose first stable version, 3.0, was released
+ August, 2002.</p>
+ <p>As of 2012 the Junkbusters Corporation's website (http://www.junkbusters.com/) has been shut down, but Privoxy
+ is still actively maintained.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="WHYPRIVOXY" id="WHYPRIVOXY">1.6. Why
- <span class="QUOTE">"Privoxy"</span>? Why change the name from
- Junkbuster at all?</a></h3>
- <p>Though outdated, Junkbusters Corporation continued to offer their
- original version of the <span class="APPLICATION">Internet
- Junkbuster</span> for a while, so publishing our <span class=
- "APPLICATION">Junkbuster</span>-derived software under the same name
- would have led to confusion.</p>
- <p>There were also potential legal reasons not to use the <span class=
- "APPLICATION">Junkbuster</span> name, as it was (and maybe still is) a
- registered trademark of Junkbusters Corporation. There were, however,
- no objections from Junkbusters Corporation to the <span class=
- "APPLICATION">Privoxy</span> project itself, and they, in fact, shared
- our ideals and goals.</p>
- <p>The Privoxy developers also believed that there were so many
- improvements over the original code, that it was time to make a clean
- break from the past and make a name in their own right.</p>
- <p><span class="APPLICATION">Privoxy</span> is the <span class=
- "QUOTE">"<span class="emphasis"><i class="EMPHASIS">Privacy Enhancing
- Proxy</i></span>"</span>. Also, its content modification and junk
- suppression gives <span class="emphasis"><i class=
- "EMPHASIS">you</i></span>, the user, more control, more freedom, and
- allows you to browse your personal and <span class=
- "QUOTE">"<span class="emphasis"><i class="EMPHASIS">private</i></span>
+ <h3 class="SECT2"><a name="WHYPRIVOXY" id="WHYPRIVOXY">1.6. Why <span class="QUOTE">"Privoxy"</span>? Why change
+ the name from Junkbuster at all?</a></h3>
+ <p>Though outdated, Junkbusters Corporation continued to offer their original version of the <span class=
+ "APPLICATION">Internet Junkbuster</span> for a while, so publishing our <span class=
+ "APPLICATION">Junkbuster</span>-derived software under the same name would have led to confusion.</p>
+ <p>There were also potential legal reasons not to use the <span class="APPLICATION">Junkbuster</span> name, as it
+ was (and maybe still is) a registered trademark of Junkbusters Corporation. There were, however, no objections
+ from Junkbusters Corporation to the <span class="APPLICATION">Privoxy</span> project itself, and they, in fact,
+ shared our ideals and goals.</p>
+ <p>The Privoxy developers also believed that there were so many improvements over the original code, that it was
+ time to make a clean break from the past and make a name in their own right.</p>
+ <p><span class="APPLICATION">Privoxy</span> is the <span class="QUOTE">"<span class="emphasis"><i class=
+ "EMPHASIS">Privacy Enhancing Proxy</i></span>"</span>. Also, its content modification and junk suppression gives
+ <span class="emphasis"><i class="EMPHASIS">you</i></span>, the user, more control, more freedom, and allows you
+ to browse your personal and <span class="QUOTE">"<span class="emphasis"><i class="EMPHASIS">private</i></span>
edition"</span> of the web.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="DIFFERS" id="DIFFERS">1.7. How does Privoxy
- differ from the old Junkbuster?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> picks up where <span class=
- "APPLICATION">Junkbuster</span> left off. <span class=
- "APPLICATION">Privoxy</span> still blocks ads and banners, still
- manages <a href="http://en.wikipedia.org/wiki/Browser_cookie" target=
- "_top">cookies</a>, and still helps protect your privacy. But, most of
- these features have been enhanced, and many new ones have been added,
- all in the same vein.</p>
+ <h3 class="SECT2"><a name="DIFFERS" id="DIFFERS">1.7. How does Privoxy differ from the old Junkbuster?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> picks up where <span class="APPLICATION">Junkbuster</span> left off.
+ <span class="APPLICATION">Privoxy</span> still blocks ads and banners, still manages <a href=
+ "http://en.wikipedia.org/wiki/Browser_cookie" target="_top">cookies</a>, and still helps protect your privacy.
+ But, most of these features have been enhanced, and many new ones have been added, all in the same vein.</p>
<p><span class="APPLICATION">Privoxy</span>'s new features include:</p>
<ul>
<li>
- <p>Supports "Connection: keep-alive". Outgoing connections can be
- kept alive independently from the client.</p>
+ <p>Supports "Connection: keep-alive". Outgoing connections can be kept alive independently from the
+ client.</p>
</li>
<li>
- <p>Supports IPv6, provided the operating system does so too, and
- the configure script detects it.</p>
+ <p>Supports IPv6, provided the operating system does so too, and the configure script detects it.</p>
</li>
<li>
- <p>Supports tagging which allows to change the behaviour based on
- client and server headers.</p>
+ <p>Supports tagging which allows to change the behaviour based on client and server headers.</p>
</li>
<li>
- <p>Can be run as an "intercepting" proxy, which obviates the need
- to configure browsers individually.</p>
+ <p>Can be run as an "intercepting" proxy, which obviates the need to configure browsers individually.</p>
</li>
<li>
- <p>Sophisticated actions and filters for manipulating both server
- and client headers.</p>
+ <p>Sophisticated actions and filters for manipulating both server and client headers.</p>
</li>
<li>
<p>Can be chained with other proxies.</p>
</li>
<li>
- <p>Integrated browser-based configuration and control utility at
- <a href="http://config.privoxy.org/" target=
- "_top">http://config.privoxy.org/</a> (shortcut: <a href=
- "http://p.p/" target="_top">http://p.p/</a>). Browser-based tracing
- of rule and filter effects. Remote toggling.</p>
+ <p>Integrated browser-based configuration and control utility at <a href="http://config.privoxy.org/" target=
+ "_top">http://config.privoxy.org/</a> (shortcut: <a href="http://p.p/" target="_top">http://p.p/</a>).
+ Browser-based tracing of rule and filter effects. Remote toggling.</p>
</li>
<li>
- <p>Web page filtering (text replacements, removes banners based on
- size, invisible <span class="QUOTE">"web-bugs"</span> and HTML
- annoyances, etc.)</p>
+ <p>Web page filtering (text replacements, removes banners based on size, invisible <span class=
+ "QUOTE">"web-bugs"</span> and HTML annoyances, etc.)</p>
</li>
<li>
- <p>Modularized configuration that allows for standard settings and
- user settings to reside in separate files, so that installing
- updated actions files won't overwrite individual user settings.</p>
+ <p>Modularized configuration that allows for standard settings and user settings to reside in separate files,
+ so that installing updated actions files won't overwrite individual user settings.</p>
</li>
<li>
- <p>Support for Perl Compatible Regular Expressions in the
- configuration files, and a more sophisticated and flexible
- configuration syntax.</p>
+ <p>Support for Perl Compatible Regular Expressions in the configuration files, and a more sophisticated and
+ flexible configuration syntax.</p>
</li>
<li>
<p>GIF de-animation.</p>
</li>
<li>
- <p>Bypass many click-tracking scripts (avoids script
- redirection).</p>
+ <p>Bypass many click-tracking scripts (avoids script redirection).</p>
</li>
<li>
- <p>User-customizable HTML templates for most proxy-generated pages
- (e.g. "blocked" page).</p>
+ <p>User-customizable HTML templates for most proxy-generated pages (e.g. "blocked" page).</p>
</li>
<li>
<p>Auto-detection and re-reading of config file changes.</p>
</li>
<li>
- <p>Most features are controllable on a per-site or per-location
- basis.</p>
+ <p>Most features are controllable on a per-site or per-location basis.</p>
</li>
<li>
- <p>Many smaller new features added, limitations and bugs
- removed.</p>
+ <p>Many smaller new features added, limitations and bugs removed.</p>
</li>
</ul>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="WHATSANAD" id="WHATSANAD">1.8. How does
- Privoxy know what is an ad, and what is not?</a></h3>
- <p><span class="APPLICATION">Privoxy</span>'s approach to blocking ads
- is twofold:</p>
- <p>First, there are certain patterns in the <span class=
- "emphasis"><i class="EMPHASIS">locations</i></span> (URLs) of banner
- images. This applies to both the path (you wouldn't guess how many web
- sites serve their banners from a directory called <span class=
- "QUOTE">"banners"</span>!) and the host (blocking the big banner
- hosting services like doublecklick.net already helps a lot).
- <span class="APPLICATION">Privoxy</span> takes advantage of this fact
- by using <a href="../user-manual/actions-file.html#AF-PATTERNS" target=
- "_top">URL patterns</a> to sort out and block the requests for things
- that sound like they would be ads or banners.</p>
- <p>Second, banners tend to come in certain <span class=
- "emphasis"><i class="EMPHASIS">sizes</i></span>. But you can't tell the
- size of an image by its URL without downloading it, and if you do, it's
- too late to save bandwidth. Therefore, <span class=
- "APPLICATION">Privoxy</span> also inspects the HTML sources of web
- pages while they are loaded, and replaces references to images with
- standard banner sizes by dummy references, so that your browser doesn't
- request them anymore in the first place.</p>
- <p>Both of this involves a certain amount of guesswork and is, of
- course, freely and readily configurable.</p>
+ <h3 class="SECT2"><a name="WHATSANAD" id="WHATSANAD">1.8. How does Privoxy know what is an ad, and what is
+ not?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span>'s approach to blocking ads is twofold:</p>
+ <p>First, there are certain patterns in the <span class="emphasis"><i class="EMPHASIS">locations</i></span>
+ (URLs) of banner images. This applies to both the path (you wouldn't guess how many web sites serve their banners
+ from a directory called <span class="QUOTE">"banners"</span>!) and the host (blocking the big banner hosting
+ services like doublecklick.net already helps a lot). <span class="APPLICATION">Privoxy</span> takes advantage of
+ this fact by using <a href="../user-manual/actions-file.html#AF-PATTERNS" target="_top">URL patterns</a> to sort
+ out and block the requests for things that sound like they would be ads or banners.</p>
+ <p>Second, banners tend to come in certain <span class="emphasis"><i class="EMPHASIS">sizes</i></span>. But you
+ can't tell the size of an image by its URL without downloading it, and if you do, it's too late to save
+ bandwidth. Therefore, <span class="APPLICATION">Privoxy</span> also inspects the HTML sources of web pages while
+ they are loaded, and replaces references to images with standard banner sizes by dummy references, so that your
+ browser doesn't request them anymore in the first place.</p>
+ <p>Both of this involves a certain amount of guesswork and is, of course, freely and readily configurable.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="MISTAKES" id="MISTAKES">1.9. Can Privoxy
- make mistakes? This does not sound very scientific.</a></h3>
- <p>Actually, it's a black art ;-) And yes, it is always possible to
- have a broad rule accidentally block or change something by mistake.
- You will almost surely run into such situations at some point. It is
- tricky writing rules to cover every conceivable possibility, and not
- occasionally get false positives.</p>
- <p>But this should not be a big concern since the <span class=
- "APPLICATION">Privoxy</span> configuration is very flexible, and
- includes tools to help identify these types of situations so they can
- be addressed as needed, allowing you to customize your installation.
- (<a href="trouble.html#BADSITE">See the Troubleshooting section
+ <h3 class="SECT2"><a name="MISTAKES" id="MISTAKES">1.9. Can Privoxy make mistakes? This does not sound very
+ scientific.</a></h3>
+ <p>Actually, it's a black art ;-) And yes, it is always possible to have a broad rule accidentally block or
+ change something by mistake. You will almost surely run into such situations at some point. It is tricky writing
+ rules to cover every conceivable possibility, and not occasionally get false positives.</p>
+ <p>But this should not be a big concern since the <span class="APPLICATION">Privoxy</span> configuration is very
+ flexible, and includes tools to help identify these types of situations so they can be addressed as needed,
+ allowing you to customize your installation. (<a href="trouble.html#BADSITE">See the Troubleshooting section
below</a>.)</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="CONFIGORNOT" id="CONFIGORNOT">1.10. Will I
- have to configure Privoxy before I can use it?</a></h3>
- <p>That depends on your expectations. The default installation should
- give you a good starting point, and block <span class=
- "emphasis"><i class="EMPHASIS">most</i></span> ads and unwanted
- content, but many of the more advanced features are off by default, and
- require you to activate them.</p>
- <p>You do have to set up your browser to use <span class=
- "APPLICATION">Privoxy</span> (see the <a href=
+ <h3 class="SECT2"><a name="CONFIGORNOT" id="CONFIGORNOT">1.10. Will I have to configure Privoxy before I can use
+ it?</a></h3>
+ <p>That depends on your expectations. The default installation should give you a good starting point, and block
+ <span class="emphasis"><i class="EMPHASIS">most</i></span> ads and unwanted content, but many of the more
+ advanced features are off by default, and require you to activate them.</p>
+ <p>You do have to set up your browser to use <span class="APPLICATION">Privoxy</span> (see the <a href=
"installation.html#FIRSTSTEP">Installation section below</a>).</p>
- <p>And you will certainly run into situations where there are false
- positives, or ads not being blocked that you may not want to see. In
- these cases, you would certainly benefit by customizing <span class=
- "APPLICATION">Privoxy's</span> configuration to more closely match your
- individual situation. And we encourage you to do this. This is where
- the real power of <span class="APPLICATION">Privoxy</span> lies!</p>
+ <p>And you will certainly run into situations where there are false positives, or ads not being blocked that you
+ may not want to see. In these cases, you would certainly benefit by customizing <span class=
+ "APPLICATION">Privoxy's</span> configuration to more closely match your individual situation. And we encourage
+ you to do this. This is where the real power of <span class="APPLICATION">Privoxy</span> lies!</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="LAN" id="LAN">1.11. Can Privoxy run as a
- server on a network?</a></h3>
- <p>Yes, <span class="APPLICATION">Privoxy</span> runs as a server
- already, and can easily be configured to <span class=
- "QUOTE">"serve"</span> more than one client. See <a href=
- "configuration.html#LANCONFIG">How can I set up Privoxy to act as a
- proxy for my LAN</a> below.</p>
+ <h3 class="SECT2"><a name="LAN" id="LAN">1.11. Can Privoxy run as a server on a network?</a></h3>
+ <p>Yes, <span class="APPLICATION">Privoxy</span> runs as a server already, and can easily be configured to
+ <span class="QUOTE">"serve"</span> more than one client. See <a href="configuration.html#LANCONFIG">How can I set
+ up Privoxy to act as a proxy for my LAN</a> below.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="BROWSERS2" id="BROWSERS2">1.12. My browser
- does the same things as Privoxy. Why should I use Privoxy at
- all?</a></h3>
- <p>Modern browsers do indeed have <span class="emphasis"><i class=
- "EMPHASIS">some</i></span> of the same functionality as <span class=
- "APPLICATION">Privoxy</span>. Maybe this is adequate for you. But
- <span class="APPLICATION">Privoxy</span> is very versatile and
- powerful, and can probably do a number of things your browser just
- can't.</p>
- <p>In addition, a proxy is good choice if you use multiple browsers, or
- have a LAN with multiple computers since <span class=
- "APPLICATION">Privoxy</span> can run as a server application. This way
- all the configuration is in one place, and you don't have to maintain a
- similar configuration for possibly many browsers or users.</p>
- <p>Note, however, that it's recommended to leverage both your browser's
- and <span class="APPLICATION">Privoxy's</span> privacy enhancing
- features at the same time. While your browser probably lacks some
- features <span class="APPLICATION">Privoxy</span> offers, it should
- also be able to do some things more reliably, for example restricting
- and suppressing JavaScript.</p>
+ <h3 class="SECT2"><a name="BROWSERS2" id="BROWSERS2">1.12. My browser does the same things as Privoxy. Why should
+ I use Privoxy at all?</a></h3>
+ <p>Modern browsers do indeed have <span class="emphasis"><i class="EMPHASIS">some</i></span> of the same
+ functionality as <span class="APPLICATION">Privoxy</span>. Maybe this is adequate for you. But <span class=
+ "APPLICATION">Privoxy</span> is very versatile and powerful, and can probably do a number of things your browser
+ just can't.</p>
+ <p>In addition, a proxy is good choice if you use multiple browsers, or have a LAN with multiple computers since
+ <span class="APPLICATION">Privoxy</span> can run as a server application. This way all the configuration is in
+ one place, and you don't have to maintain a similar configuration for possibly many browsers or users.</p>
+ <p>Note, however, that it's recommended to leverage both your browser's and <span class=
+ "APPLICATION">Privoxy's</span> privacy enhancing features at the same time. While your browser probably lacks
+ some features <span class="APPLICATION">Privoxy</span> offers, it should also be able to do some things more
+ reliably, for example restricting and suppressing JavaScript.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="WHYTRUST" id="WHYTRUST">1.13. Why should I
- trust Privoxy?</a></h3>
- <p>The most important reason is because you have access to <span class=
- "emphasis"><i class="EMPHASIS">everything</i></span>, and you can
- control everything. You can check every line of every configuration
- file yourself. You can check every last bit of source code should you
- desire. And even if you can't read code, there should be some comfort
- in knowing that other people can, and do read it. You can build the
- software from scratch, if you want, so that you know the executable is
- clean, and that it is <span class="emphasis"><i class=
- "EMPHASIS">yours</i></span>. In fact, we encourage this level of
- scrutiny. It is one reason we use <span class=
+ <h3 class="SECT2"><a name="WHYTRUST" id="WHYTRUST">1.13. Why should I trust Privoxy?</a></h3>
+ <p>The most important reason is because you have access to <span class="emphasis"><i class=
+ "EMPHASIS">everything</i></span>, and you can control everything. You can check every line of every configuration
+ file yourself. You can check every last bit of source code should you desire. And even if you can't read code,
+ there should be some comfort in knowing that other people can, and do read it. You can build the software from
+ scratch, if you want, so that you know the executable is clean, and that it is <span class="emphasis"><i class=
+ "EMPHASIS">yours</i></span>. In fact, we encourage this level of scrutiny. It is one reason we use <span class=
"APPLICATION">Privoxy</span> ourselves.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="LICENSE" id="LICENSE">1.14. Is there is a
- license or fee? What about a warranty? Registration?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> is free software and
- licensed under the <a href=
- "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" target=
- "_top">GNU General Public License (GPL) version 2</a>. It is free to
- use, copy, modify or distribute as you wish under the terms of this
- license. Please see the <a href="copyright.html">Copyright</a> section
- for more information on the license and copyright. Or the <tt class=
- "FILENAME">LICENSE</tt> file that should be included.</p>
- <p>There is <span class="emphasis"><i class="EMPHASIS">no
- warranty</i></span> of any kind, expressed, implied or otherwise. That
- is something that would cost real money ;-) There is no registration
- either.</p>
+ <h3 class="SECT2"><a name="LICENSE" id="LICENSE">1.14. Is there is a license or fee? What about a warranty?
+ Registration?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> is free software and licensed under the <a href=
+ "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" target="_top">GNU General Public License (GPL) version
+ 2</a>. It is free to use, copy, modify or distribute as you wish under the terms of this license. Please see the
+ <a href="copyright.html">Copyright</a> section for more information on the license and copyright. Or the
+ <tt class="FILENAME">LICENSE</tt> file that should be included.</p>
+ <p>There is <span class="emphasis"><i class="EMPHASIS">no warranty</i></span> of any kind, expressed, implied or
+ otherwise. That is something that would cost real money ;-) There is no registration either.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SPYWARE" id="SPYWARE">1.15. Can Privoxy
- remove spyware? Adware? Viruses?</a></h3>
- <p>No, at least not reliably enough to trust it. <span class=
- "APPLICATION">Privoxy</span> is not designed to be a malware removal
- tool and the default configuration doesn't even try to filter out any
- malware.</p>
- <p><span class="APPLICATION">Privoxy</span> could help prevent contact
- from (known) sites that use such tactics with appropriate configuration
- rules, and thus could conceivably prevent contamination from such
- sites. However, keeping such a configuration up to date would require a
- lot of time and effort that would be better spend on keeping your
- software itself up to date so it doesn't have known
- vulnerabilities.</p>
+ <h3 class="SECT2"><a name="SPYWARE" id="SPYWARE">1.15. Can Privoxy remove spyware? Adware? Viruses?</a></h3>
+ <p>No, at least not reliably enough to trust it. <span class="APPLICATION">Privoxy</span> is not designed to be a
+ malware removal tool and the default configuration doesn't even try to filter out any malware.</p>
+ <p><span class="APPLICATION">Privoxy</span> could help prevent contact from (known) sites that use such tactics
+ with appropriate configuration rules, and thus could conceivably prevent contamination from such sites. However,
+ keeping such a configuration up to date would require a lot of time and effort that would be better spend on
+ keeping your software itself up to date so it doesn't have known vulnerabilities.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="OTHERADS" id="OTHERADS">1.16. Can I use
- Privoxy with other ad-blocking software?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> should work fine with other
- proxies and other software in general.</p>
- <p>But it is probably not necessary to use <span class=
- "APPLICATION">Privoxy</span> in conjunction with other ad-blocking
- products, and this could conceivably cause undesirable results. It
- might be better to choose one software or the other and work a little
- to tweak its configuration to your liking.</p>
+ <h3 class="SECT2"><a name="OTHERADS" id="OTHERADS">1.16. Can I use Privoxy with other ad-blocking
+ software?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> should work fine with other proxies and other software in
+ general.</p>
+ <p>But it is probably not necessary to use <span class="APPLICATION">Privoxy</span> in conjunction with other
+ ad-blocking products, and this could conceivably cause undesirable results. It might be better to choose one
+ software or the other and work a little to tweak its configuration to your liking.</p>
<p>Note that this is an advice specific to ad blocking.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="HELP-THE-DEVELOPERS" id=
- "HELP-THE-DEVELOPERS">1.17. I would like to help you, what can I
- do?</a></h3>
+ <h3 class="SECT2"><a name="HELP-THE-DEVELOPERS" id="HELP-THE-DEVELOPERS">1.17. I would like to help you, what can
+ I do?</a></h3>
<div class="SECT3">
- <h4 class="SECT3"><a name="PARTICIPATE" id="PARTICIPATE">1.17.1.
- Would you like to participate?</a></h4>
- <p>Well, we <span class="emphasis"><i class=
- "EMPHASIS">always</i></span> need help. There is something for
- everybody who wants to help us. We welcome new developers, packagers,
- testers, documentation writers or really anyone with a desire to help
- in any way. You <span class="emphasis"><i class="EMPHASIS">DO
- NOT</i></span> need to be a <span class="QUOTE">"programmer"</span>.
- There are many other tasks available. In fact, the programmers often
- can't spend as much time programming because of some of the other,
- more mundane things that need to be done, like checking the Tracker
- feedback sections or responding to user questions on the mailing
- lists.</p>
- <p>So first thing, subscribe to the <a href=
- "https://lists.privoxy.org/mailman/listinfo/privoxy-users" target=
- "_top">Privoxy Users</a> or the <a href=
- "https://lists.privoxy.org/mailman/listinfo/privoxy-devel" target=
- "_top">Privoxy Developers</a> mailing list, join the discussion, help
- out other users, provide general feedback or report problems you
- noticed.</p>
- <p>If you intend to help out with the trackers, you also might want
- to <a href="https://sourceforge.net/user/registration" target=
- "_top">get an account on SourceForge.net</a> so we don't confuse you
- with the other name-less users.</p>
- <p>We also have a <a href="../developer-manual/index.html" target=
- "_top">Developer's Manual</a>. While it is partly out of date, it's
- still worth reading.</p>
- <p>Our <a href=
- "http://ijbswa.cvs.sourceforge.net/viewvc/ijbswa/current/TODO?view=markup"
- target="_top">TODO list</a> may be of interest to you as well. Please
- let us know if you want to work on one of the items listed.</p>
+ <h4 class="SECT3"><a name="PARTICIPATE" id="PARTICIPATE">1.17.1. Would you like to participate?</a></h4>
+ <p>Well, we <span class="emphasis"><i class="EMPHASIS">always</i></span> need help. There is something for
+ everybody who wants to help us. We welcome new developers, packagers, testers, documentation writers or really
+ anyone with a desire to help in any way. You <span class="emphasis"><i class="EMPHASIS">DO NOT</i></span> need
+ to be a <span class="QUOTE">"programmer"</span>. There are many other tasks available. In fact, the programmers
+ often can't spend as much time programming because of some of the other, more mundane things that need to be
+ done, like checking the Tracker feedback sections or responding to user questions on the mailing lists.</p>
+ <p>So first thing, subscribe to the <a href="https://lists.privoxy.org/mailman/listinfo/privoxy-users" target=
+ "_top">Privoxy Users</a> or the <a href="https://lists.privoxy.org/mailman/listinfo/privoxy-devel" target=
+ "_top">Privoxy Developers</a> mailing list, join the discussion, help out other users, provide general feedback
+ or report problems you noticed.</p>
+ <p>If you intend to help out with the trackers, you also might want to <a href=
+ "https://sourceforge.net/user/registration" target="_top">get an account on SourceForge.net</a> so we don't
+ confuse you with the other name-less users.</p>
+ <p>We also have a <a href="../developer-manual/index.html" target="_top">Developer's Manual</a>. While it is
+ partly out of date, it's still worth reading.</p>
+ <p>Our <a href="http://ijbswa.cvs.sourceforge.net/viewvc/ijbswa/current/TODO?view=markup" target="_top">TODO
+ list</a> may be of interest to you as well. Please let us know if you want to work on one of the items
+ listed.</p>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="DONATE" id="DONATE">1.17.2. Would you like
- to donate?</a></h4>
+ <h4 class="SECT3"><a name="DONATE" id="DONATE">1.17.2. Would you like to donate?</a></h4>
<p>Donations are welcome. Our <a href=
- "http://ijbswa.cvs.sourceforge.net/viewvc/ijbswa/current/TODO?view=markup"
- target="_top">TODO list</a> is rather long and being able to pay one
- (or more) developers to work on Privoxy would make a huge difference,
- even if it was only for a couple of weeks. Donations may also be used
- for Privoxy-related travel expenses (for example to attend
- conferences), for hardware used for Privoxy development and for
- hosting expenses etc.</p>
- <p><span class="APPLICATION">Privoxy</span> is an associated project
- of <a href="https://www.spi-inc.org/" target="_top">Software in the
- Public Interest (SPI)</a>, which allows us to receive tax-deductible
- donations in the United States. You can <a href=
- "https://www.spi-inc.org/projects/privoxy/" target="_top">donate via
- Paypal</a> and <a href=
- "https://co.clickandpledge.com/advanced/default.aspx?wid=34115"
- target="_top">Click & Pledge</a>. For details, please have a look
- at <a href="https://www.spi-inc.org/donations" target="_top">SPI's
- general donation page</a>.</p>
- <p>You can also donate to Privoxy using a bank account or a "Paypal"
- address:</p>
- <p class="LITERALLAYOUT">
- Name on account: <a href=
- "https://www.zwiebelfreunde.de/" target="_top">Zwiebelfreunde
- e.V.</a><br>
+ "http://ijbswa.cvs.sourceforge.net/viewvc/ijbswa/current/TODO?view=markup" target="_top">TODO list</a> is
+ rather long and being able to pay one (or more) developers to work on Privoxy would make a huge difference,
+ even if it was only for a couple of weeks. Donations may also be used for Privoxy-related travel expenses (for
+ example to attend conferences), for hardware used for Privoxy development and for hosting expenses etc.</p>
+ <p><span class="APPLICATION">Privoxy</span> is an associated project of <a href="https://www.spi-inc.org/"
+ target="_top">Software in the Public Interest (SPI)</a>, which allows us to receive tax-deductible donations in
+ the United States. You can <a href="https://www.spi-inc.org/projects/privoxy/" target="_top">donate via
+ Paypal</a> and <a href="https://co.clickandpledge.com/advanced/default.aspx?wid=34115" target="_top">Click
+ & Pledge</a>. For details, please have a look at <a href="https://www.spi-inc.org/donations" target=
+ "_top">SPI's general donation page</a>.</p>
+ <p>You can also donate to Privoxy using a bank account or a "Paypal" address:</p>
+ <p class="LITERALLAYOUT"> Name on account: <a href="https://www.zwiebelfreunde.de/" target=
+ "_top">Zwiebelfreunde e.V.</a><br>
IBAN: DE95430609671126825604<br>
BIC: GENODEM1GLS<br>
Bank: GLS Bank</p>
- <p class="LITERALLAYOUT">
- "Paypal" address: privoxy@zwiebelfreunde.de</p>
- <p>Donations made through Zwiebelfreunde e.V. are tax-deductible in
- Germany and other countries that recognize German charitable clubs.
- Feel free to use the Subject field to provide a name to be credited
- and a list of TODO list items you are interested in the most. For
- example: Max Mustermann: #16, #1, #14.</p>
- <p>Note that donations made through Zwiebelfreunde e.V. currently
- can't be checked automatically so you may not get credited right
- away. The credits currently reflect donations received before
- 2016-01-14.</p>
- <p>If you have any questions regarding donations please mail to
- either the public user mailing list or, if it's a private matter, to
- <a href="mailto:fk@fabiankeil.de" target="_top">Fabian Keil</a>
- (Privoxy's SPI liaison) directly.</p>
+ <p class="LITERALLAYOUT"> "Paypal" address: privoxy@zwiebelfreunde.de</p>
+ <p>Donations made through Zwiebelfreunde e.V. are tax-deductible in Germany and other countries that recognize
+ German charitable clubs. Feel free to use the Subject field to provide a name to be credited and a list of TODO
+ list items you are interested in the most. For example: Max Mustermann: #16, #1, #14.</p>
+ <p>Note that donations made through Zwiebelfreunde e.V. currently can't be checked automatically so you may not
+ get credited right away. The credits currently reflect donations received before 2016-01-14.</p>
+ <p>If you have any questions regarding donations please mail to either the public user mailing list or, if it's
+ a private matter, to <a href="mailto:fk@fabiankeil.de" target="_top">Fabian Keil</a> (Privoxy's SPI liaison)
+ directly.</p>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="SPONSOR" id="SPONSOR">1.18. How can I become
- a sponsor and get my logo or link on privoxy.org?</a></h2>
- <p>We are currently offering the following sponsor levels as an
- experiment:</p>
+ <h2 class="SECT2"><a name="SPONSOR" id="SPONSOR">1.18. How can I become a sponsor and get my logo or link on
+ privoxy.org?</a></h2>
+ <p>We are currently offering the following sponsor levels as an experiment:</p>
<div class="VARIABLELIST">
<dl>
<dt>Gold (10000 EUR/year)</dt>
<dd>
- <p>Logo shown at the bottom of the <a href=
- "https://www.privoxy.org/" target="_top">Privoxy homepage</a>.
- Logo, link and self description on the <a href=
- "https://www.privoxy.org/sponsors/" target="_top">sponsor
+ <p>Logo shown at the bottom of the <a href="https://www.privoxy.org/" target="_top">Privoxy homepage</a>.
+ Logo, link and self description on the <a href="https://www.privoxy.org/sponsors/" target="_top">sponsor
page</a>.</p>
</dd>
<dt>Silver (1000 EUR/year)</dt>
<dd>
- <p>Logo shown randomly at the bottom of the <a href=
- "https://www.privoxy.org/" target="_top">Privoxy homepage</a>.
- Logo, link and self description on the <a href=
- "https://www.privoxy.org/sponsors/" target="_top">sponsor
- page</a>.</p>
+ <p>Logo shown randomly at the bottom of the <a href="https://www.privoxy.org/" target="_top">Privoxy
+ homepage</a>. Logo, link and self description on the <a href="https://www.privoxy.org/sponsors/" target=
+ "_top">sponsor page</a>.</p>
</dd>
<dt>Bronze (500 EUR/year)</dt>
<dd>
- <p>Logo and link on the <a href=
- "https://www.privoxy.org/sponsors/" target="_top">sponsor
- page</a>.</p>
+ <p>Logo and link on the <a href="https://www.privoxy.org/sponsors/" target="_top">sponsor page</a>.</p>
</dd>
</dl>
</div>
- <p>The logo sizes depend on the sponsor level. Logos are served from
- our server, no requests are made to the sponsor website unless the
- links are being used.</p>
- <p>The details may change over time but changes will only affect new
- sponsors (or existing sponsors that explicitly agreed to the
- changes).</p>
- <p>If you want to become a sponsor, please contact <a href=
- "mailto:fk@fabiankeil.de" target="_top">Fabian Keil</a>. New sponsors
- are only accepted if no developer objects.</p>
+ <p>The logo sizes depend on the sponsor level. Logos are served from our server, no requests are made to the
+ sponsor website unless the links are being used.</p>
+ <p>The details may change over time but changes will only affect new sponsors (or existing sponsors that
+ explicitly agreed to the changes).</p>
+ <p>If you want to become a sponsor, please contact <a href="mailto:fk@fabiankeil.de" target="_top">Fabian
+ Keil</a>. New sponsors are only accepted if no developer objects.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="index.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href=
- "installation.html" accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="index.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="installation.html" accesskey="N">Next</a></td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">Privoxy Frequently Asked
- Questions</td>
+ <td width="33%" align="left" valign="top">Privoxy Frequently Asked Questions</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">Installation</td>
</tr>
<html>
<head>
<title>Privoxy Frequently Asked Questions</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="NEXT" title="General Information" href="general.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="ARTICLE">
<div class="TITLEPAGE">
- <h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy Frequently Asked
- Questions</a></h1>
- <p class="PUBDATE"><sub><a href="copyright.html">Copyright</a> �
- 2001-2016 by <a href="https://www.privoxy.org/" target="_top">Privoxy
- Developers</a></sub><br></p>
- <p class="PUBDATE">$Id: faq.sgml,v 2.135 2017/03/27 10:22:27 fabiankeil
- Exp $<br></p>
+ <h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy Frequently Asked Questions</a></h1>
+ <p class="PUBDATE"><sub><a href="copyright.html">Copyright</a> � 2001-2018 by <a href="https://www.privoxy.org/"
+ target="_top">Privoxy Developers</a></sub><br></p>
+ <p class="PUBDATE">$Id: faq.sgml,v 2.135 2017/03/27 10:22:27 fabiankeil Exp $<br></p>
<div>
<div class="ABSTRACT">
<a name="AEN9" id="AEN9"></a>
- <p>This FAQ gives quick answers to frequently asked questions about
- <a href="https://www.privoxy.org/" target="_top">Privoxy</a>. It is
- not a substitute for the <a href="../user-manual/index.html"
- target="_top"><i class="CITETITLE">Privoxy User Manual</i></a>.</p>
+ <p>This FAQ gives quick answers to frequently asked questions about <a href="https://www.privoxy.org/"
+ target="_top">Privoxy</a>. It is not a substitute for the <a href="../user-manual/index.html" target=
+ "_top"><i class="CITETITLE">Privoxy User Manual</i></a>.</p>
<p>What is Privoxy?</p>
- <p>Privoxy is a non-caching web proxy with advanced filtering
- capabilities for enhancing privacy, modifying web page data and
- HTTP headers, controlling access, and removing ads and other
- obnoxious Internet junk. Privoxy has a flexible configuration and
- can be customized to suit individual needs and tastes. It has
- application for both stand-alone systems and multi-user
- networks.</p>
+ <p>Privoxy is a non-caching web proxy with advanced filtering capabilities for enhancing privacy, modifying
+ web page data and HTTP headers, controlling access, and removing ads and other obnoxious Internet junk.
+ Privoxy has a flexible configuration and can be customized to suit individual needs and tastes. It has
+ application for both stand-alone systems and multi-user networks.</p>
<p>Privoxy is Free Software and licensed under the GNU GPLv2.</p>
- <p>Privoxy is an associated project of Software in the Public
- Interest (SPI).</p>
+ <p>Privoxy is an associated project of Software in the Public Interest (SPI).</p>
<p>Helping hands and donations are welcome:</p>
<ul>
<li>
- <p><a href=
- "https://www.privoxy.org/faq/general.html#PARTICIPATE" target=
+ <p><a href="https://www.privoxy.org/faq/general.html#PARTICIPATE" target=
"_top">https://www.privoxy.org/faq/general.html#PARTICIPATE</a></p>
</li>
<li>
- <p><a href="https://www.privoxy.org/faq/general.html#DONATE"
- target=
+ <p><a href="https://www.privoxy.org/faq/general.html#DONATE" target=
"_top">https://www.privoxy.org/faq/general.html#DONATE</a></p>
</li>
</ul>
- <p>Please note that this document is a work in progress. This copy
- represents the state at the release of version 3.0.27. You can find
- the latest version of the document at <a href=
- "https://www.privoxy.org/faq/" target=
- "_top">https://www.privoxy.org/faq/</a>. Please see the <a href=
- "contact.html">Contact section</a> if you want to contact the
- developers.</p>
+ <p>Please note that this document is a work in progress. This copy represents the state at the release of
+ version 3.0.27. You can find the latest version of the document at <a href="https://www.privoxy.org/faq/"
+ target="_top">https://www.privoxy.org/faq/</a>. Please see the <a href="contact.html">Contact section</a> if
+ you want to contact the developers.</p>
</div>
</div>
<hr>
<dt>1. <a href="general.html">General Information</a></dt>
<dd>
<dl>
- <dt>1.1. <a href="general.html#WHO-USES">Who should give
- <span class="APPLICATION">Privoxy</span> a try?</a></dt>
- <dt>1.2. <a href="general.html#BESTCHOICE">Is Privoxy the best
- choice for me?</a></dt>
- <dt>1.3. <a href="general.html#PROXYMORON">What is a <span class=
- "QUOTE">"proxy"</span>? How does Privoxy work?</a></dt>
- <dt>1.4. <a href="general.html#OTHERSTUFF">Does Privoxy do
- anything more than ad blocking?</a></dt>
- <dt>1.5. <a href="general.html#NEWJB">What is this new version of
- <span class="QUOTE">"Junkbuster"</span>?</a></dt>
- <dt>1.6. <a href="general.html#WHYPRIVOXY">Why <span class=
- "QUOTE">"Privoxy"</span>? Why change the name from Junkbuster at
- all?</a></dt>
- <dt>1.7. <a href="general.html#DIFFERS">How does Privoxy differ
- from the old Junkbuster?</a></dt>
- <dt>1.8. <a href="general.html#WHATSANAD">How does Privoxy know
- what is an ad, and what is not?</a></dt>
- <dt>1.9. <a href="general.html#MISTAKES">Can Privoxy make
- mistakes? This does not sound very scientific.</a></dt>
- <dt>1.10. <a href="general.html#CONFIGORNOT">Will I have to
- configure Privoxy before I can use it?</a></dt>
- <dt>1.11. <a href="general.html#LAN">Can Privoxy run as a server
- on a network?</a></dt>
- <dt>1.12. <a href="general.html#BROWSERS2">My browser does the
- same things as Privoxy. Why should I use Privoxy at all?</a></dt>
- <dt>1.13. <a href="general.html#WHYTRUST">Why should I trust
- Privoxy?</a></dt>
- <dt>1.14. <a href="general.html#LICENSE">Is there is a license or
- fee? What about a warranty? Registration?</a></dt>
- <dt>1.15. <a href="general.html#SPYWARE">Can Privoxy remove
- spyware? Adware? Viruses?</a></dt>
- <dt>1.16. <a href="general.html#OTHERADS">Can I use Privoxy with
- other ad-blocking software?</a></dt>
- <dt>1.17. <a href="general.html#HELP-THE-DEVELOPERS">I would like
- to help you, what can I do?</a></dt>
+ <dt>1.1. <a href="general.html#WHO-USES">Who should give <span class="APPLICATION">Privoxy</span> a
+ try?</a></dt>
+ <dt>1.2. <a href="general.html#BESTCHOICE">Is Privoxy the best choice for me?</a></dt>
+ <dt>1.3. <a href="general.html#PROXYMORON">What is a <span class="QUOTE">"proxy"</span>? How does Privoxy
+ work?</a></dt>
+ <dt>1.4. <a href="general.html#OTHERSTUFF">Does Privoxy do anything more than ad blocking?</a></dt>
+ <dt>1.5. <a href="general.html#NEWJB">What is this new version of <span class=
+ "QUOTE">"Junkbuster"</span>?</a></dt>
+ <dt>1.6. <a href="general.html#WHYPRIVOXY">Why <span class="QUOTE">"Privoxy"</span>? Why change the name
+ from Junkbuster at all?</a></dt>
+ <dt>1.7. <a href="general.html#DIFFERS">How does Privoxy differ from the old Junkbuster?</a></dt>
+ <dt>1.8. <a href="general.html#WHATSANAD">How does Privoxy know what is an ad, and what is not?</a></dt>
+ <dt>1.9. <a href="general.html#MISTAKES">Can Privoxy make mistakes? This does not sound very
+ scientific.</a></dt>
+ <dt>1.10. <a href="general.html#CONFIGORNOT">Will I have to configure Privoxy before I can use it?</a></dt>
+ <dt>1.11. <a href="general.html#LAN">Can Privoxy run as a server on a network?</a></dt>
+ <dt>1.12. <a href="general.html#BROWSERS2">My browser does the same things as Privoxy. Why should I use
+ Privoxy at all?</a></dt>
+ <dt>1.13. <a href="general.html#WHYTRUST">Why should I trust Privoxy?</a></dt>
+ <dt>1.14. <a href="general.html#LICENSE">Is there is a license or fee? What about a warranty?
+ Registration?</a></dt>
+ <dt>1.15. <a href="general.html#SPYWARE">Can Privoxy remove spyware? Adware? Viruses?</a></dt>
+ <dt>1.16. <a href="general.html#OTHERADS">Can I use Privoxy with other ad-blocking software?</a></dt>
+ <dt>1.17. <a href="general.html#HELP-THE-DEVELOPERS">I would like to help you, what can I do?</a></dt>
<dd>
<dl>
- <dt>1.17.1. <a href="general.html#PARTICIPATE">Would you like
- to participate?</a></dt>
- <dt>1.17.2. <a href="general.html#DONATE">Would you like to
- donate?</a></dt>
+ <dt>1.17.1. <a href="general.html#PARTICIPATE">Would you like to participate?</a></dt>
+ <dt>1.17.2. <a href="general.html#DONATE">Would you like to donate?</a></dt>
</dl>
</dd>
- <dt>1.18. <a href="general.html#SPONSOR">How can I become a
- sponsor and get my logo or link on privoxy.org?</a></dt>
+ <dt>1.18. <a href="general.html#SPONSOR">How can I become a sponsor and get my logo or link on
+ privoxy.org?</a></dt>
</dl>
</dd>
<dt>2. <a href="installation.html">Installation</a></dt>
<dd>
<dl>
- <dt>2.1. <a href="installation.html#WHICHBROWSERS">Which browsers
- are supported by Privoxy?</a></dt>
- <dt>2.2. <a href="installation.html#WHICHOS">Which operating
- systems are supported?</a></dt>
- <dt>2.3. <a href="installation.html#EMAIL-CLIENT">Can I use
- Privoxy with my email client?</a></dt>
- <dt>2.4. <a href="installation.html#FIRSTSTEP">I just installed
- Privoxy. Is there anything special I have to do now?</a></dt>
- <dt>2.5. <a href="installation.html#LOCALHOST">What is the proxy
- address of Privoxy?</a></dt>
- <dt>2.6. <a href="installation.html#NOTHING">I just installed
- Privoxy, and nothing is happening. All the ads are there. What's
- wrong?</a></dt>
- <dt>2.7. <a href="installation.html#NOTUSED">I get a <span class=
- "QUOTE">"Privoxy is not being used"</span> dummy page although
- Privoxy is running and being used.</a></dt>
+ <dt>2.1. <a href="installation.html#WHICHBROWSERS">Which browsers are supported by Privoxy?</a></dt>
+ <dt>2.2. <a href="installation.html#WHICHOS">Which operating systems are supported?</a></dt>
+ <dt>2.3. <a href="installation.html#EMAIL-CLIENT">Can I use Privoxy with my email client?</a></dt>
+ <dt>2.4. <a href="installation.html#FIRSTSTEP">I just installed Privoxy. Is there anything special I have
+ to do now?</a></dt>
+ <dt>2.5. <a href="installation.html#LOCALHOST">What is the proxy address of Privoxy?</a></dt>
+ <dt>2.6. <a href="installation.html#NOTHING">I just installed Privoxy, and nothing is happening. All the
+ ads are there. What's wrong?</a></dt>
+ <dt>2.7. <a href="installation.html#NOTUSED">I get a <span class="QUOTE">"Privoxy is not being used"</span>
+ dummy page although Privoxy is running and being used.</a></dt>
</dl>
</dd>
<dt>3. <a href="configuration.html">Configuration</a></dt>
<dd>
<dl>
- <dt>3.1. <a href="configuration.html#ACTIONSFILE">What exactly is
- an <span class="QUOTE">"actions"</span> file?</a></dt>
- <dt>3.2. <a href="configuration.html#ACTIONSS">The <span class=
- "QUOTE">"actions"</span> concept confuses me. Please list some of
- these <span class="QUOTE">"actions"</span>.</a></dt>
- <dt>3.3. <a href="configuration.html#ACTCONFIG">How are actions
- files configured? What is the easiest way to do this?</a></dt>
- <dt>3.4. <a href="configuration.html#AEN420">There are several
- different <span class="QUOTE">"actions"</span> files. What are
- the differences?</a></dt>
- <dt>3.5. <a href="configuration.html#GETUPDATES">Where can I get
- updated Actions Files?</a></dt>
- <dt>3.6. <a href="configuration.html#NEWCONFIG">Can I use my old
- config files?</a></dt>
- <dt>3.7. <a href="configuration.html#DIFFICULT">Why is the
- configuration so complicated?</a></dt>
- <dt>3.8. <a href="configuration.html#YAHOO">How can I make my
- Yahoo/Hotmail/Gmail account work?</a></dt>
- <dt>3.9. <a href="configuration.html#CONFIGFILES">What's the
- difference between the <span class="QUOTE">"Cautious"</span>,
- <span class="QUOTE">"Medium"</span> and <span class=
- "QUOTE">"Advanced"</span> defaults?</a></dt>
- <dt>3.10. <a href="configuration.html#BROWSECONFIG">Why can I
- change the configuration with a browser? Does that not raise
- security issues?</a></dt>
- <dt>3.11. <a href="configuration.html#FILTERFILE">What is the
- <tt class="FILENAME">default.filter</tt> file? What is a
- <span class="QUOTE">"filter"</span>?</a></dt>
- <dt>3.12. <a href="configuration.html#LANCONFIG">How can I set up
- Privoxy to act as a proxy for my LAN?</a></dt>
- <dt>3.13. <a href="configuration.html#NOSEEUM">Instead of ads,
- now I get a checkerboard pattern. I don't want to see
- anything.</a></dt>
- <dt>3.14. <a href="configuration.html#WHYSEEUM">Why would anybody
- want to see a checkerboard pattern?</a></dt>
- <dt>3.15. <a href="configuration.html#BLOCKEDBYTEXT">I see some
- images being replaced with text instead of the checkerboard
- image. Why and how do I get rid of this?</a></dt>
- <dt>3.16. <a href="configuration.html#SRVANY">Can Privoxy run as
- a service on Win2K/NT/XP?</a></dt>
- <dt>3.17. <a href="configuration.html#OTHERPROXY">How can I make
- Privoxy work with other proxies?</a></dt>
- <dt>3.18. <a href="configuration.html#PORT-80">Can I just set
- Privoxy to use port 80 and thus avoid individual browser
- configuration?</a></dt>
- <dt>3.19. <a href="configuration.html#TRANSPARENT">Can Privoxy
- run as a <span class="QUOTE">"transparent"</span> proxy?</a></dt>
- <dt>3.20. <a href="configuration.html#INTERCEPTING">Can Privoxy
- run as a <span class="QUOTE">"intercepting"</span>
- proxy?</a></dt>
- <dt>3.21. <a href="configuration.html#OUTLOOK">How can I
- configure Privoxy for use with Outlook?</a></dt>
- <dt>3.22. <a href="configuration.html#OUTLOOK-MORE">How can I
- have separate rules just for HTML mail?</a></dt>
- <dt>3.23. <a href="configuration.html#SNEAKY-COOKIES">I sometimes
- notice cookies sneaking through. How?</a></dt>
- <dt>3.24. <a href="configuration.html#EVIL-COOKIES">Are all
- cookies bad? Why?</a></dt>
- <dt>3.25. <a href="configuration.html#ALLOW-COOKIES">How can I
- allow permanent cookies for my trusted sites?</a></dt>
- <dt>3.26. <a href="configuration.html#MULTIPLES">Can I have
- separate configurations for different users?</a></dt>
- <dt>3.27. <a href="configuration.html#WHITELISTS">Can I set-up
- Privoxy as a whitelist of <span class="QUOTE">"good"</span>
+ <dt>3.1. <a href="configuration.html#ACTIONSFILE">What exactly is an <span class="QUOTE">"actions"</span>
+ file?</a></dt>
+ <dt>3.2. <a href="configuration.html#ACTIONSS">The <span class="QUOTE">"actions"</span> concept confuses
+ me. Please list some of these <span class="QUOTE">"actions"</span>.</a></dt>
+ <dt>3.3. <a href="configuration.html#ACTCONFIG">How are actions files configured? What is the easiest way
+ to do this?</a></dt>
+ <dt>3.4. <a href="configuration.html#AEN420">There are several different <span class=
+ "QUOTE">"actions"</span> files. What are the differences?</a></dt>
+ <dt>3.5. <a href="configuration.html#GETUPDATES">Where can I get updated Actions Files?</a></dt>
+ <dt>3.6. <a href="configuration.html#NEWCONFIG">Can I use my old config files?</a></dt>
+ <dt>3.7. <a href="configuration.html#DIFFICULT">Why is the configuration so complicated?</a></dt>
+ <dt>3.8. <a href="configuration.html#YAHOO">How can I make my Yahoo/Hotmail/Gmail account work?</a></dt>
+ <dt>3.9. <a href="configuration.html#CONFIGFILES">What's the difference between the <span class=
+ "QUOTE">"Cautious"</span>, <span class="QUOTE">"Medium"</span> and <span class="QUOTE">"Advanced"</span>
+ defaults?</a></dt>
+ <dt>3.10. <a href="configuration.html#BROWSECONFIG">Why can I change the configuration with a browser? Does
+ that not raise security issues?</a></dt>
+ <dt>3.11. <a href="configuration.html#FILTERFILE">What is the <tt class="FILENAME">default.filter</tt>
+ file? What is a <span class="QUOTE">"filter"</span>?</a></dt>
+ <dt>3.12. <a href="configuration.html#LANCONFIG">How can I set up Privoxy to act as a proxy for my
+ LAN?</a></dt>
+ <dt>3.13. <a href="configuration.html#NOSEEUM">Instead of ads, now I get a checkerboard pattern. I don't
+ want to see anything.</a></dt>
+ <dt>3.14. <a href="configuration.html#WHYSEEUM">Why would anybody want to see a checkerboard
+ pattern?</a></dt>
+ <dt>3.15. <a href="configuration.html#BLOCKEDBYTEXT">I see some images being replaced with text instead of
+ the checkerboard image. Why and how do I get rid of this?</a></dt>
+ <dt>3.16. <a href="configuration.html#SRVANY">Can Privoxy run as a service on Win2K/NT/XP?</a></dt>
+ <dt>3.17. <a href="configuration.html#OTHERPROXY">How can I make Privoxy work with other proxies?</a></dt>
+ <dt>3.18. <a href="configuration.html#PORT-80">Can I just set Privoxy to use port 80 and thus avoid
+ individual browser configuration?</a></dt>
+ <dt>3.19. <a href="configuration.html#TRANSPARENT">Can Privoxy run as a <span class=
+ "QUOTE">"transparent"</span> proxy?</a></dt>
+ <dt>3.20. <a href="configuration.html#INTERCEPTING">Can Privoxy run as a <span class=
+ "QUOTE">"intercepting"</span> proxy?</a></dt>
+ <dt>3.21. <a href="configuration.html#OUTLOOK">How can I configure Privoxy for use with Outlook?</a></dt>
+ <dt>3.22. <a href="configuration.html#OUTLOOK-MORE">How can I have separate rules just for HTML
+ mail?</a></dt>
+ <dt>3.23. <a href="configuration.html#SNEAKY-COOKIES">I sometimes notice cookies sneaking through.
+ How?</a></dt>
+ <dt>3.24. <a href="configuration.html#EVIL-COOKIES">Are all cookies bad? Why?</a></dt>
+ <dt>3.25. <a href="configuration.html#ALLOW-COOKIES">How can I allow permanent cookies for my trusted
sites?</a></dt>
- <dt>3.28. <a href="configuration.html#NO-ADBLOCK">How can I turn
- off ad-blocking?</a></dt>
- <dt>3.29. <a href="configuration.html#TEMPLATES">How can I have
- custom template pages, like the <span class="emphasis"><i class=
- "EMPHASIS">BLOCKED</i></span> page?</a></dt>
- <dt>3.30. <a href="configuration.html#BLOCKALL">How can I remove
- the <span class="QUOTE">"Go There Anyway"</span> link from the
- <span class="emphasis"><i class="EMPHASIS">BLOCKED</i></span>
- page?</a></dt>
+ <dt>3.26. <a href="configuration.html#MULTIPLES">Can I have separate configurations for different
+ users?</a></dt>
+ <dt>3.27. <a href="configuration.html#WHITELISTS">Can I set-up Privoxy as a whitelist of <span class=
+ "QUOTE">"good"</span> sites?</a></dt>
+ <dt>3.28. <a href="configuration.html#NO-ADBLOCK">How can I turn off ad-blocking?</a></dt>
+ <dt>3.29. <a href="configuration.html#TEMPLATES">How can I have custom template pages, like the
+ <span class="emphasis"><i class="EMPHASIS">BLOCKED</i></span> page?</a></dt>
+ <dt>3.30. <a href="configuration.html#BLOCKALL">How can I remove the <span class="QUOTE">"Go There
+ Anyway"</span> link from the <span class="emphasis"><i class="EMPHASIS">BLOCKED</i></span> page?</a></dt>
</dl>
</dd>
<dt>4. <a href="misc.html">Miscellaneous</a></dt>
<dd>
<dl>
- <dt>4.1. <a href="misc.html#SLOWSME">How much does Privoxy slow
- my browsing down? This has to add extra time to
- browsing.</a></dt>
- <dt>4.2. <a href="misc.html#LOADINGTIMES">I notice considerable
- delays in page requests. What's wrong?</a></dt>
- <dt>4.3. <a href="misc.html#CONFIGURL">What are
- "http://config.privoxy.org/" and "http://p.p/"?</a></dt>
- <dt>4.4. <a href="misc.html#NEWADS">How can I submit new ads, or
- report problems?</a></dt>
- <dt>4.5. <a href="misc.html#NEWADS2">If I do submit missed ads,
- will they be included in future updates?</a></dt>
- <dt>4.6. <a href="misc.html#NOONECARES">Why doesn't anyone answer
- my support request?</a></dt>
- <dt>4.7. <a href="misc.html#IP">How can I hide my IP
- address?</a></dt>
- <dt>4.8. <a href="misc.html#ANONFORSURE">Can Privoxy guarantee I
- am anonymous?</a></dt>
- <dt>4.9. <a href="misc.html#PROXYTEST">A test site says I am not
- using a Proxy.</a></dt>
- <dt>4.10. <a href="misc.html#TOR">How do I use Privoxy together
- with Tor?</a></dt>
- <dt>4.11. <a href="misc.html#SITEBREAK">Might some things break
- because header information or content is being altered?</a></dt>
- <dt>4.12. <a href="misc.html#CACHING">Can Privoxy act as a
- <span class="QUOTE">"caching"</span> proxy to speed up web
- browsing?</a></dt>
- <dt>4.13. <a href="misc.html#FIREWALL">What about as a firewall?
- Can Privoxy protect me?</a></dt>
- <dt>4.14. <a href="misc.html#WASTED">I have large empty spaces /
- a checkerboard pattern now where ads used to be. Why?</a></dt>
- <dt>4.15. <a href="misc.html#SSL">How can Privoxy filter Secure
- (HTTPS) URLs?</a></dt>
- <dt>4.16. <a href="misc.html#SECURE">Privoxy runs as a
- <span class="QUOTE">"server"</span>. How secure is it? Do I need
- to take any special precautions?</a></dt>
- <dt>4.17. <a href="misc.html#TURNOFF">Can I temporarily disable
- Privoxy?</a></dt>
- <dt>4.18. <a href="misc.html#REALLYOFF">When <span class=
- "QUOTE">"disabled"</span> is Privoxy totally out of the
- picture?</a></dt>
- <dt>4.19. <a href="misc.html#TURNOFF2">How can I tell Privoxy to
- totally ignore certain sites?</a></dt>
- <dt>4.20. <a href="misc.html#CRUNCH">My logs show Privoxy
- <span class="QUOTE">"crunches"</span> ads, but also its own
- internal CGI pages. What is a <span class=
- "QUOTE">"crunch"</span>?</a></dt>
- <dt>4.21. <a href="misc.html#DOWNLOADS">Can Privoxy affect files
- that I download from a webserver? FTP server?</a></dt>
- <dt>4.22. <a href="misc.html#DOWNLOADS2">I just downloaded a Perl
- script, and Privoxy altered it! Yikes, what is wrong!</a></dt>
- <dt>4.23. <a href="misc.html#HOSTSFILE">Should I continue to use
- a <span class="QUOTE">"HOSTS"</span> file for
- ad-blocking?</a></dt>
- <dt>4.24. <a href="misc.html#SEEALSO">Where can I find more
- information about Privoxy and related issues?</a></dt>
- <dt>4.25. <a href="misc.html#MICROSUCK">I've noticed that Privoxy
- changes <span class="QUOTE">"Microsoft"</span> to <span class=
- "QUOTE">"MicroSuck"</span>! Why are you manipulating my
+ <dt>4.1. <a href="misc.html#SLOWSME">How much does Privoxy slow my browsing down? This has to add extra
+ time to browsing.</a></dt>
+ <dt>4.2. <a href="misc.html#LOADINGTIMES">I notice considerable delays in page requests. What's
+ wrong?</a></dt>
+ <dt>4.3. <a href="misc.html#CONFIGURL">What are "http://config.privoxy.org/" and "http://p.p/"?</a></dt>
+ <dt>4.4. <a href="misc.html#NEWADS">How can I submit new ads, or report problems?</a></dt>
+ <dt>4.5. <a href="misc.html#NEWADS2">If I do submit missed ads, will they be included in future
+ updates?</a></dt>
+ <dt>4.6. <a href="misc.html#NOONECARES">Why doesn't anyone answer my support request?</a></dt>
+ <dt>4.7. <a href="misc.html#IP">How can I hide my IP address?</a></dt>
+ <dt>4.8. <a href="misc.html#ANONFORSURE">Can Privoxy guarantee I am anonymous?</a></dt>
+ <dt>4.9. <a href="misc.html#PROXYTEST">A test site says I am not using a Proxy.</a></dt>
+ <dt>4.10. <a href="misc.html#TOR">How do I use Privoxy together with Tor?</a></dt>
+ <dt>4.11. <a href="misc.html#SITEBREAK">Might some things break because header information or content is
+ being altered?</a></dt>
+ <dt>4.12. <a href="misc.html#CACHING">Can Privoxy act as a <span class="QUOTE">"caching"</span> proxy to
+ speed up web browsing?</a></dt>
+ <dt>4.13. <a href="misc.html#FIREWALL">What about as a firewall? Can Privoxy protect me?</a></dt>
+ <dt>4.14. <a href="misc.html#WASTED">I have large empty spaces / a checkerboard pattern now where ads used
+ to be. Why?</a></dt>
+ <dt>4.15. <a href="misc.html#SSL">How can Privoxy filter Secure (HTTPS) URLs?</a></dt>
+ <dt>4.16. <a href="misc.html#HTTP2">Does Privoxy support HTTP/2?</a></dt>
+ <dt>4.17. <a href="misc.html#SECURE">Privoxy runs as a <span class="QUOTE">"server"</span>. How secure is
+ it? Do I need to take any special precautions?</a></dt>
+ <dt>4.18. <a href="misc.html#TURNOFF">Can I temporarily disable Privoxy?</a></dt>
+ <dt>4.19. <a href="misc.html#REALLYOFF">When <span class="QUOTE">"disabled"</span> is Privoxy totally out
+ of the picture?</a></dt>
+ <dt>4.20. <a href="misc.html#TURNOFF2">How can I tell Privoxy to totally ignore certain sites?</a></dt>
+ <dt>4.21. <a href="misc.html#CRUNCH">My logs show Privoxy <span class="QUOTE">"crunches"</span> ads, but
+ also its own internal CGI pages. What is a <span class="QUOTE">"crunch"</span>?</a></dt>
+ <dt>4.22. <a href="misc.html#DOWNLOADS">Can Privoxy affect files that I download from a webserver? FTP
+ server?</a></dt>
+ <dt>4.23. <a href="misc.html#DOWNLOADS2">I just downloaded a Perl script, and Privoxy altered it! Yikes,
+ what is wrong!</a></dt>
+ <dt>4.24. <a href="misc.html#HOSTSFILE">Should I continue to use a <span class="QUOTE">"HOSTS"</span> file
+ for ad-blocking?</a></dt>
+ <dt>4.25. <a href="misc.html#SEEALSO">Where can I find more information about Privoxy and related
+ issues?</a></dt>
+ <dt>4.26. <a href="misc.html#MICROSUCK">I've noticed that Privoxy changes <span class=
+ "QUOTE">"Microsoft"</span> to <span class="QUOTE">"MicroSuck"</span>! Why are you manipulating my
browsing?</a></dt>
- <dt>4.26. <a href="misc.html#VALID">Does Privoxy produce
- <span class="QUOTE">"valid"</span> HTML (or XHTML)?</a></dt>
- <dt>4.27. <a href="misc.html#SURPRISE-PRIVOXY">How did you manage
- to get Privoxy on my computer without my consent?</a></dt>
+ <dt>4.27. <a href="misc.html#VALID">Does Privoxy produce <span class="QUOTE">"valid"</span> HTML (or
+ XHTML)?</a></dt>
+ <dt>4.28. <a href="misc.html#SURPRISE-PRIVOXY">How did you manage to get Privoxy on my computer without my
+ consent?</a></dt>
</dl>
</dd>
<dt>5. <a href="trouble.html">Troubleshooting</a></dt>
<dd>
<dl>
- <dt>5.1. <a href="trouble.html#REFUSED">I cannot connect to any
- websites. Or, I am getting <span class="QUOTE">"connection
- refused"</span> message with every web page. Why?</a></dt>
- <dt>5.2. <a href="trouble.html#ERROR503">Why am I getting a 503
- Error (WSAECONNREFUSED) on every page?</a></dt>
- <dt>5.3. <a href="trouble.html#FLUSHIT">I just added a new rule,
- but the steenkin ad is still getting through. How?</a></dt>
- <dt>5.4. <a href="trouble.html#BADSITE">One of my favorite sites
- does not work with Privoxy. What can I do?</a></dt>
- <dt>5.5. <a href="trouble.html#DUN">After installing Privoxy, I
- have to log in every time I start IE. What gives?</a></dt>
- <dt>5.6. <a href="trouble.html#FTP">I cannot connect to any FTP
- sites. Privoxy is blocking me.</a></dt>
- <dt>5.7. <a href="trouble.html#MACOSXIE">In Mac OS X, I can't
- configure Microsoft Internet Explorer to use Privoxy as the HTTP
- proxy.</a></dt>
- <dt>5.8. <a href="trouble.html#MACOSXUNINSTALL">In Mac OS X, I
- dragged the Privoxy folder to the trash in order to uninstall it.
- Now the finder tells me I don't have sufficient privileges to
- empty the trash.</a></dt>
- <dt>5.9. <a href="trouble.html#MACOSXIMAGES">In Mac OS X Panther
- (10.3), images often fail to load and/or I experience random
- delays in page loading. I'm using <tt class=
- "LITERAL">localhost</tt> as my browser's proxy setting.</a></dt>
- <dt>5.10. <a href="trouble.html#MACOSXACCOUNTDELETION">I just
- upgraded to Mac OS X 10.9 (Mavericks) and now <span class=
- "APPLICATION">Privoxy</span> has stopped working.</a></dt>
- <dt>5.11. <a href="trouble.html#NOHOSTNAME">My logs show many
- <span class="QUOTE">"Unable to get my own hostname"</span> lines.
- Why?</a></dt>
- <dt>5.12. <a href="trouble.html#INUSE">When I try to launch
- Privoxy, I get an error message <span class="QUOTE">"port 8118 is
- already in use"</span> (or similar wording). Why?</a></dt>
- <dt>5.13. <a href="trouble.html#DEMORONIZER">Pages with UTF-8
- fonts are garbled.</a></dt>
- <dt>5.14. <a href="trouble.html#DEMORONIZER2">Why are binary
- files (such as images) corrupted when Privoxy is used?</a></dt>
- <dt>5.15. <a href="trouble.html#DEMORONIZER3">What is the
- <span class="QUOTE">"demoronizer"</span> and why is it
- there?</a></dt>
- <dt>5.16. <a href="trouble.html#WINDOWOPEN">Why do I keep seeing
- <span class="QUOTE">"PrivoxyWindowOpen()"</span> in raw source
- code?</a></dt>
- <dt>5.17. <a href="trouble.html#DNSERRORS">I am getting too many
- DNS errors like <span class="QUOTE">"404 No Such Domain"</span>.
- Why can't Privoxy do this better?</a></dt>
- <dt>5.18. <a href="trouble.html#ALLCPU">At one site Privoxy just
- hangs, and starts taking all CPU. Why is this?</a></dt>
- <dt>5.19. <a href="trouble.html#SLOWCRAWL">I just installed
- Privoxy, and all my browsing has slowed to a crawl. What
+ <dt>5.1. <a href="trouble.html#REFUSED">I cannot connect to any websites. Or, I am getting <span class=
+ "QUOTE">"connection refused"</span> message with every web page. Why?</a></dt>
+ <dt>5.2. <a href="trouble.html#ERROR503">Why am I getting a 503 Error (WSAECONNREFUSED) on every
+ page?</a></dt>
+ <dt>5.3. <a href="trouble.html#FLUSHIT">I just added a new rule, but the steenkin ad is still getting
+ through. How?</a></dt>
+ <dt>5.4. <a href="trouble.html#BADSITE">One of my favorite sites does not work with Privoxy. What can I
+ do?</a></dt>
+ <dt>5.5. <a href="trouble.html#DUN">After installing Privoxy, I have to log in every time I start IE. What
gives?</a></dt>
- <dt>5.20. <a href="trouble.html#PREVENTCOMP">Why do my filters
- work on some sites but not on others?</a></dt>
- <dt>5.21. <a href="trouble.html#SSL-WARNINGS">On some HTTPS sites
- my browser warns me about unauthenticated content, the URL bar
- doesn't get highlighted and the lock symbol appears to be broken.
- What's going on?</a></dt>
- <dt>5.22. <a href="trouble.html#SE-LINUX">I get selinux error
- messages. How can I fix this?</a></dt>
- <dt>5.23. <a href="trouble.html#GENTOO-RICERS">I compiled
- <span class="APPLICATION">Privoxy</span> with Gentoo's portage
- and it appears to be very slow. Why?</a></dt>
- <dt>5.24. <a href="trouble.html#TAINTED-SOCKETS">What are tainted
- sockets and how do I prevent them?</a></dt>
- <dt>5.25. <a href="trouble.html#PCRE-STACK-LIMIT">After adding my
- custom filters, <span class="APPLICATION">Privoxy</span> crashes
- when visitting certain websites</a></dt>
+ <dt>5.6. <a href="trouble.html#FTP">I cannot connect to any FTP sites. Privoxy is blocking me.</a></dt>
+ <dt>5.7. <a href="trouble.html#MACOSXIE">In Mac OS X, I can't configure Microsoft Internet Explorer to use
+ Privoxy as the HTTP proxy.</a></dt>
+ <dt>5.8. <a href="trouble.html#MACOSXUNINSTALL">In Mac OS X, I dragged the Privoxy folder to the trash in
+ order to uninstall it. Now the finder tells me I don't have sufficient privileges to empty the
+ trash.</a></dt>
+ <dt>5.9. <a href="trouble.html#MACOSXIMAGES">In Mac OS X Panther (10.3), images often fail to load and/or I
+ experience random delays in page loading. I'm using <tt class="LITERAL">localhost</tt> as my browser's
+ proxy setting.</a></dt>
+ <dt>5.10. <a href="trouble.html#MACOSXACCOUNTDELETION">I just upgraded to Mac OS X 10.9 (Mavericks) and now
+ <span class="APPLICATION">Privoxy</span> has stopped working.</a></dt>
+ <dt>5.11. <a href="trouble.html#NOHOSTNAME">My logs show many <span class="QUOTE">"Unable to get my own
+ hostname"</span> lines. Why?</a></dt>
+ <dt>5.12. <a href="trouble.html#INUSE">When I try to launch Privoxy, I get an error message <span class=
+ "QUOTE">"port 8118 is already in use"</span> (or similar wording). Why?</a></dt>
+ <dt>5.13. <a href="trouble.html#DEMORONIZER">Pages with UTF-8 fonts are garbled.</a></dt>
+ <dt>5.14. <a href="trouble.html#DEMORONIZER2">Why are binary files (such as images) corrupted when Privoxy
+ is used?</a></dt>
+ <dt>5.15. <a href="trouble.html#DEMORONIZER3">What is the <span class="QUOTE">"demoronizer"</span> and why
+ is it there?</a></dt>
+ <dt>5.16. <a href="trouble.html#WINDOWOPEN">Why do I keep seeing <span class=
+ "QUOTE">"PrivoxyWindowOpen()"</span> in raw source code?</a></dt>
+ <dt>5.17. <a href="trouble.html#DNSERRORS">I am getting too many DNS errors like <span class="QUOTE">"404
+ No Such Domain"</span>. Why can't Privoxy do this better?</a></dt>
+ <dt>5.18. <a href="trouble.html#ALLCPU">At one site Privoxy just hangs, and starts taking all CPU. Why is
+ this?</a></dt>
+ <dt>5.19. <a href="trouble.html#SLOWCRAWL">I just installed Privoxy, and all my browsing has slowed to a
+ crawl. What gives?</a></dt>
+ <dt>5.20. <a href="trouble.html#PREVENTCOMP">Why do my filters work on some sites but not on
+ others?</a></dt>
+ <dt>5.21. <a href="trouble.html#SSL-WARNINGS">On some HTTPS sites my browser warns me about unauthenticated
+ content, the URL bar doesn't get highlighted and the lock symbol appears to be broken. What's going
+ on?</a></dt>
+ <dt>5.22. <a href="trouble.html#SE-LINUX">I get selinux error messages. How can I fix this?</a></dt>
+ <dt>5.23. <a href="trouble.html#GENTOO-RICERS">I compiled <span class="APPLICATION">Privoxy</span> with
+ Gentoo's portage and it appears to be very slow. Why?</a></dt>
+ <dt>5.24. <a href="trouble.html#TAINTED-SOCKETS">What are tainted sockets and how do I prevent
+ them?</a></dt>
+ <dt>5.25. <a href="trouble.html#PCRE-STACK-LIMIT">After adding my custom filters, <span class=
+ "APPLICATION">Privoxy</span> crashes when visitting certain websites</a></dt>
+ <dt>5.26. <a href="trouble.html#FILE-PERMISSIONS">What to do if editing the config file of privoxy is
+ access denied?</a></dt>
</dl>
</dd>
- <dt>6. <a href="contact.html">Contacting the developers, Bug
- Reporting and Feature Requests</a></dt>
+ <dt>6. <a href="contact.html">Contacting the developers, Bug Reporting and Feature Requests</a></dt>
<dd>
<dl>
- <dt>6.1. <a href="contact.html#SUFFICIENT-INFORMATION">Please
- provide sufficient information</a></dt>
- <dt>6.2. <a href="contact.html#CONTACT-SUPPORT">Get
- Support</a></dt>
- <dt>6.3. <a href="contact.html#REPORTING">Reporting
- Problems</a></dt>
+ <dt>6.1. <a href="contact.html#SUFFICIENT-INFORMATION">Please provide sufficient information</a></dt>
+ <dt>6.2. <a href="contact.html#CONTACT-SUPPORT">Get Support</a></dt>
+ <dt>6.3. <a href="contact.html#REPORTING">Reporting Problems</a></dt>
<dd>
<dl>
- <dt>6.3.1. <a href="contact.html#CONTACT-ADS">Reporting Ads
- or Other Configuration Problems</a></dt>
- <dt>6.3.2. <a href="contact.html#CONTACT-BUGS">Reporting
- Bugs</a></dt>
+ <dt>6.3.1. <a href="contact.html#CONTACT-ADS">Reporting Ads or Other Configuration Problems</a></dt>
+ <dt>6.3.2. <a href="contact.html#CONTACT-BUGS">Reporting Bugs</a></dt>
</dl>
</dd>
- <dt>6.4. <a href="contact.html#SECURITY-CONTACT">Reporting
- security problems</a></dt>
- <dt>6.5. <a href="contact.html#MAILING-LISTS">Mailing
- Lists</a></dt>
- <dt>6.6. <a href="contact.html#SF-TRACKERS">SourceForge support
- trackers</a></dt>
+ <dt>6.4. <a href="contact.html#SECURITY-CONTACT">Reporting security problems</a></dt>
+ <dt>6.5. <a href="contact.html#MAILING-LISTS">Mailing Lists</a></dt>
+ <dt>6.6. <a href="contact.html#SF-TRACKERS">SourceForge support trackers</a></dt>
</dl>
</dd>
- <dt>7. <a href="copyright.html">Privoxy Copyright, License and
- History</a></dt>
+ <dt>7. <a href="copyright.html">Privoxy Copyright, License and History</a></dt>
<dd>
<dl>
- <dt>7.1. <a href="copyright.html#AEN1507">License</a></dt>
- <dt>7.2. <a href="copyright.html#AEN1516">History</a></dt>
+ <dt>7.1. <a href="copyright.html#AEN1518">License</a></dt>
+ <dt>7.2. <a href="copyright.html#AEN1527">History</a></dt>
</dl>
</dd>
</dl>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="33%" align="left" valign="top"> </td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top"><a href="general.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="right" valign="top"><a href="general.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top"> </td>
<html>
<head>
<title>Installation</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy Frequently Asked Questions" href=
- "index.html">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
+ <link rel="HOME" title="Privoxy Frequently Asked Questions" href="index.html">
<link rel="PREVIOUS" title="General Information" href="general.html">
<link rel="NEXT" title="Configuration" href="configuration.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy Frequently Asked
- Questions</th>
+ <th colspan="3" align="center">Privoxy Frequently Asked Questions</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="general.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="general.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "configuration.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="configuration.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="INSTALLATION" id="INSTALLATION">2.
- Installation</a></h1>
+ <h1 class="SECT1"><a name="INSTALLATION" id="INSTALLATION">2. Installation</a></h1>
<div class="SECT2">
- <h3 class="SECT2"><a name="WHICHBROWSERS" id="WHICHBROWSERS">2.1. Which
- browsers are supported by Privoxy?</a></h3>
- <p>Any browser that can be configured to use a proxy, which should be
- virtually all browsers, including <span class=
- "APPLICATION">Firefox</span>, <span class="APPLICATION">Internet
- Explorer</span>, <span class="APPLICATION">Opera</span>, and
- <span class="APPLICATION">Safari</span> among others. Direct browser
- support is not an absolute requirement since <span class=
- "APPLICATION">Privoxy</span> runs as a separate application and talks
- to the browser in the standardized HTTP protocol, just like a web
- server does.</p>
+ <h3 class="SECT2"><a name="WHICHBROWSERS" id="WHICHBROWSERS">2.1. Which browsers are supported by
+ Privoxy?</a></h3>
+ <p>Any browser that can be configured to use a proxy, which should be virtually all browsers, including
+ <span class="APPLICATION">Firefox</span>, <span class="APPLICATION">Internet Explorer</span>, <span class=
+ "APPLICATION">Opera</span>, and <span class="APPLICATION">Safari</span> among others. Direct browser support is
+ not an absolute requirement since <span class="APPLICATION">Privoxy</span> runs as a separate application and
+ talks to the browser in the standardized HTTP protocol, just like a web server does.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="WHICHOS" id="WHICHOS">2.2. Which operating
- systems are supported?</a></h3>
- <p>At present, <span class="APPLICATION">Privoxy</span> is known to run
- on Windows 95 and later versions (98, ME, 2000, XP, Vista, Windows 7
- etc.), GNU/Linux (RedHat, SuSE, Debian, Fedora, Gentoo, Slackware and
- others), Mac OS X (10.4 and upwards on PPC and Intel processors), OS/2,
- Haiku, DragonFly, ElectroBSD, FreeBSD, NetBSD, OpenBSD, Solaris, and
- various other flavors of Unix.</p>
- <p><span class="APPLICATION">Privoxy</span> used to work on AmigaOS and
- QNX, too, but the code currently isn't maintained and its status
- unknown. It might no longer compile, but getting it working again
- shouldn't be too hard.</p>
- <p>But any operating system that runs TCP/IP, can conceivably take
- advantage of <span class="APPLICATION">Privoxy</span> in a networked
- situation where <span class="APPLICATION">Privoxy</span> would run as a
- server on a LAN gateway. Then only the <span class=
- "QUOTE">"gateway"</span> needs to be running one of the above operating
- systems.</p>
- <p>Source code is freely available, so porting to other operating
- systems is always a possibility.</p>
+ <h3 class="SECT2"><a name="WHICHOS" id="WHICHOS">2.2. Which operating systems are supported?</a></h3>
+ <p>At present, <span class="APPLICATION">Privoxy</span> is known to run on Windows 95 and later versions (98, ME,
+ 2000, XP, Vista, Windows 7 etc.), GNU/Linux (RedHat, SuSE, Debian, Fedora, Gentoo, Slackware and others), Mac OS
+ X (10.4 and upwards on PPC and Intel processors), OS/2, Haiku, DragonFly, ElectroBSD, FreeBSD, NetBSD, OpenBSD,
+ Solaris, and various other flavors of Unix.</p>
+ <p><span class="APPLICATION">Privoxy</span> used to work on AmigaOS and QNX, too, but the code currently isn't
+ maintained and its status unknown. It might no longer compile, but getting it working again shouldn't be too
+ hard.</p>
+ <p>But any operating system that runs TCP/IP, can conceivably take advantage of <span class=
+ "APPLICATION">Privoxy</span> in a networked situation where <span class="APPLICATION">Privoxy</span> would run as
+ a server on a LAN gateway. Then only the <span class="QUOTE">"gateway"</span> needs to be running one of the
+ above operating systems.</p>
+ <p>Source code is freely available, so porting to other operating systems is always a possibility.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="EMAIL-CLIENT" id="EMAIL-CLIENT">2.3. Can I
- use Privoxy with my email client?</a></h3>
- <p>As long as there is some way to set a HTTP proxy for the client,
- then yes, any application can be used, whether it is strictly speaking
- a <span class="QUOTE">"browser"</span> or not. Though this may not be
- the best approach for dealing with some of the common abuses of HTML in
- email. See <a href="configuration.html#OUTLOOK">How can I configure
- <span class="APPLICATION">Privoxy</span> with <span class=
+ <h3 class="SECT2"><a name="EMAIL-CLIENT" id="EMAIL-CLIENT">2.3. Can I use Privoxy with my email client?</a></h3>
+ <p>As long as there is some way to set a HTTP proxy for the client, then yes, any application can be used,
+ whether it is strictly speaking a <span class="QUOTE">"browser"</span> or not. Though this may not be the best
+ approach for dealing with some of the common abuses of HTML in email. See <a href=
+ "configuration.html#OUTLOOK">How can I configure <span class="APPLICATION">Privoxy</span> with <span class=
"APPLICATION">Outlook</span>?</a> below for more on this.</p>
- <p>Be aware that HTML email presents a number of unique security and
- privacy related issues, that can require advanced skills to overcome.
- The developers recommend using email clients that can be configured to
- convert HTML to plain text for these reasons.</p>
+ <p>Be aware that HTML email presents a number of unique security and privacy related issues, that can require
+ advanced skills to overcome. The developers recommend using email clients that can be configured to convert HTML
+ to plain text for these reasons.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="FIRSTSTEP" id="FIRSTSTEP">2.4. I just
- installed Privoxy. Is there anything special I have to do now?</a></h3>
- <p>All browsers should be told to use <span class=
- "APPLICATION">Privoxy</span> as a proxy by specifying the correct proxy
- address and port number in the appropriate configuration area for the
- browser. It's possible to combine <span class=
- "APPLICATION">Privoxy</span> with a packet filter to intercept HTTP
- requests even if the client isn't explicitly configured to use
- <span class="APPLICATION">Privoxy</span>, but where possible,
- configuring the client is recommended. See <a href=
- "../user-manual/startup.html" target="_top">the User Manual for more
- details</a>. You should also flush your browser's memory and disk cache
- to get rid of any cached junk items, and remove any stored <a href=
- "http://en.wikipedia.org/wiki/Browser_cookie" target=
- "_top">cookies</a>.</p>
+ <h3 class="SECT2"><a name="FIRSTSTEP" id="FIRSTSTEP">2.4. I just installed Privoxy. Is there anything special I
+ have to do now?</a></h3>
+ <p>All browsers should be told to use <span class="APPLICATION">Privoxy</span> as a proxy by specifying the
+ correct proxy address and port number in the appropriate configuration area for the browser. It's possible to
+ combine <span class="APPLICATION">Privoxy</span> with a packet filter to intercept HTTP requests even if the
+ client isn't explicitly configured to use <span class="APPLICATION">Privoxy</span>, but where possible,
+ configuring the client is recommended. See <a href="../user-manual/startup.html" target="_top">the User Manual
+ for more details</a>. You should also flush your browser's memory and disk cache to get rid of any cached junk
+ items, and remove any stored <a href="http://en.wikipedia.org/wiki/Browser_cookie" target="_top">cookies</a>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="LOCALHOST" id="LOCALHOST">2.5. What is the
- proxy address of Privoxy?</a></h3>
- <p>If you set up the <span class="APPLICATION">Privoxy</span> to run on
- the computer you browse from (rather than your ISP's server or some
- networked computer on a LAN), the proxy will be on <tt class=
- "LITERAL">127.0.0.1</tt> (sometimes referred to as <span class=
- "QUOTE">"localhost"</span>, which is the special name used by every
- computer on the Internet to refer to itself) and the port will be 8118
- (unless you used the <a href=
- "../user-manual/config.html#LISTEN-ADDRESS" target=
- "_top">listen-address</a> config option to tell <span class=
+ <h3 class="SECT2"><a name="LOCALHOST" id="LOCALHOST">2.5. What is the proxy address of Privoxy?</a></h3>
+ <p>If you set up the <span class="APPLICATION">Privoxy</span> to run on the computer you browse from (rather than
+ your ISP's server or some networked computer on a LAN), the proxy will be on <tt class="LITERAL">127.0.0.1</tt>
+ (sometimes referred to as <span class="QUOTE">"localhost"</span>, which is the special name used by every
+ computer on the Internet to refer to itself) and the port will be 8118 (unless you used the <a href=
+ "../user-manual/config.html#LISTEN-ADDRESS" target="_top">listen-address</a> config option to tell <span class=
"APPLICATION">Privoxy</span> to run on a different port).</p>
- <p>When configuring your browser's proxy settings you typically enter
- the word <span class="QUOTE">"localhost"</span> or the IP address
- <span class="QUOTE">"127.0.0.1"</span> in the boxes next to
- <span class="QUOTE">"HTTP"</span> and <span class=
- "QUOTE">"Secure"</span> (HTTPS) and then the number <span class=
- "QUOTE">"8118"</span> for <span class="QUOTE">"port"</span>. This tells
- your browser to send all web requests to <span class=
- "APPLICATION">Privoxy</span> instead of directly to the Internet.</p>
- <p><span class="APPLICATION">Privoxy</span> can also be used to proxy
- for a Local Area Network. In this case, your would enter either the IP
- address of the LAN host where <span class="APPLICATION">Privoxy</span>
- is running, or the equivalent hostname, e.g. <tt class=
- "LITERAL">192.168.1.1</tt>. Port assignment would be same as above.
- Note that <span class="APPLICATION">Privoxy</span> doesn't listen on
- any LAN interfaces by default.</p>
- <p><span class="APPLICATION">Privoxy</span> does not currently handle
- any other protocols such as FTP, SMTP, IM, IRC, ICQ, etc.</p>
+ <p>When configuring your browser's proxy settings you typically enter the word <span class=
+ "QUOTE">"localhost"</span> or the IP address <span class="QUOTE">"127.0.0.1"</span> in the boxes next to
+ <span class="QUOTE">"HTTP"</span> and <span class="QUOTE">"Secure"</span> (HTTPS) and then the number
+ <span class="QUOTE">"8118"</span> for <span class="QUOTE">"port"</span>. This tells your browser to send all web
+ requests to <span class="APPLICATION">Privoxy</span> instead of directly to the Internet.</p>
+ <p><span class="APPLICATION">Privoxy</span> can also be used to proxy for a Local Area Network. In this case,
+ your would enter either the IP address of the LAN host where <span class="APPLICATION">Privoxy</span> is running,
+ or the equivalent hostname, e.g. <tt class="LITERAL">192.168.1.1</tt>. Port assignment would be same as above.
+ Note that <span class="APPLICATION">Privoxy</span> doesn't listen on any LAN interfaces by default.</p>
+ <p><span class="APPLICATION">Privoxy</span> does not currently handle any other protocols such as FTP, SMTP, IM,
+ IRC, ICQ, etc.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="NOTHING" id="NOTHING">2.6. I just installed
- Privoxy, and nothing is happening. All the ads are there. What's
- wrong?</a></h3>
- <p>Did you configure your browser to use <span class=
- "APPLICATION">Privoxy</span> as a proxy? It does not sound like it. See
- above. You might also try flushing the browser's caches to force a full
- re-reading of pages. You can verify that <span class=
- "APPLICATION">Privoxy</span> is running, and your browser is correctly
- configured by entering the special URL: <a href="http://p.p/" target=
- "_top">http://p.p/</a>. This should take you to a page titled
- <span class="QUOTE">"This is Privoxy.."</span> with access to
- <span class="APPLICATION">Privoxy's</span> internal configuration. If
- you see this, then you are good to go. If you receive a page saying
- <span class="QUOTE">"Privoxy is not running"</span>, then the browser
- is not set up to use your <span class="APPLICATION">Privoxy</span>
- installation. If you receive anything else (probably nothing at all),
- it could either be that the browser is not set up correctly, or that
- <span class="APPLICATION">Privoxy</span> is not running at all. Check
- the <a href="../user-manual/config.html#LOGFILE" target="_top">log
- file</a>. For instructions on starting <span class=
- "APPLICATION">Privoxy</span> and browser configuration, see the
- <a href="https://www.privoxy.org/user-manual/startup.html" target=
- "_top">chapter on starting <span class="APPLICATION">Privoxy</span></a>
- in the <a href="https://www.privoxy.org/user-manual/" target=
- "_top">User Manual</a>.</p>
+ <h3 class="SECT2"><a name="NOTHING" id="NOTHING">2.6. I just installed Privoxy, and nothing is happening. All the
+ ads are there. What's wrong?</a></h3>
+ <p>Did you configure your browser to use <span class="APPLICATION">Privoxy</span> as a proxy? It does not sound
+ like it. See above. You might also try flushing the browser's caches to force a full re-reading of pages. You can
+ verify that <span class="APPLICATION">Privoxy</span> is running, and your browser is correctly configured by
+ entering the special URL: <a href="http://p.p/" target="_top">http://p.p/</a>. This should take you to a page
+ titled <span class="QUOTE">"This is Privoxy.."</span> with access to <span class="APPLICATION">Privoxy's</span>
+ internal configuration. If you see this, then you are good to go. If you receive a page saying <span class=
+ "QUOTE">"Privoxy is not running"</span>, then the browser is not set up to use your <span class=
+ "APPLICATION">Privoxy</span> installation. If you receive anything else (probably nothing at all), it could
+ either be that the browser is not set up correctly, or that <span class="APPLICATION">Privoxy</span> is not
+ running at all. Check the <a href="../user-manual/config.html#LOGFILE" target="_top">log file</a>. For
+ instructions on starting <span class="APPLICATION">Privoxy</span> and browser configuration, see the <a href=
+ "https://www.privoxy.org/user-manual/startup.html" target="_top">chapter on starting <span class=
+ "APPLICATION">Privoxy</span></a> in the <a href="https://www.privoxy.org/user-manual/" target="_top">User
+ Manual</a>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="NOTUSED" id="NOTUSED">2.7. I get a
- <span class="QUOTE">"Privoxy is not being used"</span> dummy page
- although Privoxy is running and being used.</a></h3>
- <p>First, make sure that Privoxy is <span class="emphasis"><i class=
- "EMPHASIS">really</i></span> running and being used by visiting
- <a href="http://p.p/" target="_top">http://p.p/</a>. You should see the
- <span class="APPLICATION">Privoxy</span> main page. If not, see the
- <a href="https://www.privoxy.org/user-manual/startup.html" target=
- "_top">chapter on starting <span class="APPLICATION">Privoxy</span></a>
- in the <a href="https://www.privoxy.org/user-manual/" target=
- "_top">User Manual</a>.</p>
- <p>Now if <a href="http://p.p/" target="_top">http://p.p/</a> works for
- you, but other parts of <span class="APPLICATION">Privoxy</span>'s web
- interface show the dummy page, your browser has cached a redirection it
- encountered before <span class="APPLICATION">Privoxy</span> was being
- used. You need to clear your browser's cache. Note that shift-reloading
- the dummy page won't help, since that'll only refresh the dummy page,
- not the redirection that lead you there.</p>
- <p>The procedure for clearing the cache varies from browser to browser.
- For example, <span class="APPLICATION">Mozilla/Netscape</span> users
- would click <span class="GUIBUTTON">Edit</span> --> <span class=
- "GUIBUTTON">Preferences</span> --> <span class=
- "GUIBUTTON">Advanced</span> --> <span class="GUIBUTTON">Cache</span>
- and then click both <span class="QUOTE">"<span class="GUIBUTTON">Clear
- Memory Cache</span>"</span> and <span class="QUOTE">"<span class=
- "GUIBUTTON">Clear Disk Cache</span>"</span>. In some <span class=
- "APPLICATION">Firefox</span> versions it's <span class=
- "GUIBUTTON">Tools</span> --> <span class="GUIBUTTON">Options</span>
- --> <span class="GUIBUTTON">Privacy</span> --> <span class=
- "GUIBUTTON">Cache</span> and then click <span class=
- "QUOTE">"<span class="GUIBUTTON">Clear Cache Now</span>"</span>.</p>
+ <h3 class="SECT2"><a name="NOTUSED" id="NOTUSED">2.7. I get a <span class="QUOTE">"Privoxy is not being
+ used"</span> dummy page although Privoxy is running and being used.</a></h3>
+ <p>First, make sure that Privoxy is <span class="emphasis"><i class="EMPHASIS">really</i></span> running and
+ being used by visiting <a href="http://p.p/" target="_top">http://p.p/</a>. You should see the <span class=
+ "APPLICATION">Privoxy</span> main page. If not, see the <a href=
+ "https://www.privoxy.org/user-manual/startup.html" target="_top">chapter on starting <span class=
+ "APPLICATION">Privoxy</span></a> in the <a href="https://www.privoxy.org/user-manual/" target="_top">User
+ Manual</a>.</p>
+ <p>Now if <a href="http://p.p/" target="_top">http://p.p/</a> works for you, but other parts of <span class=
+ "APPLICATION">Privoxy</span>'s web interface show the dummy page, your browser has cached a redirection it
+ encountered before <span class="APPLICATION">Privoxy</span> was being used. You need to clear your browser's
+ cache. Note that shift-reloading the dummy page won't help, since that'll only refresh the dummy page, not the
+ redirection that lead you there.</p>
+ <p>The procedure for clearing the cache varies from browser to browser. For example, <span class=
+ "APPLICATION">Mozilla/Netscape</span> users would click <span class="GUIBUTTON">Edit</span> --> <span class=
+ "GUIBUTTON">Preferences</span> --> <span class="GUIBUTTON">Advanced</span> --> <span class=
+ "GUIBUTTON">Cache</span> and then click both <span class="QUOTE">"<span class="GUIBUTTON">Clear Memory
+ Cache</span>"</span> and <span class="QUOTE">"<span class="GUIBUTTON">Clear Disk Cache</span>"</span>. In some
+ <span class="APPLICATION">Firefox</span> versions it's <span class="GUIBUTTON">Tools</span> --> <span class=
+ "GUIBUTTON">Options</span> --> <span class="GUIBUTTON">Privacy</span> --> <span class=
+ "GUIBUTTON">Cache</span> and then click <span class="QUOTE">"<span class="GUIBUTTON">Clear Cache
+ Now</span>"</span>.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="general.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href=
- "configuration.html" accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="general.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="configuration.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">General Information</td>
<html>
<head>
<title>Miscellaneous</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy Frequently Asked Questions" href=
- "index.html">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
+ <link rel="HOME" title="Privoxy Frequently Asked Questions" href="index.html">
<link rel="PREVIOUS" title="Configuration" href="configuration.html">
<link rel="NEXT" title="Troubleshooting" href="trouble.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy Frequently Asked
- Questions</th>
+ <th colspan="3" align="center">Privoxy Frequently Asked Questions</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "configuration.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="configuration.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="trouble.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="trouble.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
<div class="SECT1">
<h1 class="SECT1"><a name="MISC" id="MISC">4. Miscellaneous</a></h1>
<div class="SECT2">
- <h3 class="SECT2"><a name="SLOWSME" id="SLOWSME">4.1. How much does
- Privoxy slow my browsing down? This has to add extra time to
- browsing.</a></h3>
- <p>How much of an impact depends on many things, including the CPU of
- the host system, how aggressive the configuration is, which specific
- actions are being triggered, the size of the page, the bandwidth of the
+ <h3 class="SECT2"><a name="SLOWSME" id="SLOWSME">4.1. How much does Privoxy slow my browsing down? This has to
+ add extra time to browsing.</a></h3>
+ <p>How much of an impact depends on many things, including the CPU of the host system, how aggressive the
+ configuration is, which specific actions are being triggered, the size of the page, the bandwidth of the
connection, etc.</p>
- <p>Overall, it should not slow you down any in real terms, and may
- actually help speed things up since ads, banners and other junk are not
- typically being retrieved and displayed. The actual processing time
- required by <span class="APPLICATION">Privoxy</span> itself for each
- page, is relatively small in the overall scheme of things, and happens
- very quickly. This is typically more than offset by time saved not
- downloading and rendering ad images and other junk content (if ad
- blocking is being used).</p>
- <p><span class="QUOTE">"Filtering"</span> content via the <tt class=
- "LITERAL"><a href="../user-manual/actions-file.html#FILTER" target=
- "_top">filter</a></tt> or <tt class="LITERAL"><a href=
- "../user-manual/actions-file.html#DEANIMATE-GIFS" target=
- "_top">deanimate-gifs</a></tt> actions may cause a perceived slowdown,
- since the entire document needs to be buffered before displaying. And
- on very large documents, filtering may have some measurable impact. How
- much depends on the page size, the actual definition of the filter(s),
- etc. See below. Most other actions have little to no impact on
- speed.</p>
- <p>Also, when filtering is enabled but zlib support isn't available,
- compression is often disabled (see <a href=
- "../user-manual/actions-file.html#PREVENT-COMPRESSION" target=
- "_top">prevent-compression</a>). This can have an impact on speed as
- well, although it's probably smaller than you might think. Again, the
- page size, etc. will determine how much of an impact.</p>
+ <p>Overall, it should not slow you down any in real terms, and may actually help speed things up since ads,
+ banners and other junk are not typically being retrieved and displayed. The actual processing time required by
+ <span class="APPLICATION">Privoxy</span> itself for each page, is relatively small in the overall scheme of
+ things, and happens very quickly. This is typically more than offset by time saved not downloading and rendering
+ ad images and other junk content (if ad blocking is being used).</p>
+ <p><span class="QUOTE">"Filtering"</span> content via the <tt class="LITERAL"><a href=
+ "../user-manual/actions-file.html#FILTER" target="_top">filter</a></tt> or <tt class="LITERAL"><a href=
+ "../user-manual/actions-file.html#DEANIMATE-GIFS" target="_top">deanimate-gifs</a></tt> actions may cause a
+ perceived slowdown, since the entire document needs to be buffered before displaying. And on very large
+ documents, filtering may have some measurable impact. How much depends on the page size, the actual definition of
+ the filter(s), etc. See below. Most other actions have little to no impact on speed.</p>
+ <p>Also, when filtering is enabled but zlib support isn't available, compression is often disabled (see <a href=
+ "../user-manual/actions-file.html#PREVENT-COMPRESSION" target="_top">prevent-compression</a>). This can have an
+ impact on speed as well, although it's probably smaller than you might think. Again, the page size, etc. will
+ determine how much of an impact.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="LOADINGTIMES" id="LOADINGTIMES">4.2. I
- notice considerable delays in page requests. What's wrong?</a></h3>
- <p>If you use any <tt class="LITERAL"><a href=
- "../user-manual/actions-file.html#FILTER" target="_top">filter</a></tt>
- action, such as filtering banners by size, web-bugs etc, or the
- <tt class="LITERAL"><a href=
- "../user-manual/actions-file.html#DEANIMATE-GIFS" target=
- "_top">deanimate-gifs</a></tt> action, the entire document must be
- loaded into memory in order for the filtering mechanism to work, and
- nothing is sent to the browser during this time.</p>
- <p>The loading time typically does not really change much in real
- numbers, but the feeling is different, because most browsers are able
- to start rendering incomplete content, giving the user a feeling of "it
- works". This effect is more noticeable on slower dialup connections.
- Extremely large documents may have some impact on the time to load the
- page where there is filtering being done. But overall, the difference
- should be very minimal. If there is a big impact, then probably some
- other situation is contributing (like anti-virus software).</p>
- <p>Filtering is automatically disabled for inappropriate MIME types.
- But note that if the web server mis-reports the MIME type, then content
- that should not be filtered, could be. <span class=
- "APPLICATION">Privoxy</span> only knows how to differentiate filterable
- content because of the MIME type as reported by the server, or because
- of some configuration setting that enables/disables filtering.</p>
+ <h3 class="SECT2"><a name="LOADINGTIMES" id="LOADINGTIMES">4.2. I notice considerable delays in page requests.
+ What's wrong?</a></h3>
+ <p>If you use any <tt class="LITERAL"><a href="../user-manual/actions-file.html#FILTER" target=
+ "_top">filter</a></tt> action, such as filtering banners by size, web-bugs etc, or the <tt class=
+ "LITERAL"><a href="../user-manual/actions-file.html#DEANIMATE-GIFS" target="_top">deanimate-gifs</a></tt> action,
+ the entire document must be loaded into memory in order for the filtering mechanism to work, and nothing is sent
+ to the browser during this time.</p>
+ <p>The loading time typically does not really change much in real numbers, but the feeling is different, because
+ most browsers are able to start rendering incomplete content, giving the user a feeling of "it works". This
+ effect is more noticeable on slower dialup connections. Extremely large documents may have some impact on the
+ time to load the page where there is filtering being done. But overall, the difference should be very minimal. If
+ there is a big impact, then probably some other situation is contributing (like anti-virus software).</p>
+ <p>Filtering is automatically disabled for inappropriate MIME types. But note that if the web server mis-reports
+ the MIME type, then content that should not be filtered, could be. <span class="APPLICATION">Privoxy</span> only
+ knows how to differentiate filterable content because of the MIME type as reported by the server, or because of
+ some configuration setting that enables/disables filtering.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="CONFIGURL" id="CONFIGURL">4.3. What are
- "http://config.privoxy.org/" and "http://p.p/"?</a></h3>
- <p><a href="http://config.privoxy.org/" target=
- "_top">http://config.privoxy.org/</a> is the address of <span class=
- "APPLICATION">Privoxy</span>'s built-in user interface, and <a href=
- "http://p.p/" target="_top">http://p.p/</a> is a shortcut for it.</p>
- <p>Since <span class="APPLICATION">Privoxy</span> sits between your web
- browser and the Internet, it can simply intercept requests for these
- addresses and answer them with its built-in <span class="QUOTE">"web
+ <h3 class="SECT2"><a name="CONFIGURL" id="CONFIGURL">4.3. What are "http://config.privoxy.org/" and
+ "http://p.p/"?</a></h3>
+ <p><a href="http://config.privoxy.org/" target="_top">http://config.privoxy.org/</a> is the address of
+ <span class="APPLICATION">Privoxy</span>'s built-in user interface, and <a href="http://p.p/" target=
+ "_top">http://p.p/</a> is a shortcut for it.</p>
+ <p>Since <span class="APPLICATION">Privoxy</span> sits between your web browser and the Internet, it can simply
+ intercept requests for these addresses and answer them with its built-in <span class="QUOTE">"web
server"</span>.</p>
- <p>This also makes for a good test for your browser configuration: If
- entering the URL <a href="http://config.privoxy.org/" target=
- "_top">http://config.privoxy.org/</a> takes you to a page saying
- <span class="QUOTE">"This is Privoxy ..."</span>, everything is OK. If
- you get a page saying <span class="QUOTE">"Privoxy is not
- working"</span> instead, then your browser didn't use <span class=
- "APPLICATION">Privoxy</span> for the request, hence it could not be
- intercepted, and you have accessed the <span class="emphasis"><i class=
+ <p>This also makes for a good test for your browser configuration: If entering the URL <a href=
+ "http://config.privoxy.org/" target="_top">http://config.privoxy.org/</a> takes you to a page saying <span class=
+ "QUOTE">"This is Privoxy ..."</span>, everything is OK. If you get a page saying <span class="QUOTE">"Privoxy is
+ not working"</span> instead, then your browser didn't use <span class="APPLICATION">Privoxy</span> for the
+ request, hence it could not be intercepted, and you have accessed the <span class="emphasis"><i class=
"EMPHASIS">real</i></span> web site at config.privoxy.org.</p>
- <p>Note that config.privoxy.org resolves to a public IP address. If you
- use config.privoxy.org as ping or traceroute target you will reach the
- system on the Internet (Privoxy can't intercept ICMP requests). If you
- want to ping the system Privoxy runs on, you should use its IP address
- or local DNS name (if it has got one).</p>
+ <p>Note that config.privoxy.org resolves to a public IP address. If you use config.privoxy.org as ping or
+ traceroute target you will reach the system on the Internet (Privoxy can't intercept ICMP requests). If you want
+ to ping the system Privoxy runs on, you should use its IP address or local DNS name (if it has got one).</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="NEWADS" id="NEWADS">4.4. How can I submit
- new ads, or report problems?</a></h3>
- <p>Please see the <a href="contact.html">Contact section</a> for
- various ways to interact with the developers.</p>
+ <h3 class="SECT2"><a name="NEWADS" id="NEWADS">4.4. How can I submit new ads, or report problems?</a></h3>
+ <p>Please see the <a href="contact.html">Contact section</a> for various ways to interact with the
+ developers.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="NEWADS2" id="NEWADS2">4.5. If I do submit
- missed ads, will they be included in future updates?</a></h3>
- <p>Whether such submissions are eventually included in the <tt class=
- "FILENAME">default.action</tt> configuration file depends on how
- significant the issue is. We of course want to address any potential
- problem with major, high-profile sites such as <i class=
- "CITETITLE">Google</i>, <i class="CITETITLE">Yahoo</i>, etc. Any site
- with global or regional reach, has a good chance of being a candidate.
- But at the other end of the spectrum are any number of smaller,
- low-profile sites such as for local clubs or schools. Since their reach
- and impact are much less, they are best handled by inclusion in the
- user's <tt class="FILENAME">user.action</tt>, and thus would be
+ <h3 class="SECT2"><a name="NEWADS2" id="NEWADS2">4.5. If I do submit missed ads, will they be included in future
+ updates?</a></h3>
+ <p>Whether such submissions are eventually included in the <tt class="FILENAME">default.action</tt> configuration
+ file depends on how significant the issue is. We of course want to address any potential problem with major,
+ high-profile sites such as <i class="CITETITLE">Google</i>, <i class="CITETITLE">Yahoo</i>, etc. Any site with
+ global or regional reach, has a good chance of being a candidate. But at the other end of the spectrum are any
+ number of smaller, low-profile sites such as for local clubs or schools. Since their reach and impact are much
+ less, they are best handled by inclusion in the user's <tt class="FILENAME">user.action</tt>, and thus would be
unlikely to be included.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="NOONECARES" id="NOONECARES">4.6. Why doesn't
- anyone answer my support request?</a></h3>
- <p>Rest assured that it has been read and considered. Why it is not
- answered, could be for various reasons, including no one has a good
- answer for it, no one has had time to yet investigate it thoroughly, it
- has been reported numerous times already, or because not enough
- information was provided to help us help you. Your efforts are not
- wasted, and we do appreciate them.</p>
+ <h3 class="SECT2"><a name="NOONECARES" id="NOONECARES">4.6. Why doesn't anyone answer my support
+ request?</a></h3>
+ <p>Rest assured that it has been read and considered. Why it is not answered, could be for various reasons,
+ including no one has a good answer for it, no one has had time to yet investigate it thoroughly, it has been
+ reported numerous times already, or because not enough information was provided to help us help you. Your efforts
+ are not wasted, and we do appreciate them.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="IP" id="IP">4.7. How can I hide my IP
- address?</a></h3>
- <p>If you run both the browser and <span class=
- "APPLICATION">Privoxy</span> locally, you cannot hide your IP address
- with <span class="APPLICATION">Privoxy</span> or ultimately any other
- software alone. The server needs to know your IP address so that it
- knows where to send the responses back.</p>
- <p>There are many publicly usable "anonymous" proxies out there, which
- provide a further level of indirection between you and the web
- server.</p>
- <p>However, these proxies are called "anonymous" because you don't need
- to authenticate, not because they would offer any real anonymity. Most
- of them will log your IP address and make it available to the
- authorities in case you violate the law of the country they run in. In
- fact you can't even rule out that some of them only exist to *collect*
- information on (those suspicious) people with a more than average
- preference for privacy.</p>
- <p>If you want to hide your IP address from most adversaries, you
- should consider chaining <span class="APPLICATION">Privoxy</span> with
- <a href="https://www.torproject.org/" target="_top">Tor</a>. The
- configuration details can be found in <a href="#TOR" target="_top">How
- do I use <span class="APPLICATION">Privoxy</span> together with
- <span class="APPLICATION">Tor</span> section</a> just below.</p>
+ <h3 class="SECT2"><a name="IP" id="IP">4.7. How can I hide my IP address?</a></h3>
+ <p>If you run both the browser and <span class="APPLICATION">Privoxy</span> locally, you cannot hide your IP
+ address with <span class="APPLICATION">Privoxy</span> or ultimately any other software alone. The server needs to
+ know your IP address so that it knows where to send the responses back.</p>
+ <p>There are many publicly usable "anonymous" proxies out there, which provide a further level of indirection
+ between you and the web server.</p>
+ <p>However, these proxies are called "anonymous" because you don't need to authenticate, not because they would
+ offer any real anonymity. Most of them will log your IP address and make it available to the authorities in case
+ you violate the law of the country they run in. In fact you can't even rule out that some of them only exist to
+ *collect* information on (those suspicious) people with a more than average preference for privacy.</p>
+ <p>If you want to hide your IP address from most adversaries, you should consider chaining <span class=
+ "APPLICATION">Privoxy</span> with <a href="https://www.torproject.org/" target="_top">Tor</a>. The configuration
+ details can be found in <a href="#TOR" target="_top">How do I use <span class="APPLICATION">Privoxy</span>
+ together with <span class="APPLICATION">Tor</span> section</a> just below.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="ANONFORSURE" id="ANONFORSURE">4.8. Can
- Privoxy guarantee I am anonymous?</a></h3>
- <p>No. Your chances of remaining anonymous are improved, but unless you
- <a href="#TOR" target="_top">chain <span class=
- "APPLICATION">Privoxy</span> with <span class=
- "APPLICATION">Tor</span></a> or a similar proxy and know what you're
- doing when it comes to configuring the rest of your system, you should
- assume that everything you do on the Web can be traced back to you.</p>
- <p><span class="APPLICATION">Privoxy</span> can remove various
- information about you, and allows <span class="emphasis"><i class=
- "EMPHASIS">you</i></span> more freedom to decide which sites you can
- trust, and what details you want to reveal. But it neither hides your
- IP address, nor can it guarantee that the rest of the system behaves
- correctly. There are several possibilities how a web sites can find out
- who you are, even if you are using a strict <span class=
- "APPLICATION">Privoxy</span> configuration and chained it with
- <span class="APPLICATION">Tor</span>.</p>
- <p>Most of <span class="APPLICATION">Privoxy's</span> privacy-enhancing
- features can be easily subverted by an insecure browser configuration,
- therefore you should use a browser that can be configured to only
- execute code from trusted sites, and be careful which sites you trust.
- For example there is no point in having <span class=
- "APPLICATION">Privoxy</span> modify the User-Agent header, if websites
- can get all the information they want through JavaScript, ActiveX,
- Flash, Java etc.</p>
- <p>A few browsers disclose the user's email address in certain
- situations, such as when transferring a file by FTP. <span class=
- "APPLICATION">Privoxy</span> does not filter FTP. If you need this
- feature, or are concerned about the mail handler of your browser
- disclosing your email address, you might consider products such as
+ <h3 class="SECT2"><a name="ANONFORSURE" id="ANONFORSURE">4.8. Can Privoxy guarantee I am anonymous?</a></h3>
+ <p>No. Your chances of remaining anonymous are improved, but unless you <a href="#TOR" target="_top">chain
+ <span class="APPLICATION">Privoxy</span> with <span class="APPLICATION">Tor</span></a> or a similar proxy and
+ know what you're doing when it comes to configuring the rest of your system, you should assume that everything
+ you do on the Web can be traced back to you.</p>
+ <p><span class="APPLICATION">Privoxy</span> can remove various information about you, and allows <span class=
+ "emphasis"><i class="EMPHASIS">you</i></span> more freedom to decide which sites you can trust, and what details
+ you want to reveal. But it neither hides your IP address, nor can it guarantee that the rest of the system
+ behaves correctly. There are several possibilities how a web sites can find out who you are, even if you are
+ using a strict <span class="APPLICATION">Privoxy</span> configuration and chained it with <span class=
+ "APPLICATION">Tor</span>.</p>
+ <p>Most of <span class="APPLICATION">Privoxy's</span> privacy-enhancing features can be easily subverted by an
+ insecure browser configuration, therefore you should use a browser that can be configured to only execute code
+ from trusted sites, and be careful which sites you trust. For example there is no point in having <span class=
+ "APPLICATION">Privoxy</span> modify the User-Agent header, if websites can get all the information they want
+ through JavaScript, ActiveX, Flash, Java etc.</p>
+ <p>A few browsers disclose the user's email address in certain situations, such as when transferring a file by
+ FTP. <span class="APPLICATION">Privoxy</span> does not filter FTP. If you need this feature, or are concerned
+ about the mail handler of your browser disclosing your email address, you might consider products such as
<span class="APPLICATION">NSClean</span>.</p>
- <p>Browsers available only as binaries could use non-standard headers
- to give out any information they can have access to: see the
- manufacturer's license agreement. It's impossible to anticipate and
- prevent every breach of privacy that might occur. The professionally
- paranoid prefer browsers available as source code, because anticipating
- their behavior is easier. Trust the source, Luke!</p>
+ <p>Browsers available only as binaries could use non-standard headers to give out any information they can have
+ access to: see the manufacturer's license agreement. It's impossible to anticipate and prevent every breach of
+ privacy that might occur. The professionally paranoid prefer browsers available as source code, because
+ anticipating their behavior is easier. Trust the source, Luke!</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="PROXYTEST" id="PROXYTEST">4.9. A test site
- says I am not using a Proxy.</a></h3>
- <p>Good! Actually, they are probably testing for some other kinds of
- proxies. Hiding yourself completely would require additional steps.</p>
+ <h3 class="SECT2"><a name="PROXYTEST" id="PROXYTEST">4.9. A test site says I am not using a Proxy.</a></h3>
+ <p>Good! Actually, they are probably testing for some other kinds of proxies. Hiding yourself completely would
+ require additional steps.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="TOR" id="TOR">4.10. How do I use Privoxy
- together with Tor?</a></h3>
- <p>Before you configure <span class="APPLICATION">Privoxy</span> to use
- <a href="https://www.torproject.org/" target="_top">Tor</a>, please
- follow the <i class="CITETITLE">User Manual</i> chapters <a href=
- "../user-manual/installation.html" target="_top">2. Installation</a>
- and <a href="../user-manual/startup.html" target="_top">5. Startup</a>
- to make sure <span class="APPLICATION">Privoxy</span> itself is setup
- correctly.</p>
- <p>If it is, refer to <a href=
- "https://www.torproject.org/documentation.html" target="_top">Tor's
- extensive documentation</a> to learn how to install <span class=
- "APPLICATION">Tor</span>, and make sure <span class=
- "APPLICATION">Tor</span>'s logfile says that <span class="QUOTE">"Tor
- has successfully opened a circuit"</span> and it <span class=
- "QUOTE">"looks like client functionality is working"</span>.</p>
- <p>If either <span class="APPLICATION">Tor</span> or <span class=
- "APPLICATION">Privoxy</span> isn't working, their combination most
- likely will neither. Testing them on their own will also help you to
- direct problem reports to the right audience. If <span class=
- "APPLICATION">Privoxy</span> isn't working, don't bother the
- <span class="APPLICATION">Tor</span> developers. If <span class=
- "APPLICATION">Tor</span> isn't working, don't send bug reports to the
- <span class="APPLICATION">Privoxy</span> Team.</p>
- <p>If you verified that <span class="APPLICATION">Privoxy</span> and
- <span class="APPLICATION">Tor</span> are working, it is time to connect
- them. As far as <span class="APPLICATION">Privoxy</span> is concerned,
- <span class="APPLICATION">Tor</span> is just another proxy that can be
- reached by socks4, socks4a and socks5. Most likely you are interested
- in <span class="APPLICATION">Tor</span> to increase your anonymity
- level, therefore you should use socks5, to make sure DNS requests are
- done through <span class="APPLICATION">Tor</span> and thus invisible to
- your local network. Using socks4a would work too, but with socks5 you
- get more precise error messages.</p>
- <p><span class="APPLICATION">Privoxy's</span> <a href=
- "../user-manual/config.html" target="_top">main configuration file</a>
- is already prepared for <span class="APPLICATION">Tor</span>, if you
- are using a default <span class="APPLICATION">Tor</span> configuration
- and run it on the same system as <span class=
- "APPLICATION">Privoxy</span>, you just have to edit the <a href=
- "../user-manual/config.html#FORWARDING" target="_top">forwarding
- section</a> and uncomment the line:</p>
+ <h3 class="SECT2"><a name="TOR" id="TOR">4.10. How do I use Privoxy together with Tor?</a></h3>
+ <p>Before you configure <span class="APPLICATION">Privoxy</span> to use <a href="https://www.torproject.org/"
+ target="_top">Tor</a>, please follow the <i class="CITETITLE">User Manual</i> chapters <a href=
+ "../user-manual/installation.html" target="_top">2. Installation</a> and <a href="../user-manual/startup.html"
+ target="_top">5. Startup</a> to make sure <span class="APPLICATION">Privoxy</span> itself is setup correctly.</p>
+ <p>If it is, refer to <a href="https://www.torproject.org/documentation.html" target="_top">Tor's extensive
+ documentation</a> to learn how to install <span class="APPLICATION">Tor</span>, and make sure <span class=
+ "APPLICATION">Tor</span>'s logfile says that <span class="QUOTE">"Tor has successfully opened a circuit"</span>
+ and it <span class="QUOTE">"looks like client functionality is working"</span>.</p>
+ <p>If either <span class="APPLICATION">Tor</span> or <span class="APPLICATION">Privoxy</span> isn't working,
+ their combination most likely will neither. Testing them on their own will also help you to direct problem
+ reports to the right audience. If <span class="APPLICATION">Privoxy</span> isn't working, don't bother the
+ <span class="APPLICATION">Tor</span> developers. If <span class="APPLICATION">Tor</span> isn't working, don't
+ send bug reports to the <span class="APPLICATION">Privoxy</span> Team.</p>
+ <p>If you verified that <span class="APPLICATION">Privoxy</span> and <span class="APPLICATION">Tor</span> are
+ working, it is time to connect them. As far as <span class="APPLICATION">Privoxy</span> is concerned,
+ <span class="APPLICATION">Tor</span> is just another proxy that can be reached by socks4, socks4a and socks5.
+ Most likely you are interested in <span class="APPLICATION">Tor</span> to increase your anonymity level,
+ therefore you should use socks5, to make sure DNS requests are done through <span class="APPLICATION">Tor</span>
+ and thus invisible to your local network. Using socks4a would work too, but with socks5 you get more precise
+ error messages.</p>
+ <p><span class="APPLICATION">Privoxy's</span> <a href="../user-manual/config.html" target="_top">main
+ configuration file</a> is already prepared for <span class="APPLICATION">Tor</span>, if you are using a default
+ <span class="APPLICATION">Tor</span> configuration and run it on the same system as <span class=
+ "APPLICATION">Privoxy</span>, you just have to edit the <a href="../user-manual/config.html#FORWARDING" target=
+ "_top">forwarding section</a> and uncomment the line:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # forward-socks5t / 127.0.0.1:9050 .
+ <pre class="SCREEN"># forward-socks5t / 127.0.0.1:9050 .
</pre>
</td>
</tr>
</table>
- <p>Note that if you got Tor through one of the bundles, you may have to
- change the port from 9050 to 9150 (or even another one). For details,
- please check the documentation on the <a href="https://torproject.org/"
- target="_top">Tor website</a>.</p>
- <p>This is enough to reach the Internet, but additionally you might
- want to uncomment the following forward rules, to make sure your local
- network is still reachable through Privoxy:</p>
+ <p>Note that if you got Tor through one of the bundles, you may have to change the port from 9050 to 9150 (or
+ even another one). For details, please check the documentation on the <a href="https://torproject.org/" target=
+ "_top">Tor website</a>.</p>
+ <p>This is enough to reach the Internet, but additionally you might want to uncomment the following forward
+ rules, to make sure your local network is still reachable through Privoxy:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Unencrypted connections to systems in these address ranges will be
- as (un)secure as the local network is, but the alternative is that your
- browser can't reach the network at all. Then again, that may actually
- be desired and if you don't know for sure that your browser has to be
- able to reach the local network, there's no reason to allow it.</p>
- <p>If you want your browser to be able to reach servers in your local
- network by using their names, you will need additional exceptions that
- look like this:</p>
+ <p>Unencrypted connections to systems in these address ranges will be as (un)secure as the local network is, but
+ the alternative is that your browser can't reach the network at all. Then again, that may actually be desired and
+ if you don't know for sure that your browser has to be able to reach the local network, there's no reason to
+ allow it.</p>
+ <p>If you want your browser to be able to reach servers in your local network by using their names, you will need
+ additional exceptions that look like this:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Save the modified configuration file and open <a href=
- "http://config.privoxy.org/show-status" target=
- "_top">http://config.privoxy.org/show-status</a> in your browser,
- confirm that <span class="APPLICATION">Privoxy</span> has reloaded its
- configuration and that there are no other forward lines, unless you
+ <p>Save the modified configuration file and open <a href="http://config.privoxy.org/show-status" target=
+ "_top">http://config.privoxy.org/show-status</a> in your browser, confirm that <span class=
+ "APPLICATION">Privoxy</span> has reloaded its configuration and that there are no other forward lines, unless you
know that you need them. If everything looks good, refer to <a href=
- "https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#IsMyConnectionPrivate"
- target="_top">Tor Faq 4.2</a> to learn how to verify that you are
- really using <span class="APPLICATION">Tor</span>.</p>
- <p>Afterward, please take the time to at least skim through the rest of
- <span class="APPLICATION">Tor's</span> documentation. Make sure you
- understand what <span class="APPLICATION">Tor</span> does, why it is no
- replacement for application level security, and why you probably don't
- want to use it for unencrypted logins.</p>
+ "https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#IsMyConnectionPrivate" target="_top">Tor Faq 4.2</a>
+ to learn how to verify that you are really using <span class="APPLICATION">Tor</span>.</p>
+ <p>Afterward, please take the time to at least skim through the rest of <span class="APPLICATION">Tor's</span>
+ documentation. Make sure you understand what <span class="APPLICATION">Tor</span> does, why it is no replacement
+ for application level security, and why you probably don't want to use it for unencrypted logins.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SITEBREAK" id="SITEBREAK">4.11. Might some
- things break because header information or content is being
- altered?</a></h3>
- <p>Definitely. It is common for sites to use browser type, browser
- version, HTTP header content, and various other techniques in order to
- dynamically decide what to display and how to display it. What you see,
- and what I see, might be very different. There are many, many ways that
- this can be handled, so having hard and fast rules, is tricky.</p>
- <p>The <span class="QUOTE">"User-Agent"</span> is sometimes used in
- this way to identify the browser, and adjust content accordingly.</p>
- <p>Also, different browsers use different encodings of non-English
- characters, certain web servers convert pages on-the-fly according to
- the User Agent header. Giving a <span class="QUOTE">"User Agent"</span>
- with the wrong operating system or browser manufacturer causes some
- sites in these languages to be garbled; Surfers to Eastern European
- sites should change it to something closer. And then some page access
- counters work by looking at the <span class="QUOTE">"Referer"</span>
- header; they may fail or break if unavailable. The weather maps of
- Intellicast have been blocked by their server when no <span class=
- "QUOTE">"Referer"</span> or cookie is provided, is another example.
- (But you can forge both headers without giving information away). There
- are many other ways things can go wrong when trying to fool a web
- server. The results of which could inadvertently cause pages to load
- incorrectly, partially, or even not at all. And there may be no obvious
- clues as to just what went wrong, or why. Nowhere will there be a
- message that says <span class="QUOTE">"<span class="emphasis"><i class=
- "EMPHASIS">Turn off <tt class="LITERAL">fast-redirects</tt> or
- else!</i></span> "</span></p>
- <p>Similar thoughts apply to modifying JavaScript, and, to a lesser
- degree, HTML elements.</p>
- <p>If you have problems with a site, you will have to adjust your
- configuration accordingly. Cookies are probably the most likely
- adjustment that may be required, but by no means the only one.</p>
+ <h3 class="SECT2"><a name="SITEBREAK" id="SITEBREAK">4.11. Might some things break because header information or
+ content is being altered?</a></h3>
+ <p>Definitely. It is common for sites to use browser type, browser version, HTTP header content, and various
+ other techniques in order to dynamically decide what to display and how to display it. What you see, and what I
+ see, might be very different. There are many, many ways that this can be handled, so having hard and fast rules,
+ is tricky.</p>
+ <p>The <span class="QUOTE">"User-Agent"</span> is sometimes used in this way to identify the browser, and adjust
+ content accordingly.</p>
+ <p>Also, different browsers use different encodings of non-English characters, certain web servers convert pages
+ on-the-fly according to the User Agent header. Giving a <span class="QUOTE">"User Agent"</span> with the wrong
+ operating system or browser manufacturer causes some sites in these languages to be garbled; Surfers to Eastern
+ European sites should change it to something closer. And then some page access counters work by looking at the
+ <span class="QUOTE">"Referer"</span> header; they may fail or break if unavailable. The weather maps of
+ Intellicast have been blocked by their server when no <span class="QUOTE">"Referer"</span> or cookie is provided,
+ is another example. (But you can forge both headers without giving information away). There are many other ways
+ things can go wrong when trying to fool a web server. The results of which could inadvertently cause pages to
+ load incorrectly, partially, or even not at all. And there may be no obvious clues as to just what went wrong, or
+ why. Nowhere will there be a message that says <span class="QUOTE">"<span class="emphasis"><i class=
+ "EMPHASIS">Turn off <tt class="LITERAL">fast-redirects</tt> or else!</i></span> "</span></p>
+ <p>Similar thoughts apply to modifying JavaScript, and, to a lesser degree, HTML elements.</p>
+ <p>If you have problems with a site, you will have to adjust your configuration accordingly. Cookies are probably
+ the most likely adjustment that may be required, but by no means the only one.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="CACHING" id="CACHING">4.12. Can Privoxy act
- as a <span class="QUOTE">"caching"</span> proxy to speed up web
- browsing?</a></h3>
- <p>No, it does not have this ability at all. You want something like
- <a href="http://www.squid-cache.org/" target="_top">Squid</a> or
- <a href="http://www.pps.jussieu.fr/~jch/software/polipo/" target=
- "_top">Polipo</a> for this. And, yes, before you ask, <span class=
- "APPLICATION">Privoxy</span> can co-exist with other kinds of proxies
- like <span class="APPLICATION">Squid</span>. See the <a href=
- "../user-manual/config.html#FORWARDING" target="_top">forwarding
- chapter</a> in the <a href="../user-manual/index.html" target=
- "_top">user manual</a> for details.</p>
+ <h3 class="SECT2"><a name="CACHING" id="CACHING">4.12. Can Privoxy act as a <span class="QUOTE">"caching"</span>
+ proxy to speed up web browsing?</a></h3>
+ <p>No, it does not have this ability at all. You want something like <a href="http://www.squid-cache.org/"
+ target="_top">Squid</a> or <a href="http://www.pps.jussieu.fr/~jch/software/polipo/" target="_top">Polipo</a> for
+ this. And, yes, before you ask, <span class="APPLICATION">Privoxy</span> can co-exist with other kinds of proxies
+ like <span class="APPLICATION">Squid</span>. See the <a href="../user-manual/config.html#FORWARDING" target=
+ "_top">forwarding chapter</a> in the <a href="../user-manual/index.html" target="_top">user manual</a> for
+ details.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="FIREWALL" id="FIREWALL">4.13. What about as
- a firewall? Can Privoxy protect me?</a></h3>
- <p>Not in the way you mean, or in the way some firewall vendors claim
- they can. <span class="APPLICATION">Privoxy</span> can help protect
- your privacy, but can't protect your system from intrusion attempts. It
- is, of course, perfectly possible to use <span class=
- "emphasis"><i class="EMPHASIS">both</i></span>.</p>
+ <h3 class="SECT2"><a name="FIREWALL" id="FIREWALL">4.13. What about as a firewall? Can Privoxy protect
+ me?</a></h3>
+ <p>Not in the way you mean, or in the way some firewall vendors claim they can. <span class=
+ "APPLICATION">Privoxy</span> can help protect your privacy, but can't protect your system from intrusion
+ attempts. It is, of course, perfectly possible to use <span class="emphasis"><i class=
+ "EMPHASIS">both</i></span>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="WASTED" id="WASTED">4.14. I have large empty
- spaces / a checkerboard pattern now where ads used to be. Why?</a></h3>
- <p>It is technically possible to eliminate banners and ads in a way
- that frees their allocated page space. This could easily be done by
- blocking with <span class="APPLICATION">Privoxy's</span> filters, and
- eliminating the <span class="emphasis"><i class=
- "EMPHASIS">entire</i></span> image references from the HTML page
- source.</p>
- <p>But, this would consume considerably more CPU resources (IOW, slow
- things down), would likely destroy the layout of some web pages which
- rely on the banners utilizing a certain amount of page space, and might
- fail in other cases, where the screen space is reserved (e.g. by HTML
- tables for instance). Also, making ads and banners disappear without
- any trace complicates troubleshooting, and would sooner or later be
- problematic.</p>
- <p>The better alternative is to instead let them stay, and block the
- resulting requests for the banners themselves as is now the case. This
- leaves either empty space, or the familiar checkerboard pattern.</p>
- <p>So the developers won't support this in the default configuration,
- but you can of course define appropriate filters yourself to achieve
- this.</p>
+ <h3 class="SECT2"><a name="WASTED" id="WASTED">4.14. I have large empty spaces / a checkerboard pattern now where
+ ads used to be. Why?</a></h3>
+ <p>It is technically possible to eliminate banners and ads in a way that frees their allocated page space. This
+ could easily be done by blocking with <span class="APPLICATION">Privoxy's</span> filters, and eliminating the
+ <span class="emphasis"><i class="EMPHASIS">entire</i></span> image references from the HTML page source.</p>
+ <p>But, this would consume considerably more CPU resources (IOW, slow things down), would likely destroy the
+ layout of some web pages which rely on the banners utilizing a certain amount of page space, and might fail in
+ other cases, where the screen space is reserved (e.g. by HTML tables for instance). Also, making ads and banners
+ disappear without any trace complicates troubleshooting, and would sooner or later be problematic.</p>
+ <p>The better alternative is to instead let them stay, and block the resulting requests for the banners
+ themselves as is now the case. This leaves either empty space, or the familiar checkerboard pattern.</p>
+ <p>So the developers won't support this in the default configuration, but you can of course define appropriate
+ filters yourself to achieve this.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SSL" id="SSL">4.15. How can Privoxy filter
- Secure (HTTPS) URLs?</a></h3>
- <p>Since secure HTTP connections are encrypted SSL sessions between
- your browser and the secure site, and are meant to be reliably
- <span class="emphasis"><i class="EMPHASIS">secure</i></span>, there is
- little that <span class="APPLICATION">Privoxy</span> can do but hand
- the raw gibberish data though from one end to the other
+ <h3 class="SECT2"><a name="SSL" id="SSL">4.15. How can Privoxy filter Secure (HTTPS) URLs?</a></h3>
+ <p>Since secure HTTP connections are encrypted SSL sessions between your browser and the secure site, and are
+ meant to be reliably <span class="emphasis"><i class="EMPHASIS">secure</i></span>, there is little that
+ <span class="APPLICATION">Privoxy</span> can do but hand the raw gibberish data though from one end to the other
unprocessed.</p>
- <p>The only exception to this is blocking by host patterns, as the
- client needs to tell <span class="APPLICATION">Privoxy</span> the name
- of the remote server, so that <span class="APPLICATION">Privoxy</span>
- can establish the connection. If that name matches a host-only pattern,
- the connection will be blocked.</p>
- <p>As far as ad blocking is concerned, this is less of a restriction
- than it may seem, since ad sources are often identifiable by the host
- name, and often the banners to be placed in an encrypted page come
- unencrypted nonetheless for efficiency reasons, which exposes them to
- the full power of <span class="APPLICATION">Privoxy</span>'s ad
- blocking.</p>
- <p><span class="QUOTE">"Content cookies"</span> (those that are
- embedded in the actual HTML or JS page content, see <tt class=
- "LITERAL"><a href=
- "../user-manual/actions-file.html#FILTER-CONTENT-COOKIES" target=
- "_top">filter{content-cookies}</a></tt>), in an SSL transaction will be
- impossible to block under these conditions. Fortunately, this does not
- seem to be a very common scenario since most cookies come by
- traditional means.</p>
+ <p>The only exception to this is blocking by host patterns, as the client needs to tell <span class=
+ "APPLICATION">Privoxy</span> the name of the remote server, so that <span class="APPLICATION">Privoxy</span> can
+ establish the connection. If that name matches a host-only pattern, the connection will be blocked.</p>
+ <p>As far as ad blocking is concerned, this is less of a restriction than it may seem, since ad sources are often
+ identifiable by the host name, and often the banners to be placed in an encrypted page come unencrypted
+ nonetheless for efficiency reasons, which exposes them to the full power of <span class=
+ "APPLICATION">Privoxy</span>'s ad blocking.</p>
+ <p><span class="QUOTE">"Content cookies"</span> (those that are embedded in the actual HTML or JS page content,
+ see <tt class="LITERAL"><a href="../user-manual/actions-file.html#FILTER-CONTENT-COOKIES" target=
+ "_top">filter{content-cookies}</a></tt>), in an SSL transaction will be impossible to block under these
+ conditions. Fortunately, this does not seem to be a very common scenario since most cookies come by traditional
+ means.</p>
+ </div>
+ <div class="SECT2">
+ <h3 class="SECT2"><a name="HTTP2" id="HTTP2">4.16. Does Privoxy support HTTP/2?</a></h3>
+ <p>Privoxy currently doesn't parse HTTP/2 but applications can tunnel HTTP/2 through Privoxy if Privoxy is
+ configured to allow CONNECT requests (default) which are also used for HTTPS.</p>
+ <p>Adding HTTP/2 support is on the TODO list but currently nobody is known to work on it.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SECURE" id="SECURE">4.16. Privoxy runs as a
- <span class="QUOTE">"server"</span>. How secure is it? Do I need to
- take any special precautions?</a></h3>
- <p>On Unix-like systems, <span class="APPLICATION">Privoxy</span> can
- run as a non-privileged user, which is how we recommend it be run.
- Also, by default <span class="APPLICATION">Privoxy</span> listens to
- requests from <span class="QUOTE">"localhost"</span> only.</p>
- <p>The server aspect of <span class="APPLICATION">Privoxy</span> is not
- itself directly exposed to the Internet in this configuration. If you
- want to have <span class="APPLICATION">Privoxy</span> serve as a LAN
- proxy, this will have to be opened up to allow for LAN requests. In
- this case, we'd recommend you specify only the LAN gateway address,
- e.g. 192.168.1.1, in the main <span class="APPLICATION">Privoxy</span>
- configuration file and check all <a href=
- "../user-manual/config.html#ACCESS-CONTROL" target="_top">access
- control and security options</a>. All LAN hosts can then use this as
- their proxy address in the browser proxy configuration, but
- <span class="APPLICATION">Privoxy</span> will not listen on any
- external interfaces. ACLs can be defined in addition, and using a
- firewall is always good too. Better safe than sorry.</p>
+ <h3 class="SECT2"><a name="SECURE" id="SECURE">4.17. Privoxy runs as a <span class="QUOTE">"server"</span>. How
+ secure is it? Do I need to take any special precautions?</a></h3>
+ <p>On Unix-like systems, <span class="APPLICATION">Privoxy</span> can run as a non-privileged user, which is how
+ we recommend it be run. Also, by default <span class="APPLICATION">Privoxy</span> listens to requests from
+ <span class="QUOTE">"localhost"</span> only.</p>
+ <p>The server aspect of <span class="APPLICATION">Privoxy</span> is not itself directly exposed to the Internet
+ in this configuration. If you want to have <span class="APPLICATION">Privoxy</span> serve as a LAN proxy, this
+ will have to be opened up to allow for LAN requests. In this case, we'd recommend you specify only the LAN
+ gateway address, e.g. 192.168.1.1, in the main <span class="APPLICATION">Privoxy</span> configuration file and
+ check all <a href="../user-manual/config.html#ACCESS-CONTROL" target="_top">access control and security
+ options</a>. All LAN hosts can then use this as their proxy address in the browser proxy configuration, but
+ <span class="APPLICATION">Privoxy</span> will not listen on any external interfaces. ACLs can be defined in
+ addition, and using a firewall is always good too. Better safe than sorry.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="TURNOFF" id="TURNOFF">4.17. Can I
- temporarily disable Privoxy?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> doesn't have a transparent
- proxy mode, but you can toggle off blocking and content filtering.</p>
- <p>The easiest way to do that is to point your browser to the remote
- toggle URL: <a href="http://config.privoxy.org/toggle" target=
- "_top">http://config.privoxy.org/toggle</a>.</p>
- <p>See the <a href="../user-manual/appendix.html#BOOKMARKLETS" target=
- "_top">Bookmarklets section</a> of the <i class="CITETITLE">User
- Manual</i> for an easy way to access this feature. Note that this is a
- feature that may need to be enabled in the main <tt class=
- "FILENAME">config</tt> file.</p>
+ <h3 class="SECT2"><a name="TURNOFF" id="TURNOFF">4.18. Can I temporarily disable Privoxy?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> doesn't have a transparent proxy mode, but you can toggle off
+ blocking and content filtering.</p>
+ <p>The easiest way to do that is to point your browser to the remote toggle URL: <a href=
+ "http://config.privoxy.org/toggle" target="_top">http://config.privoxy.org/toggle</a>.</p>
+ <p>See the <a href="../user-manual/appendix.html#BOOKMARKLETS" target="_top">Bookmarklets section</a> of the
+ <i class="CITETITLE">User Manual</i> for an easy way to access this feature. Note that this is a feature that may
+ need to be enabled in the main <tt class="FILENAME">config</tt> file.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="REALLYOFF" id="REALLYOFF">4.18. When
- <span class="QUOTE">"disabled"</span> is Privoxy totally out of the
- picture?</a></h3>
- <p>No, this just means all optional filtering and actions are disabled.
- <span class="APPLICATION">Privoxy</span> is still acting as a proxy,
- but just doing less of the things that <span class=
- "APPLICATION">Privoxy</span> would normally be expected to do. It is
- still a <span class="QUOTE">"middle-man"</span> in the interaction
- between your browser and web sites. See below to bypass the proxy.</p>
+ <h3 class="SECT2"><a name="REALLYOFF" id="REALLYOFF">4.19. When <span class="QUOTE">"disabled"</span> is Privoxy
+ totally out of the picture?</a></h3>
+ <p>No, this just means all optional filtering and actions are disabled. <span class="APPLICATION">Privoxy</span>
+ is still acting as a proxy, but just doing less of the things that <span class="APPLICATION">Privoxy</span> would
+ normally be expected to do. It is still a <span class="QUOTE">"middle-man"</span> in the interaction between your
+ browser and web sites. See below to bypass the proxy.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="TURNOFF2" id="TURNOFF2">4.19. How can I tell
- Privoxy to totally ignore certain sites?</a></h3>
- <p>Bypassing a proxy, or proxying based on arbitrary criteria, is
- purely a browser configuration issue, not a <span class=
- "APPLICATION">Privoxy</span> issue. Modern browsers typically do have
- settings for not proxying certain sites. Check your browser's help
- files.</p>
+ <h3 class="SECT2"><a name="TURNOFF2" id="TURNOFF2">4.20. How can I tell Privoxy to totally ignore certain
+ sites?</a></h3>
+ <p>Bypassing a proxy, or proxying based on arbitrary criteria, is purely a browser configuration issue, not a
+ <span class="APPLICATION">Privoxy</span> issue. Modern browsers typically do have settings for not proxying
+ certain sites. Check your browser's help files.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="CRUNCH" id="CRUNCH">4.20. My logs show
- Privoxy <span class="QUOTE">"crunches"</span> ads, but also its own
- internal CGI pages. What is a <span class=
- "QUOTE">"crunch"</span>?</a></h3>
- <p>A <span class="QUOTE">"crunch"</span> means <span class=
- "APPLICATION">Privoxy</span> intercepted <span class=
- "emphasis"><i class="EMPHASIS">something</i></span>, nothing more.
- Often this is indeed ads or banners, but <span class=
- "APPLICATION">Privoxy</span> uses the same mechanism for trapping
- requests for its own internal pages. For instance, a request for
- <span class="APPLICATION">Privoxy's</span> configuration page at:
- <a href="http://config.privoxy.org" target=
- "_top">http://config.privoxy.org</a>, is intercepted (i.e. it does not
- go out to the 'net), and the familiar CGI configuration is returned to
- the browser, and the log consequently will show a <span class=
- "QUOTE">"crunch"</span>.</p>
- <p>Since version 3.0.7, Privoxy will also log the crunch reason. If you
- are using an older version you might want to upgrade.</p>
+ <h3 class="SECT2"><a name="CRUNCH" id="CRUNCH">4.21. My logs show Privoxy <span class="QUOTE">"crunches"</span>
+ ads, but also its own internal CGI pages. What is a <span class="QUOTE">"crunch"</span>?</a></h3>
+ <p>A <span class="QUOTE">"crunch"</span> means <span class="APPLICATION">Privoxy</span> intercepted <span class=
+ "emphasis"><i class="EMPHASIS">something</i></span>, nothing more. Often this is indeed ads or banners, but
+ <span class="APPLICATION">Privoxy</span> uses the same mechanism for trapping requests for its own internal
+ pages. For instance, a request for <span class="APPLICATION">Privoxy's</span> configuration page at: <a href=
+ "http://config.privoxy.org" target="_top">http://config.privoxy.org</a>, is intercepted (i.e. it does not go out
+ to the 'net), and the familiar CGI configuration is returned to the browser, and the log consequently will show a
+ <span class="QUOTE">"crunch"</span>.</p>
+ <p>Since version 3.0.7, Privoxy will also log the crunch reason. If you are using an older version you might want
+ to upgrade.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="DOWNLOADS" id="DOWNLOADS">4.21. Can Privoxy
- affect files that I download from a webserver? FTP server?</a></h3>
- <p>From the webserver's perspective, there is no difference between
- viewing a document (i.e. a page), and downloading a file. The same is
- true of <span class="APPLICATION">Privoxy</span>. If there is a match
- for a <tt class="LITERAL"><a href=
- "../user-manual/actions-file.html#BLOCK" target="_top">block</a></tt>
- pattern, it will still be blocked, and of course this is obvious.</p>
- <p>Filtering is potentially more of a concern since the results are not
- always so obvious, and the effects of filtering are there whether the
- file is simply viewed, or downloaded. And potentially whether the
- content is some obnoxious advertisement, or Mr. Jimmy's latest/greatest
- source code jewel. Of course, one of these presumably is <span class=
- "QUOTE">"bad"</span> content that we don't want, and the other is
- <span class="QUOTE">"good"</span> content that we do want. <span class=
- "APPLICATION">Privoxy</span> is blind to the differences, and can only
- distinguish <span class="QUOTE">"good from bad"</span> by the
- configuration parameters <span class="emphasis"><i class=
- "EMPHASIS">we</i></span> give it.</p>
- <p><span class="APPLICATION">Privoxy</span> knows the differences in
- files according to the <span class="QUOTE">"Content Type"</span> as
- reported by the webserver. If this is reported accurately (e.g.
- <span class="QUOTE">"application/zip"</span> for a zip archive), then
- <span class="APPLICATION">Privoxy</span> knows to ignore these where
- appropriate. <span class="APPLICATION">Privoxy</span> potentially can
- filter HTML as well as plain text documents, subject to configuration
- parameters of course. Also, documents that are of an unknown type
- (generally assumed to be <span class="QUOTE">"text/plain"</span>) can
- be filtered, as will those that might be incorrectly reported by the
- webserver. If such a file is a downloaded file that is intended to be
- saved to disk, then any content that might have been altered by
- filtering, will be saved too, for these (probably rare) cases.</p>
- <p>Note that versions later than 3.0.2 do NOT filter document types
- reported as <span class="QUOTE">"text/plain"</span>. Prior to this,
- <span class="APPLICATION">Privoxy</span> did filter this document
+ <h3 class="SECT2"><a name="DOWNLOADS" id="DOWNLOADS">4.22. Can Privoxy affect files that I download from a
+ webserver? FTP server?</a></h3>
+ <p>From the webserver's perspective, there is no difference between viewing a document (i.e. a page), and
+ downloading a file. The same is true of <span class="APPLICATION">Privoxy</span>. If there is a match for a
+ <tt class="LITERAL"><a href="../user-manual/actions-file.html#BLOCK" target="_top">block</a></tt> pattern, it
+ will still be blocked, and of course this is obvious.</p>
+ <p>Filtering is potentially more of a concern since the results are not always so obvious, and the effects of
+ filtering are there whether the file is simply viewed, or downloaded. And potentially whether the content is some
+ obnoxious advertisement, or Mr. Jimmy's latest/greatest source code jewel. Of course, one of these presumably is
+ <span class="QUOTE">"bad"</span> content that we don't want, and the other is <span class="QUOTE">"good"</span>
+ content that we do want. <span class="APPLICATION">Privoxy</span> is blind to the differences, and can only
+ distinguish <span class="QUOTE">"good from bad"</span> by the configuration parameters <span class=
+ "emphasis"><i class="EMPHASIS">we</i></span> give it.</p>
+ <p><span class="APPLICATION">Privoxy</span> knows the differences in files according to the <span class=
+ "QUOTE">"Content Type"</span> as reported by the webserver. If this is reported accurately (e.g. <span class=
+ "QUOTE">"application/zip"</span> for a zip archive), then <span class="APPLICATION">Privoxy</span> knows to
+ ignore these where appropriate. <span class="APPLICATION">Privoxy</span> potentially can filter HTML as well as
+ plain text documents, subject to configuration parameters of course. Also, documents that are of an unknown type
+ (generally assumed to be <span class="QUOTE">"text/plain"</span>) can be filtered, as will those that might be
+ incorrectly reported by the webserver. If such a file is a downloaded file that is intended to be saved to disk,
+ then any content that might have been altered by filtering, will be saved too, for these (probably rare)
+ cases.</p>
+ <p>Note that versions later than 3.0.2 do NOT filter document types reported as <span class=
+ "QUOTE">"text/plain"</span>. Prior to this, <span class="APPLICATION">Privoxy</span> did filter this document
type.</p>
- <p>In short, filtering is <span class="QUOTE">"ON"</span> if a) the
- content type as reported by the webserver is appropriate <span class=
- "emphasis"><i class="EMPHASIS">and</i></span> b) the configuration
- allows it (or at least does not disallow it). That's it. There is no
- magic cookie anywhere to say this is <span class="QUOTE">"good"</span>
- and this is <span class="QUOTE">"bad"</span>. It's the configuration
- that lets it all happen or not.</p>
- <p>If you download text files, you probably do not want these to be
- filtered, particularly if the content is source code, or other critical
- content. Source code sometimes might be mistaken for Javascript (i.e.
- the kind that might open a pop-up window). It is recommended to turn
- off filtering for download sites (particularly if the content may be
- plain text files and you are using version 3.0.2 or earlier) in your
- <tt class="FILENAME">user.action</tt> file. And also, for any site or
- page where making <span class="emphasis"><i class=
- "EMPHASIS">any</i></span> changes at all to the content is to be
- avoided.</p>
- <p><span class="APPLICATION">Privoxy</span> does not do FTP at all,
- only HTTP and HTTPS (SSL) protocols.</p>
+ <p>In short, filtering is <span class="QUOTE">"ON"</span> if a) the content type as reported by the webserver is
+ appropriate <span class="emphasis"><i class="EMPHASIS">and</i></span> b) the configuration allows it (or at least
+ does not disallow it). That's it. There is no magic cookie anywhere to say this is <span class=
+ "QUOTE">"good"</span> and this is <span class="QUOTE">"bad"</span>. It's the configuration that lets it all
+ happen or not.</p>
+ <p>If you download text files, you probably do not want these to be filtered, particularly if the content is
+ source code, or other critical content. Source code sometimes might be mistaken for Javascript (i.e. the kind
+ that might open a pop-up window). It is recommended to turn off filtering for download sites (particularly if the
+ content may be plain text files and you are using version 3.0.2 or earlier) in your <tt class=
+ "FILENAME">user.action</tt> file. And also, for any site or page where making <span class="emphasis"><i class=
+ "EMPHASIS">any</i></span> changes at all to the content is to be avoided.</p>
+ <p><span class="APPLICATION">Privoxy</span> does not do FTP at all, only HTTP and HTTPS (SSL) protocols.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="DOWNLOADS2" id="DOWNLOADS2">4.22. I just
- downloaded a Perl script, and Privoxy altered it! Yikes, what is
- wrong!</a></h3>
+ <h3 class="SECT2"><a name="DOWNLOADS2" id="DOWNLOADS2">4.23. I just downloaded a Perl script, and Privoxy altered
+ it! Yikes, what is wrong!</a></h3>
<p>Please read above.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="HOSTSFILE" id="HOSTSFILE">4.23. Should I
- continue to use a <span class="QUOTE">"HOSTS"</span> file for
- ad-blocking?</a></h3>
- <p>One time-tested technique to defeat common ads is to trick the local
- DNS system by giving a phony IP address for the ad generator in the
- local <tt class="FILENAME">HOSTS</tt> file, typically using <tt class=
- "LITERAL">127.0.0.1</tt>, aka <tt class="LITERAL">localhost</tt>. This
- effectively blocks the ad.</p>
- <p>There is no reason to use this technique in conjunction with
- <span class="APPLICATION">Privoxy</span>. <span class=
- "APPLICATION">Privoxy</span> does essentially the same thing, much more
- elegantly and with much more flexibility. A large <tt class=
- "FILENAME">HOSTS</tt> file, in fact, not only duplicates effort, but
- may get in the way and seriously slow down your system. It is
- recommended to remove such entries from your <tt class=
- "FILENAME">HOSTS</tt> file. If you think your hosts list is neglected
- by <span class="APPLICATION">Privoxy's</span> configuration, consider
- adding your list to your <tt class="FILENAME">user.action</tt>
- file:</p>
+ <h3 class="SECT2"><a name="HOSTSFILE" id="HOSTSFILE">4.24. Should I continue to use a <span class=
+ "QUOTE">"HOSTS"</span> file for ad-blocking?</a></h3>
+ <p>One time-tested technique to defeat common ads is to trick the local DNS system by giving a phony IP address
+ for the ad generator in the local <tt class="FILENAME">HOSTS</tt> file, typically using <tt class=
+ "LITERAL">127.0.0.1</tt>, aka <tt class="LITERAL">localhost</tt>. This effectively blocks the ad.</p>
+ <p>There is no reason to use this technique in conjunction with <span class="APPLICATION">Privoxy</span>.
+ <span class="APPLICATION">Privoxy</span> does essentially the same thing, much more elegantly and with much more
+ flexibility. A large <tt class="FILENAME">HOSTS</tt> file, in fact, not only duplicates effort, but may get in
+ the way and seriously slow down your system. It is recommended to remove such entries from your <tt class=
+ "FILENAME">HOSTS</tt> file. If you think your hosts list is neglected by <span class=
+ "APPLICATION">Privoxy's</span> configuration, consider adding your list to your <tt class=
+ "FILENAME">user.action</tt> file:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</table>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SEEALSO" id="SEEALSO">4.24. Where can I find
- more information about Privoxy and related issues?</a></h3>
- <p>Other references and sites of interest to <span class=
- "APPLICATION">Privoxy</span> users:</p>
+ <h3 class="SECT2"><a name="SEEALSO" id="SEEALSO">4.25. Where can I find more information about Privoxy and
+ related issues?</a></h3>
+ <p>Other references and sites of interest to <span class="APPLICATION">Privoxy</span> users:</p>
<table border="0">
<tbody>
<tr>
- <td><a href="https://www.privoxy.org/" target=
- "_top">https://www.privoxy.org/</a>, the <span class=
+ <td><a href="https://www.privoxy.org/" target="_top">https://www.privoxy.org/</a>, the <span class=
"APPLICATION">Privoxy</span> Home page.</td>
</tr>
</tbody>
<table border="0">
<tbody>
<tr>
- <td><a href="https://www.privoxy.org/faq/" target=
- "_top">https://www.privoxy.org/faq/</a>, the <span class=
+ <td><a href="https://www.privoxy.org/faq/" target="_top">https://www.privoxy.org/faq/</a>, the <span class=
"APPLICATION">Privoxy</span> FAQ.</td>
</tr>
</tbody>
<tbody>
<tr>
<td><a href="https://www.privoxy.org/developer-manual/" target=
- "_top">https://www.privoxy.org/developer-manual/</a>, the
- <span class="APPLICATION">Privoxy</span> developer manual.</td>
+ "_top">https://www.privoxy.org/developer-manual/</a>, the <span class="APPLICATION">Privoxy</span>
+ developer manual.</td>
</tr>
</tbody>
</table>
<tbody>
<tr>
<td><a href="https://sourceforge.net/projects/ijbswa/" target=
- "_top">https://sourceforge.net/projects/ijbswa/</a>, the Project
- Page for <span class="APPLICATION">Privoxy</span> on <a href=
- "http://sourceforge.net" target="_top">SourceForge</a>.</td>
+ "_top">https://sourceforge.net/projects/ijbswa/</a>, the Project Page for <span class=
+ "APPLICATION">Privoxy</span> on <a href="http://sourceforge.net" target="_top">SourceForge</a>.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><a href="http://config.privoxy.org/" target=
- "_top">http://config.privoxy.org/</a>, the web-based user
- interface. <span class="APPLICATION">Privoxy</span> must be
- running for this to work. Shortcut: <a href="http://p.p/" target=
- "_top">http://p.p/</a></td>
+ <td><a href="http://config.privoxy.org/" target="_top">http://config.privoxy.org/</a>, the web-based user
+ interface. <span class="APPLICATION">Privoxy</span> must be running for this to work. Shortcut: <a href=
+ "http://p.p/" target="_top">http://p.p/</a></td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><a href=
- "https://sourceforge.net/tracker/?group_id=11118&atid=460288"
- target=
- "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>,
- to submit <span class="QUOTE">"misses"</span> and other
- configuration related suggestions to the developers.</td>
+ <td><a href="https://sourceforge.net/tracker/?group_id=11118&atid=460288" target=
+ "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>, to submit <span class=
+ "QUOTE">"misses"</span> and other configuration related suggestions to the developers.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><a href="http://www.squid-cache.org/" target=
- "_top">http://www.squid-cache.org/</a>, a popular caching proxy,
- which is often used together with <span class=
- "APPLICATION">Privoxy</span>.</td>
+ <td><a href="http://www.squid-cache.org/" target="_top">http://www.squid-cache.org/</a>, a popular caching
+ proxy, which is often used together with <span class="APPLICATION">Privoxy</span>.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><a href=
- "http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/"
- target=
- "_top">http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/</a>,
- <span class="APPLICATION">Polipo</span> is a caching proxy with
- advanced features like pipelining, multiplexing and caching of
- partial instances. In many setups it can be used as <span class=
- "APPLICATION">Squid</span> replacement.</td>
+ <td><a href="http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/" target=
+ "_top">http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/</a>, <span class=
+ "APPLICATION">Polipo</span> is a caching proxy with advanced features like pipelining, multiplexing and
+ caching of partial instances. In many setups it can be used as <span class="APPLICATION">Squid</span>
+ replacement.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><a href="https://www.torproject.org/" target=
- "_top">https://www.torproject.org/</a>, <span class=
- "APPLICATION">Tor</span> can help anonymize web browsing, web
- publishing, instant messaging, IRC, SSH, and other
- applications.</td>
+ <td><a href="https://www.torproject.org/" target="_top">https://www.torproject.org/</a>, <span class=
+ "APPLICATION">Tor</span> can help anonymize web browsing, web publishing, instant messaging, IRC, SSH, and
+ other applications.</td>
</tr>
</tbody>
</table>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="MICROSUCK" id="MICROSUCK">4.25. I've noticed
- that Privoxy changes <span class="QUOTE">"Microsoft"</span> to
- <span class="QUOTE">"MicroSuck"</span>! Why are you manipulating my
+ <h3 class="SECT2"><a name="MICROSUCK" id="MICROSUCK">4.26. I've noticed that Privoxy changes <span class=
+ "QUOTE">"Microsoft"</span> to <span class="QUOTE">"MicroSuck"</span>! Why are you manipulating my
browsing?</a></h3>
- <p>We're not. The text substitutions that you are seeing are disabled
- in the default configuration as shipped. You have either manually
- activated the <span class="QUOTE">"<tt class="LITERAL">fun</tt>"</span>
- filter which is clearly labeled <span class="QUOTE">"Text replacements
- for subversive browsing fun!"</span> or you are using an older Privoxy
- version and have implicitly activated it by choosing the <span class=
- "QUOTE">"Advanced"</span> profile in the web-based editor. Please
- upgrade.</p>
+ <p>We're not. The text substitutions that you are seeing are disabled in the default configuration as shipped.
+ You have either manually activated the <span class="QUOTE">"<tt class="LITERAL">fun</tt>"</span> filter which is
+ clearly labeled <span class="QUOTE">"Text replacements for subversive browsing fun!"</span> or you are using an
+ older Privoxy version and have implicitly activated it by choosing the <span class="QUOTE">"Advanced"</span>
+ profile in the web-based editor. Please upgrade.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="VALID" id="VALID">4.26. Does Privoxy produce
- <span class="QUOTE">"valid"</span> HTML (or XHTML)?</a></h3>
- <p>Privoxy generates HTML in both its own <span class=
- "QUOTE">"templates"</span>, and possibly whenever there are text
- substitutions via a <span class="APPLICATION">Privoxy</span> filter.
- While this should always conform to the HTML 4.01 specifications, it
- has not been validated against this or any other standard.</p>
+ <h3 class="SECT2"><a name="VALID" id="VALID">4.27. Does Privoxy produce <span class="QUOTE">"valid"</span> HTML
+ (or XHTML)?</a></h3>
+ <p>Privoxy generates HTML in both its own <span class="QUOTE">"templates"</span>, and possibly whenever there are
+ text substitutions via a <span class="APPLICATION">Privoxy</span> filter. While this should always conform to the
+ HTML 4.01 specifications, it has not been validated against this or any other standard.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SURPRISE-PRIVOXY" id=
- "SURPRISE-PRIVOXY">4.27. How did you manage to get Privoxy on my
+ <h3 class="SECT2"><a name="SURPRISE-PRIVOXY" id="SURPRISE-PRIVOXY">4.28. How did you manage to get Privoxy on my
computer without my consent?</a></h3>
- <p>We didn't. We make Privoxy available for download, but we don't go
- around installing it on other people's systems behind their back. If
- you discover Privoxy running on your system and are sure you didn't
- install it yourself, somebody else did. You may not even be running the
- real Privoxy, but maybe something else that only pretends to be
- Privoxy, or maybe something that is based on the real Privoxy, but has
- been modified.</p>
- <p>Lately there have been reports of problems with some kind of
- "parental control" software based on Privoxy that came preinstalled on
- certain <a href="https://sourceforge.net/p/ijbswa/bugs/813/" target=
- "_top">ASUS Netbooks</a>. The problems described are inconsistent with
- the behaviour of official Privoxy versions, which suggests that the
- preinstalled software may contain vendor modifications that we don't
- know about and thus can't debug.</p>
- <p>Privoxy's <a href="copyright.html">license</a> allows vendor
- modifications, but the vendor has to comply with the license, which
- involves informing the user about the changes and to make the changes
- available under the same license as Privoxy itself.</p>
- <p>If you are having trouble with a modified Privoxy version, please
- try to talk to whoever made the modifications before reporting the
- problem to us. Please also try to convince whoever made the
- modifications to talk to us. If you think somebody gave you a modified
- Privoxy version without complying to the license, please let us
- know.</p>
+ <p>We didn't. We make Privoxy available for download, but we don't go around installing it on other people's
+ systems behind their back. If you discover Privoxy running on your system and are sure you didn't install it
+ yourself, somebody else did. You may not even be running the real Privoxy, but maybe something else that only
+ pretends to be Privoxy, or maybe something that is based on the real Privoxy, but has been modified.</p>
+ <p>Lately there have been reports of problems with some kind of "parental control" software based on Privoxy that
+ came preinstalled on certain <a href="https://sourceforge.net/p/ijbswa/bugs/813/" target="_top">ASUS
+ Netbooks</a>. The problems described are inconsistent with the behaviour of official Privoxy versions, which
+ suggests that the preinstalled software may contain vendor modifications that we don't know about and thus can't
+ debug.</p>
+ <p>Privoxy's <a href="copyright.html">license</a> allows vendor modifications, but the vendor has to comply with
+ the license, which involves informing the user about the changes and to make the changes available under the same
+ license as Privoxy itself.</p>
+ <p>If you are having trouble with a modified Privoxy version, please try to talk to whoever made the
+ modifications before reporting the problem to us. Please also try to convince whoever made the modifications to
+ talk to us. If you think somebody gave you a modified Privoxy version without complying to the license, please
+ let us know.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href=
- "configuration.html" accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="trouble.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="configuration.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="trouble.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Configuration</td>
<html>
<head>
<title>Troubleshooting</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy Frequently Asked Questions" href=
- "index.html">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
+ <link rel="HOME" title="Privoxy Frequently Asked Questions" href="index.html">
<link rel="PREVIOUS" title="Miscellaneous" href="misc.html">
- <link rel="NEXT" title=
- "Contacting the developers, Bug Reporting and Feature Requests" href=
- "contact.html">
+ <link rel="NEXT" title="Contacting the developers, Bug Reporting and Feature Requests" href="contact.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy Frequently Asked
- Questions</th>
+ <th colspan="3" align="center">Privoxy Frequently Asked Questions</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="misc.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="misc.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="contact.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="contact.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="TROUBLE" id="TROUBLE">5.
- Troubleshooting</a></h1>
+ <h1 class="SECT1"><a name="TROUBLE" id="TROUBLE">5. Troubleshooting</a></h1>
<div class="SECT2">
- <h3 class="SECT2"><a name="REFUSED" id="REFUSED">5.1. I cannot connect
- to any websites. Or, I am getting <span class="QUOTE">"connection
- refused"</span> message with every web page. Why?</a></h3>
+ <h3 class="SECT2"><a name="REFUSED" id="REFUSED">5.1. I cannot connect to any websites. Or, I am getting
+ <span class="QUOTE">"connection refused"</span> message with every web page. Why?</a></h3>
<p>There are several possibilities:</p>
<ul>
<li>
- <p><span class="APPLICATION">Privoxy</span> is not running.
- Solution: verify that <span class="APPLICATION">Privoxy</span> is
- installed correctly, has not crashed, and is indeed running. Turn
- on <span class="APPLICATION">Privoxy's</span> logging, and look at
- the logs to see what they say.</p>
+ <p><span class="APPLICATION">Privoxy</span> is not running. Solution: verify that <span class=
+ "APPLICATION">Privoxy</span> is installed correctly, has not crashed, and is indeed running. Turn on
+ <span class="APPLICATION">Privoxy's</span> logging, and look at the logs to see what they say.</p>
</li>
<li>
- <p>Or your browser is configured for a different port than what
- <span class="APPLICATION">Privoxy</span> is using. Solution: verify
- that <span class="APPLICATION">Privoxy</span> and your browser are
- set to the same port (<tt class="LITERAL">listen-address</tt>).</p>
+ <p>Or your browser is configured for a different port than what <span class="APPLICATION">Privoxy</span> is
+ using. Solution: verify that <span class="APPLICATION">Privoxy</span> and your browser are set to the same
+ port (<tt class="LITERAL">listen-address</tt>).</p>
</li>
<li>
- <p>Or if using a forwarding rule, you have a configuration problem
- or a problem with a host in the forwarding chain. Solution:
- temporarily alter your configuration and take the forwarders out of
- the equation.</p>
+ <p>Or if using a forwarding rule, you have a configuration problem or a problem with a host in the forwarding
+ chain. Solution: temporarily alter your configuration and take the forwarders out of the equation.</p>
</li>
<li>
- <p>Or you have a firewall that is interfering and blocking you.
- Solution: try disabling or removing the firewall as a simple
- test.</p>
+ <p>Or you have a firewall that is interfering and blocking you. Solution: try disabling or removing the
+ firewall as a simple test.</p>
</li>
</ul>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="ERROR503" id="ERROR503">5.2. Why am I
- getting a 503 Error (WSAECONNREFUSED) on every page?</a></h3>
- <p>More than likely this is a problem with your TCP/IP networking.
- ZoneAlarm has been reported to cause this symptom -- even if not
- running! The solution is to either fight the ZA configuration, or
- uninstall ZoneAlarm, and then find something better behaved in its
- place. Other personal firewall type products may cause similar type
+ <h3 class="SECT2"><a name="ERROR503" id="ERROR503">5.2. Why am I getting a 503 Error (WSAECONNREFUSED) on every
+ page?</a></h3>
+ <p>More than likely this is a problem with your TCP/IP networking. ZoneAlarm has been reported to cause this
+ symptom -- even if not running! The solution is to either fight the ZA configuration, or uninstall ZoneAlarm, and
+ then find something better behaved in its place. Other personal firewall type products may cause similar type
problems if not configured correctly.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="FLUSHIT" id="FLUSHIT">5.3. I just added a
- new rule, but the steenkin ad is still getting through. How?</a></h3>
- <p>If the ad had been displayed before you added its URL, it will
- probably be held in the browser's cache for some time, so it will be
- displayed without the need for any request to the server, and
- <span class="APPLICATION">Privoxy</span> will not be involved. Flush
- the browser's caches, and then try again.</p>
- <p>If this doesn't help, you probably have an error in the rule you
- applied. Try pasting the full URL of the offending ad into <a href=
- "http://config.privoxy.org/show-url-info" target=
- "_top">http://config.privoxy.org/show-url-info</a> and see if it really
- matches your new rule. Blocking ads is like blocking spam: a lot of
- tinkering is required to stay ahead of the game. And remember you need
- to block the URL of the ad in question, which may be entirely different
- from the site URL itself. Most ads are hosted on different servers than
- the main site itself. If you right-click on the ad, you should be able
- to get all the relevant information you need. Alternately, you can find
- the correct URL by looking at <span class=
- "APPLICATION">Privoxy's</span> logs (you may need to enable logging in
- the main config file if its disabled).</p>
- <p>Below is a slightly modified real-life log snippet that originates
- with one requested URL: <tt class="LITERAL">www.example.com</tt> (name
- of site was changed for this example, the number of requests is real).
- You can see in this the complexity of what goes into making up this one
- <span class="QUOTE">"page"</span>. There are eight different domains
- involved here, with thirty two separate URLs requested in all, making
- up all manner of images, Shockwave Flash, JavaScript, CSS stylesheets,
- scripts, and other related content. Some of this content is obviously
- <span class="QUOTE">"good"</span> or <span class="QUOTE">"bad"</span>,
- but not all. Many of the more questionable looking requests, are going
- to outside domains that seem to be identifying themselves with
- suspicious looking names, making our job a little easier. <span class=
- "APPLICATION">Privoxy</span> has <span class="QUOTE">"crunched"</span>
- (meaning caught and BLOCKED) quite a few items in this example, but
- perhaps missed a few as well.</p>
+ <h3 class="SECT2"><a name="FLUSHIT" id="FLUSHIT">5.3. I just added a new rule, but the steenkin ad is still
+ getting through. How?</a></h3>
+ <p>If the ad had been displayed before you added its URL, it will probably be held in the browser's cache for
+ some time, so it will be displayed without the need for any request to the server, and <span class=
+ "APPLICATION">Privoxy</span> will not be involved. Flush the browser's caches, and then try again.</p>
+ <p>If this doesn't help, you probably have an error in the rule you applied. Try pasting the full URL of the
+ offending ad into <a href="http://config.privoxy.org/show-url-info" target=
+ "_top">http://config.privoxy.org/show-url-info</a> and see if it really matches your new rule. Blocking ads is
+ like blocking spam: a lot of tinkering is required to stay ahead of the game. And remember you need to block the
+ URL of the ad in question, which may be entirely different from the site URL itself. Most ads are hosted on
+ different servers than the main site itself. If you right-click on the ad, you should be able to get all the
+ relevant information you need. Alternately, you can find the correct URL by looking at <span class=
+ "APPLICATION">Privoxy's</span> logs (you may need to enable logging in the main config file if its disabled).</p>
+ <p>Below is a slightly modified real-life log snippet that originates with one requested URL: <tt class=
+ "LITERAL">www.example.com</tt> (name of site was changed for this example, the number of requests is real). You
+ can see in this the complexity of what goes into making up this one <span class="QUOTE">"page"</span>. There are
+ eight different domains involved here, with thirty two separate URLs requested in all, making up all manner of
+ images, Shockwave Flash, JavaScript, CSS stylesheets, scripts, and other related content. Some of this content is
+ obviously <span class="QUOTE">"good"</span> or <span class="QUOTE">"bad"</span>, but not all. Many of the more
+ questionable looking requests, are going to outside domains that seem to be identifying themselves with
+ suspicious looking names, making our job a little easier. <span class="APPLICATION">Privoxy</span> has
+ <span class="QUOTE">"crunched"</span> (meaning caught and BLOCKED) quite a few items in this example, but perhaps
+ missed a few as well.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Despite 12 out of 32 requests being blocked, the page looked, and
- seemed to behave perfectly <span class="QUOTE">"normal"</span> (minus
- some ads, of course).</p>
+ <p>Despite 12 out of 32 requests being blocked, the page looked, and seemed to behave perfectly <span class=
+ "QUOTE">"normal"</span> (minus some ads, of course).</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="BADSITE" id="BADSITE">5.4. One of my
- favorite sites does not work with Privoxy. What can I do?</a></h3>
- <p>First verify that it is indeed a <span class=
- "APPLICATION">Privoxy</span> problem, by toggling off <span class=
- "APPLICATION">Privoxy</span> through <a href=
- "http://config.privoxy.org/toggle" target=
- "_top">http://config.privoxy.org/toggle</a> (the toggle feature may
- need to be enabled in the main <tt class="FILENAME">config</tt>), and
- then shift-reloading the problem page (i.e. holding down the shift key
- while clicking reload. Alternatively, flush your browser's disk and
- memory caches).</p>
- <p>If the problem went away, we know we have a configuration related
- problem. Now go to <a href="http://config.privoxy.org/show-url-info"
- target="_top">http://config.privoxy.org/show-url-info</a> and paste the
- full URL of the page in question into the prompt. See which actions are
- being applied to the URL, and which matches in which actions files are
- responsible for that. It might be helpful also to look at your logs for
- this site too, to see what else might be happening (note: logging may
- need to be enabled in the main config file). Many sites are complex and
- require a number of related pages to help present their content. Look
- at what else might be used by the page in question, and what of that
- might be <span class="emphasis"><i class=
- "EMPHASIS">required</i></span>. Now, armed with this information, go to
- <a href="http://config.privoxy.org/show-status" target=
- "_top">http://config.privoxy.org/show-status</a> and select the
+ <h3 class="SECT2"><a name="BADSITE" id="BADSITE">5.4. One of my favorite sites does not work with Privoxy. What
+ can I do?</a></h3>
+ <p>First verify that it is indeed a <span class="APPLICATION">Privoxy</span> problem, by toggling off
+ <span class="APPLICATION">Privoxy</span> through <a href="http://config.privoxy.org/toggle" target=
+ "_top">http://config.privoxy.org/toggle</a> (the toggle feature may need to be enabled in the main <tt class=
+ "FILENAME">config</tt>), and then shift-reloading the problem page (i.e. holding down the shift key while
+ clicking reload. Alternatively, flush your browser's disk and memory caches).</p>
+ <p>If the problem went away, we know we have a configuration related problem. Now go to <a href=
+ "http://config.privoxy.org/show-url-info" target="_top">http://config.privoxy.org/show-url-info</a> and paste the
+ full URL of the page in question into the prompt. See which actions are being applied to the URL, and which
+ matches in which actions files are responsible for that. It might be helpful also to look at your logs for this
+ site too, to see what else might be happening (note: logging may need to be enabled in the main config file).
+ Many sites are complex and require a number of related pages to help present their content. Look at what else
+ might be used by the page in question, and what of that might be <span class="emphasis"><i class=
+ "EMPHASIS">required</i></span>. Now, armed with this information, go to <a href=
+ "http://config.privoxy.org/show-status" target="_top">http://config.privoxy.org/show-status</a> and select the
appropriate actions files for editing.</p>
- <p>You can now either look for a section which disables the actions
- that you suspect to cause the problem and add a pattern for your site
- there, or make up a completely new section for your site. In any case,
- the recommended way is to disable only the prime suspect, reload the
- problem page, and only if the problem persists, disable more and more
- actions until you have identified the culprit. You may or may not want
- to turn the other actions on again. Remember to flush your browser's
- caches in between any such changes!</p>
- <p>Alternately, if you are comfortable with a text editor, you can
- accomplish the same thing by editing the appropriate actions file.
- Probably the easiest way to deal with such problems when editing by
- hand is to add your site to a <tt class="LITERAL">{ fragile }</tt>
- section in <tt class="FILENAME">user.action</tt>, which is an alias
- that turns off most <span class="QUOTE">"dangerous"</span> actions, but
- is also likely to turn off more actions then needed, and thus lower
- your privacy and protection more than necessary,</p>
- <p>Troubleshooting actions is discussed in more detail in the <a href=
- "../user-manual/appendix.html#ACTIONSANAT" target="_top">User Manual
- appendix, Troubleshooting: the Anatomy of an Action</a>. There is also
- an <a href="../user-manual/actions-file.html#ACT-EXAMPLES" target=
- "_top">actions tutorial</a> with general configuration information and
- examples.</p>
- <p>As a last resort, you can always see if your browser has a setting
- that will bypass the proxy setting for selective sites. Modern browsers
- can do this.</p>
+ <p>You can now either look for a section which disables the actions that you suspect to cause the problem and add
+ a pattern for your site there, or make up a completely new section for your site. In any case, the recommended
+ way is to disable only the prime suspect, reload the problem page, and only if the problem persists, disable more
+ and more actions until you have identified the culprit. You may or may not want to turn the other actions on
+ again. Remember to flush your browser's caches in between any such changes!</p>
+ <p>Alternately, if you are comfortable with a text editor, you can accomplish the same thing by editing the
+ appropriate actions file. Probably the easiest way to deal with such problems when editing by hand is to add your
+ site to a <tt class="LITERAL">{ fragile }</tt> section in <tt class="FILENAME">user.action</tt>, which is an
+ alias that turns off most <span class="QUOTE">"dangerous"</span> actions, but is also likely to turn off more
+ actions then needed, and thus lower your privacy and protection more than necessary,</p>
+ <p>Troubleshooting actions is discussed in more detail in the <a href="../user-manual/appendix.html#ACTIONSANAT"
+ target="_top">User Manual appendix, Troubleshooting: the Anatomy of an Action</a>. There is also an <a href=
+ "../user-manual/actions-file.html#ACT-EXAMPLES" target="_top">actions tutorial</a> with general configuration
+ information and examples.</p>
+ <p>As a last resort, you can always see if your browser has a setting that will bypass the proxy setting for
+ selective sites. Modern browsers can do this.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="DUN" id="DUN">5.5. After installing Privoxy,
- I have to log in every time I start IE. What gives?</a></h3>
- <p>This is a quirk that affects the installation of <span class=
- "APPLICATION">Privoxy</span>, in conjunction with Internet Explorer and
- Internet Connection Sharing on Windows 2000 and Windows XP. The
- symptoms may appear to be corrupted or invalid DUN settings, or
- passwords.</p>
- <p>When setting up an NT based Windows system with <span class=
- "APPLICATION">Privoxy</span> you may find that things do not seem to be
- doing what you expect. When you set your system up you will probably
- have set up Internet Connection Sharing (ICS) with Dial up Networking
- (DUN) when logged in with administrator privileges. You will probably
- have made this DUN connection available to other accounts that you may
- have set-up on your system. E.g. Mum or Dad sets up the system and
- makes accounts suitably configured for the kids.</p>
- <p>When setting up <span class="APPLICATION">Privoxy</span> in this
- environment you will have to alter the proxy set-up of Internet
- Explorer (IE) for the specific DUN connection on which you wish to use
- <span class="APPLICATION">Privoxy</span>. When you do this the ICS DUN
- set-up becomes user specific. In this instance you will see no
- difference if you change the DUN connection under the account used to
- set-up the connection. However when you do this from another user you
- will notice that the DUN connection changes to make available to "Me
- only". You will also find that you have to store the password under
- each different user!</p>
- <p>The reason for this is that each user's set-up for IE is user
- specific. Each set-up DUN connection and each LAN connection in IE
- store the settings for each user individually. As such this enforces
- individual configurations rather than common ones. Hence the first time
- you use a DUN connection after re-booting your system it may not
- perform as you expect, and prompt you for the password. Just set and
- save the password again and all should be OK.</p>
+ <h3 class="SECT2"><a name="DUN" id="DUN">5.5. After installing Privoxy, I have to log in every time I start IE.
+ What gives?</a></h3>
+ <p>This is a quirk that affects the installation of <span class="APPLICATION">Privoxy</span>, in conjunction with
+ Internet Explorer and Internet Connection Sharing on Windows 2000 and Windows XP. The symptoms may appear to be
+ corrupted or invalid DUN settings, or passwords.</p>
+ <p>When setting up an NT based Windows system with <span class="APPLICATION">Privoxy</span> you may find that
+ things do not seem to be doing what you expect. When you set your system up you will probably have set up
+ Internet Connection Sharing (ICS) with Dial up Networking (DUN) when logged in with administrator privileges. You
+ will probably have made this DUN connection available to other accounts that you may have set-up on your system.
+ E.g. Mum or Dad sets up the system and makes accounts suitably configured for the kids.</p>
+ <p>When setting up <span class="APPLICATION">Privoxy</span> in this environment you will have to alter the proxy
+ set-up of Internet Explorer (IE) for the specific DUN connection on which you wish to use <span class=
+ "APPLICATION">Privoxy</span>. When you do this the ICS DUN set-up becomes user specific. In this instance you
+ will see no difference if you change the DUN connection under the account used to set-up the connection. However
+ when you do this from another user you will notice that the DUN connection changes to make available to "Me
+ only". You will also find that you have to store the password under each different user!</p>
+ <p>The reason for this is that each user's set-up for IE is user specific. Each set-up DUN connection and each
+ LAN connection in IE store the settings for each user individually. As such this enforces individual
+ configurations rather than common ones. Hence the first time you use a DUN connection after re-booting your
+ system it may not perform as you expect, and prompt you for the password. Just set and save the password again
+ and all should be OK.</p>
<p>[Thanks to Ray Griffith for this submission.]</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="FTP" id="FTP">5.6. I cannot connect to any
- FTP sites. Privoxy is blocking me.</a></h3>
- <p><span class="APPLICATION">Privoxy</span> cannot act as a proxy for
- FTP traffic, so do not configure your browser to use <span class=
- "APPLICATION">Privoxy</span> as an FTP proxy. The same is true for
- <span class="emphasis"><i class="EMPHASIS">any protocol other than HTTP
- or HTTPS (SSL)</i></span>.</p>
- <p>Most browsers understand FTP as well as HTTP. If you connect to a
- site, with a URL like <tt class="LITERAL">ftp://ftp.example.com</tt>,
- your browser is making an FTP connection, and not a HTTP connection. So
- while your browser may speak FTP, <span class=
- "APPLICATION">Privoxy</span> does not, and cannot proxy such
+ <h3 class="SECT2"><a name="FTP" id="FTP">5.6. I cannot connect to any FTP sites. Privoxy is blocking me.</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> cannot act as a proxy for FTP traffic, so do not configure your
+ browser to use <span class="APPLICATION">Privoxy</span> as an FTP proxy. The same is true for <span class=
+ "emphasis"><i class="EMPHASIS">any protocol other than HTTP or HTTPS (SSL)</i></span>.</p>
+ <p>Most browsers understand FTP as well as HTTP. If you connect to a site, with a URL like <tt class=
+ "LITERAL">ftp://ftp.example.com</tt>, your browser is making an FTP connection, and not a HTTP connection. So
+ while your browser may speak FTP, <span class="APPLICATION">Privoxy</span> does not, and cannot proxy such
traffic.</p>
- <p>To complicate matters, some systems may have a generic <span class=
- "QUOTE">"proxy"</span> setting, which will enable various protocols,
- including <span class="emphasis"><i class="EMPHASIS">both</i></span>
- HTTP and FTP proxying! So it is possible to accidentally enable FTP
- proxying in these cases. And of course, if this happens, <span class=
- "APPLICATION">Privoxy</span> will indeed cause problems since it does
- not know FTP. Newer version will give a sane error message if a FTP
- connection is attempted. Just disable the FTP setting and all will be
+ <p>To complicate matters, some systems may have a generic <span class="QUOTE">"proxy"</span> setting, which will
+ enable various protocols, including <span class="emphasis"><i class="EMPHASIS">both</i></span> HTTP and FTP
+ proxying! So it is possible to accidentally enable FTP proxying in these cases. And of course, if this happens,
+ <span class="APPLICATION">Privoxy</span> will indeed cause problems since it does not know FTP. Newer version
+ will give a sane error message if a FTP connection is attempted. Just disable the FTP setting and all will be
well again.</p>
- <p>Will <span class="APPLICATION">Privoxy</span> ever proxy FTP
- traffic? Unlikely. There just is not much reason, and the work to make
- this happen is more than it may seem.</p>
+ <p>Will <span class="APPLICATION">Privoxy</span> ever proxy FTP traffic? Unlikely. There just is not much reason,
+ and the work to make this happen is more than it may seem.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="MACOSXIE" id="MACOSXIE">5.7. In Mac OS X, I
- can't configure Microsoft Internet Explorer to use Privoxy as the HTTP
- proxy.</a></h3>
- <p>Microsoft Internet Explorer (in versions like 5.1) respects
- system-wide network settings. In order to change the HTTP proxy, open
- System Preferences, and click on the Network icon. In the settings pane
- that comes up, click on the Proxies tab. Ensure the "Web Proxy (HTTP)"
- checkbox is checked and enter <tt class="LITERAL">127.0.0.1</tt> in the
- entry field. Enter <tt class="LITERAL">8118</tt> in the Port field. The
- next time you start IE, it should reflect these values.</p>
+ <h3 class="SECT2"><a name="MACOSXIE" id="MACOSXIE">5.7. In Mac OS X, I can't configure Microsoft Internet
+ Explorer to use Privoxy as the HTTP proxy.</a></h3>
+ <p>Microsoft Internet Explorer (in versions like 5.1) respects system-wide network settings. In order to change
+ the HTTP proxy, open System Preferences, and click on the Network icon. In the settings pane that comes up, click
+ on the Proxies tab. Ensure the "Web Proxy (HTTP)" checkbox is checked and enter <tt class=
+ "LITERAL">127.0.0.1</tt> in the entry field. Enter <tt class="LITERAL">8118</tt> in the Port field. The next time
+ you start IE, it should reflect these values.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="MACOSXUNINSTALL" id="MACOSXUNINSTALL">5.8.
- In Mac OS X, I dragged the Privoxy folder to the trash in order to
- uninstall it. Now the finder tells me I don't have sufficient
- privileges to empty the trash.</a></h3>
+ <h3 class="SECT2"><a name="MACOSXUNINSTALL" id="MACOSXUNINSTALL">5.8. In Mac OS X, I dragged the Privoxy folder
+ to the trash in order to uninstall it. Now the finder tells me I don't have sufficient privileges to empty the
+ trash.</a></h3>
<p>Note: This ONLY applies to privoxy 3.0.6 and earlier.</p>
- <p>Just dragging the <span class="APPLICATION">Privoxy</span> folder to
- the trash is not enough to delete it. <span class=
- "APPLICATION">Privoxy</span> supplies an <span class=
- "APPLICATION">uninstall.command</span> file that takes care of these
- details. Open the trash, drag the <span class=
- "APPLICATION">uninstall.command</span> file out of the trash and
- double-click on it. You will be prompted for confirmation and the
- administration password.</p>
- <p>The trash may still appear full after this command; emptying the
- trash from the desktop should make it appear empty again.</p>
+ <p>Just dragging the <span class="APPLICATION">Privoxy</span> folder to the trash is not enough to delete it.
+ <span class="APPLICATION">Privoxy</span> supplies an <span class="APPLICATION">uninstall.command</span> file that
+ takes care of these details. Open the trash, drag the <span class="APPLICATION">uninstall.command</span> file out
+ of the trash and double-click on it. You will be prompted for confirmation and the administration password.</p>
+ <p>The trash may still appear full after this command; emptying the trash from the desktop should make it appear
+ empty again.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="MACOSXIMAGES" id="MACOSXIMAGES">5.9. In Mac
- OS X Panther (10.3), images often fail to load and/or I experience
- random delays in page loading. I'm using <tt class=
- "LITERAL">localhost</tt> as my browser's proxy setting.</a></h3>
- <p>We believe this is due to an IPv6-related bug in Mac OS X, but don't
- fully understand the issue yet. In any case, changing the proxy setting
- to <tt class="LITERAL">127.0.0.1</tt> instead of <tt class=
+ <h3 class="SECT2"><a name="MACOSXIMAGES" id="MACOSXIMAGES">5.9. In Mac OS X Panther (10.3), images often fail to
+ load and/or I experience random delays in page loading. I'm using <tt class="LITERAL">localhost</tt> as my
+ browser's proxy setting.</a></h3>
+ <p>We believe this is due to an IPv6-related bug in Mac OS X, but don't fully understand the issue yet. In any
+ case, changing the proxy setting to <tt class="LITERAL">127.0.0.1</tt> instead of <tt class=
"LITERAL">localhost</tt> works around the problem.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="MACOSXACCOUNTDELETION" id=
- "MACOSXACCOUNTDELETION">5.10. I just upgraded to Mac OS X 10.9
- (Mavericks) and now <span class="APPLICATION">Privoxy</span> has
- stopped working.</a></h3>
- <p>The upgrade process to Mac OS X Mavericks (10.9) from an earlier
- version of OS X deletes all user accounts that are either not part of
- OS X itself or are not interactive user accounts (ones you log in
- with). Since, for the sake of security, <span class=
- "APPLICATION">Privoxy</span> runs as a non-privileged user that is
- created by its installer (_privoxy), it can no longer start up once
- that account gets deleted. The solution is to perform a complete
- uninstall using the supplied <span class=
- "APPLICATION">uninstall.command</span> script (either back up your
- configuration files or select to not have the uninstaller remove them
- when it prompts you) and then reinstall <span class=
- "APPLICATION">Privoxy</span> using the installer package and merge in
- your configuration.</p>
+ <h3 class="SECT2"><a name="MACOSXACCOUNTDELETION" id="MACOSXACCOUNTDELETION">5.10. I just upgraded to Mac OS X
+ 10.9 (Mavericks) and now <span class="APPLICATION">Privoxy</span> has stopped working.</a></h3>
+ <p>The upgrade process to Mac OS X Mavericks (10.9) from an earlier version of OS X deletes all user accounts
+ that are either not part of OS X itself or are not interactive user accounts (ones you log in with). Since, for
+ the sake of security, <span class="APPLICATION">Privoxy</span> runs as a non-privileged user that is created by
+ its installer (_privoxy), it can no longer start up once that account gets deleted. The solution is to perform a
+ complete uninstall using the supplied <span class="APPLICATION">uninstall.command</span> script (either back up
+ your configuration files or select to not have the uninstaller remove them when it prompts you) and then
+ reinstall <span class="APPLICATION">Privoxy</span> using the installer package and merge in your
+ configuration.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="NOHOSTNAME" id="NOHOSTNAME">5.11. My logs
- show many <span class="QUOTE">"Unable to get my own hostname"</span>
- lines. Why?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> tries to get the hostname
- of the system its running on from the IP address of the system
- interface it is bound to (from the <tt class="FILENAME">config</tt>
- file <span class="emphasis"><i class=
- "EMPHASIS">listen-address</i></span> setting). If the system cannot
- supply this information, <span class="APPLICATION">Privoxy</span> logs
- this condition.</p>
- <p>Typically, this would be considered a minor system configuration
- error. It is not a fatal error to <span class=
- "APPLICATION">Privoxy</span> however, but may result in a much slower
- response from <span class="APPLICATION">Privoxy</span> on some
- platforms due to DNS timeouts.</p>
- <p>This can be caused by a problem with the local <tt class=
- "FILENAME">hosts</tt> file. If this file has been changed from the
- original, try reverting it to see if that helps. Make sure whatever
- name(s) are used for the local system, that they resolve both ways.</p>
- <p>You should also be able to work around the problem with the <a href=
- "../user-manual/config.html#HOSTNAME" target="_top">hostname
- option</a>.</p>
+ <h3 class="SECT2"><a name="NOHOSTNAME" id="NOHOSTNAME">5.11. My logs show many <span class="QUOTE">"Unable to get
+ my own hostname"</span> lines. Why?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> tries to get the hostname of the system its running on from the IP
+ address of the system interface it is bound to (from the <tt class="FILENAME">config</tt> file <span class=
+ "emphasis"><i class="EMPHASIS">listen-address</i></span> setting). If the system cannot supply this information,
+ <span class="APPLICATION">Privoxy</span> logs this condition.</p>
+ <p>Typically, this would be considered a minor system configuration error. It is not a fatal error to
+ <span class="APPLICATION">Privoxy</span> however, but may result in a much slower response from <span class=
+ "APPLICATION">Privoxy</span> on some platforms due to DNS timeouts.</p>
+ <p>This can be caused by a problem with the local <tt class="FILENAME">hosts</tt> file. If this file has been
+ changed from the original, try reverting it to see if that helps. Make sure whatever name(s) are used for the
+ local system, that they resolve both ways.</p>
+ <p>You should also be able to work around the problem with the <a href="../user-manual/config.html#HOSTNAME"
+ target="_top">hostname option</a>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="INUSE" id="INUSE">5.12. When I try to launch
- Privoxy, I get an error message <span class="QUOTE">"port 8118 is
- already in use"</span> (or similar wording). Why?</a></h3>
- <p>Port 8118 is <span class="APPLICATION">Privoxy's</span> default TCP
- <span class="QUOTE">"listening"</span> port. Typically this message
- would mean that there is already one instance of <span class=
- "APPLICATION">Privoxy</span> running, and your system is actually
- trying to start a second <span class="APPLICATION">Privoxy</span> on
- the same port, which will not work. (You can have multiple instances
- but they must be assigned different ports.) How and why this might
- happen varies from platform to platform, but you need to check your
- installation and start-up procedures.</p>
+ <h3 class="SECT2"><a name="INUSE" id="INUSE">5.12. When I try to launch Privoxy, I get an error message
+ <span class="QUOTE">"port 8118 is already in use"</span> (or similar wording). Why?</a></h3>
+ <p>Port 8118 is <span class="APPLICATION">Privoxy's</span> default TCP <span class="QUOTE">"listening"</span>
+ port. Typically this message would mean that there is already one instance of <span class=
+ "APPLICATION">Privoxy</span> running, and your system is actually trying to start a second <span class=
+ "APPLICATION">Privoxy</span> on the same port, which will not work. (You can have multiple instances but they
+ must be assigned different ports.) How and why this might happen varies from platform to platform, but you need
+ to check your installation and start-up procedures.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="DEMORONIZER" id="DEMORONIZER">5.13. Pages
- with UTF-8 fonts are garbled.</a></h3>
- <p>This may be the result of an overly aggressive filter. The filters
- that are enabled in the default configuration aren't expected to cause
- problems like this. If you enabled the <span class=
- "QUOTE">"demoronizer"</span> filter, please try temporarily disabling
- it.</p>
- <p>If that doesn't help, temporarily disable all filters to see if
- another filter could be the culprit. If the problem disappears, enable
- the filters one by one, until the problem reappears and the offending
- filter is found.</p>
- <p>Once the problem-causing filter is known, it can be fixed or
- disabled.</p>
- <p>Upgrading <span class="APPLICATION">Privoxy</span>, or going to the
- most recent <tt class="FILENAME">default.action</tt> file available
- from <a href=
- "https://sourceforge.net/project/showfiles.php?group_id=11118" target=
- "_top">SourceForge</a> might be worth a try, too.</p>
+ <h3 class="SECT2"><a name="DEMORONIZER" id="DEMORONIZER">5.13. Pages with UTF-8 fonts are garbled.</a></h3>
+ <p>This may be the result of an overly aggressive filter. The filters that are enabled in the default
+ configuration aren't expected to cause problems like this. If you enabled the <span class=
+ "QUOTE">"demoronizer"</span> filter, please try temporarily disabling it.</p>
+ <p>If that doesn't help, temporarily disable all filters to see if another filter could be the culprit. If the
+ problem disappears, enable the filters one by one, until the problem reappears and the offending filter is
+ found.</p>
+ <p>Once the problem-causing filter is known, it can be fixed or disabled.</p>
+ <p>Upgrading <span class="APPLICATION">Privoxy</span>, or going to the most recent <tt class=
+ "FILENAME">default.action</tt> file available from <a href=
+ "https://sourceforge.net/project/showfiles.php?group_id=11118" target="_top">SourceForge</a> might be worth a
+ try, too.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="DEMORONIZER2" id="DEMORONIZER2">5.14. Why
- are binary files (such as images) corrupted when Privoxy is
- used?</a></h3>
- <p>This may also be caused by an (<a href=
- "trouble.html#DEMORONIZER">overly aggressive filter</a> in conjunction
- with a web server that is misreporting the content type. By default
- binary files are exempted from <span class=
- "APPLICATION">Privoxy's</span> filtering (unless the web server by
- mistake says the file is something else).</p>
+ <h3 class="SECT2"><a name="DEMORONIZER2" id="DEMORONIZER2">5.14. Why are binary files (such as images) corrupted
+ when Privoxy is used?</a></h3>
+ <p>This may also be caused by an (<a href="trouble.html#DEMORONIZER">overly aggressive filter</a> in conjunction
+ with a web server that is misreporting the content type. By default binary files are exempted from <span class=
+ "APPLICATION">Privoxy's</span> filtering (unless the web server by mistake says the file is something else).</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="DEMORONIZER3" id="DEMORONIZER3">5.15. What
- is the <span class="QUOTE">"demoronizer"</span> and why is it
- there?</a></h3>
- <p>The original demoronizer was a Perl script that cleaned up HTML
- pages which were created with certain Microsoft products. MS has used
- proprietary extensions to standardized font encodings (ISO 8859-1),
- which has caused problems for pages that are viewed with non-Microsoft
- products (and are expecting to see a standard set of fonts). The
- demoronizer corrected these errors so the pages displayed correctly.
- <span class="APPLICATION">Privoxy</span> borrowed from this script,
- introducing a filter based on the original demoronizer, which in turn
- could correct these errors on the fly.</p>
- <p>But this is only needed in some situations, and will cause serious
- problems in some other situations.</p>
- <p>If you are using Microsoft products, you do not need it. If you need
- to view pages with UTF-8 characters (such as Cyrillic or Chinese), then
- it will cause corruption of the fonts, and thus <span class=
- "emphasis"><i class="EMPHASIS">should not be on</i></span>.</p>
- <p>On the other hand, if you use non-Microsoft products, and you
- occasionally notice weird characters on pages, you might want to try
- it.</p>
+ <h3 class="SECT2"><a name="DEMORONIZER3" id="DEMORONIZER3">5.15. What is the <span class=
+ "QUOTE">"demoronizer"</span> and why is it there?</a></h3>
+ <p>The original demoronizer was a Perl script that cleaned up HTML pages which were created with certain
+ Microsoft products. MS has used proprietary extensions to standardized font encodings (ISO 8859-1), which has
+ caused problems for pages that are viewed with non-Microsoft products (and are expecting to see a standard set of
+ fonts). The demoronizer corrected these errors so the pages displayed correctly. <span class=
+ "APPLICATION">Privoxy</span> borrowed from this script, introducing a filter based on the original demoronizer,
+ which in turn could correct these errors on the fly.</p>
+ <p>But this is only needed in some situations, and will cause serious problems in some other situations.</p>
+ <p>If you are using Microsoft products, you do not need it. If you need to view pages with UTF-8 characters (such
+ as Cyrillic or Chinese), then it will cause corruption of the fonts, and thus <span class="emphasis"><i class=
+ "EMPHASIS">should not be on</i></span>.</p>
+ <p>On the other hand, if you use non-Microsoft products, and you occasionally notice weird characters on pages,
+ you might want to try it.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="WINDOWOPEN" id="WINDOWOPEN">5.16. Why do I
- keep seeing <span class="QUOTE">"PrivoxyWindowOpen()"</span> in raw
- source code?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> is attempting to disable
- malicious <a href="http://en.wikipedia.org/wiki/Javascript" target=
- "_top">Javascript</a> in this case, with the <tt class=
- "LITERAL">unsolicited-popups</tt> filter. <span class=
- "APPLICATION">Privoxy</span> cannot tell very well <span class=
- "QUOTE">"good"</span> code snippets from <span class=
- "QUOTE">"bad"</span> code snippets.</p>
- <p>If you see this in HTML source, and the page displays without
- problems, then this is good, and likely some pop-up window was
- disabled. If you see this where it is causing a problem, such as a
- downloaded program source code file, then you should set an exception
- for this site or page such that the integrity of the page stays in tact
- by disabling all filtering.</p>
+ <h3 class="SECT2"><a name="WINDOWOPEN" id="WINDOWOPEN">5.16. Why do I keep seeing <span class=
+ "QUOTE">"PrivoxyWindowOpen()"</span> in raw source code?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> is attempting to disable malicious <a href=
+ "http://en.wikipedia.org/wiki/Javascript" target="_top">Javascript</a> in this case, with the <tt class=
+ "LITERAL">unsolicited-popups</tt> filter. <span class="APPLICATION">Privoxy</span> cannot tell very well
+ <span class="QUOTE">"good"</span> code snippets from <span class="QUOTE">"bad"</span> code snippets.</p>
+ <p>If you see this in HTML source, and the page displays without problems, then this is good, and likely some
+ pop-up window was disabled. If you see this where it is causing a problem, such as a downloaded program source
+ code file, then you should set an exception for this site or page such that the integrity of the page stays in
+ tact by disabling all filtering.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="DNSERRORS" id="DNSERRORS">5.17. I am getting
- too many DNS errors like <span class="QUOTE">"404 No Such
- Domain"</span>. Why can't Privoxy do this better?</a></h3>
- <p>There are potentially several factors here. First of all, the DNS
- resolution is done by the underlying operating system -- not
- <span class="APPLICATION">Privoxy</span> itself. <span class=
- "APPLICATION">Privoxy</span> merely initiates the process and hands it
- off, and then later reports whatever the outcome was and tries to give
- a coherent message if there seems to be a problem. In some cases, this
- might otherwise be mitigated by the browser itself which might try some
- work-arounds and alternate approaches (e.g adding <span class=
+ <h3 class="SECT2"><a name="DNSERRORS" id="DNSERRORS">5.17. I am getting too many DNS errors like <span class=
+ "QUOTE">"404 No Such Domain"</span>. Why can't Privoxy do this better?</a></h3>
+ <p>There are potentially several factors here. First of all, the DNS resolution is done by the underlying
+ operating system -- not <span class="APPLICATION">Privoxy</span> itself. <span class="APPLICATION">Privoxy</span>
+ merely initiates the process and hands it off, and then later reports whatever the outcome was and tries to give
+ a coherent message if there seems to be a problem. In some cases, this might otherwise be mitigated by the
+ browser itself which might try some work-arounds and alternate approaches (e.g adding <span class=
"QUOTE">"www."</span> to the URL).</p>
- <p>In other cases, if <span class="APPLICATION">Privoxy</span> is being
- chained with another proxy, this could complicate the issue, and cause
- undue delays and timeouts. In the case of a <span class=
- "QUOTE">"socks4a"</span> proxy, the socks server handles all the DNS.
- <span class="APPLICATION">Privoxy</span> would just be the <span class=
- "QUOTE">"messenger"</span> which is reporting whatever problem occurred
- downstream, and not the root cause of the error.</p>
- <p>In any case, versions newer than 3.0.3 include various improvements
- to help <span class="APPLICATION">Privoxy</span> better handle these
- cases.</p>
+ <p>In other cases, if <span class="APPLICATION">Privoxy</span> is being chained with another proxy, this could
+ complicate the issue, and cause undue delays and timeouts. In the case of a <span class="QUOTE">"socks4a"</span>
+ proxy, the socks server handles all the DNS. <span class="APPLICATION">Privoxy</span> would just be the
+ <span class="QUOTE">"messenger"</span> which is reporting whatever problem occurred downstream, and not the root
+ cause of the error.</p>
+ <p>In any case, versions newer than 3.0.3 include various improvements to help <span class=
+ "APPLICATION">Privoxy</span> better handle these cases.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="ALLCPU" id="ALLCPU">5.18. At one site
- Privoxy just hangs, and starts taking all CPU. Why is this?</a></h3>
- <p>This is probably a manifestation of the <span class="QUOTE">"100%
- cpu"</span> problem that occurs on pages containing many (thousands
- upon thousands) of blank lines. The blank lines are in the raw HTML
- source of the page, and the browser just ignores them. But the pattern
- matching in <span class="APPLICATION">Privoxy's</span> page filtering
- mechanism is trying to match against absurdly long strings and this
- becomes very CPU-intensive, taking a long, long time to complete.</p>
- <p>Until a better solution comes along, disable filtering on these
- pages, particularly the <tt class="LITERAL">js-annoyances</tt> and
- <tt class="LITERAL">unsolicited-popups</tt> filters. If you run into
- this problem with a recent <span class="APPLICATION">Privoxy</span>
- version, please send a problem report.</p>
+ <h3 class="SECT2"><a name="ALLCPU" id="ALLCPU">5.18. At one site Privoxy just hangs, and starts taking all CPU.
+ Why is this?</a></h3>
+ <p>This is probably a manifestation of the <span class="QUOTE">"100% cpu"</span> problem that occurs on pages
+ containing many (thousands upon thousands) of blank lines. The blank lines are in the raw HTML source of the
+ page, and the browser just ignores them. But the pattern matching in <span class="APPLICATION">Privoxy's</span>
+ page filtering mechanism is trying to match against absurdly long strings and this becomes very CPU-intensive,
+ taking a long, long time to complete.</p>
+ <p>Until a better solution comes along, disable filtering on these pages, particularly the <tt class=
+ "LITERAL">js-annoyances</tt> and <tt class="LITERAL">unsolicited-popups</tt> filters. If you run into this
+ problem with a recent <span class="APPLICATION">Privoxy</span> version, please send a problem report.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SLOWCRAWL" id="SLOWCRAWL">5.19. I just
- installed Privoxy, and all my browsing has slowed to a crawl. What
- gives?</a></h3>
- <p>This should not happen, and for the overwhelming number of users
- world-wide, it does not happen. I would suspect some inadvertent
- interaction of software components such as anti-virus software, spyware
- protectors, personal firewalls or similar components. Try disabling (or
- uninstalling) these one at a time and see if that helps. Either way, if
- you are using a recent <span class="APPLICATION">Privoxy</span>
- version, please report the problem.</p>
+ <h3 class="SECT2"><a name="SLOWCRAWL" id="SLOWCRAWL">5.19. I just installed Privoxy, and all my browsing has
+ slowed to a crawl. What gives?</a></h3>
+ <p>This should not happen, and for the overwhelming number of users world-wide, it does not happen. I would
+ suspect some inadvertent interaction of software components such as anti-virus software, spyware protectors,
+ personal firewalls or similar components. Try disabling (or uninstalling) these one at a time and see if that
+ helps. Either way, if you are using a recent <span class="APPLICATION">Privoxy</span> version, please report the
+ problem.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="PREVENTCOMP" id="PREVENTCOMP">5.20. Why do
- my filters work on some sites but not on others?</a></h3>
- <p>It's probably due to compression. It is a common practice for web
- servers to send their content <span class="QUOTE">"compressed"</span>
- in order to speed things up, and then let the browser <span class=
- "QUOTE">"uncompress"</span> them. When compiled with zlib support
- <span class="APPLICATION">Privoxy</span> can decompress content before
- filtering, otherwise you may want to enable <a href=
- "../user-manual/actions-file.html#PREVENT-COMPRESSION" target=
- "_top">prevent-compression</a>.</p>
- <p>As of <span class="APPLICATION">Privoxy</span> 3.0.9, zlib support
- is enabled in the default builds.</p>
+ <h3 class="SECT2"><a name="PREVENTCOMP" id="PREVENTCOMP">5.20. Why do my filters work on some sites but not on
+ others?</a></h3>
+ <p>It's probably due to compression. It is a common practice for web servers to send their content <span class=
+ "QUOTE">"compressed"</span> in order to speed things up, and then let the browser <span class=
+ "QUOTE">"uncompress"</span> them. When compiled with zlib support <span class="APPLICATION">Privoxy</span> can
+ decompress content before filtering, otherwise you may want to enable <a href=
+ "../user-manual/actions-file.html#PREVENT-COMPRESSION" target="_top">prevent-compression</a>.</p>
+ <p>As of <span class="APPLICATION">Privoxy</span> 3.0.9, zlib support is enabled in the default builds.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SSL-WARNINGS" id="SSL-WARNINGS">5.21. On
- some HTTPS sites my browser warns me about unauthenticated content, the
- URL bar doesn't get highlighted and the lock symbol appears to be
- broken. What's going on?</a></h3>
- <p>Probably the browser is requesting ads through HTTPS and
- <span class="APPLICATION">Privoxy</span> is blocking the requests.
- Privoxy's error messages are delivered unencrypted and while it's
- obvious for the browser that the HTTPS request is already blocked by
- the proxy, some warn about unauthenticated content anyway.</p>
- <p>To work around the problem you can redirect those requests to an
- invalid local address instead of blocking them. While the redirects
- aren't encrypted either, many browsers don't care. They simply follow
- the redirect, fail to reach a server and display an error message
- instead of the ad.</p>
- <p>To do that, enable logging to figure out which requests get blocked
- by <span class="APPLICATION">Privoxy</span> and add the hosts (no path
- patterns) to a section like this:</p>
+ <h3 class="SECT2"><a name="SSL-WARNINGS" id="SSL-WARNINGS">5.21. On some HTTPS sites my browser warns me about
+ unauthenticated content, the URL bar doesn't get highlighted and the lock symbol appears to be broken. What's
+ going on?</a></h3>
+ <p>Probably the browser is requesting ads through HTTPS and <span class="APPLICATION">Privoxy</span> is blocking
+ the requests. Privoxy's error messages are delivered unencrypted and while it's obvious for the browser that the
+ HTTPS request is already blocked by the proxy, some warn about unauthenticated content anyway.</p>
+ <p>To work around the problem you can redirect those requests to an invalid local address instead of blocking
+ them. While the redirects aren't encrypted either, many browsers don't care. They simply follow the redirect,
+ fail to reach a server and display an error message instead of the ad.</p>
+ <p>To do that, enable logging to figure out which requests get blocked by <span class=
+ "APPLICATION">Privoxy</span> and add the hosts (no path patterns) to a section like this:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- {+redirect{http://127.0.0.1:0/} -block -limit-connect}
+ <pre class="SCREEN">{+redirect{http://127.0.0.1:0/} -block -limit-connect}
.ivwbox.de:443/</pre>
</td>
</tr>
</table>
- <p>Additionally you have to configure your browser to contact
- <span class="QUOTE">"127.0.0.1:0"</span> directly (instead of through
- <span class="APPLICATION">Privoxy</span>).</p>
- <p>To add a proxy exception in <span class="APPLICATION">Mozilla
- Firefox</span> open the <span class="QUOTE">"Preferences"</span>, click
- the <span class="QUOTE">"Settings"</span> button located on the
- <span class="QUOTE">"Network"</span> tab in the <span class=
- "QUOTE">"Advanced"</span> section, and add <span class=
- "QUOTE">"127.0.0.1:0"</span> in the <span class="QUOTE">"No Proxy
- for:"</span> field.</p>
+ <p>Additionally you have to configure your browser to contact <span class="QUOTE">"127.0.0.1:0"</span> directly
+ (instead of through <span class="APPLICATION">Privoxy</span>).</p>
+ <p>To add a proxy exception in <span class="APPLICATION">Mozilla Firefox</span> open the <span class=
+ "QUOTE">"Preferences"</span>, click the <span class="QUOTE">"Settings"</span> button located on the <span class=
+ "QUOTE">"Network"</span> tab in the <span class="QUOTE">"Advanced"</span> section, and add <span class=
+ "QUOTE">"127.0.0.1:0"</span> in the <span class="QUOTE">"No Proxy for:"</span> field.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="SE-LINUX" id="SE-LINUX">5.22. I get selinux
- error messages. How can I fix this?</a></h3>
- <p>Please report the problem to the creator of your selinux
- policies.</p>
- <p>The problem is that some selinux policy writers aren't familiar with
- the application they are trying to <span class="QUOTE">"secure"</span>
- and thus create policies that make no sense.</p>
- <p>In <span class="APPLICATION">Privoxy's</span> case the problem
- usually is that the policy only allows outgoing connections for certain
- destination ports (e.g. 80 and 443). While this may cover the standard
- ports, websites occasionally use other ports as well. This isn't a
- security problem and therefore <span class=
- "APPLICATION">Privoxy's</span> default configuration doesn't block
- these requests.</p>
- <p>If you really want to block these ports (and don't be able to load
- websites that don't use standard ports), you should configure Privoxy
- to block these ports as well, so it doesn't trigger the selinux
- warnings.</p>
+ <h3 class="SECT2"><a name="SE-LINUX" id="SE-LINUX">5.22. I get selinux error messages. How can I fix
+ this?</a></h3>
+ <p>Please report the problem to the creator of your selinux policies.</p>
+ <p>The problem is that some selinux policy writers aren't familiar with the application they are trying to
+ <span class="QUOTE">"secure"</span> and thus create policies that make no sense.</p>
+ <p>In <span class="APPLICATION">Privoxy's</span> case the problem usually is that the policy only allows outgoing
+ connections for certain destination ports (e.g. 80 and 443). While this may cover the standard ports, websites
+ occasionally use other ports as well. This isn't a security problem and therefore <span class=
+ "APPLICATION">Privoxy's</span> default configuration doesn't block these requests.</p>
+ <p>If you really want to block these ports (and don't be able to load websites that don't use standard ports),
+ you should configure Privoxy to block these ports as well, so it doesn't trigger the selinux warnings.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="GENTOO-RICERS" id="GENTOO-RICERS">5.23. I
- compiled <span class="APPLICATION">Privoxy</span> with Gentoo's portage
- and it appears to be very slow. Why?</a></h3>
- <p>Probably you unintentionally compiled <span class=
- "APPLICATION">Privoxy</span> without threading support in which case
- requests have to be serialized and only one can be served at the same
- time.</p>
- <p>Check your <span class="QUOTE">"USE"</span> flags and make sure they
- include <span class="QUOTE">"threads"</span>. If they don't, add the
- flag and rebuild <span class="APPLICATION">Privoxy</span>.</p>
- <p>If you compiled <span class="APPLICATION">Privoxy</span> with
- threading support (on POSIX-based systems), the <span class=
- "QUOTE">"Conditional #defines"</span> section on <a href=
- "http://config.privoxy.org/show-status" target=
- "_top">http://config.privoxy.org/show-status</a> will list <span class=
- "QUOTE">"FEATURE_PTHREAD"</span> as <span class=
- "QUOTE">"enabled"</span>.</p>
+ <h3 class="SECT2"><a name="GENTOO-RICERS" id="GENTOO-RICERS">5.23. I compiled <span class=
+ "APPLICATION">Privoxy</span> with Gentoo's portage and it appears to be very slow. Why?</a></h3>
+ <p>Probably you unintentionally compiled <span class="APPLICATION">Privoxy</span> without threading support in
+ which case requests have to be serialized and only one can be served at the same time.</p>
+ <p>Check your <span class="QUOTE">"USE"</span> flags and make sure they include <span class=
+ "QUOTE">"threads"</span>. If they don't, add the flag and rebuild <span class="APPLICATION">Privoxy</span>.</p>
+ <p>If you compiled <span class="APPLICATION">Privoxy</span> with threading support (on POSIX-based systems), the
+ <span class="QUOTE">"Conditional #defines"</span> section on <a href="http://config.privoxy.org/show-status"
+ target="_top">http://config.privoxy.org/show-status</a> will list <span class="QUOTE">"FEATURE_PTHREAD"</span> as
+ <span class="QUOTE">"enabled"</span>.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="TAINTED-SOCKETS" id="TAINTED-SOCKETS">5.24.
- What are tainted sockets and how do I prevent them?</a></h3>
- <p><span class="APPLICATION">Privoxy</span> marks sockets as tainted
- when it can't use them to serve additional requests. This does not
- necessarily mean that something went wrong and information about
- tainted sockets is only logged if connection debugging is enabled
- (debug 2).</p>
- <p>For example server sockets that were used for CONNECT requests
- (which are used to tunnel https:// requests) are considered tainted
- once the client closed its connection to <span class=
- "APPLICATION">Privoxy</span>. Technically <span class=
- "APPLICATION">Privoxy</span> could keep the connection to the server
- open, but the server would not accept requests that do not belong to
- the previous TLS/SSL session (and the client may even have terminated
- the session).</p>
- <p>Server sockets are also marked tainted when a client requests a
- resource, but closes the connection before <span class=
- "APPLICATION">Privoxy</span> has completely received (and forwarded)
- the resource to the client. In this case the server would (probably)
- accept additional requests, but <span class=
- "APPLICATION">Privoxy</span> could not get the response without
- completely reading the leftovers from the previous response.</p>
- <p>These are just two examples, there are currently a bit more than 25
- scenarios in which a socket is considered tainted.</p>
- <p>While sockets can also be marked tainted as a result of a technical
- problem that may be worth fixing, the problem will be explicitly logged
- as error.</p>
+ <h3 class="SECT2"><a name="TAINTED-SOCKETS" id="TAINTED-SOCKETS">5.24. What are tainted sockets and how do I
+ prevent them?</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> marks sockets as tainted when it can't use them to serve additional
+ requests. This does not necessarily mean that something went wrong and information about tainted sockets is only
+ logged if connection debugging is enabled (debug 2).</p>
+ <p>For example server sockets that were used for CONNECT requests (which are used to tunnel https:// requests)
+ are considered tainted once the client closed its connection to <span class="APPLICATION">Privoxy</span>.
+ Technically <span class="APPLICATION">Privoxy</span> could keep the connection to the server open, but the server
+ would not accept requests that do not belong to the previous TLS/SSL session (and the client may even have
+ terminated the session).</p>
+ <p>Server sockets are also marked tainted when a client requests a resource, but closes the connection before
+ <span class="APPLICATION">Privoxy</span> has completely received (and forwarded) the resource to the client. In
+ this case the server would (probably) accept additional requests, but <span class="APPLICATION">Privoxy</span>
+ could not get the response without completely reading the leftovers from the previous response.</p>
+ <p>These are just two examples, there are currently a bit more than 25 scenarios in which a socket is considered
+ tainted.</p>
+ <p>While sockets can also be marked tainted as a result of a technical problem that may be worth fixing, the
+ problem will be explicitly logged as error.</p>
</div>
<div class="SECT2">
- <h3 class="SECT2"><a name="PCRE-STACK-LIMIT" id=
- "PCRE-STACK-LIMIT">5.25. After adding my custom filters, <span class=
- "APPLICATION">Privoxy</span> crashes when visitting certain
- websites</a></h3>
- <p>This can happen if your custom filters require more memory than
- <span class="APPLICATION">Privoxy</span> is allowed to use. Usually the
- problem is that the operating system enforces a stack size limit that
- isn't sufficient.</p>
- <p>Unless the problem occurs with the filters available in the default
- configuration, this is not considered a Privoxy bug.</p>
- <p>To prevent the crashes you can rewrite your filter to use less
- ressources, increase the relevant memory limit or recompile pcre to use
- less stack space. For details please see the <a href=
- "http://pcre.org/original/doc/html/pcrestack.html" target=
- "_top">pcrestack man page</a> and the documentation of your operating
- system.</p>
+ <h3 class="SECT2"><a name="PCRE-STACK-LIMIT" id="PCRE-STACK-LIMIT">5.25. After adding my custom filters,
+ <span class="APPLICATION">Privoxy</span> crashes when visitting certain websites</a></h3>
+ <p>This can happen if your custom filters require more memory than <span class="APPLICATION">Privoxy</span> is
+ allowed to use. Usually the problem is that the operating system enforces a stack size limit that isn't
+ sufficient.</p>
+ <p>Unless the problem occurs with the filters available in the default configuration, this is not considered a
+ Privoxy bug.</p>
+ <p>To prevent the crashes you can rewrite your filter to use less ressources, increase the relevant memory limit
+ or recompile pcre to use less stack space. For details please see the <a href=
+ "http://pcre.org/original/doc/html/pcrestack.html" target="_top">pcrestack man page</a> and the documentation of
+ your operating system.</p>
+ </div>
+ <div class="SECT2">
+ <h3 class="SECT2"><a name="FILE-PERMISSIONS" id="FILE-PERMISSIONS">5.26. What to do if editing the config file of
+ privoxy is access denied?</a></h3>
+ <p>Your userid probably isn't allowed to edit the file. On Windows you can use the windows equivalent of
+ sudo:</p>
+ <table border="0" bgcolor="#E0E0E0" width="100%">
+ <tr>
+ <td>
+ <pre class="SCREEN">runas /user:administrator "notepad \privoxy\config.txt"</pre>
+ </td>
+ </tr>
+ </table>
+ <p>or fix the file permissions:</p>
+ <table border="0" bgcolor="#E0E0E0" width="100%">
+ <tr>
+ <td>
+ <pre class="SCREEN">C:\Privoxy>icacls config.txt
+config.txt BUILTIN\Administrators:(I)(F)
+ NT AUTHORITY\SYSTEM:(I)(F)
+ BUILTIN\Users:(I)(RX)
+ NT AUTHORITY\Authenticated Users:(I)(M)
+
+Successfully processed 1 files; Failed processing 0 files
+
+C:\Privoxy>icacls config.txt /grant Lee:F
+processed file: config.txt
+Successfully processed 1 files; Failed processing 0 files
+
+C:\Privoxy>icacls config.txt
+config.txt I3668\Lee:(F)
+ BUILTIN\Administrators:(I)(F)
+ NT AUTHORITY\SYSTEM:(I)(F)
+ BUILTIN\Users:(I)(RX)
+ NT AUTHORITY\Authenticated Users:(I)(M)
+
+Successfully processed 1 files; Failed processing 0 files
+
+C:\Privoxy></pre>
+ </td>
+ </tr>
+ </table>
+ <p>or try to point-n-click your way through adjusting the file permissions in windows explorer.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="misc.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="contact.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="misc.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="contact.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Miscellaneous</td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top">Contacting the developers,
- Bug Reporting and Feature Requests</td>
+ <td width="33%" align="right" valign="top">Contacting the developers, Bug Reporting and Feature Requests</td>
</tr>
</table>
</div>
<html>
<head>
<title>Privoxy - Home Page</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="description" content=
- "Privoxy helps users to protect their privacy.">
+ <meta name="description" content="Privoxy helps users to protect their privacy.">
</head>
-<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="ARTICLE">
<div class="TITLEPAGE">
<h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy - Home Page</a></h1>
<div>
<div class="ABSTRACT">
<a name="AEN4" id="AEN4"></a>
- <p>Privoxy is a non-caching web proxy with advanced filtering
- capabilities for enhancing privacy, modifying web page data and
- HTTP headers, controlling access, and removing ads and other
- obnoxious Internet junk. Privoxy has a flexible configuration and
- can be customized to suit individual needs and tastes. It has
- application for both stand-alone systems and multi-user
- networks.</p>
+ <p>Privoxy is a non-caching web proxy with advanced filtering capabilities for enhancing privacy, modifying
+ web page data and HTTP headers, controlling access, and removing ads and other obnoxious Internet junk.
+ Privoxy has a flexible configuration and can be customized to suit individual needs and tastes. It has
+ application for both stand-alone systems and multi-user networks.</p>
<p>Privoxy is Free Software and licensed under the GNU GPLv2.</p>
- <p>Privoxy is an associated project of Software in the Public
- Interest (SPI).</p>
+ <p>Privoxy is an associated project of Software in the Public Interest (SPI).</p>
<p>Helping hands and donations are welcome:</p>
<ul>
<li>
- <p><a href=
- "https://www.privoxy.org/faq/general.html#PARTICIPATE" target=
+ <p><a href="https://www.privoxy.org/faq/general.html#PARTICIPATE" target=
"_top">https://www.privoxy.org/faq/general.html#PARTICIPATE</a></p>
</li>
<li>
- <p><a href="https://www.privoxy.org/faq/general.html#DONATE"
- target=
+ <p><a href="https://www.privoxy.org/faq/general.html#DONATE" target=
"_top">https://www.privoxy.org/faq/general.html#DONATE</a></p>
</li>
</ul>
- <p>The most recent release is <a href="announce.txt" target=
- "_top">3.0.27 (UNRELEASED)</a>.</p>
+ <p>The most recent release is <a href="announce.txt" target="_top">3.0.27 (UNRELEASED)</a>.</p>
</div>
</div>
<hr>
</div>
<div class="SECT1">
<h3 class="SECT1"><a name="DOWNLOAD" id="DOWNLOAD">Download</a></h3>
- <p>You can <a href="/sf-download-mirror/" target="_top">download
- Privoxy here</a>, from <a href="http://www.silvester.org.uk/privoxy/"
- target="_top">this mirror</a>, or from <a href=
- "https://sourceforge.net/projects/ijbswa/files/" target=
- "_top">SourceForge</a>.</p>
- <p>Note that the Privoxy project currently has no trusted build
- infrastructure. Binary packages are built and uploaded by individual
- members of the Privoxy project or external contributors. For details
- check the signatures.</p>
- <p>Subscribe to the <a href="/feeds/privoxy-releases.xml" target=
- "_top">release feed</a> to get informed when new releases are
- available.</p>
+ <p>You can <a href="/sf-download-mirror/" target="_top">download Privoxy here</a>, from <a href=
+ "http://www.silvester.org.uk/privoxy/" target="_top">this mirror</a>, or from <a href=
+ "https://sourceforge.net/projects/ijbswa/files/" target="_top">SourceForge</a>.</p>
+ <p>Note that the Privoxy project currently has no trusted build infrastructure. Binary packages are built and
+ uploaded by individual members of the Privoxy project or external contributors. For details check the
+ signatures.</p>
+ <p>Subscribe to the <a href="/feeds/privoxy-releases.xml" target="_top">release feed</a> to get informed when new
+ releases are available.</p>
</div>
<div class="SECT1">
<hr>
<h3 class="SECT1"><a name="DOCS" id="DOCS">Documentation</a></h3>
<ul>
<li>
- <p><a href="user-manual/quickstart.html" target="_top">Quickstart
- after installation</a></p>
+ <p><a href="user-manual/quickstart.html" target="_top">Quickstart after installation</a></p>
</li>
<li>
- <p><a href="user-manual/index.html" target="_top">User
- manual</a></p>
+ <p><a href="user-manual/index.html" target="_top">User manual</a></p>
</li>
<li>
- <p><a href="faq/index.html" target="_top">Frequently Asked
- Questions</a></p>
+ <p><a href="faq/index.html" target="_top">Frequently Asked Questions</a></p>
</li>
<li>
- <p><a href="developer-manual/index.html" target="_top">Developer
- Manual</a></p>
+ <p><a href="developer-manual/index.html" target="_top">Developer Manual</a></p>
</li>
<li>
- <p><a href="man-page/privoxy-man-page.html" target="_top">Classic
- Man Page</a></p>
+ <p><a href="man-page/privoxy-man-page.html" target="_top">Classic Man Page</a></p>
</li>
</ul>
</div>
<div class="SECT1">
<hr>
- <h3 class="SECT1"><a name="MOREINFO" id="MOREINFO">More
- information</a></h3>
+ <h3 class="SECT1"><a name="MOREINFO" id="MOREINFO">More information</a></h3>
<ul>
<li>
- <p><a href="user-manual/contact.html" target="_top">Support &
- Service</a></p>
+ <p><a href="user-manual/contact.html" target="_top">Support & Service</a></p>
</li>
<li>
- <p><a href="user-manual/copyright.html" target="_top">Copyright,
- License, History & Authors</a></p>
+ <p><a href="user-manual/copyright.html" target="_top">Copyright, License, History & Authors</a></p>
</li>
<li>
- <p><a href="user-manual/introduction.html#FEATURES" target=
- "_top">List of (new) Features</a></p>
+ <p><a href="user-manual/introduction.html#FEATURES" target="_top">List of (new) Features</a></p>
</li>
<li>
- <p><a href="https://www.privoxy.org/team/index.html" target=
- "_top">Pictures of the Privoxy Team</a></p>
+ <p><a href="https://www.privoxy.org/team/index.html" target="_top">Pictures of the Privoxy Team</a></p>
</li>
</ul>
</div>
<div class="SECT1">
<hr>
<h2 class="SECT1"><a name="AEN62" id="AEN62"></a></h2>
- <p style="text-align: center"><sub>The Privoxy website is also
- available as <a href="http://jvauzb4sb3bwlsnc.onion/" target="_top">Tor
- onion service</a>.</sub></p>
- <p style="text-align: center"><sub>Copyright © 2001-2017 by Privoxy
- Developers</sub></p>
- <p style="text-align: center"><sub>Hosting and development is funded in
- part by:</sub></p>
- <p style="text-align: center"><sub><a href=
- "http://www.7binaryoptions.com/robot/" target=
+ <p style="text-align: center"><sub>The Privoxy website is also available as <a href=
+ "http://jvauzb4sb3bwlsnc.onion/" target="_top">Tor onion service</a>.</sub></p>
+ <p style="text-align: center"><sub>Copyright © 2001-2017 by Privoxy Developers</sub></p>
+ <p style="text-align: center"><sub>Hosting and development is funded in part by:</sub></p>
+ <p style="text-align: center"><sub><a href="http://www.7binaryoptions.com/robot/" target=
"_top">7binaryoptions.com</a></sub></p>
- <p style="text-align: center"><sub><a href="/faq/general.html#SPONSOR"
- target="_top">Become a sponsor</a></sub></p>
+ <p style="text-align: center"><sub><a href="/faq/general.html#SPONSOR" target="_top">Become a
+ sponsor</a></sub></p>
</div>
</div>
</body>
<html>
<head>
<title>Privoxy - The Privacy Enhancing Proxy</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="description" content=
- "Privoxy helps users to protect their privacy.">
+ <meta name="description" content="Privoxy helps users to protect their privacy.">
</head>
-<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="ARTICLE">
<div class="TITLEPAGE">
- <h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy - The Privacy
- Enhancing Proxy</a></h1>
+ <h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy - The Privacy Enhancing Proxy</a></h1>
<h2 class="SUBTITLE">Project Index Page v3.0.27</h2>
<div>
<div class="ABSTRACT">
<a name="AEN5" id="AEN5"></a>
- <p>Privoxy is a non-caching web proxy with advanced filtering
- capabilities for enhancing privacy, modifying web page data and
- HTTP headers, controlling access, and removing ads and other
- obnoxious Internet junk. Privoxy has a flexible configuration and
- can be customized to suit individual needs and tastes. It has
- application for both stand-alone systems and multi-user
- networks.</p>
+ <p>Privoxy is a non-caching web proxy with advanced filtering capabilities for enhancing privacy, modifying
+ web page data and HTTP headers, controlling access, and removing ads and other obnoxious Internet junk.
+ Privoxy has a flexible configuration and can be customized to suit individual needs and tastes. It has
+ application for both stand-alone systems and multi-user networks.</p>
<p>Privoxy is Free Software and licensed under the GNU GPLv2.</p>
- <p>Privoxy is an associated project of Software in the Public
- Interest (SPI).</p>
+ <p>Privoxy is an associated project of Software in the Public Interest (SPI).</p>
<p>Helping hands and donations are welcome:</p>
<ul>
<li>
- <p><a href=
- "https://www.privoxy.org/faq/general.html#PARTICIPATE" target=
+ <p><a href="https://www.privoxy.org/faq/general.html#PARTICIPATE" target=
"_top">https://www.privoxy.org/faq/general.html#PARTICIPATE</a></p>
</li>
<li>
- <p><a href="https://www.privoxy.org/faq/general.html#DONATE"
- target=
+ <p><a href="https://www.privoxy.org/faq/general.html#DONATE" target=
"_top">https://www.privoxy.org/faq/general.html#DONATE</a></p>
</li>
</ul>
</div>
<div class="SECT1">
<h3 class="SECT1"><a name="DOWNLOAD" id="DOWNLOAD">Download</a></h3>
- <p>You can <a href="/sf-download-mirror/" target="_top">download
- Privoxy here</a>, from <a href="http://www.silvester.org.uk/privoxy/"
- target="_top">this mirror</a>, or from <a href=
- "https://sourceforge.net/projects/ijbswa/files/" target=
- "_top">SourceForge</a>.</p>
- <p>Note that the Privoxy project currently has no trusted build
- infrastructure. Binary packages are built and uploaded by individual
- members of the Privoxy project or external contributors. For details
- check the signatures.</p>
- <p>Subscribe to the <a href="/feeds/privoxy-releases.xml" target=
- "_top">release feed</a> to get informed when new releases are
- available.</p>
+ <p>You can <a href="/sf-download-mirror/" target="_top">download Privoxy here</a>, from <a href=
+ "http://www.silvester.org.uk/privoxy/" target="_top">this mirror</a>, or from <a href=
+ "https://sourceforge.net/projects/ijbswa/files/" target="_top">SourceForge</a>.</p>
+ <p>Note that the Privoxy project currently has no trusted build infrastructure. Binary packages are built and
+ uploaded by individual members of the Privoxy project or external contributors. For details check the
+ signatures.</p>
+ <p>Subscribe to the <a href="/feeds/privoxy-releases.xml" target="_top">release feed</a> to get informed when new
+ releases are available.</p>
</div>
<div class="SECT1">
<hr>
<h3 class="SECT1"><a name="DOCS" id="DOCS">Documentation</a></h3>
<ul>
<li>
- <p><a href="user-manual/quickstart.html" target="_top">Quickstart
- after installation</a></p>
+ <p><a href="user-manual/quickstart.html" target="_top">Quickstart after installation</a></p>
</li>
<li>
- <p><a href="user-manual/index.html" target="_top">User
- manual</a></p>
+ <p><a href="user-manual/index.html" target="_top">User manual</a></p>
</li>
<li>
- <p><a href="faq/index.html" target="_top">Frequently Asked
- Questions</a></p>
+ <p><a href="faq/index.html" target="_top">Frequently Asked Questions</a></p>
</li>
<li>
- <p><a href="developer-manual/index.html" target="_top">Developer
- Manual</a></p>
+ <p><a href="developer-manual/index.html" target="_top">Developer Manual</a></p>
</li>
<li>
- <p><a href="man-page/privoxy-man-page.html" target="_top">Classic
- Man Page</a></p>
+ <p><a href="man-page/privoxy-man-page.html" target="_top">Classic Man Page</a></p>
</li>
</ul>
</div>
<div class="SECT1">
<hr>
- <h3 class="SECT1"><a name="MOREINFO" id="MOREINFO">More
- information</a></h3>
+ <h3 class="SECT1"><a name="MOREINFO" id="MOREINFO">More information</a></h3>
<ul>
<li>
- <p><a href="user-manual/contact.html" target="_top">Support &
- Service</a></p>
+ <p><a href="user-manual/contact.html" target="_top">Support & Service</a></p>
</li>
<li>
- <p><a href="user-manual/copyright.html" target="_top">Copyright,
- License, History & Authors</a></p>
+ <p><a href="user-manual/copyright.html" target="_top">Copyright, License, History & Authors</a></p>
</li>
<li>
- <p><a href="user-manual/introduction.html#FEATURES" target=
- "_top">List of (new) Features</a></p>
+ <p><a href="user-manual/introduction.html#FEATURES" target="_top">List of (new) Features</a></p>
</li>
<li>
- <p><a href="https://www.privoxy.org/team/index.html" target=
- "_top">Pictures of the Privoxy Team</a></p>
+ <p><a href="https://www.privoxy.org/team/index.html" target="_top">Pictures of the Privoxy Team</a></p>
</li>
</ul>
</div>
<title>Privoxy sponsors</title>
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="description" content=
- "List of sponsors of the Privoxy project.">
+ <meta name="description" content="List of sponsors of the Privoxy project.">
</head>
-<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<h1>Privoxy sponsors</h1>
- <p>This page lists <a href="../">Privoxy</a> sponsors and their <a href=
- "../faq/general.html#SPONSOR">sponsor level</a> with the exception of
- sponsors that preferred not to be listed here.</p>
+ <p>This page lists <a href="../">Privoxy</a> sponsors and their <a href="../faq/general.html#SPONSOR">sponsor
+ level</a> with the exception of sponsors that preferred not to be listed here.</p>
<h3>Bronze sponsor</h3>
- <p><a href=
- "https://www.betrugstest.com/">https://www.betrugstest.com/</a></p>
+ <p><a href="https://www.betrugstest.com/">https://www.betrugstest.com/</a></p>
<h3>Becoming a Privoxy sponsor</h3>
<p>If you want to become a sponsor, please have a look at the <a title=
- "FAQ: How can I become a sponsor and get my logo or link on privoxy.org?"
- href="../faq/general.html#SPONSOR">sponsor policy</a>.</p>
+ "FAQ: How can I become a sponsor and get my logo or link on privoxy.org?" href="../faq/general.html#SPONSOR">sponsor
+ policy</a>.</p>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
- <meta name="generator" content=
- "HTML Tidy for Linux/x86 (vers 7 December 2008), see www.w3.org">
+ <meta name="generator" content="HTML Tidy for Linux/x86 (vers 7 December 2008), see www.w3.org">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Privoxy - Team Photos</title>
<link rel="stylesheet" type="text/css" href="../p_doc.css">
<p>In our day jobs, we're all models ;-)</p>
<table align="center">
<tr>
- <td><a href="01stefanw.jpg"><img src="01stefanw_t.jpg" width="80"
- height="80" border="0" title="Stefan Waldherr"></a></td>
- <td><a href="02jon.jpg"><img src="02jon_t.jpg" width="80" height="80"
- border="0" title="Jon Foster"></a></td>
- <td><a href="03andreas.jpg"><img src="03andreas_t.jpg" width="80"
- height="80" border="0" title="Andreas Oesterhelt"></a></td>
- <td><a href="04rodney.jpg"><img src="04rodney_t.jpg" width="80" height=
- "80" border="0" title="Rodney Stromlund"></a></td>
+ <td><a href="01stefanw.jpg"><img src="01stefanw_t.jpg" width="80" height="80" border="0" title=
+ "Stefan Waldherr"></a></td>
+ <td><a href="02jon.jpg"><img src="02jon_t.jpg" width="80" height="80" border="0" title="Jon Foster"></a></td>
+ <td><a href="03andreas.jpg"><img src="03andreas_t.jpg" width="80" height="80" border="0" title=
+ "Andreas Oesterhelt"></a></td>
+ <td><a href="04rodney.jpg"><img src="04rodney_t.jpg" width="80" height="80" border="0" title=
+ "Rodney Stromlund"></a></td>
</tr>
<tr>
- <td><a href="05david.jpg"><img src="05david_t.jpg" width="80" height=
- "80" border="0" title="David Schmidt"></a></td>
- <td><a href="06member.jpg"><img src="06member_t.jpg" width="80" height=
- "80" border="0" title="N/A"></a></td>
- <td><a href="07member.jpg"><img src="07member_t.jpg" width="80" height=
- "80" border="0" title="N/A"></a></td>
- <td><a href="08member.jpg"><img src="08member_t.jpg" width="80" height=
- "80" border="0" title="N/A"></a></td>
+ <td><a href="05david.jpg"><img src="05david_t.jpg" width="80" height="80" border="0" title=
+ "David Schmidt"></a></td>
+ <td><a href="06member.jpg"><img src="06member_t.jpg" width="80" height="80" border="0" title="N/A"></a></td>
+ <td><a href="07member.jpg"><img src="07member_t.jpg" width="80" height="80" border="0" title="N/A"></a></td>
+ <td><a href="08member.jpg"><img src="08member_t.jpg" width="80" height="80" border="0" title="N/A"></a></td>
</tr>
</table>
</body>
<html>
<head>
<title>Actions Files</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
- <link rel="PREVIOUS" title="The Main Configuration File" href=
- "config.html">
+ <link rel="PREVIOUS" title="The Main Configuration File" href="config.html">
<link rel="NEXT" title="Filter Files" href="filter-file.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="config.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="config.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "filter-file.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="filter-file.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="ACTIONS-FILE" id="ACTIONS-FILE">8. Actions
- Files</a></h1>
- <p>The actions files are used to define what <span class=
- "emphasis"><i class="EMPHASIS">actions</i></span> <span class=
- "APPLICATION">Privoxy</span> takes for which URLs, and thus determines
- how ad images, cookies and various other aspects of HTTP content and
- transactions are handled, and on which sites (or even parts thereof).
- There are a number of such actions, with a wide range of functionality.
- Each action does something a little different. These actions give us a
- veritable arsenal of tools with which to exert our control, preferences
- and independence. Actions can be combined so that their effects are
- aggregated when applied against a given set of URLs.</p>
- <p>There are three action files included with <span class=
- "APPLICATION">Privoxy</span> with differing purposes:</p>
+ <h1 class="SECT1"><a name="ACTIONS-FILE" id="ACTIONS-FILE">8. Actions Files</a></h1>
+ <p>The actions files are used to define what <span class="emphasis"><i class="EMPHASIS">actions</i></span>
+ <span class="APPLICATION">Privoxy</span> takes for which URLs, and thus determines how ad images, cookies and
+ various other aspects of HTTP content and transactions are handled, and on which sites (or even parts thereof).
+ There are a number of such actions, with a wide range of functionality. Each action does something a little
+ different. These actions give us a veritable arsenal of tools with which to exert our control, preferences and
+ independence. Actions can be combined so that their effects are aggregated when applied against a given set of
+ URLs.</p>
+ <p>There are three action files included with <span class="APPLICATION">Privoxy</span> with differing purposes:</p>
<ul>
<li>
- <p><tt class="FILENAME">match-all.action</tt> - is used to define
- which <span class="QUOTE">"actions"</span> relating to
- banner-blocking, images, pop-ups, content modification, cookie
- handling etc should be applied by default. It should be the first
- actions file loaded</p>
+ <p><tt class="FILENAME">match-all.action</tt> - is used to define which <span class="QUOTE">"actions"</span>
+ relating to banner-blocking, images, pop-ups, content modification, cookie handling etc should be applied by
+ default. It should be the first actions file loaded</p>
</li>
<li>
- <p><tt class="FILENAME">default.action</tt> - defines many exceptions
- (both positive and negative) from the default set of actions that's
- configured in <tt class="FILENAME">match-all.action</tt>. It is a set
- of rules that should work reasonably well as-is for most users. This
- file is only supposed to be edited by the developers. It should be
- the second actions file loaded.</p>
+ <p><tt class="FILENAME">default.action</tt> - defines many exceptions (both positive and negative) from the
+ default set of actions that's configured in <tt class="FILENAME">match-all.action</tt>. It is a set of rules
+ that should work reasonably well as-is for most users. This file is only supposed to be edited by the
+ developers. It should be the second actions file loaded.</p>
</li>
<li>
- <p><tt class="FILENAME">user.action</tt> - is intended to be for
- local site preferences and exceptions. As an example, if your ISP or
- your bank has specific requirements, and need special handling, this
- kind of thing should go here. This file will not be upgraded.</p>
+ <p><tt class="FILENAME">user.action</tt> - is intended to be for local site preferences and exceptions. As an
+ example, if your ISP or your bank has specific requirements, and need special handling, this kind of thing
+ should go here. This file will not be upgraded.</p>
</li>
<li>
- <p><span class="GUIBUTTON">Edit</span> <span class="GUIBUTTON">Set to
- Cautious</span> <span class="GUIBUTTON">Set to Medium</span>
- <span class="GUIBUTTON">Set to Advanced</span></p>
- <p>These have increasing levels of aggressiveness <span class=
- "emphasis"><i class="EMPHASIS">and have no influence on your browsing
- unless you select them explicitly in the editor</i></span>. A default
- installation should be pre-set to <tt class="LITERAL">Cautious</tt>.
- New users should try this for a while before adjusting the settings
- to more aggressive levels. The more aggressive the settings, then the
- more likelihood there is of problems such as sites not working as
- they should.</p>
- <p>The <span class="GUIBUTTON">Edit</span> button allows you to turn
- each action on/off individually for fine-tuning. The <span class=
- "GUIBUTTON">Cautious</span> button changes the actions list to
- low/safe settings which will activate ad blocking and a minimal set
- of <span class="APPLICATION">Privoxy</span>'s features, and
- subsequently there will be less of a chance for accidental problems.
- The <span class="GUIBUTTON">Medium</span> button sets the list to a
- medium level of other features and a low level set of privacy
- features. The <span class="GUIBUTTON">Advanced</span> button sets the
- list to a high level of ad blocking and medium level of privacy. See
- the chart below. The latter three buttons over-ride any changes via
- with the <span class="GUIBUTTON">Edit</span> button. More fine-tuning
- can be done in the lower sections of this internal page.</p>
- <p>While the actions file editor allows to enable these settings in
- all actions files, they are only supposed to be enabled in the first
- one to make sure you don't unintentionally overrule earlier
- rules.</p>
- <p>The default profiles, and their associated actions, as pre-defined
- in <tt class="FILENAME">default.action</tt> are:</p>
+ <p><span class="GUIBUTTON">Edit</span> <span class="GUIBUTTON">Set to Cautious</span> <span class=
+ "GUIBUTTON">Set to Medium</span> <span class="GUIBUTTON">Set to Advanced</span></p>
+ <p>These have increasing levels of aggressiveness <span class="emphasis"><i class="EMPHASIS">and have no
+ influence on your browsing unless you select them explicitly in the editor</i></span>. A default installation
+ should be pre-set to <tt class="LITERAL">Cautious</tt>. New users should try this for a while before adjusting
+ the settings to more aggressive levels. The more aggressive the settings, then the more likelihood there is of
+ problems such as sites not working as they should.</p>
+ <p>The <span class="GUIBUTTON">Edit</span> button allows you to turn each action on/off individually for
+ fine-tuning. The <span class="GUIBUTTON">Cautious</span> button changes the actions list to low/safe settings
+ which will activate ad blocking and a minimal set of <span class="APPLICATION">Privoxy</span>'s features, and
+ subsequently there will be less of a chance for accidental problems. The <span class="GUIBUTTON">Medium</span>
+ button sets the list to a medium level of other features and a low level set of privacy features. The
+ <span class="GUIBUTTON">Advanced</span> button sets the list to a high level of ad blocking and medium level of
+ privacy. See the chart below. The latter three buttons over-ride any changes via with the <span class=
+ "GUIBUTTON">Edit</span> button. More fine-tuning can be done in the lower sections of this internal page.</p>
+ <p>While the actions file editor allows to enable these settings in all actions files, they are only supposed
+ to be enabled in the first one to make sure you don't unintentionally overrule earlier rules.</p>
+ <p>The default profiles, and their associated actions, as pre-defined in <tt class=
+ "FILENAME">default.action</tt> are:</p>
<div class="TABLE">
<a name="AEN2924" id="AEN2924"></a>
<p><b>Table 1. Default Configurations</b></p>
</div>
</li>
</ul>
- <p>The list of actions files to be used are defined in the main
- configuration file, and are processed in the order they are defined (e.g.
- <tt class="FILENAME">default.action</tt> is typically processed before
- <tt class="FILENAME">user.action</tt>). The content of these can all be
- viewed and edited from <a href="http://config.privoxy.org/show-status"
- target="_top">http://config.privoxy.org/show-status</a>. The over-riding
- principle when applying actions, is that the last action that matches a
- given URL wins. The broadest, most general rules go first (defined in
- <tt class="FILENAME">default.action</tt>), followed by any exceptions
- (typically also in <tt class="FILENAME">default.action</tt>), which are
- then followed lastly by any local preferences (typically in <span class=
- "emphasis"><i class="EMPHASIS">user</i></span><tt class=
- "FILENAME">.action</tt>). Generally, <tt class=
+ <p>The list of actions files to be used are defined in the main configuration file, and are processed in the order
+ they are defined (e.g. <tt class="FILENAME">default.action</tt> is typically processed before <tt class=
+ "FILENAME">user.action</tt>). The content of these can all be viewed and edited from <a href=
+ "http://config.privoxy.org/show-status" target="_top">http://config.privoxy.org/show-status</a>. The over-riding
+ principle when applying actions, is that the last action that matches a given URL wins. The broadest, most general
+ rules go first (defined in <tt class="FILENAME">default.action</tt>), followed by any exceptions (typically also in
+ <tt class="FILENAME">default.action</tt>), which are then followed lastly by any local preferences (typically in
+ <span class="emphasis"><i class="EMPHASIS">user</i></span><tt class="FILENAME">.action</tt>). Generally, <tt class=
"FILENAME">user.action</tt> has the last word.</p>
- <p>An actions file typically has multiple sections. If you want to use
- <span class="QUOTE">"aliases"</span> in an actions file, you have to
- place the (optional) <a href="actions-file.html#ALIASES">alias
- section</a> at the top of that file. Then comes the default set of rules
- which will apply universally to all sites and pages (be <span class=
- "emphasis"><i class="EMPHASIS">very careful</i></span> with using such a
- universal set in <tt class="FILENAME">user.action</tt> or any other
- actions file after <tt class="FILENAME">default.action</tt>, because it
- will override the result from consulting any previous file). And then
- below that, exceptions to the defined universal policies. You can regard
- <tt class="FILENAME">user.action</tt> as an appendix to <tt class=
- "FILENAME">default.action</tt>, with the advantage that it is a separate
- file, which makes preserving your personal settings across <span class=
- "APPLICATION">Privoxy</span> upgrades easier.</p>
- <p>Actions can be used to block anything you want, including ads,
- banners, or just some obnoxious URL whose content you would rather not
- see. Cookies can be accepted or rejected, or accepted only during the
- current browser session (i.e. not written to disk), content can be
- modified, some JavaScripts tamed, user-tracking fooled, and much more.
- See below for a <a href="actions-file.html#ACTIONS">complete list of
- actions</a>.</p>
+ <p>An actions file typically has multiple sections. If you want to use <span class="QUOTE">"aliases"</span> in an
+ actions file, you have to place the (optional) <a href="actions-file.html#ALIASES">alias section</a> at the top of
+ that file. Then comes the default set of rules which will apply universally to all sites and pages (be <span class=
+ "emphasis"><i class="EMPHASIS">very careful</i></span> with using such a universal set in <tt class=
+ "FILENAME">user.action</tt> or any other actions file after <tt class="FILENAME">default.action</tt>, because it
+ will override the result from consulting any previous file). And then below that, exceptions to the defined
+ universal policies. You can regard <tt class="FILENAME">user.action</tt> as an appendix to <tt class=
+ "FILENAME">default.action</tt>, with the advantage that it is a separate file, which makes preserving your personal
+ settings across <span class="APPLICATION">Privoxy</span> upgrades easier.</p>
+ <p>Actions can be used to block anything you want, including ads, banners, or just some obnoxious URL whose content
+ you would rather not see. Cookies can be accepted or rejected, or accepted only during the current browser session
+ (i.e. not written to disk), content can be modified, some JavaScripts tamed, user-tracking fooled, and much more.
+ See below for a <a href="actions-file.html#ACTIONS">complete list of actions</a>.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="RIGHT-MIX" id="RIGHT-MIX">8.1. Finding the
- Right Mix</a></h2>
- <p>Note that some <a href="actions-file.html#ACTIONS">actions</a>, like
- cookie suppression or script disabling, may render some sites unusable
- that rely on these techniques to work properly. Finding the right mix
- of actions is not always easy and certainly a matter of personal taste.
- And, things can always change, requiring refinements in the
- configuration. In general, it can be said that the more <span class=
- "QUOTE">"aggressive"</span> your default settings (in the top section
- of the actions file) are, the more exceptions for <span class=
- "QUOTE">"trusted"</span> sites you will have to make later. If, for
- example, you want to crunch all cookies per default, you'll have to
- make exceptions from that rule for sites that you regularly use and
- that require cookies for actually useful purposes, like maybe your
- bank, favorite shop, or newspaper.</p>
- <p>We have tried to provide you with reasonable rules to start from in
- the distribution actions files. But there is no general rule of thumb
- on these things. There just are too many variables, and sites are
- constantly changing. Sooner or later you will want to change the rules
- (and read this chapter again :).</p>
+ <h2 class="SECT2"><a name="RIGHT-MIX" id="RIGHT-MIX">8.1. Finding the Right Mix</a></h2>
+ <p>Note that some <a href="actions-file.html#ACTIONS">actions</a>, like cookie suppression or script disabling,
+ may render some sites unusable that rely on these techniques to work properly. Finding the right mix of actions
+ is not always easy and certainly a matter of personal taste. And, things can always change, requiring refinements
+ in the configuration. In general, it can be said that the more <span class="QUOTE">"aggressive"</span> your
+ default settings (in the top section of the actions file) are, the more exceptions for <span class=
+ "QUOTE">"trusted"</span> sites you will have to make later. If, for example, you want to crunch all cookies per
+ default, you'll have to make exceptions from that rule for sites that you regularly use and that require cookies
+ for actually useful purposes, like maybe your bank, favorite shop, or newspaper.</p>
+ <p>We have tried to provide you with reasonable rules to start from in the distribution actions files. But there
+ is no general rule of thumb on these things. There just are too many variables, and sites are constantly
+ changing. Sooner or later you will want to change the rules (and read this chapter again :).</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="HOW-TO-EDIT" id="HOW-TO-EDIT">8.2. How to
- Edit</a></h2>
- <p>The easiest way to edit the actions files is with a browser by using
- our browser-based editor, which can be reached from <a href=
- "http://config.privoxy.org/show-status" target=
- "_top">http://config.privoxy.org/show-status</a>. Note: the config file
- option <a href=
- "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a> must be
- enabled for this to work. The editor allows both fine-grained control
- over every single feature on a per-URL basis, and easy choosing from
- wholesale sets of defaults like <span class="QUOTE">"Cautious"</span>,
- <span class="QUOTE">"Medium"</span> or <span class=
- "QUOTE">"Advanced"</span>. Warning: the <span class=
- "QUOTE">"Advanced"</span> setting is more aggressive, and will be more
- likely to cause problems for some sites. Experienced users only!</p>
- <p>If you prefer plain text editing to GUIs, you can of course also
- directly edit the the actions files with your favorite text editor.
- Look at <tt class="FILENAME">default.action</tt> which is richly
- commented with many good examples.</p>
+ <h2 class="SECT2"><a name="HOW-TO-EDIT" id="HOW-TO-EDIT">8.2. How to Edit</a></h2>
+ <p>The easiest way to edit the actions files is with a browser by using our browser-based editor, which can be
+ reached from <a href="http://config.privoxy.org/show-status" target=
+ "_top">http://config.privoxy.org/show-status</a>. Note: the config file option <a href=
+ "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a> must be enabled for this to work. The editor allows
+ both fine-grained control over every single feature on a per-URL basis, and easy choosing from wholesale sets of
+ defaults like <span class="QUOTE">"Cautious"</span>, <span class="QUOTE">"Medium"</span> or <span class=
+ "QUOTE">"Advanced"</span>. Warning: the <span class="QUOTE">"Advanced"</span> setting is more aggressive, and
+ will be more likely to cause problems for some sites. Experienced users only!</p>
+ <p>If you prefer plain text editing to GUIs, you can of course also directly edit the the actions files with your
+ favorite text editor. Look at <tt class="FILENAME">default.action</tt> which is richly commented with many good
+ examples.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="ACTIONS-APPLY" id="ACTIONS-APPLY">8.3. How
- Actions are Applied to Requests</a></h2>
- <p>Actions files are divided into sections. There are special sections,
- like the <span class="QUOTE">"<a href=
- "actions-file.html#ALIASES">alias</a>"</span> sections which will be
- discussed later. For now let's concentrate on regular sections: They
- have a heading line (often split up to multiple lines for readability)
- which consist of a list of actions, separated by whitespace and
- enclosed in curly braces. Below that, there is a list of URL and tag
- patterns, each on a separate line.</p>
- <p>To determine which actions apply to a request, the URL of the
- request is compared to all URL patterns in each <span class=
- "QUOTE">"action file"</span>. Every time it matches, the list of
- applicable actions for the request is incrementally updated, using the
- heading of the section in which the pattern is located. The same is
- done again for tags and tag patterns later on.</p>
- <p>If multiple applying sections set the same action differently, the
- last match wins. If not, the effects are aggregated. E.g. a URL might
- match a regular section with a heading line of <tt class="LITERAL">{
- +<a href="actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a>
- }</tt>, then later another one with just <tt class="LITERAL">{
- +<a href="actions-file.html#BLOCK">block</a> }</tt>, resulting in
- <span class="emphasis"><i class="EMPHASIS">both</i></span> actions to
- apply. And there may well be cases where you will want to combine
- actions together. Such a section then might look like:</p>
+ <h2 class="SECT2"><a name="ACTIONS-APPLY" id="ACTIONS-APPLY">8.3. How Actions are Applied to Requests</a></h2>
+ <p>Actions files are divided into sections. There are special sections, like the <span class="QUOTE">"<a href=
+ "actions-file.html#ALIASES">alias</a>"</span> sections which will be discussed later. For now let's concentrate
+ on regular sections: They have a heading line (often split up to multiple lines for readability) which consist of
+ a list of actions, separated by whitespace and enclosed in curly braces. Below that, there is a list of URL and
+ tag patterns, each on a separate line.</p>
+ <p>To determine which actions apply to a request, the URL of the request is compared to all URL patterns in each
+ <span class="QUOTE">"action file"</span>. Every time it matches, the list of applicable actions for the request
+ is incrementally updated, using the heading of the section in which the pattern is located. The same is done
+ again for tags and tag patterns later on.</p>
+ <p>If multiple applying sections set the same action differently, the last match wins. If not, the effects are
+ aggregated. E.g. a URL might match a regular section with a heading line of <tt class="LITERAL">{ +<a href=
+ "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a> }</tt>, then later another one with just <tt class=
+ "LITERAL">{ +<a href="actions-file.html#BLOCK">block</a> }</tt>, resulting in <span class="emphasis"><i class=
+ "EMPHASIS">both</i></span> actions to apply. And there may well be cases where you will want to combine actions
+ together. Such a section then might look like:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN"> { +<tt class=
- "LITERAL">handle-as-image</tt> +<tt class=
+ <pre class="SCREEN"> { +<tt class="LITERAL">handle-as-image</tt> +<tt class=
"LITERAL">block{Banner ads.}</tt> }
# Block these as if they were images. Send no block page.
banners.example.com
</td>
</tr>
</table>
- <p>You can trace this process for URL patterns and any given URL by
- visiting <a href="http://config.privoxy.org/show-url-info" target=
- "_top">http://config.privoxy.org/show-url-info</a>.</p>
- <p>Examples and more detail on this is provided in the Appendix,
- <a href="appendix.html#ACTIONSANAT">Troubleshooting: Anatomy of an
- Action</a> section.</p>
+ <p>You can trace this process for URL patterns and any given URL by visiting <a href=
+ "http://config.privoxy.org/show-url-info" target="_top">http://config.privoxy.org/show-url-info</a>.</p>
+ <p>Examples and more detail on this is provided in the Appendix, <a href=
+ "appendix.html#ACTIONSANAT">Troubleshooting: Anatomy of an Action</a> section.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="AF-PATTERNS" id="AF-PATTERNS">8.4.
- Patterns</a></h2>
- <p>As mentioned, <span class="APPLICATION">Privoxy</span> uses
- <span class="QUOTE">"patterns"</span> to determine what <span class=
- "emphasis"><i class="EMPHASIS">actions</i></span> might apply to which
- sites and pages your browser attempts to access. These <span class=
- "QUOTE">"patterns"</span> use wild card type <span class=
- "emphasis"><i class="EMPHASIS">pattern</i></span> matching to achieve a
- high degree of flexibility. This allows one expression to be expanded
- and potentially match against many similar patterns.</p>
- <p>Generally, an URL pattern has the form <tt class=
- "LITERAL"><host><port>/<path></tt>, where the
- <tt class="LITERAL"><host></tt>, the <tt class=
- "LITERAL"><port></tt> and the <tt class=
- "LITERAL"><path></tt> are optional. (This is why the special
- <tt class="LITERAL">/</tt> pattern matches all URLs). Note that the
- protocol portion of the URL pattern (e.g. <tt class=
- "LITERAL">http://</tt>) should <span class="emphasis"><i class=
- "EMPHASIS">not</i></span> be included in the pattern. This is assumed
+ <h2 class="SECT2"><a name="AF-PATTERNS" id="AF-PATTERNS">8.4. Patterns</a></h2>
+ <p>As mentioned, <span class="APPLICATION">Privoxy</span> uses <span class="QUOTE">"patterns"</span> to determine
+ what <span class="emphasis"><i class="EMPHASIS">actions</i></span> might apply to which sites and pages your
+ browser attempts to access. These <span class="QUOTE">"patterns"</span> use wild card type <span class=
+ "emphasis"><i class="EMPHASIS">pattern</i></span> matching to achieve a high degree of flexibility. This allows
+ one expression to be expanded and potentially match against many similar patterns.</p>
+ <p>Generally, an URL pattern has the form <tt class="LITERAL"><host><port>/<path></tt>, where
+ the <tt class="LITERAL"><host></tt>, the <tt class="LITERAL"><port></tt> and the <tt class=
+ "LITERAL"><path></tt> are optional. (This is why the special <tt class="LITERAL">/</tt> pattern matches all
+ URLs). Note that the protocol portion of the URL pattern (e.g. <tt class="LITERAL">http://</tt>) should
+ <span class="emphasis"><i class="EMPHASIS">not</i></span> be included in the pattern. This is assumed
already!</p>
- <p>The pattern matching syntax is different for the host and path parts
- of the URL. The host part uses a simple globbing type matching
- technique, while the path part uses more flexible <a href=
- "http://en.wikipedia.org/wiki/Regular_expressions" target=
- "_top"><span class="QUOTE">"Regular Expressions"</span></a> (POSIX
- 1003.2).</p>
- <p>The port part of a pattern is a decimal port number preceded by a
- colon (<tt class="LITERAL">:</tt>). If the host part contains a
- numerical IPv6 address, it has to be put into angle brackets
- (<tt class="LITERAL"><</tt>, <tt class="LITERAL">></tt>).</p>
+ <p>The pattern matching syntax is different for the host and path parts of the URL. The host part uses a simple
+ globbing type matching technique, while the path part uses more flexible <a href=
+ "http://en.wikipedia.org/wiki/Regular_expressions" target="_top"><span class="QUOTE">"Regular
+ Expressions"</span></a> (POSIX 1003.2).</p>
+ <p>The port part of a pattern is a decimal port number preceded by a colon (<tt class="LITERAL">:</tt>). If the
+ host part contains a numerical IPv6 address, it has to be put into angle brackets (<tt class="LITERAL"><</tt>,
+ <tt class="LITERAL">></tt>).</p>
<div class="VARIABLELIST">
<dl>
<dt><tt class="LITERAL">www.example.com/</tt></dt>
<dd>
- <p>is a host-only pattern and will match any request to
- <tt class="LITERAL">www.example.com</tt>, regardless of which
- document on that server is requested. So ALL pages in this domain
- would be covered by the scope of this action. Note that a simple
- <tt class="LITERAL">example.com</tt> is different and would NOT
- match.</p>
+ <p>is a host-only pattern and will match any request to <tt class="LITERAL">www.example.com</tt>,
+ regardless of which document on that server is requested. So ALL pages in this domain would be covered by
+ the scope of this action. Note that a simple <tt class="LITERAL">example.com</tt> is different and would
+ NOT match.</p>
</dd>
<dt><tt class="LITERAL">www.example.com</tt></dt>
<dd>
- <p>means exactly the same. For host-only patterns, the trailing
- <tt class="LITERAL">/</tt> may be omitted.</p>
+ <p>means exactly the same. For host-only patterns, the trailing <tt class="LITERAL">/</tt> may be
+ omitted.</p>
</dd>
<dt><tt class="LITERAL">www.example.com/index.html</tt></dt>
<dd>
- <p>matches all the documents on <tt class=
- "LITERAL">www.example.com</tt> whose name starts with <tt class=
+ <p>matches all the documents on <tt class="LITERAL">www.example.com</tt> whose name starts with <tt class=
"LITERAL">/index.html</tt>.</p>
</dd>
<dt><tt class="LITERAL">www.example.com/index.html$</tt></dt>
<dd>
- <p>matches only the single document <tt class=
- "LITERAL">/index.html</tt> on <tt class=
+ <p>matches only the single document <tt class="LITERAL">/index.html</tt> on <tt class=
"LITERAL">www.example.com</tt>.</p>
</dd>
<dt><tt class="LITERAL">/index.html$</tt></dt>
<dd>
- <p>matches the document <tt class="LITERAL">/index.html</tt>,
- regardless of the domain, i.e. on <span class=
- "emphasis"><i class="EMPHASIS">any</i></span> web server
- anywhere.</p>
+ <p>matches the document <tt class="LITERAL">/index.html</tt>, regardless of the domain, i.e. on
+ <span class="emphasis"><i class="EMPHASIS">any</i></span> web server anywhere.</p>
</dd>
<dt><tt class="LITERAL">/</tt></dt>
<dd>
- <p>Matches any URL because there's no requirement for either the
- domain or the path to match anything.</p>
+ <p>Matches any URL because there's no requirement for either the domain or the path to match anything.</p>
</dd>
<dt><tt class="LITERAL">:8000/</tt></dt>
<dd>
</dd>
<dt><tt class="LITERAL">10.0.0.1/</tt></dt>
<dd>
- <p>Matches any URL with the host address <tt class=
- "LITERAL">10.0.0.1</tt>. (Note that the real URL uses plain
- brackets, not angle brackets.)</p>
+ <p>Matches any URL with the host address <tt class="LITERAL">10.0.0.1</tt>. (Note that the real URL uses
+ plain brackets, not angle brackets.)</p>
</dd>
<dt><tt class="LITERAL"><2001:db8::1>/</tt></dt>
<dd>
- <p>Matches any URL with the host address <tt class=
- "LITERAL">2001:db8::1</tt>. (Note that the real URL uses plain
- brackets, not angle brackets.)</p>
+ <p>Matches any URL with the host address <tt class="LITERAL">2001:db8::1</tt>. (Note that the real URL uses
+ plain brackets, not angle brackets.)</p>
</dd>
<dt><tt class="LITERAL">index.html</tt></dt>
<dd>
- <p>matches nothing, since it would be interpreted as a domain
- name and there is no top-level domain called <tt class=
- "LITERAL">.html</tt>. So its a mistake.</p>
+ <p>matches nothing, since it would be interpreted as a domain name and there is no top-level domain called
+ <tt class="LITERAL">.html</tt>. So its a mistake.</p>
</dd>
</dl>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="HOST-PATTERN" id="HOST-PATTERN">8.4.1. The
- Host Pattern</a></h3>
- <p>The matching of the host part offers some flexible options: if the
- host pattern starts or ends with a dot, it becomes unanchored at that
- end. The host pattern is often referred to as domain pattern as it is
- usually used to match domain names and not IP addresses. For
- example:</p>
+ <h3 class="SECT3"><a name="HOST-PATTERN" id="HOST-PATTERN">8.4.1. The Host Pattern</a></h3>
+ <p>The matching of the host part offers some flexible options: if the host pattern starts or ends with a dot,
+ it becomes unanchored at that end. The host pattern is often referred to as domain pattern as it is usually
+ used to match domain names and not IP addresses. For example:</p>
<div class="VARIABLELIST">
<dl>
<dt><tt class="LITERAL">.example.com</tt></dt>
<dd>
- <p>matches any domain with first-level domain <tt class=
- "LITERAL">com</tt> and second-level domain <tt class=
- "LITERAL">example</tt>. For example <tt class=
- "LITERAL">www.example.com</tt>, <tt class=
- "LITERAL">example.com</tt> and <tt class=
- "LITERAL">foo.bar.baz.example.com</tt>. Note that it wouldn't
- match if the second-level domain was <tt class=
- "LITERAL">another-example</tt>.</p>
+ <p>matches any domain with first-level domain <tt class="LITERAL">com</tt> and second-level domain
+ <tt class="LITERAL">example</tt>. For example <tt class="LITERAL">www.example.com</tt>, <tt class=
+ "LITERAL">example.com</tt> and <tt class="LITERAL">foo.bar.baz.example.com</tt>. Note that it wouldn't
+ match if the second-level domain was <tt class="LITERAL">another-example</tt>.</p>
</dd>
<dt><tt class="LITERAL">www.</tt></dt>
<dd>
- <p>matches any domain that <span class="emphasis"><i class=
- "EMPHASIS">STARTS</i></span> with <tt class="LITERAL">www.</tt>
- (It also matches the domain <tt class="LITERAL">www</tt> but
- most of the time that doesn't matter.)</p>
+ <p>matches any domain that <span class="emphasis"><i class="EMPHASIS">STARTS</i></span> with <tt class=
+ "LITERAL">www.</tt> (It also matches the domain <tt class="LITERAL">www</tt> but most of the time that
+ doesn't matter.)</p>
</dd>
<dt><tt class="LITERAL">.example.</tt></dt>
<dd>
- <p>matches any domain that <span class="emphasis"><i class=
- "EMPHASIS">CONTAINS</i></span> <tt class=
- "LITERAL">.example.</tt>. And, by the way, also included would
- be any files or documents that exist within that domain since
- no path limitations are specified. (Correctly speaking: It
- matches any FQDN that contains <tt class="LITERAL">example</tt>
- as a domain.) This might be <tt class=
- "LITERAL">www.example.com</tt>, <tt class=
- "LITERAL">news.example.de</tt>, or <tt class=
- "LITERAL">www.example.net/cgi/testing.pl</tt> for instance. All
- these cases are matched.</p>
+ <p>matches any domain that <span class="emphasis"><i class="EMPHASIS">CONTAINS</i></span> <tt class=
+ "LITERAL">.example.</tt>. And, by the way, also included would be any files or documents that exist
+ within that domain since no path limitations are specified. (Correctly speaking: It matches any FQDN that
+ contains <tt class="LITERAL">example</tt> as a domain.) This might be <tt class=
+ "LITERAL">www.example.com</tt>, <tt class="LITERAL">news.example.de</tt>, or <tt class=
+ "LITERAL">www.example.net/cgi/testing.pl</tt> for instance. All these cases are matched.</p>
</dd>
</dl>
</div>
- <p>Additionally, there are wild-cards that you can use in the domain
- names themselves. These work similarly to shell globbing type
- wild-cards: <span class="QUOTE">"*"</span> represents zero or more
- arbitrary characters (this is equivalent to the <a href=
- "http://en.wikipedia.org/wiki/Regular_expressions" target=
- "_top"><span class="QUOTE">"Regular Expression"</span></a> based
- syntax of <span class="QUOTE">".*"</span>), <span class=
- "QUOTE">"?"</span> represents any single character (this is
- equivalent to the regular expression syntax of a simple <span class=
- "QUOTE">"."</span>), and you can define <span class=
- "QUOTE">"character classes"</span> in square brackets which is
- similar to the same regular expression technique. All of this can be
- freely mixed:</p>
+ <p>Additionally, there are wild-cards that you can use in the domain names themselves. These work similarly to
+ shell globbing type wild-cards: <span class="QUOTE">"*"</span> represents zero or more arbitrary characters
+ (this is equivalent to the <a href="http://en.wikipedia.org/wiki/Regular_expressions" target=
+ "_top"><span class="QUOTE">"Regular Expression"</span></a> based syntax of <span class="QUOTE">".*"</span>),
+ <span class="QUOTE">"?"</span> represents any single character (this is equivalent to the regular expression
+ syntax of a simple <span class="QUOTE">"."</span>), and you can define <span class="QUOTE">"character
+ classes"</span> in square brackets which is similar to the same regular expression technique. All of this can
+ be freely mixed:</p>
<div class="VARIABLELIST">
<dl>
<dt><tt class="LITERAL">ad*.example.com</tt></dt>
<dd>
- <p>matches <span class="QUOTE">"adserver.example.com"</span>,
- <span class="QUOTE">"ads.example.com"</span>, etc but not
- <span class="QUOTE">"sfads.example.com"</span></p>
+ <p>matches <span class="QUOTE">"adserver.example.com"</span>, <span class=
+ "QUOTE">"ads.example.com"</span>, etc but not <span class="QUOTE">"sfads.example.com"</span></p>
</dd>
<dt><tt class="LITERAL">*ad*.example.com</tt></dt>
<dd>
</dd>
<dt><tt class="LITERAL">.?pix.com</tt></dt>
<dd>
- <p>matches <tt class="LITERAL">www.ipix.com</tt>, <tt class=
- "LITERAL">pictures.epix.com</tt>, <tt class=
+ <p>matches <tt class="LITERAL">www.ipix.com</tt>, <tt class="LITERAL">pictures.epix.com</tt>, <tt class=
"LITERAL">a.b.c.d.e.upix.com</tt> etc.</p>
</dd>
<dt><tt class="LITERAL">www[1-9a-ez].example.c*</tt></dt>
<dd>
- <p>matches <tt class="LITERAL">www1.example.com</tt>,
- <tt class="LITERAL">www4.example.cc</tt>, <tt class=
- "LITERAL">wwwd.example.cy</tt>, <tt class=
- "LITERAL">wwwz.example.com</tt> etc., but <span class=
- "emphasis"><i class="EMPHASIS">not</i></span> <tt class=
- "LITERAL">wwww.example.com</tt>.</p>
+ <p>matches <tt class="LITERAL">www1.example.com</tt>, <tt class="LITERAL">www4.example.cc</tt>,
+ <tt class="LITERAL">wwwd.example.cy</tt>, <tt class="LITERAL">wwwz.example.com</tt> etc., but
+ <span class="emphasis"><i class="EMPHASIS">not</i></span> <tt class="LITERAL">wwww.example.com</tt>.</p>
</dd>
</dl>
</div>
- <p>While flexible, this is not the sophistication of full regular
- expression based syntax.</p>
+ <p>While flexible, this is not the sophistication of full regular expression based syntax.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="PATH-PATTERN" id="PATH-PATTERN">8.4.2. The
- Path Pattern</a></h3>
- <p><span class="APPLICATION">Privoxy</span> uses <span class=
- "QUOTE">"modern"</span> POSIX 1003.2 <a href=
- "http://en.wikipedia.org/wiki/Regular_expressions" target=
- "_top"><span class="QUOTE">"Regular Expressions"</span></a> 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, you also might want to
- have a look at your operating system's documentation on regular
- expressions (try <tt class="LITERAL">man re_format</tt>).</p>
- <p>Note that the path pattern is automatically left-anchored at the
- <span class="QUOTE">"/"</span>, i.e. it matches as if it would start
- with a <span class="QUOTE">"^"</span> (regular expression speak for
- the beginning of a line).</p>
- <p>Please also note that matching in the path is <span class=
- "emphasis"><i class="EMPHASIS">CASE INSENSITIVE</i></span> by
- default, but you can switch to case sensitive at any point in the
- pattern by using the <span class="QUOTE">"(?-i)"</span> switch:
- <tt class="LITERAL">www.example.com/(?-i)PaTtErN.*</tt> will match
- only documents whose path starts with <tt class=
- "LITERAL">PaTtErN</tt> in <span class="emphasis"><i class=
- "EMPHASIS">exactly</i></span> this capitalization.</p>
+ <h3 class="SECT3"><a name="PATH-PATTERN" id="PATH-PATTERN">8.4.2. The Path Pattern</a></h3>
+ <p><span class="APPLICATION">Privoxy</span> uses <span class="QUOTE">"modern"</span> POSIX 1003.2 <a href=
+ "http://en.wikipedia.org/wiki/Regular_expressions" target="_top"><span class="QUOTE">"Regular
+ Expressions"</span></a> 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,
+ you also might want to have a look at your operating system's documentation on regular expressions (try
+ <tt class="LITERAL">man re_format</tt>).</p>
+ <p>Note that the path pattern is automatically left-anchored at the <span class="QUOTE">"/"</span>, i.e. it
+ matches as if it would start with a <span class="QUOTE">"^"</span> (regular expression speak for the beginning
+ of a line).</p>
+ <p>Please also note that matching in the path is <span class="emphasis"><i class="EMPHASIS">CASE
+ INSENSITIVE</i></span> by default, but you can switch to case sensitive at any point in the pattern by using
+ the <span class="QUOTE">"(?-i)"</span> switch: <tt class="LITERAL">www.example.com/(?-i)PaTtErN.*</tt> will
+ match only documents whose path starts with <tt class="LITERAL">PaTtErN</tt> in <span class=
+ "emphasis"><i class="EMPHASIS">exactly</i></span> this capitalization.</p>
<div class="VARIABLELIST">
<dl>
<dt><tt class="LITERAL">.example.com/.*</tt></dt>
<dd>
- <p>Is equivalent to just <span class=
- "QUOTE">".example.com"</span>, since any documents within that
- domain are matched with or without the <span class=
- "QUOTE">".*"</span> regular expression. This is redundant</p>
+ <p>Is equivalent to just <span class="QUOTE">".example.com"</span>, since any documents within that
+ domain are matched with or without the <span class="QUOTE">".*"</span> regular expression. This is
+ redundant</p>
</dd>
<dt><tt class="LITERAL">.example.com/.*/index.html$</tt></dt>
<dd>
- <p>Will match any page in the domain of <span class=
- "QUOTE">"example.com"</span> that is named <span class=
- "QUOTE">"index.html"</span>, and that is part of some path. For
- example, it matches <span class=
- "QUOTE">"www.example.com/testing/index.html"</span> but NOT
- <span class="QUOTE">"www.example.com/index.html"</span> because
- the regular expression called for at least two <span class=
- "QUOTE">"/'s"</span>, thus the path requirement. It also would
- match <span class=
- "QUOTE">"www.example.com/testing/index_html"</span>, because of
- the special meta-character <span class="QUOTE">"."</span>.</p>
+ <p>Will match any page in the domain of <span class="QUOTE">"example.com"</span> that is named
+ <span class="QUOTE">"index.html"</span>, and that is part of some path. For example, it matches
+ <span class="QUOTE">"www.example.com/testing/index.html"</span> but NOT <span class=
+ "QUOTE">"www.example.com/index.html"</span> because the regular expression called for at least two
+ <span class="QUOTE">"/'s"</span>, thus the path requirement. It also would match <span class=
+ "QUOTE">"www.example.com/testing/index_html"</span>, because of the special meta-character <span class=
+ "QUOTE">"."</span>.</p>
</dd>
<dt><tt class="LITERAL">.example.com/(.*/)?index\.html$</tt></dt>
<dd>
- <p>This regular expression is conditional so it will match any
- page named <span class="QUOTE">"index.html"</span> regardless
- of path which in this case can have one or more <span class=
- "QUOTE">"/'s"</span>. And this one must contain exactly
- <span class="QUOTE">".html"</span> (and end with that!).</p>
- </dd>
- <dt><tt class=
- "LITERAL">.example.com/(.*/)(ads|banners?|junk)</tt></dt>
- <dd>
- <p>This regular expression will match any path of <span class=
- "QUOTE">"example.com"</span> that contains any of the words
- <span class="QUOTE">"ads"</span>, <span class=
- "QUOTE">"banner"</span>, <span class="QUOTE">"banners"</span>
- (because of the <span class="QUOTE">"?"</span>) or <span class=
- "QUOTE">"junk"</span>. The path does not have to end in these
- words, just contain them. The path has to contain at least two
- slashes (including the one at the beginning).</p>
- </dd>
- <dt><tt class=
- "LITERAL">.example.com/(.*/)(ads|banners?|junk)/.*\.(jpe?g|gif|png)$</tt></dt>
- <dd>
- <p>This is very much the same as above, except now it must end
- in either <span class="QUOTE">".jpg"</span>, <span class=
- "QUOTE">".jpeg"</span>, <span class="QUOTE">".gif"</span> or
- <span class="QUOTE">".png"</span>. So this one is limited to
- common image formats.</p>
+ <p>This regular expression is conditional so it will match any page named <span class=
+ "QUOTE">"index.html"</span> regardless of path which in this case can have one or more <span class=
+ "QUOTE">"/'s"</span>. And this one must contain exactly <span class="QUOTE">".html"</span> (and end with
+ that!).</p>
+ </dd>
+ <dt><tt class="LITERAL">.example.com/(.*/)(ads|banners?|junk)</tt></dt>
+ <dd>
+ <p>This regular expression will match any path of <span class="QUOTE">"example.com"</span> that contains
+ any of the words <span class="QUOTE">"ads"</span>, <span class="QUOTE">"banner"</span>, <span class=
+ "QUOTE">"banners"</span> (because of the <span class="QUOTE">"?"</span>) or <span class=
+ "QUOTE">"junk"</span>. The path does not have to end in these words, just contain them. The path has to
+ contain at least two slashes (including the one at the beginning).</p>
+ </dd>
+ <dt><tt class="LITERAL">.example.com/(.*/)(ads|banners?|junk)/.*\.(jpe?g|gif|png)$</tt></dt>
+ <dd>
+ <p>This is very much the same as above, except now it must end in either <span class=
+ "QUOTE">".jpg"</span>, <span class="QUOTE">".jpeg"</span>, <span class="QUOTE">".gif"</span> or
+ <span class="QUOTE">".png"</span>. So this one is limited to common image formats.</p>
</dd>
</dl>
</div>
- <p>There are many, many good examples to be found in <tt class=
- "FILENAME">default.action</tt>, and more tutorials below in <a href=
- "appendix.html#REGEX">Appendix on regular expressions</a>.</p>
+ <p>There are many, many good examples to be found in <tt class="FILENAME">default.action</tt>, and more
+ tutorials below in <a href="appendix.html#REGEX">Appendix on regular expressions</a>.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="TAG-PATTERN" id="TAG-PATTERN">8.4.3. The
- Request Tag Pattern</a></h3>
- <p>Request tag patterns are used to change the applying actions based
- on the request's tags. Tags can be created based on HTTP headers with
- either the <a href=
- "actions-file.html#CLIENT-HEADER-TAGGER">client-header-tagger</a> or
- the <a href=
- "actions-file.html#SERVER-HEADER-TAGGER">server-header-tagger</a>
- action.</p>
- <p>Request tag patterns have to start with <span class=
- "QUOTE">"TAG:"</span>, so <span class="APPLICATION">Privoxy</span>
- can tell them apart from other patterns. Everything after the colon
- including white space, is interpreted as a regular expression with
- path pattern syntax, except that tag patterns aren't left-anchored
- automatically (<span class="APPLICATION">Privoxy</span> doesn't
- silently add a <span class="QUOTE">"^"</span>, you have to do it
- yourself if you need it).</p>
- <p>To match all requests that are tagged with <span class=
- "QUOTE">"foo"</span> your pattern line should be <span class=
- "QUOTE">"TAG:^foo$"</span>, <span class="QUOTE">"TAG:foo"</span>
- would work as well, but it would also match requests whose tags
- contain <span class="QUOTE">"foo"</span> somewhere. <span class=
- "QUOTE">"TAG: foo"</span> wouldn't work as it requires white
- space.</p>
- <p>Sections can contain URL and request tag patterns at the same
- time, but request tag patterns are checked after the URL patterns and
- thus always overrule them, even if they are located before the URL
- patterns.</p>
- <p>Once a new request tag is added, Privoxy checks right away if it's
- matched by one of the request tag patterns and updates the action
- settings accordingly. As a result request tags can be used to
- activate other tagger actions, as long as these other taggers look
- for headers that haven't already be parsed.</p>
- <p>For example you could tag client requests which use the <tt class=
- "LITERAL">POST</tt> method, then use this tag to activate another
- tagger that adds a tag if cookies are sent, and then use a block
- action based on the cookie tag. This allows the outcome of one
- action, to be input into a subsequent action. However if you'd
- reverse the position of the described taggers, and activated the
- method tagger based on the cookie tagger, no method tags would be
- created. The method tagger would look for the request line, but at
- the time the cookie tag is created, the request line has already been
- parsed.</p>
- <p>While this is a limitation you should be aware of, this kind of
- indirection is seldom needed anyway and even the example doesn't make
- too much sense.</p>
+ <h3 class="SECT3"><a name="TAG-PATTERN" id="TAG-PATTERN">8.4.3. The Request Tag Pattern</a></h3>
+ <p>Request tag patterns are used to change the applying actions based on the request's tags. Tags can be
+ created based on HTTP headers with either the <a href=
+ "actions-file.html#CLIENT-HEADER-TAGGER">client-header-tagger</a> or the <a href=
+ "actions-file.html#SERVER-HEADER-TAGGER">server-header-tagger</a> action.</p>
+ <p>Request tag patterns have to start with <span class="QUOTE">"TAG:"</span>, so <span class=
+ "APPLICATION">Privoxy</span> can tell them apart from other patterns. Everything after the colon including
+ white space, is interpreted as a regular expression with path pattern syntax, except that tag patterns aren't
+ left-anchored automatically (<span class="APPLICATION">Privoxy</span> doesn't silently add a <span class=
+ "QUOTE">"^"</span>, you have to do it yourself if you need it).</p>
+ <p>To match all requests that are tagged with <span class="QUOTE">"foo"</span> your pattern line should be
+ <span class="QUOTE">"TAG:^foo$"</span>, <span class="QUOTE">"TAG:foo"</span> would work as well, but it would
+ also match requests whose tags contain <span class="QUOTE">"foo"</span> somewhere. <span class="QUOTE">"TAG:
+ foo"</span> wouldn't work as it requires white space.</p>
+ <p>Sections can contain URL and request tag patterns at the same time, but request tag patterns are checked
+ after the URL patterns and thus always overrule them, even if they are located before the URL patterns.</p>
+ <p>Once a new request tag is added, Privoxy checks right away if it's matched by one of the request tag
+ patterns and updates the action settings accordingly. As a result request tags can be used to activate other
+ tagger actions, as long as these other taggers look for headers that haven't already be parsed.</p>
+ <p>For example you could tag client requests which use the <tt class="LITERAL">POST</tt> method, then use this
+ tag to activate another tagger that adds a tag if cookies are sent, and then use a block action based on the
+ cookie tag. This allows the outcome of one action, to be input into a subsequent action. However if you'd
+ reverse the position of the described taggers, and activated the method tagger based on the cookie tagger, no
+ method tags would be created. The method tagger would look for the request line, but at the time the cookie tag
+ is created, the request line has already been parsed.</p>
+ <p>While this is a limitation you should be aware of, this kind of indirection is seldom needed anyway and even
+ the example doesn't make too much sense.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="NEGATIVE-TAG-PATTERNS" id=
- "NEGATIVE-TAG-PATTERNS">8.4.4. The Negative Request Tag
+ <h3 class="SECT3"><a name="NEGATIVE-TAG-PATTERNS" id="NEGATIVE-TAG-PATTERNS">8.4.4. The Negative Request Tag
Patterns</a></h3>
- <p>To match requests that do not have a certain request tag, specify
- a negative tag pattern by prefixing the tag pattern line with either
- <span class="QUOTE">"NO-REQUEST-TAG:"</span> or <span class=
- "QUOTE">"NO-RESPONSE-TAG:"</span> instead of <span class=
- "QUOTE">"TAG:"</span>.</p>
- <p>Negative request tag patterns created with <span class=
- "QUOTE">"NO-REQUEST-TAG:"</span> are checked after all client headers
- are scanned, the ones created with <span class=
- "QUOTE">"NO-RESPONSE-TAG:"</span> are checked after all server
- headers are scanned. In both cases all the created tags are
- considered.</p>
+ <p>To match requests that do not have a certain request tag, specify a negative tag pattern by prefixing the
+ tag pattern line with either <span class="QUOTE">"NO-REQUEST-TAG:"</span> or <span class=
+ "QUOTE">"NO-RESPONSE-TAG:"</span> instead of <span class="QUOTE">"TAG:"</span>.</p>
+ <p>Negative request tag patterns created with <span class="QUOTE">"NO-REQUEST-TAG:"</span> are checked after
+ all client headers are scanned, the ones created with <span class="QUOTE">"NO-RESPONSE-TAG:"</span> are checked
+ after all server headers are scanned. In both cases all the created tags are considered.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="CLIENT-TAG-PATTERN" id=
- "CLIENT-TAG-PATTERN">8.4.5. The Client Tag Pattern</a></h3>
+ <h3 class="SECT3"><a name="CLIENT-TAG-PATTERN" id="CLIENT-TAG-PATTERN">8.4.5. The Client Tag Pattern</a></h3>
<div class="WARNING">
<table class="WARNING" border="1" width="100%">
<tr>
</tr>
<tr>
<td align="left">
- <p>This is an experimental feature. The syntax is likely to
- change in future versions.</p>
+ <p>This is an experimental feature. The syntax is likely to change in future versions.</p>
</td>
</tr>
</table>
</div>
- <p>Client tag patterns are not set based on HTTP headers but based on
- the client's IP address. Users can enable them themselves, but the
- Privoxy admin controls which tags are available and what their effect
- is.</p>
+ <p>Client tag patterns are not set based on HTTP headers but based on the client's IP address. Users can enable
+ them themselves, but the Privoxy admin controls which tags are available and what their effect is.</p>
<p>After a client-specific tag has been defined with the <a href=
- "config.html#CLIENT-SPECIFIC-TAG">client-specific-tag</a>, directive,
- action sections can be activated based on the tag by using a
- CLIENT-TAG pattern. The CLIENT-TAG pattern is evaluated at the same
- priority as URL patterns, as a result the last matching pattern wins.
- Tags that are created based on client or server headers are evaluated
- later on and can overrule CLIENT-TAG and URL patterns!</p>
- <p>The tag is set for all requests that come from clients that
- requested it to be set. Note that "clients" are differentiated by IP
- address, if the IP address changes the tag has to be requested
- again.</p>
- <p>Clients can request tags to be set by using the CGI interface
- <a href="http://config.privoxy.org/client-tags" target=
- "_top">http://config.privoxy.org/client-tags</a>.</p>
+ "config.html#CLIENT-SPECIFIC-TAG">client-specific-tag</a>, directive, action sections can be activated based on
+ the tag by using a CLIENT-TAG pattern. The CLIENT-TAG pattern is evaluated at the same priority as URL
+ patterns, as a result the last matching pattern wins. Tags that are created based on client or server headers
+ are evaluated later on and can overrule CLIENT-TAG and URL patterns!</p>
+ <p>The tag is set for all requests that come from clients that requested it to be set. Note that "clients" are
+ differentiated by IP address, if the IP address changes the tag has to be requested again.</p>
+ <p>Clients can request tags to be set by using the CGI interface <a href=
+ "http://config.privoxy.org/client-tags" target="_top">http://config.privoxy.org/client-tags</a>.</p>
<p>Example:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # If the admin defined the client-specific-tag circumvent-blocks,
+ <pre class="SCREEN"># If the admin defined the client-specific-tag circumvent-blocks,
# and the request comes from a client that previously requested
# the tag to be set, overrule all previous +block actions that
# are enabled based on URL to CLIENT-TAG patterns.
</div>
<div class="SECT2">
<h2 class="SECT2"><a name="ACTIONS" id="ACTIONS">8.5. Actions</a></h2>
- <p>All actions are disabled by default, until they are explicitly
- enabled somewhere in an actions file. Actions are turned on if preceded
- with a <span class="QUOTE">"+"</span>, and turned off if preceded with
- a <span class="QUOTE">"-"</span>. So a <tt class="LITERAL">+action</tt>
- means <span class="QUOTE">"do that action"</span>, e.g. <tt class=
- "LITERAL">+block</tt> means <span class="QUOTE">"please block URLs that
- match the following patterns"</span>, and <tt class=
- "LITERAL">-block</tt> means <span class="QUOTE">"don't block URLs that
- match the following patterns, even if <tt class="LITERAL">+block</tt>
- previously applied."</span></p>
- <p>Again, actions are invoked by placing them on a line, enclosed in
- curly braces and separated by whitespace, like in <tt class=
- "LITERAL">{+some-action -some-other-action{some-parameter}}</tt>,
- followed by a list of URL patterns, one per line, to which they apply.
- Together, the actions line and the following pattern lines make up a
+ <p>All actions are disabled by default, until they are explicitly enabled somewhere in an actions file. Actions
+ are turned on if preceded with a <span class="QUOTE">"+"</span>, and turned off if preceded with a <span class=
+ "QUOTE">"-"</span>. So a <tt class="LITERAL">+action</tt> means <span class="QUOTE">"do that action"</span>, e.g.
+ <tt class="LITERAL">+block</tt> means <span class="QUOTE">"please block URLs that match the following
+ patterns"</span>, and <tt class="LITERAL">-block</tt> means <span class="QUOTE">"don't block URLs that match the
+ following patterns, even if <tt class="LITERAL">+block</tt> previously applied."</span></p>
+ <p>Again, actions are invoked by placing them on a line, enclosed in curly braces and separated by whitespace,
+ like in <tt class="LITERAL">{+some-action -some-other-action{some-parameter}}</tt>, followed by a list of URL
+ patterns, one per line, to which they apply. Together, the actions line and the following pattern lines make up a
section of the actions file.</p>
<p>Actions fall into three categories:</p>
<ul>
<li>
- <p>Boolean, i.e the action can only be <span class=
- "QUOTE">"enabled"</span> or <span class="QUOTE">"disabled"</span>.
- Syntax:</p>
+ <p>Boolean, i.e the action can only be <span class="QUOTE">"enabled"</span> or <span class=
+ "QUOTE">"disabled"</span>. Syntax:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN"> +<tt class=
- "REPLACEABLE"><i>name</i></tt> # enable action <tt class=
+ <pre class="SCREEN"> +<tt class="REPLACEABLE"><i>name</i></tt> # enable action <tt class=
"REPLACEABLE"><i>name</i></tt>
- -<tt class=
-"REPLACEABLE"><i>name</i></tt> # disable action <tt class="REPLACEABLE"><i>name</i></tt></pre>
+ -<tt class="REPLACEABLE"><i>name</i></tt> # disable action <tt class="REPLACEABLE"><i>name</i></tt></pre>
</td>
</tr>
</table>
<p>Example: <tt class="LITERAL">+handle-as-image</tt></p>
</li>
<li>
- <p>Parameterized, where some value is required in order to enable
- this type of action. Syntax:</p>
+ <p>Parameterized, where some value is required in order to enable this type of action. Syntax:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN"> +<tt class=
- "REPLACEABLE"><i>name</i></tt>{<tt class=
- "REPLACEABLE"><i>param</i></tt>} # enable action and set parameter to <tt class="REPLACEABLE"><i>param</i></tt>,
+ <pre class="SCREEN"> +<tt class="REPLACEABLE"><i>name</i></tt>{<tt class=
+ "REPLACEABLE"><i>param</i></tt>} # enable action and set parameter to <tt class=
+ "REPLACEABLE"><i>param</i></tt>,
# overwriting parameter from previous match if necessary
- -<tt class=
-"REPLACEABLE"><i>name</i></tt> # disable action. The parameter can be omitted</pre>
+ -<tt class="REPLACEABLE"><i>name</i></tt> # disable action. The parameter can be omitted</pre>
</td>
</tr>
</table>
- <p>Note that if the URL matches multiple positive forms of a
- parameterized action, the last match wins, i.e. the params from
- earlier matches are simply ignored.</p>
- <p>Example: <tt class="LITERAL">+hide-user-agent{Mozilla/5.0 (X11;
- U; FreeBSD i386; en-US; rv:1.8.1.4) Gecko/20070602
- Firefox/2.0.0.4}</tt></p>
+ <p>Note that if the URL matches multiple positive forms of a parameterized action, the last match wins, i.e.
+ the params from earlier matches are simply ignored.</p>
+ <p>Example: <tt class="LITERAL">+hide-user-agent{Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.4)
+ Gecko/20070602 Firefox/2.0.0.4}</tt></p>
</li>
<li>
- <p>Multi-value. These look exactly like parameterized actions, but
- they behave differently: If the action applies multiple times to
- the same URL, but with different parameters, <span class=
- "emphasis"><i class="EMPHASIS">all</i></span> the parameters from
- <span class="emphasis"><i class="EMPHASIS">all</i></span> matches
- are remembered. This is used for actions that can be executed for
- the same request repeatedly, like adding multiple headers, or
- filtering through multiple filters. Syntax:</p>
+ <p>Multi-value. These look exactly like parameterized actions, but they behave differently: If the action
+ applies multiple times to the same URL, but with different parameters, <span class="emphasis"><i class=
+ "EMPHASIS">all</i></span> the parameters from <span class="emphasis"><i class="EMPHASIS">all</i></span>
+ matches are remembered. This is used for actions that can be executed for the same request repeatedly, like
+ adding multiple headers, or filtering through multiple filters. Syntax:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN"> +<tt class=
- "REPLACEABLE"><i>name</i></tt>{<tt class=
+ <pre class="SCREEN"> +<tt class="REPLACEABLE"><i>name</i></tt>{<tt class=
"REPLACEABLE"><i>param</i></tt>} # enable action and add <tt class=
"REPLACEABLE"><i>param</i></tt> to the list of parameters
-<tt class="REPLACEABLE"><i>name</i></tt>{<tt class=
</td>
</tr>
</table>
- <p>Examples: <tt class="LITERAL">+add-header{X-Fun-Header: Some
- text}</tt> and <tt class=
+ <p>Examples: <tt class="LITERAL">+add-header{X-Fun-Header: Some text}</tt> and <tt class=
"LITERAL">+filter{html-annoyances}</tt></p>
</li>
</ul>
- <p>If nothing is specified in any actions file, no <span class=
- "QUOTE">"actions"</span> are taken. So in this case <span class=
- "APPLICATION">Privoxy</span> would just be a normal, non-blocking,
- non-filtering proxy. You must specifically enable the privacy and
- blocking features you need (although the provided default actions files
- will give a good starting point).</p>
- <p>Later defined action sections always over-ride earlier ones of the
- same type. So exceptions to any rules you make, should come in the
- latter part of the file (or in a file that is processed later when
- using multiple actions files such as <tt class=
- "FILENAME">user.action</tt>). For multi-valued actions, the actions are
- applied in the order they are specified. Actions files are processed in
- the order they are defined in <tt class="FILENAME">config</tt> (the
- default installation has three actions files). It also quite possible
- for any given URL to match more than one <span class=
- "QUOTE">"pattern"</span> (because of wildcards and regular
- expressions), and thus to trigger more than one set of actions! Last
- match wins.</p>
- <p>The list of valid <span class="APPLICATION">Privoxy</span> actions
- are:</p>
+ <p>If nothing is specified in any actions file, no <span class="QUOTE">"actions"</span> are taken. So in this
+ case <span class="APPLICATION">Privoxy</span> would just be a normal, non-blocking, non-filtering proxy. You must
+ specifically enable the privacy and blocking features you need (although the provided default actions files will
+ give a good starting point).</p>
+ <p>Later defined action sections always over-ride earlier ones of the same type. So exceptions to any rules you
+ make, should come in the latter part of the file (or in a file that is processed later when using multiple
+ actions files such as <tt class="FILENAME">user.action</tt>). For multi-valued actions, the actions are applied
+ in the order they are specified. Actions files are processed in the order they are defined in <tt class=
+ "FILENAME">config</tt> (the default installation has three actions files). It also quite possible for any given
+ URL to match more than one <span class="QUOTE">"pattern"</span> (because of wildcards and regular expressions),
+ and thus to trigger more than one set of actions! Last match wins.</p>
+ <p>The list of valid <span class="APPLICATION">Privoxy</span> actions are:</p>
<div class="SECT3">
- <h4 class="SECT3"><a name="ADD-HEADER" id="ADD-HEADER">8.5.1.
- add-header</a></h4>
+ <h4 class="SECT3"><a name="ADD-HEADER" id="ADD-HEADER">8.5.1. add-header</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>Any string value is possible. Validity of the defined HTTP
- headers is not checked. It is recommended that you use the
- <span class="QUOTE">"<tt class="LITERAL">X-</tt>"</span> prefix
- for custom headers.</p>
+ <p>Any string value is possible. Validity of the defined HTTP headers is not checked. It is recommended
+ that you use the <span class="QUOTE">"<tt class="LITERAL">X-</tt>"</span> prefix for custom headers.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This action may be specified multiple times, in order to
- define multiple headers. This is rarely needed for the typical
- user. If you don't know what <span class="QUOTE">"HTTP
- headers"</span> are, you definitely don't need to worry about
- this one.</p>
- <p>Headers added by this action are not modified by other
- actions.</p>
+ <p>This action may be specified multiple times, in order to define multiple headers. This is rarely
+ needed for the typical user. If you don't know what <span class="QUOTE">"HTTP headers"</span> are, you
+ definitely don't need to worry about this one.</p>
+ <p>Headers added by this action are not modified by other actions.</p>
</dd>
<dt>Example usage:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Add a DNT ("Do not track") header to all requests,
+ <pre class="SCREEN"># Add a DNT ("Do not track") header to all requests,
# event to those that already have one.
#
# This is just an example, not a recommendation.
</dd>
<dt>Effect:</dt>
<dd>
- <p>Requests for URLs to which this action applies are blocked,
- i.e. the requests are trapped by <span class=
- "APPLICATION">Privoxy</span> and the requested URL is never
- retrieved, but is answered locally with a substitute page or
- image, as determined by the <tt class="LITERAL"><a href=
- "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>,
- <tt class="LITERAL"><a href=
- "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt>,
- and <tt class="LITERAL"><a href=
- "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></tt>
- actions.</p>
+ <p>Requests for URLs to which this action applies are blocked, i.e. the requests are trapped by
+ <span class="APPLICATION">Privoxy</span> and the requested URL is never retrieved, but is answered
+ locally with a substitute page or image, as determined by the <tt class="LITERAL"><a href=
+ "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>, <tt class="LITERAL"><a href=
+ "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt>, and <tt class="LITERAL"><a href=
+ "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></tt> actions.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p><span class="APPLICATION">Privoxy</span> sends a special
- <span class="QUOTE">"BLOCKED"</span> page 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>A very important exception occurs if <span class=
- "emphasis"><i class="EMPHASIS">both</i></span> <tt class=
- "LITERAL">block</tt> and <tt class="LITERAL"><a href=
- "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>,
- apply to the same request: it will then be replaced by an
- image. If <tt class="LITERAL"><a href=
- "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt>
- (see below) also applies, the type of image will be determined
- by its parameter, if not, the standard checkerboard pattern is
- sent.</p>
- <p>It is important to understand this process, in order to
- understand how <span class="APPLICATION">Privoxy</span> deals
- with ads and other unwanted content. Blocking is a core
- feature, and one upon which various other features depend.</p>
- <p>The <tt class="LITERAL"><a href=
- "actions-file.html#FILTER">filter</a></tt> action can perform a
- very similar task, by <span class="QUOTE">"blocking"</span>
- banner images and other content through rewriting the relevant
- URLs in the document's HTML source, so they don't get requested
- in the first place. Note that this is a totally different
- technique, and it's easy to confuse the two.</p>
+ <p><span class="APPLICATION">Privoxy</span> sends a special <span class="QUOTE">"BLOCKED"</span> page 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>A very important exception occurs if <span class="emphasis"><i class="EMPHASIS">both</i></span>
+ <tt class="LITERAL">block</tt> and <tt class="LITERAL"><a href=
+ "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>, apply to the same request: it will then be
+ replaced by an image. If <tt class="LITERAL"><a href=
+ "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt> (see below) also applies, the type of
+ image will be determined by its parameter, if not, the standard checkerboard pattern is sent.</p>
+ <p>It is important to understand this process, in order to understand how <span class=
+ "APPLICATION">Privoxy</span> deals with ads and other unwanted content. Blocking is a core feature, and
+ one upon which various other features depend.</p>
+ <p>The <tt class="LITERAL"><a href="actions-file.html#FILTER">filter</a></tt> action can perform a very
+ similar task, by <span class="QUOTE">"blocking"</span> banner images and other content through rewriting
+ the relevant URLs in the document's HTML source, so they don't get requested in the first place. Note
+ that this is a totally different technique, and it's easy to confuse the two.</p>
</dd>
<dt>Example usage (section):</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CHANGE-X-FORWARDED-FOR" id=
- "CHANGE-X-FORWARDED-FOR">8.5.3. change-x-forwarded-for</a></h4>
+ <h4 class="SECT3"><a name="CHANGE-X-FORWARDED-FOR" id="CHANGE-X-FORWARDED-FOR">8.5.3.
+ change-x-forwarded-for</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Improve privacy by not forwarding the source of the request
- in the HTTP headers.</p>
+ <p>Improve privacy by not forwarding the source of the request in the HTTP headers.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes the <span class="QUOTE">"X-Forwarded-For:"</span>
- HTTP header from the client request, or adds a new one.</p>
+ <p>Deletes the <span class="QUOTE">"X-Forwarded-For:"</span> HTTP header from the client request, or adds
+ a new one.</p>
</dd>
<dt>Type:</dt>
<dd>
<dd>
<ul>
<li>
- <p><span class="QUOTE">"block"</span> to delete the
- header.</p>
+ <p><span class="QUOTE">"block"</span> to delete the header.</p>
</li>
<li>
- <p><span class="QUOTE">"add"</span> to create the header
- (or append the client's IP address to an already existing
- one).</p>
+ <p><span class="QUOTE">"add"</span> to create the header (or append the client's IP address to an
+ already existing one).</p>
</li>
</ul>
</dd>
<dt>Notes:</dt>
<dd>
- <p>It is safe and recommended to use <tt class=
- "LITERAL">block</tt>.</p>
- <p>Forwarding the source address of the request may make sense
- in some multi-user setups but is also a privacy risk.</p>
+ <p>It is safe and recommended to use <tt class="LITERAL">block</tt>.</p>
+ <p>Forwarding the source address of the request may make sense in some multi-user setups but is also a
+ privacy risk.</p>
</dd>
<dt>Example usage:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CLIENT-HEADER-FILTER" id=
- "CLIENT-HEADER-FILTER">8.5.4. client-header-filter</a></h4>
+ <h4 class="SECT3"><a name="CLIENT-HEADER-FILTER" id="CLIENT-HEADER-FILTER">8.5.4. client-header-filter</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
</dd>
<dt>Effect:</dt>
<dd>
- <p>All client headers to which this action applies are filtered
- on-the-fly through the specified regular expression based
- substitutions.</p>
+ <p>All client headers to which this action applies are filtered on-the-fly through the specified regular
+ expression based substitutions.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>The name of a client-header filter, as defined in one of the
- <a href="filter-file.html">filter files</a>.</p>
+ <p>The name of a client-header filter, as defined in one of the <a href="filter-file.html">filter
+ files</a>.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Client-header filters are applied to each header on its own,
- not to all at once. This makes it easier to diagnose problems,
- but on the downside you can't write filters that only change
- header x if header y's value is z. You can do that by using
- tags though.</p>
- <p>Client-header filters are executed after the other header
- actions have finished and use their output as input.</p>
- <p>If the request URI gets changed, <span class=
- "APPLICATION">Privoxy</span> will detect that and use the new
- one. This can be used to rewrite the request destination behind
- the client's back, for example to specify a Tor exit relay for
- certain requests.</p>
- <p>Please refer to the <a href="filter-file.html">filter file
- chapter</a> to learn which client-header filters are available
- by default, and how to create your own.</p>
+ <p>Client-header filters are applied to each header on its own, not to all at once. This makes it easier
+ to diagnose problems, but on the downside you can't write filters that only change header x if header y's
+ value is z. You can do that by using tags though.</p>
+ <p>Client-header filters are executed after the other header actions have finished and use their output
+ as input.</p>
+ <p>If the request URI gets changed, <span class="APPLICATION">Privoxy</span> will detect that and use the
+ new one. This can be used to rewrite the request destination behind the client's back, for example to
+ specify a Tor exit relay for certain requests.</p>
+ <p>Please refer to the <a href="filter-file.html">filter file chapter</a> to learn which client-header
+ filters are available by default, and how to create your own.</p>
</dd>
<dt>Example usage (section):</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Hide Tor exit notation in Host and Referer Headers
+ <pre class="SCREEN"># Hide Tor exit notation in Host and Referer Headers
{+client-header-filter{hide-tor-exit-notation}}
/
</pre>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CLIENT-HEADER-TAGGER" id=
- "CLIENT-HEADER-TAGGER">8.5.5. client-header-tagger</a></h4>
+ <h4 class="SECT3"><a name="CLIENT-HEADER-TAGGER" id="CLIENT-HEADER-TAGGER">8.5.5. client-header-tagger</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Client headers to which this action applies are filtered
- on-the-fly through the specified regular expression based
- substitutions, the result is used as tag.</p>
+ <p>Client headers to which this action applies are filtered on-the-fly through the specified regular
+ expression based substitutions, the result is used as tag.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>The name of a client-header tagger, as defined in one of the
- <a href="filter-file.html">filter files</a>.</p>
+ <p>The name of a client-header tagger, as defined in one of the <a href="filter-file.html">filter
+ files</a>.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Client-header taggers are applied to each header on its own,
- and as the header isn't modified, each tagger <span class=
- "QUOTE">"sees"</span> the original.</p>
- <p>Client-header taggers are the first actions that are
- executed and their tags can be used to control every other
- action.</p>
+ <p>Client-header taggers are applied to each header on its own, and as the header isn't modified, each
+ tagger <span class="QUOTE">"sees"</span> the original.</p>
+ <p>Client-header taggers are the first actions that are executed and their tags can be used to control
+ every other action.</p>
</dd>
<dt>Example usage (section):</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Tag every request with the User-Agent header
+ <pre class="SCREEN"># Tag every request with the User-Agent header
{+client-header-tagger{user-agent}}
/
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Tag all requests with the Range header set
+ <pre class="SCREEN"># Tag all requests with the Range header set
{+client-header-tagger{range-requests}}
/
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Tag all requests with the client IP address
+ <pre class="SCREEN"># Tag all requests with the client IP address
#
# (Technically the client IP address isn't included in the
# client headers but client-header taggers can set it anyway.
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CONTENT-TYPE-OVERWRITE" id=
- "CONTENT-TYPE-OVERWRITE">8.5.6. content-type-overwrite</a></h4>
+ <h4 class="SECT3"><a name="CONTENT-TYPE-OVERWRITE" id="CONTENT-TYPE-OVERWRITE">8.5.6.
+ content-type-overwrite</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Stop useless download menus from popping up, or change the
- browser's rendering mode</p>
+ <p>Stop useless download menus from popping up, or change the browser's rendering mode</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Replaces the <span class="QUOTE">"Content-Type:"</span> HTTP
- server header.</p>
+ <p>Replaces the <span class="QUOTE">"Content-Type:"</span> HTTP server header.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>The <span class="QUOTE">"Content-Type:"</span> HTTP server
- header is used by the browser to decide what to do with the
- document. The value of this header can cause the browser to
- open a download menu instead of displaying the document by
- itself, even if the document's format is supported by the
+ <p>The <span class="QUOTE">"Content-Type:"</span> HTTP server header is used by the browser to decide
+ what to do with the document. The value of this header can cause the browser to open a download menu
+ instead of displaying the document by itself, even if the document's format is supported by the
browser.</p>
- <p>The declared content type can also affect which rendering
- mode the browser chooses. If XHTML is delivered as <span class=
- "QUOTE">"text/html"</span>, many browsers treat it as yet
- another broken HTML document. If it is send as <span class=
- "QUOTE">"application/xml"</span>, browsers with XHTML support
- will only display it, if the syntax is correct.</p>
- <p>If you see a web site that proudly uses XHTML buttons, but
- sets <span class="QUOTE">"Content-Type: text/html"</span>, you
- can use <span class="APPLICATION">Privoxy</span> to overwrite
- it with <span class="QUOTE">"application/xml"</span> and
- validate the web master's claim inside your XHTML-supporting
- browser. If the syntax is incorrect, the browser will complain
- loudly.</p>
- <p>You can also go the opposite direction: if your browser
- prints error messages instead of rendering a document falsely
- declared as XHTML, you can overwrite the content type with
- <span class="QUOTE">"text/html"</span> and have it rendered as
- broken HTML document.</p>
- <p>By default <tt class="LITERAL">content-type-overwrite</tt>
- only replaces <span class="QUOTE">"Content-Type:"</span>
- headers that look like some kind of text. If you want to
- overwrite it unconditionally, you have to combine it with
- <tt class="LITERAL"><a href=
- "actions-file.html#FORCE-TEXT-MODE">force-text-mode</a></tt>.
- This limitation exists for a reason, think twice before
- circumventing it.</p>
- <p>Most of the time it's easier to replace this action with a
- custom <tt class="LITERAL"><a href=
- "actions-file.html#SERVER-HEADER-FILTER">server-header
- filter</a></tt>. It allows you to activate it for every
- document of a certain site and it will still only replace the
- content types you aimed at.</p>
- <p>Of course you can apply <tt class=
- "LITERAL">content-type-overwrite</tt> to a whole site and then
- make URL based exceptions, but it's a lot more work to get the
- same precision.</p>
+ <p>The declared content type can also affect which rendering mode the browser chooses. If XHTML is
+ delivered as <span class="QUOTE">"text/html"</span>, many browsers treat it as yet another broken HTML
+ document. If it is send as <span class="QUOTE">"application/xml"</span>, browsers with XHTML support will
+ only display it, if the syntax is correct.</p>
+ <p>If you see a web site that proudly uses XHTML buttons, but sets <span class="QUOTE">"Content-Type:
+ text/html"</span>, you can use <span class="APPLICATION">Privoxy</span> to overwrite it with <span class=
+ "QUOTE">"application/xml"</span> and validate the web master's claim inside your XHTML-supporting
+ browser. If the syntax is incorrect, the browser will complain loudly.</p>
+ <p>You can also go the opposite direction: if your browser prints error messages instead of rendering a
+ document falsely declared as XHTML, you can overwrite the content type with <span class=
+ "QUOTE">"text/html"</span> and have it rendered as broken HTML document.</p>
+ <p>By default <tt class="LITERAL">content-type-overwrite</tt> only replaces <span class=
+ "QUOTE">"Content-Type:"</span> headers that look like some kind of text. If you want to overwrite it
+ unconditionally, you have to combine it with <tt class="LITERAL"><a href=
+ "actions-file.html#FORCE-TEXT-MODE">force-text-mode</a></tt>. This limitation exists for a reason, think
+ twice before circumventing it.</p>
+ <p>Most of the time it's easier to replace this action with a custom <tt class="LITERAL"><a href=
+ "actions-file.html#SERVER-HEADER-FILTER">server-header filter</a></tt>. It allows you to activate it for
+ every document of a certain site and it will still only replace the content types you aimed at.</p>
+ <p>Of course you can apply <tt class="LITERAL">content-type-overwrite</tt> to a whole site and then make
+ URL based exceptions, but it's a lot more work to get the same precision.</p>
</dd>
<dt>Example usage (sections):</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Check if www.example.net/ really uses valid XHTML
+ <pre class="SCREEN"># Check if www.example.net/ really uses valid XHTML
{ +content-type-overwrite{application/xml} }
www.example.net/
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CRUNCH-CLIENT-HEADER" id=
- "CRUNCH-CLIENT-HEADER">8.5.7. crunch-client-header</a></h4>
+ <h4 class="SECT3"><a name="CRUNCH-CLIENT-HEADER" id="CRUNCH-CLIENT-HEADER">8.5.7. crunch-client-header</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Remove a client header <span class=
- "APPLICATION">Privoxy</span> has no dedicated action for.</p>
+ <p>Remove a client header <span class="APPLICATION">Privoxy</span> has no dedicated action for.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes every header sent by the client that contains the
- string the user supplied as parameter.</p>
+ <p>Deletes every header sent by the client that contains the string the user supplied as parameter.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This action allows you to block client headers for which no
- dedicated <span class="APPLICATION">Privoxy</span> action
- exists. <span class="APPLICATION">Privoxy</span> will remove
- every client header that contains the string you supplied as
- parameter.</p>
- <p>Regular expressions are <span class="emphasis"><i class=
- "EMPHASIS">not supported</i></span> and you can't use this
- action to block different headers in the same request, unless
- they contain the same string.</p>
- <p><tt class="LITERAL">crunch-client-header</tt> is only meant
- for quick tests. If you have to block several different
- headers, or only want to modify parts of them, you should use a
- <tt class="LITERAL"><a href=
- "actions-file.html#CLIENT-HEADER-FILTER">client-header
- filter</a></tt>.</p>
+ <p>This action allows you to block client headers for which no dedicated <span class=
+ "APPLICATION">Privoxy</span> action exists. <span class="APPLICATION">Privoxy</span> will remove every
+ client header that contains the string you supplied as parameter.</p>
+ <p>Regular expressions are <span class="emphasis"><i class="EMPHASIS">not supported</i></span> and you
+ can't use this action to block different headers in the same request, unless they contain the same
+ string.</p>
+ <p><tt class="LITERAL">crunch-client-header</tt> is only meant for quick tests. If you have to block
+ several different headers, or only want to modify parts of them, you should use a <tt class=
+ "LITERAL"><a href="actions-file.html#CLIENT-HEADER-FILTER">client-header filter</a></tt>.</p>
<div class="WARNING">
<table class="WARNING" border="1" width="90%">
<tr>
</tr>
<tr>
<td align="left">
- <p>Don't block any header without understanding the
- consequences.</p>
+ <p>Don't block any header without understanding the consequences.</p>
</td>
</tr>
</table>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Block the non-existent "Privacy-Violation:" client header
+ <pre class="SCREEN"># Block the non-existent "Privacy-Violation:" client header
{ +crunch-client-header{Privacy-Violation:} }
/
</pre>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CRUNCH-IF-NONE-MATCH" id=
- "CRUNCH-IF-NONE-MATCH">8.5.8. crunch-if-none-match</a></h4>
+ <h4 class="SECT3"><a name="CRUNCH-IF-NONE-MATCH" id="CRUNCH-IF-NONE-MATCH">8.5.8. crunch-if-none-match</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Prevent yet another way to track the user's steps between
- sessions.</p>
+ <p>Prevent yet another way to track the user's steps between sessions.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes the <span class="QUOTE">"If-None-Match:"</span> HTTP
- client header.</p>
+ <p>Deletes the <span class="QUOTE">"If-None-Match:"</span> HTTP client header.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Removing the <span class="QUOTE">"If-None-Match:"</span>
- HTTP client header is useful for filter testing, where you want
- to force a real reload instead of getting status code
- <span class="QUOTE">"304"</span> which would cause the browser
- to use a cached copy of the page.</p>
- <p>It is also useful to make sure the header isn't used as a
- cookie replacement (unlikely but possible).</p>
- <p>Blocking the <span class="QUOTE">"If-None-Match:"</span>
- header shouldn't cause any caching problems, as long as the
- <span class="QUOTE">"If-Modified-Since:"</span> header isn't
- blocked or missing as well.</p>
- <p>It is recommended to use this action together with
- <tt class="LITERAL"><a href=
- "actions-file.html#HIDE-IF-MODIFIED-SINCE">hide-if-modified-since</a></tt>
- and <tt class="LITERAL"><a href=
- "actions-file.html#OVERWRITE-LAST-MODIFIED">overwrite-last-modified</a></tt>.</p>
+ <p>Removing the <span class="QUOTE">"If-None-Match:"</span> HTTP client header is useful for filter
+ testing, where you want to force a real reload instead of getting status code <span class=
+ "QUOTE">"304"</span> which would cause the browser to use a cached copy of the page.</p>
+ <p>It is also useful to make sure the header isn't used as a cookie replacement (unlikely but
+ possible).</p>
+ <p>Blocking the <span class="QUOTE">"If-None-Match:"</span> header shouldn't cause any caching problems,
+ as long as the <span class="QUOTE">"If-Modified-Since:"</span> header isn't blocked or missing as
+ well.</p>
+ <p>It is recommended to use this action together with <tt class="LITERAL"><a href=
+ "actions-file.html#HIDE-IF-MODIFIED-SINCE">hide-if-modified-since</a></tt> and <tt class=
+ "LITERAL"><a href="actions-file.html#OVERWRITE-LAST-MODIFIED">overwrite-last-modified</a></tt>.</p>
</dd>
<dt>Example usage (section):</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Let the browser revalidate cached documents but don't
+ <pre class="SCREEN"># Let the browser revalidate cached documents but don't
# allow the server to use the revalidation headers for user tracking.
{+hide-if-modified-since{-60} \
+overwrite-last-modified{randomize} \
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CRUNCH-INCOMING-COOKIES" id=
- "CRUNCH-INCOMING-COOKIES">8.5.9. crunch-incoming-cookies</a></h4>
+ <h4 class="SECT3"><a name="CRUNCH-INCOMING-COOKIES" id="CRUNCH-INCOMING-COOKIES">8.5.9.
+ crunch-incoming-cookies</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Prevent the web server from setting HTTP cookies on your
- system</p>
+ <p>Prevent the web server from setting HTTP cookies on your system</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes any <span class="QUOTE">"Set-Cookie:"</span> HTTP
- headers from server replies.</p>
+ <p>Deletes any <span class="QUOTE">"Set-Cookie:"</span> HTTP headers from server replies.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This action is only concerned with <span class=
- "emphasis"><i class="EMPHASIS">incoming</i></span> HTTP
- cookies. For <span class="emphasis"><i class=
- "EMPHASIS">outgoing</i></span> HTTP cookies, use <tt class=
- "LITERAL"><a href=
- "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>.
- Use <span class="emphasis"><i class="EMPHASIS">both</i></span>
- to disable HTTP cookies completely.</p>
- <p>It makes <span class="emphasis"><i class="EMPHASIS">no sense
- at all</i></span> to use this action in conjunction with the
- <tt class="LITERAL"><a href=
- "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt>
- action, since it would prevent the session cookies from being
- set. See also <tt class="LITERAL"><a href=
+ <p>This action is only concerned with <span class="emphasis"><i class="EMPHASIS">incoming</i></span> HTTP
+ cookies. For <span class="emphasis"><i class="EMPHASIS">outgoing</i></span> HTTP cookies, use <tt class=
+ "LITERAL"><a href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>. Use
+ <span class="emphasis"><i class="EMPHASIS">both</i></span> to disable HTTP cookies completely.</p>
+ <p>It makes <span class="emphasis"><i class="EMPHASIS">no sense at all</i></span> to use this action in
+ conjunction with the <tt class="LITERAL"><a href=
+ "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt> action, since it would prevent the
+ session cookies from being set. See also <tt class="LITERAL"><a href=
"actions-file.html#FILTER-CONTENT-COOKIES">filter-content-cookies</a></tt>.</p>
</dd>
<dt>Example usage:</dt>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CRUNCH-SERVER-HEADER" id=
- "CRUNCH-SERVER-HEADER">8.5.10. crunch-server-header</a></h4>
+ <h4 class="SECT3"><a name="CRUNCH-SERVER-HEADER" id="CRUNCH-SERVER-HEADER">8.5.10.
+ crunch-server-header</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Remove a server header <span class=
- "APPLICATION">Privoxy</span> has no dedicated action for.</p>
+ <p>Remove a server header <span class="APPLICATION">Privoxy</span> has no dedicated action for.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes every header sent by the server that contains the
- string the user supplied as parameter.</p>
+ <p>Deletes every header sent by the server that contains the string the user supplied as parameter.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This action allows you to block server headers for which no
- dedicated <span class="APPLICATION">Privoxy</span> action
- exists. <span class="APPLICATION">Privoxy</span> will remove
- every server header that contains the string you supplied as
- parameter.</p>
- <p>Regular expressions are <span class="emphasis"><i class=
- "EMPHASIS">not supported</i></span> and you can't use this
- action to block different headers in the same request, unless
- they contain the same string.</p>
- <p><tt class="LITERAL">crunch-server-header</tt> is only meant
- for quick tests. If you have to block several different
- headers, or only want to modify parts of them, you should use a
- custom <tt class="LITERAL"><a href=
- "actions-file.html#SERVER-HEADER-FILTER">server-header
- filter</a></tt>.</p>
+ <p>This action allows you to block server headers for which no dedicated <span class=
+ "APPLICATION">Privoxy</span> action exists. <span class="APPLICATION">Privoxy</span> will remove every
+ server header that contains the string you supplied as parameter.</p>
+ <p>Regular expressions are <span class="emphasis"><i class="EMPHASIS">not supported</i></span> and you
+ can't use this action to block different headers in the same request, unless they contain the same
+ string.</p>
+ <p><tt class="LITERAL">crunch-server-header</tt> is only meant for quick tests. If you have to block
+ several different headers, or only want to modify parts of them, you should use a custom <tt class=
+ "LITERAL"><a href="actions-file.html#SERVER-HEADER-FILTER">server-header filter</a></tt>.</p>
<div class="WARNING">
<table class="WARNING" border="1" width="90%">
<tr>
</tr>
<tr>
<td align="left">
- <p>Don't block any header without understanding the
- consequences.</p>
+ <p>Don't block any header without understanding the consequences.</p>
</td>
</tr>
</table>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Crunch server headers that try to prevent caching
+ <pre class="SCREEN"># Crunch server headers that try to prevent caching
{ +crunch-server-header{no-cache} }
/ </pre>
</td>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CRUNCH-OUTGOING-COOKIES" id=
- "CRUNCH-OUTGOING-COOKIES">8.5.11. crunch-outgoing-cookies</a></h4>
+ <h4 class="SECT3"><a name="CRUNCH-OUTGOING-COOKIES" id="CRUNCH-OUTGOING-COOKIES">8.5.11.
+ crunch-outgoing-cookies</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Prevent the web server from reading any HTTP cookies from
- your system</p>
+ <p>Prevent the web server from reading any HTTP cookies from your system</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes any <span class="QUOTE">"Cookie:"</span> HTTP
- headers from client requests.</p>
+ <p>Deletes any <span class="QUOTE">"Cookie:"</span> HTTP headers from client requests.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This action is only concerned with <span class=
- "emphasis"><i class="EMPHASIS">outgoing</i></span> HTTP
- cookies. For <span class="emphasis"><i class=
- "EMPHASIS">incoming</i></span> HTTP cookies, use <tt class=
- "LITERAL"><a href=
- "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt>.
- Use <span class="emphasis"><i class="EMPHASIS">both</i></span>
- to disable HTTP cookies completely.</p>
- <p>It makes <span class="emphasis"><i class="EMPHASIS">no sense
- at all</i></span> to use this action in conjunction with the
- <tt class="LITERAL"><a href=
- "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt>
- action, since it would prevent the session cookies from being
- read.</p>
+ <p>This action is only concerned with <span class="emphasis"><i class="EMPHASIS">outgoing</i></span> HTTP
+ cookies. For <span class="emphasis"><i class="EMPHASIS">incoming</i></span> HTTP cookies, use <tt class=
+ "LITERAL"><a href="actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt>. Use
+ <span class="emphasis"><i class="EMPHASIS">both</i></span> to disable HTTP cookies completely.</p>
+ <p>It makes <span class="emphasis"><i class="EMPHASIS">no sense at all</i></span> to use this action in
+ conjunction with the <tt class="LITERAL"><a href=
+ "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt> action, since it would prevent the
+ session cookies from being read.</p>
</dd>
<dt>Example usage:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="DEANIMATE-GIFS" id=
- "DEANIMATE-GIFS">8.5.12. deanimate-gifs</a></h4>
+ <h4 class="SECT3"><a name="DEANIMATE-GIFS" id="DEANIMATE-GIFS">8.5.12. deanimate-gifs</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
</dd>
<dt>Effect:</dt>
<dd>
- <p>De-animate GIF animations, i.e. reduce them to their first
- or last image.</p>
+ <p>De-animate GIF animations, i.e. reduce them to their first or last image.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p><span class="QUOTE">"last"</span> or <span class=
- "QUOTE">"first"</span></p>
+ <p><span class="QUOTE">"last"</span> or <span class="QUOTE">"first"</span></p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This will also shrink the images considerably (in bytes, not
- pixels!). If the option <span class="QUOTE">"first"</span> is
- given, the first frame of the animation is used as the
- replacement. If <span class="QUOTE">"last"</span> is given, the
- last frame of the animation is used instead, which probably
- makes more sense for most banner animations, but also has the
- risk of not showing the entire last frame (if it is only a
- delta to an earlier frame).</p>
- <p>You can safely use this action with patterns that will also
- match non-GIF objects, because no attempt will be made at
- anything that doesn't look like a GIF.</p>
+ <p>This will also shrink the images considerably (in bytes, not pixels!). If the option <span class=
+ "QUOTE">"first"</span> is given, the first frame of the animation is used as the replacement. If
+ <span class="QUOTE">"last"</span> is given, the last frame of the animation is used instead, which
+ probably makes more sense for most banner animations, but also has the risk of not showing the entire
+ last frame (if it is only a delta to an earlier frame).</p>
+ <p>You can safely use this action with patterns that will also match non-GIF objects, because no attempt
+ will be made at anything that doesn't look like a GIF.</p>
</dd>
<dt>Example usage:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="DOWNGRADE-HTTP-VERSION" id=
- "DOWNGRADE-HTTP-VERSION">8.5.13. downgrade-http-version</a></h4>
+ <h4 class="SECT3"><a name="DOWNGRADE-HTTP-VERSION" id="DOWNGRADE-HTTP-VERSION">8.5.13.
+ downgrade-http-version</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Downgrades HTTP/1.1 client requests and server replies to
- HTTP/1.0.</p>
+ <p>Downgrades HTTP/1.1 client requests and server replies to HTTP/1.0.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This is a left-over from the time when <span class=
- "APPLICATION">Privoxy</span> didn't support important HTTP/1.1
- features well. It is left here for the unlikely case that you
- experience HTTP/1.1-related problems with some server out
- there.</p>
- <p>Note that enabling this action is only a workaround. It
- should not be enabled for sites that work without it. While it
- shouldn't break any pages, it has an (usually negative)
- performance impact.</p>
- <p>If you come across a site where enabling this action helps,
- please report it, so the cause of the problem can be analyzed.
- If the problem turns out to be caused by a bug in <span class=
- "APPLICATION">Privoxy</span> it should be fixed so the
- following release works without the work around.</p>
+ <p>This is a left-over from the time when <span class="APPLICATION">Privoxy</span> didn't support
+ important HTTP/1.1 features well. It is left here for the unlikely case that you experience
+ HTTP/1.1-related problems with some server out there.</p>
+ <p>Note that enabling this action is only a workaround. It should not be enabled for sites that work
+ without it. While it shouldn't break any pages, it has an (usually negative) performance impact.</p>
+ <p>If you come across a site where enabling this action helps, please report it, so the cause of the
+ problem can be analyzed. If the problem turns out to be caused by a bug in <span class=
+ "APPLICATION">Privoxy</span> it should be fixed so the following release works without the work
+ around.</p>
</dd>
<dt>Example usage (section):</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="EXTERNAL-FILTER" id=
- "EXTERNAL-FILTER">8.5.14. external-filter</a></h4>
+ <h4 class="SECT3"><a name="EXTERNAL-FILTER" id="EXTERNAL-FILTER">8.5.14. external-filter</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Modify content using a programming language of your
- choice.</p>
+ <p>Modify content using a programming language of your choice.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>All instances of text-based type, most notably HTML and
- JavaScript, to which this action applies, can be filtered
- on-the-fly through the specified external filter. By default
- plain text documents are exempted from filtering, because web
- servers often use the <tt class="LITERAL">text/plain</tt> MIME
- type for all files whose type they don't know.)</p>
+ <p>All instances of text-based type, most notably HTML and JavaScript, to which this action applies, can
+ be filtered on-the-fly through the specified external filter. By default plain text documents are
+ exempted from filtering, because web servers often use the <tt class="LITERAL">text/plain</tt> MIME type
+ for all files whose type they don't know.)</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>The name of an external content filter, as defined in the
- <a href="filter-file.html">filter file</a>. External filters
- can be defined in one or more files as defined by the
- <tt class="LITERAL"><a href=
- "config.html#FILTERFILE">filterfile</a></tt> option in the
- <a href="config.html">config file</a>.</p>
- <p>When used in its negative form, and without parameters,
- <span class="emphasis"><i class="EMPHASIS">all</i></span>
- filtering with external filters is completely disabled.</p>
+ <p>The name of an external content filter, as defined in the <a href="filter-file.html">filter file</a>.
+ External filters can be defined in one or more files as defined by the <tt class="LITERAL"><a href=
+ "config.html#FILTERFILE">filterfile</a></tt> option in the <a href="config.html">config file</a>.</p>
+ <p>When used in its negative form, and without parameters, <span class="emphasis"><i class=
+ "EMPHASIS">all</i></span> filtering with external filters is completely disabled.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>External filters are scripts or programs that can modify the
- content in case common <tt class="LITERAL"><a href=
- "actions-file.html#FILTER">filters</a></tt> aren't powerful
- enough. With the exception that this action doesn't use
- pcrs-based filters, the notes in the <tt class=
- "LITERAL"><a href="actions-file.html#FILTER">filter</a></tt>
- section apply.</p>
+ <p>External filters are scripts or programs that can modify the content in case common <tt class=
+ "LITERAL"><a href="actions-file.html#FILTER">filters</a></tt> aren't powerful enough. With the exception
+ that this action doesn't use pcrs-based filters, the notes in the <tt class="LITERAL"><a href=
+ "actions-file.html#FILTER">filter</a></tt> section apply.</p>
<div class="WARNING">
<table class="WARNING" border="1" width="90%">
<tr>
</tr>
<tr>
<td align="left">
- <p>Currently external filters are executed with
- <span class="APPLICATION">Privoxy</span>'s privileges.
- Only use external filters you understand and trust.</p>
+ <p>Currently external filters are executed with <span class="APPLICATION">Privoxy</span>'s
+ privileges. Only use external filters you understand and trust.</p>
</td>
</tr>
</table>
</div>
- <p>This feature is experimental, the <tt class=
- "LITERAL"><a href=
- "filter-file.html#EXTERNAL-FILTER-SYNTAX">syntax</a></tt> may
- change in the future.</p>
+ <p>This feature is experimental, the <tt class="LITERAL"><a href=
+ "filter-file.html#EXTERNAL-FILTER-SYNTAX">syntax</a></tt> may change in the future.</p>
</dd>
<dt>Example usage:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="FAST-REDIRECTS" id=
- "FAST-REDIRECTS">8.5.15. fast-redirects</a></h4>
+ <h4 class="SECT3"><a name="FAST-REDIRECTS" id="FAST-REDIRECTS">8.5.15. fast-redirects</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Fool some click-tracking scripts and speed up indirect
- links.</p>
+ <p>Fool some click-tracking scripts and speed up indirect links.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Detects redirection URLs and redirects the browser without
- contacting the redirection server first.</p>
+ <p>Detects redirection URLs and redirects the browser without contacting the redirection server
+ first.</p>
</dd>
<dt>Type:</dt>
<dd>
<dd>
<ul>
<li>
- <p><span class="QUOTE">"simple-check"</span> to just search
- for the string <span class="QUOTE">"http://"</span> to
- detect redirection URLs.</p>
+ <p><span class="QUOTE">"simple-check"</span> to just search for the string <span class=
+ "QUOTE">"http://"</span> to detect redirection URLs.</p>
</li>
<li>
- <p><span class="QUOTE">"check-decoded-url"</span> to decode
- URLs (if necessary) before searching for redirection
- URLs.</p>
+ <p><span class="QUOTE">"check-decoded-url"</span> to decode URLs (if necessary) before searching for
+ redirection URLs.</p>
</li>
</ul>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Many sites, like yahoo.com, don't just link to other sites.
- Instead, they will link to some script on their own servers,
- giving the destination as a parameter, which will then redirect
- you to the final target. URLs resulting from this scheme
- typically look like: <span class=
+ <p>Many sites, like yahoo.com, don't just link to other sites. Instead, they will link to some script on
+ their own servers, giving the destination as a parameter, which will then redirect you to the final
+ target. URLs resulting from this scheme typically look like: <span class=
"QUOTE">"http://www.example.org/click-tracker.cgi?target=http%3a//www.example.net/"</span>.</p>
- <p>Sometimes, there are even multiple consecutive redirects
- encoded in the URL. These redirections via scripts make your
- web browsing more traceable, since the server from which you
- follow such a link can see where you go to. Apart from that,
- valuable bandwidth and time is wasted, while your browser asks
- the server for one redirect after the other. Plus, it feeds the
- advertisers.</p>
- <p>This feature is currently not very smart and is scheduled
- for improvement. If it is enabled by default, you will have to
- create some exceptions to this action. It can lead to failures
- in several ways:</p>
- <p>Not every URLs with other URLs as parameters is evil. Some
- sites offer a real service that requires this information to
- work. For example a validation service needs to know, which
- document to validate. <tt class="LITERAL">fast-redirects</tt>
- assumes that every URL parameter that looks like another URL is
- a redirection target, and will always redirect to the last one.
- Most of the time the assumption is correct, but if it isn't,
- the user gets redirected anyway.</p>
- <p>Another failure occurs if the URL contains other parameters
- after the URL parameter. The URL: <span class=
- "QUOTE">"http://www.example.org/?redirect=http%3a//www.example.net/&foo=bar"</span>.
- contains the redirection URL <span class=
- "QUOTE">"http://www.example.net/"</span>, followed by another
- parameter. <tt class="LITERAL">fast-redirects</tt> doesn't know
- that and will cause a redirect to <span class=
- "QUOTE">"http://www.example.net/&foo=bar"</span>. Depending
- on the target server configuration, the parameter will be
- silently ignored or lead to a <span class="QUOTE">"page not
- found"</span> error. You can prevent this problem by first
- using the <tt class="LITERAL"><a href=
- "actions-file.html#REDIRECT">redirect</a></tt> action to remove
- the last part of the URL, but it requires a little effort.</p>
- <p>To detect a redirection URL, <tt class=
- "LITERAL">fast-redirects</tt> only looks for the string
- <span class="QUOTE">"http://"</span>, either in plain text
- (invalid but often used) or encoded as <span class=
- "QUOTE">"http%3a//"</span>. Some sites use their own URL
- encoding scheme, encrypt the address of the target server or
- replace it with a database id. In theses cases <tt class=
- "LITERAL">fast-redirects</tt> is fooled and the request reaches
- the redirection server where it probably gets logged.</p>
+ <p>Sometimes, there are even multiple consecutive redirects encoded in the URL. These redirections via
+ scripts make your web browsing more traceable, since the server from which you follow such a link can see
+ where you go to. Apart from that, valuable bandwidth and time is wasted, while your browser asks the
+ server for one redirect after the other. Plus, it feeds the advertisers.</p>
+ <p>This feature is currently not very smart and is scheduled for improvement. If it is enabled by
+ default, you will have to create some exceptions to this action. It can lead to failures in several
+ ways:</p>
+ <p>Not every URLs with other URLs as parameters is evil. Some sites offer a real service that requires
+ this information to work. For example a validation service needs to know, which document to validate.
+ <tt class="LITERAL">fast-redirects</tt> assumes that every URL parameter that looks like another URL is a
+ redirection target, and will always redirect to the last one. Most of the time the assumption is correct,
+ but if it isn't, the user gets redirected anyway.</p>
+ <p>Another failure occurs if the URL contains other parameters after the URL parameter. The URL:
+ <span class="QUOTE">"http://www.example.org/?redirect=http%3a//www.example.net/&foo=bar"</span>.
+ contains the redirection URL <span class="QUOTE">"http://www.example.net/"</span>, followed by another
+ parameter. <tt class="LITERAL">fast-redirects</tt> doesn't know that and will cause a redirect to
+ <span class="QUOTE">"http://www.example.net/&foo=bar"</span>. Depending on the target server
+ configuration, the parameter will be silently ignored or lead to a <span class="QUOTE">"page not
+ found"</span> error. You can prevent this problem by first using the <tt class="LITERAL"><a href=
+ "actions-file.html#REDIRECT">redirect</a></tt> action to remove the last part of the URL, but it requires
+ a little effort.</p>
+ <p>To detect a redirection URL, <tt class="LITERAL">fast-redirects</tt> only looks for the string
+ <span class="QUOTE">"http://"</span>, either in plain text (invalid but often used) or encoded as
+ <span class="QUOTE">"http%3a//"</span>. Some sites use their own URL encoding scheme, encrypt the address
+ of the target server or replace it with a database id. In theses cases <tt class=
+ "LITERAL">fast-redirects</tt> is fooled and the request reaches the redirection server where it probably
+ gets logged.</p>
</dd>
<dt>Example usage:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="FILTER" id="FILTER">8.5.16.
- filter</a></h4>
+ <h4 class="SECT3"><a name="FILTER" id="FILTER">8.5.16. filter</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Get rid of HTML and JavaScript annoyances, banner
- advertisements (by size), do fun text replacements, add
- personalized effects, etc.</p>
+ <p>Get rid of HTML and JavaScript annoyances, banner advertisements (by size), do fun text replacements,
+ add personalized effects, etc.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>All instances of text-based type, most notably HTML and
- JavaScript, to which this action applies, can be filtered
- on-the-fly through the specified regular expression based
- substitutions. (Note: as of version 3.0.3 plain text documents
- are exempted from filtering, because web servers often use the
- <tt class="LITERAL">text/plain</tt> MIME type for all files
- whose type they don't know.)</p>
+ <p>All instances of text-based type, most notably HTML and JavaScript, to which this action applies, can
+ be filtered on-the-fly through the specified regular expression based substitutions. (Note: as of version
+ 3.0.3 plain text documents are exempted from filtering, because web servers often use the <tt class=
+ "LITERAL">text/plain</tt> MIME type for all files whose type they don't know.)</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>The name of a content filter, as defined in the <a href=
- "filter-file.html">filter file</a>. Filters can be defined in
- one or more files as defined by the <tt class=
- "LITERAL"><a href="config.html#FILTERFILE">filterfile</a></tt>
- option in the <a href="config.html">config file</a>. <tt class=
- "FILENAME">default.filter</tt> is the collection of filters
- supplied by the developers. Locally defined filters should go
- in their own file, such as <tt class=
- "FILENAME">user.filter</tt>.</p>
- <p>When used in its negative form, and without parameters,
- <span class="emphasis"><i class="EMPHASIS">all</i></span>
- filtering is completely disabled.</p>
+ <p>The name of a content filter, as defined in the <a href="filter-file.html">filter file</a>. Filters
+ can be defined in one or more files as defined by the <tt class="LITERAL"><a href=
+ "config.html#FILTERFILE">filterfile</a></tt> option in the <a href="config.html">config file</a>.
+ <tt class="FILENAME">default.filter</tt> is the collection of filters supplied by the developers. Locally
+ defined filters should go in their own file, such as <tt class="FILENAME">user.filter</tt>.</p>
+ <p>When used in its negative form, and without parameters, <span class="emphasis"><i class=
+ "EMPHASIS">all</i></span> filtering is completely disabled.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>For your convenience, there are a number of pre-defined
- filters available in the distribution filter file that you can
- use. See the examples below for a list.</p>
- <p>Filtering requires buffering the page content, which may
- appear to slow down page rendering since nothing is displayed
- until all content has passed the filters. (The total time until
- the page is completely rendered doesn't change much, but it may
- be perceived as slower since the page is not incrementally
- displayed.) This effect will be more noticeable on slower
- connections.</p>
- <p><span class="QUOTE">"Rolling your own"</span> filters
- requires a knowledge of <a href=
- "http://en.wikipedia.org/wiki/Regular_expressions" target=
- "_top"><span class="QUOTE">"Regular Expressions"</span></a> and
- <a href="http://en.wikipedia.org/wiki/Html" target=
- "_top"><span class="QUOTE">"HTML"</span></a>. This is very
- powerful feature, and potentially very intrusive. Filters
- should be used with caution, and where an equivalent
- <span class="QUOTE">"action"</span> is not available.</p>
- <p>The amount of data that can be filtered is limited to the
- <tt class="LITERAL"><a href=
- "config.html#BUFFER-LIMIT">buffer-limit</a></tt> option in the
- main <a href="config.html">config file</a>. The default is 4096
- KB (4 Megs). Once this limit is exceeded, the buffered data,
- and all pending data, is passed through unfiltered.</p>
- <p>Inappropriate MIME types, such as zipped files, are not
- filtered at all. (Again, only text-based types except plain
- text). Encrypted SSL data (from HTTPS servers) cannot be
- filtered either, since this would violate the integrity of the
- secure transaction. In some situations it might be necessary to
- protect certain text, like source code, from filtering by
- defining appropriate <tt class="LITERAL">-filter</tt>
+ <p>For your convenience, there are a number of pre-defined filters available in the distribution filter
+ file that you can use. See the examples below for a list.</p>
+ <p>Filtering requires buffering the page content, which may appear to slow down page rendering since
+ nothing is displayed until all content has passed the filters. (The total time until the page is
+ completely rendered doesn't change much, but it may be perceived as slower since the page is not
+ incrementally displayed.) This effect will be more noticeable on slower connections.</p>
+ <p><span class="QUOTE">"Rolling your own"</span> filters requires a knowledge of <a href=
+ "http://en.wikipedia.org/wiki/Regular_expressions" target="_top"><span class="QUOTE">"Regular
+ Expressions"</span></a> and <a href="http://en.wikipedia.org/wiki/Html" target="_top"><span class=
+ "QUOTE">"HTML"</span></a>. This is very powerful feature, and potentially very intrusive. Filters should
+ be used with caution, and where an equivalent <span class="QUOTE">"action"</span> is not available.</p>
+ <p>The amount of data that can be filtered is limited to the <tt class="LITERAL"><a href=
+ "config.html#BUFFER-LIMIT">buffer-limit</a></tt> option in the main <a href="config.html">config
+ file</a>. The default is 4096 KB (4 Megs). Once this limit is exceeded, the buffered data, and all
+ pending data, is passed through unfiltered.</p>
+ <p>Inappropriate MIME types, such as zipped files, are not filtered at all. (Again, only text-based types
+ except plain text). Encrypted SSL data (from HTTPS servers) cannot be filtered either, since this would
+ violate the integrity of the secure transaction. In some situations it might be necessary to protect
+ certain text, like source code, from filtering by defining appropriate <tt class="LITERAL">-filter</tt>
exceptions.</p>
- <p>Compressed content can't be filtered either, but if
- <span class="APPLICATION">Privoxy</span> is compiled with zlib
- support and a supported compression algorithm is used (gzip or
- deflate), <span class="APPLICATION">Privoxy</span> can first
- decompress the content and then filter it.</p>
- <p>If you use a <span class="APPLICATION">Privoxy</span>
- version without zlib support, but want filtering to work on as
- much documents as possible, even those that would normally be
- sent compressed, you must use the <tt class="LITERAL"><a href=
- "actions-file.html#PREVENT-COMPRESSION">prevent-compression</a></tt>
+ <p>Compressed content can't be filtered either, but if <span class="APPLICATION">Privoxy</span> is
+ compiled with zlib support and a supported compression algorithm is used (gzip or deflate), <span class=
+ "APPLICATION">Privoxy</span> can first decompress the content and then filter it.</p>
+ <p>If you use a <span class="APPLICATION">Privoxy</span> version without zlib support, but want filtering
+ to work on as much documents as possible, even those that would normally be sent compressed, you must use
+ the <tt class="LITERAL"><a href="actions-file.html#PREVENT-COMPRESSION">prevent-compression</a></tt>
action in conjunction with <tt class="LITERAL">filter</tt>.</p>
- <p>Content filtering can achieve some of the same effects as
- the <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> action, i.e. it can be
- used to block ads and banners. But the mechanism works quite
- differently. One effective use, is to block ad banners based on
- their size (see below), since many of these seem to be somewhat
- standardized.</p>
- <p><a href="contact.html">Feedback</a> with suggestions for new
- or improved filters is particularly welcome!</p>
- <p>The below list has only the names and a one-line description
- of each predefined filter. There are <a href=
- "filter-file.html#PREDEFINED-FILTERS">more verbose
- explanations</a> of what these filters do in the <a href=
- "filter-file.html">filter file chapter</a>.</p>
- </dd>
- <dt>Example usage (with filters from the distribution <tt class=
- "FILENAME">default.filter</tt> file). See <a href=
- "filter-file.html#PREDEFINED-FILTERS">the Predefined Filters
- section</a> for more explanation on each:</dt>
- <dd>
- <p><a name="FILTER-JS-ANNOYANCES" id=
- "FILTER-JS-ANNOYANCES"></a></p>
+ <p>Content filtering can achieve some of the same effects as the <tt class="LITERAL"><a href=
+ "actions-file.html#BLOCK">block</a></tt> action, i.e. it can be used to block ads and banners. But the
+ mechanism works quite differently. One effective use, is to block ad banners based on their size (see
+ below), since many of these seem to be somewhat standardized.</p>
+ <p><a href="contact.html">Feedback</a> with suggestions for new or improved filters is particularly
+ welcome!</p>
+ <p>The below list has only the names and a one-line description of each predefined filter. There are
+ <a href="filter-file.html#PREDEFINED-FILTERS">more verbose explanations</a> of what these filters do in
+ the <a href="filter-file.html">filter file chapter</a>.</p>
+ </dd>
+ <dt>Example usage (with filters from the distribution <tt class="FILENAME">default.filter</tt> file). See
+ <a href="filter-file.html#PREDEFINED-FILTERS">the Predefined Filters section</a> for more explanation on
+ each:</dt>
+ <dd>
+ <p><a name="FILTER-JS-ANNOYANCES" id="FILTER-JS-ANNOYANCES"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-HTML-ANNOYANCES" id=
- "FILTER-HTML-ANNOYANCES"></a></p>
+ <p><a name="FILTER-HTML-ANNOYANCES" id="FILTER-HTML-ANNOYANCES"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-CONTENT-COOKIES" id=
- "FILTER-CONTENT-COOKIES"></a></p>
+ <p><a name="FILTER-CONTENT-COOKIES" id="FILTER-CONTENT-COOKIES"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-REFRESH-TAGS" id=
- "FILTER-REFRESH-TAGS"></a></p>
+ <p><a name="FILTER-REFRESH-TAGS" id="FILTER-REFRESH-TAGS"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-UNSOLICITED-POPUPS" id=
- "FILTER-UNSOLICITED-POPUPS"></a></p>
+ <p><a name="FILTER-UNSOLICITED-POPUPS" id="FILTER-UNSOLICITED-POPUPS"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +filter{unsolicited-popups} # Disable only unsolicited pop-up windows.</pre>
+ <pre class="SCREEN">+filter{unsolicited-popups} # Disable only unsolicited pop-up windows.</pre>
</td>
</tr>
</table>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +filter{all-popups} # Kill all popups in JavaScript and HTML.</pre>
+ <pre class="SCREEN">+filter{all-popups} # Kill all popups in JavaScript and HTML.</pre>
</td>
</tr>
</table>
- <p><a name="FILTER-IMG-REORDER" id=
- "FILTER-IMG-REORDER"></a></p>
+ <p><a name="FILTER-IMG-REORDER" id="FILTER-IMG-REORDER"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-BANNERS-BY-SIZE" id=
- "FILTER-BANNERS-BY-SIZE"></a></p>
+ <p><a name="FILTER-BANNERS-BY-SIZE" id="FILTER-BANNERS-BY-SIZE"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +filter{banners-by-size} # Kill banners by size.</pre>
+ <pre class="SCREEN">+filter{banners-by-size} # Kill banners by size.</pre>
</td>
</tr>
</table>
- <p><a name="FILTER-BANNERS-BY-LINK" id=
- "FILTER-BANNERS-BY-LINK"></a></p>
+ <p><a name="FILTER-BANNERS-BY-LINK" id="FILTER-BANNERS-BY-LINK"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-TINY-TEXTFORMS" id=
- "FILTER-TINY-TEXTFORMS"></a></p>
+ <p><a name="FILTER-TINY-TEXTFORMS" id="FILTER-TINY-TEXTFORMS"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-JUMPING-WINDOWS" id=
- "FILTER-JUMPING-WINDOWS"></a></p>
+ <p><a name="FILTER-JUMPING-WINDOWS" id="FILTER-JUMPING-WINDOWS"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-FRAMESET-BORDERS" id=
- "FILTER-FRAMESET-BORDERS"></a></p>
+ <p><a name="FILTER-FRAMESET-BORDERS" id="FILTER-FRAMESET-BORDERS"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-DEMORONIZER" id=
- "FILTER-DEMORONIZER"></a></p>
+ <p><a name="FILTER-DEMORONIZER" id="FILTER-DEMORONIZER"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-SHOCKWAVE-FLASH" id=
- "FILTER-SHOCKWAVE-FLASH"></a></p>
+ <p><a name="FILTER-SHOCKWAVE-FLASH" id="FILTER-SHOCKWAVE-FLASH"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +filter{shockwave-flash} # Kill embedded Shockwave Flash objects.</pre>
+ <pre class="SCREEN">+filter{shockwave-flash} # Kill embedded Shockwave Flash objects.</pre>
</td>
</tr>
</table>
- <p><a name="FILTER-QUICKTIME-KIOSKMODE" id=
- "FILTER-QUICKTIME-KIOSKMODE"></a></p>
+ <p><a name="FILTER-QUICKTIME-KIOSKMODE" id="FILTER-QUICKTIME-KIOSKMODE"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +filter{quicktime-kioskmode} # Make Quicktime movies saveable.</pre>
+ <pre class="SCREEN">+filter{quicktime-kioskmode} # Make Quicktime movies saveable.</pre>
</td>
</tr>
</table>
</td>
</tr>
</table>
- <p><a name="FILTER-CRUDE-PARENTAL" id=
- "FILTER-CRUDE-PARENTAL"></a></p>
+ <p><a name="FILTER-CRUDE-PARENTAL" id="FILTER-CRUDE-PARENTAL"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-IE-EXPLOITS" id=
- "FILTER-IE-EXPLOITS"></a></p>
+ <p><a name="FILTER-IE-EXPLOITS" id="FILTER-IE-EXPLOITS"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p><a name="FILTER-SITE-SPECIFICS" id=
- "FILTER-SITE-SPECIFICS"></a></p>
+ <p><a name="FILTER-SITE-SPECIFICS" id="FILTER-SITE-SPECIFICS"></a></p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="FORCE-TEXT-MODE" id=
- "FORCE-TEXT-MODE">8.5.17. force-text-mode</a></h4>
+ <h4 class="SECT3"><a name="FORCE-TEXT-MODE" id="FORCE-TEXT-MODE">8.5.17. force-text-mode</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Force <span class="APPLICATION">Privoxy</span> to treat a
- document as if it was in some kind of <span class=
- "emphasis"><i class="EMPHASIS">text</i></span> format.</p>
+ <p>Force <span class="APPLICATION">Privoxy</span> to treat a document as if it was in some kind of
+ <span class="emphasis"><i class="EMPHASIS">text</i></span> format.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Declares a document as text, even if the <span class=
- "QUOTE">"Content-Type:"</span> isn't detected as such.</p>
+ <p>Declares a document as text, even if the <span class="QUOTE">"Content-Type:"</span> isn't detected as
+ such.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>As explained <tt class="LITERAL"><a href=
- "actions-file.html#FILTER">above</a></tt>, <span class=
- "APPLICATION">Privoxy</span> tries to only filter files that
- are in some kind of text format. The same restrictions apply to
- <tt class="LITERAL"><a href=
- "actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite</a></tt>.
- <tt class="LITERAL">force-text-mode</tt> declares a document as
- text, without looking at the <span class=
+ <p>As explained <tt class="LITERAL"><a href="actions-file.html#FILTER">above</a></tt>, <span class=
+ "APPLICATION">Privoxy</span> tries to only filter files that are in some kind of text format. The same
+ restrictions apply to <tt class="LITERAL"><a href=
+ "actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite</a></tt>. <tt class=
+ "LITERAL">force-text-mode</tt> declares a document as text, without looking at the <span class=
"QUOTE">"Content-Type:"</span> first.</p>
<div class="WARNING">
<table class="WARNING" border="1" width="90%">
</tr>
<tr>
<td align="left">
- <p>Think twice before activating this action. Filtering
- binary data with regular expressions can cause file
- damage.</p>
+ <p>Think twice before activating this action. Filtering binary data with regular expressions can
+ cause file damage.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="FORWARD-OVERRIDE" id=
- "FORWARD-OVERRIDE">8.5.18. forward-override</a></h4>
+ <h4 class="SECT3"><a name="FORWARD-OVERRIDE" id="FORWARD-OVERRIDE">8.5.18. forward-override</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Change the forwarding settings based on User-Agent or
- request origin</p>
+ <p>Change the forwarding settings based on User-Agent or request origin</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Overrules the forward directives in the configuration
- file.</p>
+ <p>Overrules the forward directives in the configuration file.</p>
</dd>
<dt>Type:</dt>
<dd>
<dd>
<ul>
<li>
- <p><span class="QUOTE">"forward ."</span> to use a direct
- connection without any additional proxies.</p>
+ <p><span class="QUOTE">"forward ."</span> to use a direct connection without any additional
+ proxies.</p>
</li>
<li>
- <p><span class="QUOTE">"forward 127.0.0.1:8123"</span> to
- use the HTTP proxy listening at 127.0.0.1 port 8123.</p>
+ <p><span class="QUOTE">"forward 127.0.0.1:8123"</span> to use the HTTP proxy listening at 127.0.0.1
+ port 8123.</p>
</li>
<li>
- <p><span class="QUOTE">"forward-socks4a 127.0.0.1:9050
- ."</span> to use the socks4a proxy listening at 127.0.0.1
- port 9050. Replace <span class=
- "QUOTE">"forward-socks4a"</span> with <span class=
- "QUOTE">"forward-socks4"</span> to use a socks4 connection
- (with local DNS resolution) instead, use <span class=
- "QUOTE">"forward-socks5"</span> for socks5 connections
- (with remote DNS resolution).</p>
+ <p><span class="QUOTE">"forward-socks4a 127.0.0.1:9050 ."</span> to use the socks4a proxy listening
+ at 127.0.0.1 port 9050. Replace <span class="QUOTE">"forward-socks4a"</span> with <span class=
+ "QUOTE">"forward-socks4"</span> to use a socks4 connection (with local DNS resolution) instead, use
+ <span class="QUOTE">"forward-socks5"</span> for socks5 connections (with remote DNS resolution).</p>
</li>
<li>
- <p><span class="QUOTE">"forward-socks4a 127.0.0.1:9050
- proxy.example.org:8000"</span> to use the socks4a proxy
- listening at 127.0.0.1 port 9050 to reach the HTTP proxy
- listening at proxy.example.org port 8000. Replace
- <span class="QUOTE">"forward-socks4a"</span> with
- <span class="QUOTE">"forward-socks4"</span> to use a socks4
- connection (with local DNS resolution) instead, use
- <span class="QUOTE">"forward-socks5"</span> for socks5
- connections (with remote DNS resolution).</p>
+ <p><span class="QUOTE">"forward-socks4a 127.0.0.1:9050 proxy.example.org:8000"</span> to use the
+ socks4a proxy listening at 127.0.0.1 port 9050 to reach the HTTP proxy listening at proxy.example.org
+ port 8000. Replace <span class="QUOTE">"forward-socks4a"</span> with <span class=
+ "QUOTE">"forward-socks4"</span> to use a socks4 connection (with local DNS resolution) instead, use
+ <span class="QUOTE">"forward-socks5"</span> for socks5 connections (with remote DNS resolution).</p>
</li>
<li>
- <p><span class="QUOTE">"forward-webserver
- 127.0.0.1:80"</span> to use the HTTP server listening at
- 127.0.0.1 port 80 without adjusting the request
- headers.</p>
- <p>This makes it more convenient to use Privoxy to make
- existing websites available as onion services as well.</p>
- <p>Many websites serve content with hardcoded URLs and
- can't be easily adjusted to change the domain based on the
- one used by the client.</p>
- <p>Putting Privoxy between Tor and the webserver (or an
- stunnel that forwards to the webserver) allows to rewrite
- headers and content to make client and server happy at the
- same time.</p>
- <p>Using Privoxy for webservers that are only reachable
- through onion addresses and whose location is supposed to
- be secret is not recommended and should not be necessary
- anyway.</p>
+ <p><span class="QUOTE">"forward-webserver 127.0.0.1:80"</span> to use the HTTP server listening at
+ 127.0.0.1 port 80 without adjusting the request headers.</p>
+ <p>This makes it more convenient to use Privoxy to make existing websites available as onion services
+ as well.</p>
+ <p>Many websites serve content with hardcoded URLs and can't be easily adjusted to change the domain
+ based on the one used by the client.</p>
+ <p>Putting Privoxy between Tor and the webserver (or an stunnel that forwards to the webserver)
+ allows to rewrite headers and content to make client and server happy at the same time.</p>
+ <p>Using Privoxy for webservers that are only reachable through onion addresses and whose location is
+ supposed to be secret is not recommended and should not be necessary anyway.</p>
</li>
</ul>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This action takes parameters similar to the <a href=
- "config.html#FORWARDING">forward</a> directives in the
- configuration file, but without the URL pattern. It can be used
- as replacement, but normally it's only used in cases where
- matching based on the request URL isn't sufficient.</p>
+ <p>This action takes parameters similar to the <a href="config.html#FORWARDING">forward</a> directives in
+ the configuration file, but without the URL pattern. It can be used as replacement, but normally it's
+ only used in cases where matching based on the request URL isn't sufficient.</p>
<div class="WARNING">
<table class="WARNING" border="1" width="90%">
<tr>
</tr>
<tr>
<td align="left">
- <p>Please read the description for the <a href=
- "config.html#FORWARDING">forward</a> directives before
- using this action. Forwarding to the wrong people will
- reduce your privacy and increase the chances of
- man-in-the-middle attacks.</p>
- <p>If the ports are missing or invalid, default values
- will be used. This might change in the future and you
- shouldn't rely on it. Otherwise incorrect syntax causes
- Privoxy to exit. Due to design limitations, invalid
- parameter syntax isn't detected until the action is
- used the first time.</p>
- <p>Use the <a href=
- "http://config.privoxy.org/show-url-info" target=
- "_top">show-url-info CGI page</a> to verify that your
- forward settings do what you thought the do.</p>
+ <p>Please read the description for the <a href="config.html#FORWARDING">forward</a> directives
+ before using this action. Forwarding to the wrong people will reduce your privacy and increase
+ the chances of man-in-the-middle attacks.</p>
+ <p>If the ports are missing or invalid, default values will be used. This might change in the
+ future and you shouldn't rely on it. Otherwise incorrect syntax causes Privoxy to exit. Due to
+ design limitations, invalid parameter syntax isn't detected until the action is used the first
+ time.</p>
+ <p>Use the <a href="http://config.privoxy.org/show-url-info" target="_top">show-url-info CGI
+ page</a> to verify that your forward settings do what you thought the do.</p>
</td>
</tr>
</table>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Use an ssh tunnel for requests previously tagged as
+ <pre class="SCREEN"># Use an ssh tunnel for requests previously tagged as
# <span class="QUOTE">"User-Agent: fetch libfetch/2.0"</span> and make sure
# resuming downloads continues to work.
#
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="HANDLE-AS-EMPTY-DOCUMENT" id=
- "HANDLE-AS-EMPTY-DOCUMENT">8.5.19. handle-as-empty-document</a></h4>
+ <h4 class="SECT3"><a name="HANDLE-AS-EMPTY-DOCUMENT" id="HANDLE-AS-EMPTY-DOCUMENT">8.5.19.
+ handle-as-empty-document</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Mark URLs that should be replaced by empty documents
- <span class="emphasis"><i class="EMPHASIS">if they get
- blocked</i></span></p>
+ <p>Mark URLs that should be replaced by empty documents <span class="emphasis"><i class="EMPHASIS">if
+ they get blocked</i></span></p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>This action alone doesn't do anything noticeable. It just
- marks URLs. If the <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> action <span class=
- "emphasis"><i class="EMPHASIS">also applies</i></span>, the
- presence or absence of this mark decides whether an HTML
- <span class="QUOTE">"BLOCKED"</span> page, or an empty document
- will be sent to the client as a substitute for the blocked
- content. The <span class="emphasis"><i class=
- "EMPHASIS">empty</i></span> document isn't literally empty, but
- actually contains a single space.</p>
+ <p>This action alone doesn't do anything noticeable. It just marks URLs. If the <tt class=
+ "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> action <span class="emphasis"><i class=
+ "EMPHASIS">also applies</i></span>, the presence or absence of this mark decides whether an HTML
+ <span class="QUOTE">"BLOCKED"</span> page, or an empty document will be sent to the client as a
+ substitute for the blocked content. The <span class="emphasis"><i class="EMPHASIS">empty</i></span>
+ document isn't literally empty, but actually contains a single space.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Some browsers complain about syntax errors if JavaScript
- documents are blocked with <span class=
- "APPLICATION">Privoxy's</span> default HTML page; this option
- can be used to silence them. And of course this action can also
- be used to eliminate the <span class=
- "APPLICATION">Privoxy</span> BLOCKED message in frames.</p>
- <p>The content type for the empty document can be specified
- with <tt class="LITERAL"><a href=
- "actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite{}</a></tt>,
- but usually this isn't necessary.</p>
+ <p>Some browsers complain about syntax errors if JavaScript documents are blocked with <span class=
+ "APPLICATION">Privoxy's</span> default HTML page; this option can be used to silence them. And of course
+ this action can also be used to eliminate the <span class="APPLICATION">Privoxy</span> BLOCKED message in
+ frames.</p>
+ <p>The content type for the empty document can be specified with <tt class="LITERAL"><a href=
+ "actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite{}</a></tt>, but usually this isn't
+ necessary.</p>
</dd>
<dt>Example usage:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Block all documents on example.org that end with ".js",
+ <pre class="SCREEN"># Block all documents on example.org that end with ".js",
# but send an empty document instead of the usual HTML message.
{+block{Blocked JavaScript} +handle-as-empty-document}
example.org/.*\.js$
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="HANDLE-AS-IMAGE" id=
- "HANDLE-AS-IMAGE">8.5.20. handle-as-image</a></h4>
+ <h4 class="SECT3"><a name="HANDLE-AS-IMAGE" id="HANDLE-AS-IMAGE">8.5.20. handle-as-image</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Mark URLs as belonging to images (so they'll be replaced by
- images <span class="emphasis"><i class="EMPHASIS">if they do
- get blocked</i></span>, rather than HTML pages)</p>
+ <p>Mark URLs as belonging to images (so they'll be replaced by images <span class="emphasis"><i class=
+ "EMPHASIS">if they do get blocked</i></span>, rather than HTML pages)</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>This action alone doesn't do anything noticeable. It just
- marks URLs as images. If the <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> action <span class=
- "emphasis"><i class="EMPHASIS">also applies</i></span>, the
- presence or absence of this mark decides whether an HTML
- <span class="QUOTE">"blocked"</span> page, or a replacement
- image (as determined by the <tt class="LITERAL"><a href=
- "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt>
- action) will be sent to the client as a substitute for the
- blocked content.</p>
+ <p>This action alone doesn't do anything noticeable. It just marks URLs as images. If the <tt class=
+ "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> action <span class="emphasis"><i class=
+ "EMPHASIS">also applies</i></span>, the presence or absence of this mark decides whether an HTML
+ <span class="QUOTE">"blocked"</span> page, or a replacement image (as determined by the <tt class=
+ "LITERAL"><a href="actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt> action) will be sent
+ to the client as a substitute for the blocked content.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>The below generic example section is actually part of
- <tt class="FILENAME">default.action</tt>. It marks all URLs
- with well-known image file name extensions as images and should
- be left intact.</p>
- <p>Users will probably only want to use the handle-as-image
- action in conjunction with <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt>, to block sources of
- banners, whose URLs don't reflect the file type, like in the
- second example section.</p>
- <p>Note that you cannot treat HTML pages as images in most
- cases. For instance, (in-line) ad frames require an HTML page
- to be sent, or they won't display properly. Forcing <tt class=
- "LITERAL">handle-as-image</tt> in this situation will not
- replace the ad frame with an image, but lead to error
- messages.</p>
+ <p>The below generic example section is actually part of <tt class="FILENAME">default.action</tt>. It
+ marks all URLs with well-known image file name extensions as images and should be left intact.</p>
+ <p>Users will probably only want to use the handle-as-image action in conjunction with <tt class=
+ "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt>, to block sources of banners, whose URLs don't
+ reflect the file type, like in the second example section.</p>
+ <p>Note that you cannot treat HTML pages as images in most cases. For instance, (in-line) ad frames
+ require an HTML page to be sent, or they won't display properly. Forcing <tt class=
+ "LITERAL">handle-as-image</tt> in this situation will not replace the ad frame with an image, but lead to
+ error messages.</p>
</dd>
<dt>Example usage (sections):</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="HIDE-ACCEPT-LANGUAGE" id=
- "HIDE-ACCEPT-LANGUAGE">8.5.21. hide-accept-language</a></h4>
+ <h4 class="SECT3"><a name="HIDE-ACCEPT-LANGUAGE" id="HIDE-ACCEPT-LANGUAGE">8.5.21.
+ hide-accept-language</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes or replaces the <span class=
- "QUOTE">"Accept-Language:"</span> HTTP header in client
+ <p>Deletes or replaces the <span class="QUOTE">"Accept-Language:"</span> HTTP header in client
requests.</p>
</dd>
<dt>Type:</dt>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>Keyword: <span class="QUOTE">"block"</span>, or any user
- defined value.</p>
+ <p>Keyword: <span class="QUOTE">"block"</span>, or any user defined value.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Faking the browser's language settings can be useful to make
- a foreign User-Agent set with <tt class="LITERAL"><a href=
- "actions-file.html#HIDE-USER-AGENT">hide-user-agent</a></tt>
- more believable.</p>
- <p>However some sites with content in different languages check
- the <span class="QUOTE">"Accept-Language:"</span> to decide
- which one to take by default. Sometimes it isn't possible to
- later switch to another language without changing the
- <span class="QUOTE">"Accept-Language:"</span> header first.</p>
- <p>Therefore it's a good idea to either only change the
- <span class="QUOTE">"Accept-Language:"</span> header to
- languages you understand, or to languages that aren't wide
- spread.</p>
- <p>Before setting the <span class=
- "QUOTE">"Accept-Language:"</span> header to a rare language,
- you should consider that it helps to make your requests unique
- and thus easier to trace. If you don't plan to change this
- header frequently, you should stick to a common language.</p>
+ <p>Faking the browser's language settings can be useful to make a foreign User-Agent set with <tt class=
+ "LITERAL"><a href="actions-file.html#HIDE-USER-AGENT">hide-user-agent</a></tt> more believable.</p>
+ <p>However some sites with content in different languages check the <span class=
+ "QUOTE">"Accept-Language:"</span> to decide which one to take by default. Sometimes it isn't possible to
+ later switch to another language without changing the <span class="QUOTE">"Accept-Language:"</span>
+ header first.</p>
+ <p>Therefore it's a good idea to either only change the <span class="QUOTE">"Accept-Language:"</span>
+ header to languages you understand, or to languages that aren't wide spread.</p>
+ <p>Before setting the <span class="QUOTE">"Accept-Language:"</span> header to a rare language, you should
+ consider that it helps to make your requests unique and thus easier to trace. If you don't plan to change
+ this header frequently, you should stick to a common language.</p>
</dd>
<dt>Example usage (section):</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Pretend to use Canadian language settings.
+ <pre class="SCREEN"># Pretend to use Canadian language settings.
{+hide-accept-language{en-ca} \
+hide-user-agent{Mozilla/5.0 (X11; U; OpenBSD i386; en-CA; rv:1.8.0.4) Gecko/20060628 Firefox/1.5.0.4} \
}
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="HIDE-CONTENT-DISPOSITION" id=
- "HIDE-CONTENT-DISPOSITION">8.5.22. hide-content-disposition</a></h4>
+ <h4 class="SECT3"><a name="HIDE-CONTENT-DISPOSITION" id="HIDE-CONTENT-DISPOSITION">8.5.22.
+ hide-content-disposition</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Prevent download menus for content you prefer to view inside
- the browser.</p>
+ <p>Prevent download menus for content you prefer to view inside the browser.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes or replaces the <span class=
- "QUOTE">"Content-Disposition:"</span> HTTP header set by some
+ <p>Deletes or replaces the <span class="QUOTE">"Content-Disposition:"</span> HTTP header set by some
servers.</p>
</dd>
<dt>Type:</dt>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>Keyword: <span class="QUOTE">"block"</span>, or any user
- defined value.</p>
+ <p>Keyword: <span class="QUOTE">"block"</span>, or any user defined value.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Some servers set the <span class=
- "QUOTE">"Content-Disposition:"</span> HTTP header for documents
- they assume you want to save locally before viewing them. The
- <span class="QUOTE">"Content-Disposition:"</span> header
- contains the file name the browser is supposed to use by
+ <p>Some servers set the <span class="QUOTE">"Content-Disposition:"</span> HTTP header for documents they
+ assume you want to save locally before viewing them. The <span class=
+ "QUOTE">"Content-Disposition:"</span> header contains the file name the browser is supposed to use by
default.</p>
- <p>In most browsers that understand this header, it makes it
- impossible to <span class="emphasis"><i class="EMPHASIS">just
- view</i></span> the document, without downloading it first,
- even if it's just a simple text file or an image.</p>
- <p>Removing the <span class=
- "QUOTE">"Content-Disposition:"</span> header helps to prevent
- this annoyance, but some browsers additionally check the
- <span class="QUOTE">"Content-Type:"</span> header, before they
- decide if they can display a document without saving it first.
- In these cases, you have to change this header as well, before
- the browser stops displaying download menus.</p>
- <p>It is also possible to change the server's file name
- suggestion to another one, but in most cases it isn't worth the
- time to set it up.</p>
- <p>This action will probably be removed in the future, use
- server-header filters instead.</p>
+ <p>In most browsers that understand this header, it makes it impossible to <span class=
+ "emphasis"><i class="EMPHASIS">just view</i></span> the document, without downloading it first, even if
+ it's just a simple text file or an image.</p>
+ <p>Removing the <span class="QUOTE">"Content-Disposition:"</span> header helps to prevent this annoyance,
+ but some browsers additionally check the <span class="QUOTE">"Content-Type:"</span> header, before they
+ decide if they can display a document without saving it first. In these cases, you have to change this
+ header as well, before the browser stops displaying download menus.</p>
+ <p>It is also possible to change the server's file name suggestion to another one, but in most cases it
+ isn't worth the time to set it up.</p>
+ <p>This action will probably be removed in the future, use server-header filters instead.</p>
</dd>
<dt>Example usage:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Disarm the download link in Sourceforge's patch tracker
+ <pre class="SCREEN"># Disarm the download link in Sourceforge's patch tracker
{ -filter \
+content-type-overwrite{text/plain}\
+hide-content-disposition{block} }
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="HIDE-IF-MODIFIED-SINCE" id=
- "HIDE-IF-MODIFIED-SINCE">8.5.23. hide-if-modified-since</a></h4>
+ <h4 class="SECT3"><a name="HIDE-IF-MODIFIED-SINCE" id="HIDE-IF-MODIFIED-SINCE">8.5.23.
+ hide-if-modified-since</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Prevent yet another way to track the user's steps between
- sessions.</p>
+ <p>Prevent yet another way to track the user's steps between sessions.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes the <span class="QUOTE">"If-Modified-Since:"</span>
- HTTP client header or modifies its value.</p>
+ <p>Deletes the <span class="QUOTE">"If-Modified-Since:"</span> HTTP client header or modifies its
+ value.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>Keyword: <span class="QUOTE">"block"</span>, or a user
- defined value that specifies a range of hours.</p>
+ <p>Keyword: <span class="QUOTE">"block"</span>, or a user defined value that specifies a range of
+ hours.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Removing this header is useful for filter testing, where you
- want to force a real reload instead of getting status code
- <span class="QUOTE">"304"</span>, which would cause the browser
- to use a cached copy of the page.</p>
- <p>Instead of removing the header, <tt class=
- "LITERAL">hide-if-modified-since</tt> can also add or subtract
- a random amount of time to/from the header's value. You specify
- a range of minutes where the random factor should be chosen
- from and <span class="APPLICATION">Privoxy</span> does the
- rest. A negative value means subtracting, a positive value
- adding.</p>
- <p>Randomizing the value of the <span class=
- "QUOTE">"If-Modified-Since:"</span> makes it less likely that
- the server can use the time as a cookie replacement, but you
- will run into caching problems if the random range is too
- high.</p>
- <p>It is a good idea to only use a small negative value and let
- <tt class="LITERAL"><a href=
- "actions-file.html#OVERWRITE-LAST-MODIFIED">overwrite-last-modified</a></tt>
- handle the greater changes.</p>
- <p>It is also recommended to use this action together with
- <tt class="LITERAL"><a href=
- "actions-file.html#CRUNCH-IF-NONE-MATCH">crunch-if-none-match</a></tt>,
- otherwise it's more or less pointless.</p>
+ <p>Removing this header is useful for filter testing, where you want to force a real reload instead of
+ getting status code <span class="QUOTE">"304"</span>, which would cause the browser to use a cached copy
+ of the page.</p>
+ <p>Instead of removing the header, <tt class="LITERAL">hide-if-modified-since</tt> can also add or
+ subtract a random amount of time to/from the header's value. You specify a range of minutes where the
+ random factor should be chosen from and <span class="APPLICATION">Privoxy</span> does the rest. A
+ negative value means subtracting, a positive value adding.</p>
+ <p>Randomizing the value of the <span class="QUOTE">"If-Modified-Since:"</span> makes it less likely that
+ the server can use the time as a cookie replacement, but you will run into caching problems if the random
+ range is too high.</p>
+ <p>It is a good idea to only use a small negative value and let <tt class="LITERAL"><a href=
+ "actions-file.html#OVERWRITE-LAST-MODIFIED">overwrite-last-modified</a></tt> handle the greater
+ changes.</p>
+ <p>It is also recommended to use this action together with <tt class="LITERAL"><a href=
+ "actions-file.html#CRUNCH-IF-NONE-MATCH">crunch-if-none-match</a></tt>, otherwise it's more or less
+ pointless.</p>
</dd>
<dt>Example usage (section):</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Let the browser revalidate but make tracking based on the time less likely.
+ <pre class="SCREEN"># Let the browser revalidate but make tracking based on the time less likely.
{+hide-if-modified-since{-60} \
+overwrite-last-modified{randomize} \
+crunch-if-none-match}
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="HIDE-FROM-HEADER" id=
- "HIDE-FROM-HEADER">8.5.24. hide-from-header</a></h4>
+ <h4 class="SECT3"><a name="HIDE-FROM-HEADER" id="HIDE-FROM-HEADER">8.5.24. hide-from-header</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Keep your (old and ill) browser from telling web servers
- your email address</p>
+ <p>Keep your (old and ill) browser from telling web servers your email address</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes any existing <span class="QUOTE">"From:"</span> HTTP
- header, or replaces it with the specified string.</p>
+ <p>Deletes any existing <span class="QUOTE">"From:"</span> HTTP header, or replaces it with the specified
+ string.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>Keyword: <span class="QUOTE">"block"</span>, or any user
- defined value.</p>
+ <p>Keyword: <span class="QUOTE">"block"</span>, or any user defined value.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>The keyword <span class="QUOTE">"block"</span> will
- completely remove the header (not to be confused with the
- <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> action).</p>
- <p>Alternately, you can specify any value you prefer to be sent
- to the web server. If you do, it is a matter of fairness not to
- use any address that is actually used by a real person.</p>
- <p>This action is rarely needed, as modern web browsers don't
- send <span class="QUOTE">"From:"</span> headers anymore.</p>
+ <p>The keyword <span class="QUOTE">"block"</span> will completely remove the header (not to be confused
+ with the <tt class="LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> action).</p>
+ <p>Alternately, you can specify any value you prefer to be sent to the web server. If you do, it is a
+ matter of fairness not to use any address that is actually used by a real person.</p>
+ <p>This action is rarely needed, as modern web browsers don't send <span class="QUOTE">"From:"</span>
+ headers anymore.</p>
</dd>
<dt>Example usage:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +hide-from-header{spam-me-senseless@sittingduck.example.com}</pre>
+ <pre class="SCREEN">+hide-from-header{spam-me-senseless@sittingduck.example.com}</pre>
</td>
</tr>
</table>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="HIDE-REFERRER" id="HIDE-REFERRER">8.5.25.
- hide-referrer</a></h4><a name="HIDE-REFERER" id="HIDE-REFERER"></a>
+ <h4 class="SECT3"><a name="HIDE-REFERRER" id="HIDE-REFERRER">8.5.25. hide-referrer</a></h4><a name=
+ "HIDE-REFERER" id="HIDE-REFERER"></a>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Conceal which link you followed to get to a particular
- site</p>
+ <p>Conceal which link you followed to get to a particular site</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes the <span class="QUOTE">"Referer:"</span> (sic) HTTP
- header from the client request, or replaces it with a forged
- one.</p>
+ <p>Deletes the <span class="QUOTE">"Referer:"</span> (sic) HTTP header from the client request, or
+ replaces it with a forged one.</p>
</dd>
<dt>Type:</dt>
<dd>
<dd>
<ul>
<li>
- <p><span class="QUOTE">"conditional-block"</span> to delete
- the header completely if the host has changed.</p>
+ <p><span class="QUOTE">"conditional-block"</span> to delete the header completely if the host has
+ changed.</p>
</li>
<li>
- <p><span class="QUOTE">"conditional-forge"</span> to forge
- the header if the host has changed.</p>
+ <p><span class="QUOTE">"conditional-forge"</span> to forge the header if the host has changed.</p>
</li>
<li>
- <p><span class="QUOTE">"block"</span> to delete the header
- unconditionally.</p>
+ <p><span class="QUOTE">"block"</span> to delete the header unconditionally.</p>
</li>
<li>
- <p><span class="QUOTE">"forge"</span> to pretend to be
- coming from the homepage of the server we are talking
- to.</p>
+ <p><span class="QUOTE">"forge"</span> to pretend to be coming from the homepage of the server we are
+ talking to.</p>
</li>
<li>
<p>Any other string to set a user defined referrer.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p><tt class="LITERAL">conditional-block</tt> is the only
- parameter, that isn't easily detected in the server's log file.
- If it blocks the referrer, the request will look like the
- visitor used a bookmark or typed in the address directly.</p>
- <p>Leaving the referrer unmodified for requests on the same
- host allows the server owner to see the visitor's <span class=
- "QUOTE">"click path"</span>, but in most cases she could also
- get that information by comparing other parts of the log file:
- for example the User-Agent if it isn't a very common one, or
- the user's IP address if it doesn't change between different
- requests.</p>
- <p>Always blocking the referrer, or using a custom one, can
- lead to failures on servers that check the referrer before they
- answer any requests, in an attempt to prevent their content
- from being embedded or linked to elsewhere.</p>
- <p>Both <tt class="LITERAL">conditional-block</tt> and
- <tt class="LITERAL">forge</tt> will work with referrer checks,
- as long as content and valid referring page are on the same
- host. Most of the time that's the case.</p>
- <p><tt class="LITERAL">hide-referer</tt> is an alternate
- spelling of <tt class="LITERAL">hide-referrer</tt> and the two
- can be can be freely substituted with each other. (<span class=
- "QUOTE">"referrer"</span> is the correct English spelling,
- however the HTTP specification has a bug - it requires it to be
- spelled as <span class="QUOTE">"referer"</span>.)</p>
+ <p><tt class="LITERAL">conditional-block</tt> is the only parameter, that isn't easily detected in the
+ server's log file. If it blocks the referrer, the request will look like the visitor used a bookmark or
+ typed in the address directly.</p>
+ <p>Leaving the referrer unmodified for requests on the same host allows the server owner to see the
+ visitor's <span class="QUOTE">"click path"</span>, but in most cases she could also get that information
+ by comparing other parts of the log file: for example the User-Agent if it isn't a very common one, or
+ the user's IP address if it doesn't change between different requests.</p>
+ <p>Always blocking the referrer, or using a custom one, can lead to failures on servers that check the
+ referrer before they answer any requests, in an attempt to prevent their content from being embedded or
+ linked to elsewhere.</p>
+ <p>Both <tt class="LITERAL">conditional-block</tt> and <tt class="LITERAL">forge</tt> will work with
+ referrer checks, as long as content and valid referring page are on the same host. Most of the time
+ that's the case.</p>
+ <p><tt class="LITERAL">hide-referer</tt> is an alternate spelling of <tt class=
+ "LITERAL">hide-referrer</tt> and the two can be can be freely substituted with each other. (<span class=
+ "QUOTE">"referrer"</span> is the correct English spelling, however the HTTP specification has a bug - it
+ requires it to be spelled as <span class="QUOTE">"referer"</span>.)</p>
</dd>
<dt>Example usage:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +hide-referrer{http://www.yahoo.com/}</pre>
+ <pre class="SCREEN">+hide-referrer{http://www.yahoo.com/}</pre>
</td>
</tr>
</table>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="HIDE-USER-AGENT" id=
- "HIDE-USER-AGENT">8.5.26. hide-user-agent</a></h4>
+ <h4 class="SECT3"><a name="HIDE-USER-AGENT" id="HIDE-USER-AGENT">8.5.26. hide-user-agent</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Try to conceal your type of browser and client operating
- system</p>
+ <p>Try to conceal your type of browser and client operating system</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Replaces the value of the <span class=
- "QUOTE">"User-Agent:"</span> HTTP header in client requests
- with the specified value.</p>
+ <p>Replaces the value of the <span class="QUOTE">"User-Agent:"</span> HTTP header in client requests with
+ the specified value.</p>
</dd>
<dt>Type:</dt>
<dd>
</tr>
<tr>
<td align="left">
- <p>This can lead to problems on web sites that depend
- on looking at this header in order to customize their
- content for different browsers (which, by the way, is
- <span class="emphasis"><i class=
- "EMPHASIS">NOT</i></span> the right thing to do: good
- web sites work browser-independently).</p>
+ <p>This can lead to problems on web sites that depend on looking at this header in order to
+ customize their content for different browsers (which, by the way, is <span class=
+ "emphasis"><i class="EMPHASIS">NOT</i></span> the right thing to do: good web sites work
+ browser-independently).</p>
</td>
</tr>
</table>
</div>
- <p>Using this action in multi-user setups or wherever different
- types of browsers will access the same <span class=
- "APPLICATION">Privoxy</span> is <span class=
- "emphasis"><i class="EMPHASIS">not recommended</i></span>. In
- single-user, single-browser setups, you might use it to delete
- your OS version information from the headers, because it is an
- invitation to exploit known bugs for your OS. It is also
- occasionally useful to forge this in order to access sites that
- won't let you in otherwise (though there may be a good reason
- in some cases).</p>
- <p>More information on known user-agent strings can be found at
- <a href="http://www.user-agents.org/" target=
- "_top">http://www.user-agents.org/</a> and <a href=
- "http://en.wikipedia.org/wiki/User_agent" target=
- "_top">http://en.wikipedia.org/wiki/User_agent</a>.</p>
+ <p>Using this action in multi-user setups or wherever different types of browsers will access the same
+ <span class="APPLICATION">Privoxy</span> is <span class="emphasis"><i class="EMPHASIS">not
+ recommended</i></span>. In single-user, single-browser setups, you might use it to delete your OS version
+ information from the headers, because it is an invitation to exploit known bugs for your OS. It is also
+ occasionally useful to forge this in order to access sites that won't let you in otherwise (though there
+ may be a good reason in some cases).</p>
+ <p>More information on known user-agent strings can be found at <a href="http://www.user-agents.org/"
+ target="_top">http://www.user-agents.org/</a> and <a href="http://en.wikipedia.org/wiki/User_agent"
+ target="_top">http://en.wikipedia.org/wiki/User_agent</a>.</p>
</dd>
<dt>Example usage:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}</pre>
+ <pre class="SCREEN">+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}</pre>
</td>
</tr>
</table>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="LIMIT-CONNECT" id="LIMIT-CONNECT">8.5.27.
- limit-connect</a></h4>
+ <h4 class="SECT3"><a name="LIMIT-CONNECT" id="LIMIT-CONNECT">8.5.27. limit-connect</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Prevent abuse of <span class="APPLICATION">Privoxy</span> as
- a TCP proxy relay or disable SSL for untrusted sites</p>
+ <p>Prevent abuse of <span class="APPLICATION">Privoxy</span> as a TCP proxy relay or disable SSL for
+ untrusted sites</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Specifies to which ports HTTP CONNECT requests are
- allowable.</p>
+ <p>Specifies to which ports HTTP CONNECT requests are allowable.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>A comma-separated list of ports or port ranges (the latter
- using dashes, with the minimum defaulting to 0 and the maximum
- to 65K).</p>
+ <p>A comma-separated list of ports or port ranges (the latter using dashes, with the minimum defaulting
+ to 0 and the maximum to 65K).</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>By default, i.e. if no <tt class=
- "LITERAL">limit-connect</tt> action applies, <span class=
- "APPLICATION">Privoxy</span> allows HTTP CONNECT requests to
- all ports. Use <tt class="LITERAL">limit-connect</tt> 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 (<span class="QUOTE">"https://"</span> URLs) through
- proxies. It works very simply: the proxy connects to the server
- on the specified port, and then short-circuits its connections
- to the client and to the remote server. This means
- CONNECT-enabled proxies can be used as TCP relays very
- easily.</p>
- <p><span class="APPLICATION">Privoxy</span> relays HTTPS
- traffic without seeing the decoded content. Websites can
- leverage this limitation to circumvent <span class=
- "APPLICATION">Privoxy</span>'s filters. By specifying an
- invalid port range you can disable HTTPS entirely.</p>
+ <p>By default, i.e. if no <tt class="LITERAL">limit-connect</tt> action applies, <span class=
+ "APPLICATION">Privoxy</span> allows HTTP CONNECT requests to all ports. Use <tt class=
+ "LITERAL">limit-connect</tt> 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 (<span class=
+ "QUOTE">"https://"</span> URLs) through proxies. It works very simply: the proxy connects to the server
+ on the specified port, and then short-circuits its connections to the client and to the remote server.
+ This means CONNECT-enabled proxies can be used as TCP relays very easily.</p>
+ <p><span class="APPLICATION">Privoxy</span> relays HTTPS traffic without seeing the decoded content.
+ Websites can leverage this limitation to circumvent <span class="APPLICATION">Privoxy</span>'s filters.
+ By specifying an invalid port range you can disable HTTPS entirely.</p>
</dd>
<dt>Example usages:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +limit-connect{443} # Port 443 is OK.
+ <pre class="SCREEN">+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
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="LIMIT-COOKIE-LIFETIME" id=
- "LIMIT-COOKIE-LIFETIME">8.5.28. limit-cookie-lifetime</a></h4>
+ <h4 class="SECT3"><a name="LIMIT-COOKIE-LIFETIME" id="LIMIT-COOKIE-LIFETIME">8.5.28.
+ limit-cookie-lifetime</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Limit the lifetime of HTTP cookies to a couple of minutes or
- hours.</p>
+ <p>Limit the lifetime of HTTP cookies to a couple of minutes or hours.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Overwrites the expires field in Set-Cookie server headers if
- it's above the specified limit.</p>
+ <p>Overwrites the expires field in Set-Cookie server headers if it's above the specified limit.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This action reduces the lifetime of HTTP cookies coming from
- the server to the specified number of minutes, starting from
- the time the cookie passes Privoxy.</p>
- <p>Cookies with a lifetime below the limit are not modified.
- The lifetime of session cookies is set to the specified
- limit.</p>
+ <p>This action reduces the lifetime of HTTP cookies coming from the server to the specified number of
+ minutes, starting from the time the cookie passes Privoxy.</p>
+ <p>Cookies with a lifetime below the limit are not modified. The lifetime of session cookies is set to
+ the specified limit.</p>
<p>The effect of this action depends on the server.</p>
- <p>In case of servers which refresh their cookies with each
- response (or at least frequently), the lifetime limit set by
- this action is updated as well. Thus, a session associated with
- the cookie continues to work with this action enabled, as long
- as a new request is made before the last limit set is
+ <p>In case of servers which refresh their cookies with each response (or at least frequently), the
+ lifetime limit set by this action is updated as well. Thus, a session associated with the cookie
+ continues to work with this action enabled, as long as a new request is made before the last limit set is
reached.</p>
- <p>However, some servers send their cookies once, with a
- lifetime of several years (the year 2037 is a popular choice),
- and do not refresh them until a certain event in the future,
- for example the user logging out. In this case this action may
- limit the absolute lifetime of the session, even if requests
+ <p>However, some servers send their cookies once, with a lifetime of several years (the year 2037 is a
+ popular choice), and do not refresh them until a certain event in the future, for example the user
+ logging out. In this case this action may limit the absolute lifetime of the session, even if requests
are made frequently.</p>
- <p>If the parameter is <span class="QUOTE">"0"</span>, this
- action behaves like <tt class="LITERAL"><a href=
- "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt>.</p>
+ <p>If the parameter is <span class="QUOTE">"0"</span>, this action behaves like <tt class=
+ "LITERAL"><a href="actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt>.</p>
</dd>
<dt>Example usages:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="PREVENT-COMPRESSION" id=
- "PREVENT-COMPRESSION">8.5.29. prevent-compression</a></h4>
+ <h4 class="SECT3"><a name="PREVENT-COMPRESSION" id="PREVENT-COMPRESSION">8.5.29. prevent-compression</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Ensure that servers send the content uncompressed, so it can
- be passed through <tt class="LITERAL"><a href=
- "actions-file.html#FILTER">filter</a></tt>s.</p>
+ <p>Ensure that servers send the content uncompressed, so it can be passed through <tt class=
+ "LITERAL"><a href="actions-file.html#FILTER">filter</a></tt>s.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Removes the Accept-Encoding header which can be used to ask
- for compressed transfer.</p>
+ <p>Removes the Accept-Encoding header which can be used to ask for compressed transfer.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>More and more websites send their content compressed by
- default, which is generally a good idea and saves bandwidth.
- But the <tt class="LITERAL"><a href=
- "actions-file.html#FILTER">filter</a></tt> and <tt class=
- "LITERAL"><a href=
- "actions-file.html#DEANIMATE-GIFS">deanimate-gifs</a></tt>
- actions need access to the uncompressed data.</p>
- <p>When compiled with zlib support (available since
- <span class="APPLICATION">Privoxy</span> 3.0.7), content that
- should be filtered is decompressed on-the-fly and you don't
- have to worry about this action. If you are using an older
- <span class="APPLICATION">Privoxy</span> version, or one that
- hasn't been compiled with zlib support, this action can be used
- to convince the server to send the content uncompressed.</p>
- <p>Most text-based instances compress very well, the size is
- seldom decreased by less than 50%, for markup-heavy instances
- like news feeds saving more than 90% of the original size isn't
- unusual.</p>
- <p>Not using compression will therefore slow down the transfer,
- and you should only enable this action if you really need it.
- As of <span class="APPLICATION">Privoxy</span> 3.0.7 it's
- disabled in all predefined action settings.</p>
- <p>Note that some (rare) ill-configured sites don't handle
- requests for uncompressed documents correctly. Broken PHP
- applications tend to send an empty document body, some IIS
- versions only send the beginning of the content. If you enable
- <tt class="LITERAL">prevent-compression</tt> per default, you
- might want to add exceptions for those sites. See the example
- for how to do that.</p>
+ <p>More and more websites send their content compressed by default, which is generally a good idea and
+ saves bandwidth. But the <tt class="LITERAL"><a href="actions-file.html#FILTER">filter</a></tt> and
+ <tt class="LITERAL"><a href="actions-file.html#DEANIMATE-GIFS">deanimate-gifs</a></tt> actions need
+ access to the uncompressed data.</p>
+ <p>When compiled with zlib support (available since <span class="APPLICATION">Privoxy</span> 3.0.7),
+ content that should be filtered is decompressed on-the-fly and you don't have to worry about this action.
+ If you are using an older <span class="APPLICATION">Privoxy</span> version, or one that hasn't been
+ compiled with zlib support, this action can be used to convince the server to send the content
+ uncompressed.</p>
+ <p>Most text-based instances compress very well, the size is seldom decreased by less than 50%, for
+ markup-heavy instances like news feeds saving more than 90% of the original size isn't unusual.</p>
+ <p>Not using compression will therefore slow down the transfer, and you should only enable this action if
+ you really need it. As of <span class="APPLICATION">Privoxy</span> 3.0.7 it's disabled in all predefined
+ action settings.</p>
+ <p>Note that some (rare) ill-configured sites don't handle requests for uncompressed documents correctly.
+ Broken PHP applications tend to send an empty document body, some IIS versions only send the beginning of
+ the content. If you enable <tt class="LITERAL">prevent-compression</tt> per default, you might want to
+ add exceptions for those sites. See the example for how to do that.</p>
</dd>
<dt>Example usage (sections):</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Selectively turn off compression, and enable a filter
+ <pre class="SCREEN"># Selectively turn off compression, and enable a filter
#
{ +filter{tiny-textforms} +prevent-compression }
# Match only these sites
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="OVERWRITE-LAST-MODIFIED" id=
- "OVERWRITE-LAST-MODIFIED">8.5.30. overwrite-last-modified</a></h4>
+ <h4 class="SECT3"><a name="OVERWRITE-LAST-MODIFIED" id="OVERWRITE-LAST-MODIFIED">8.5.30.
+ overwrite-last-modified</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Prevent yet another way to track the user's steps between
- sessions.</p>
+ <p>Prevent yet another way to track the user's steps between sessions.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes the <span class="QUOTE">"Last-Modified:"</span> HTTP
- server header or modifies its value.</p>
+ <p>Deletes the <span class="QUOTE">"Last-Modified:"</span> HTTP server header or modifies its value.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>One of the keywords: <span class="QUOTE">"block"</span>,
- <span class="QUOTE">"reset-to-request-time"</span> and
- <span class="QUOTE">"randomize"</span></p>
+ <p>One of the keywords: <span class="QUOTE">"block"</span>, <span class=
+ "QUOTE">"reset-to-request-time"</span> and <span class="QUOTE">"randomize"</span></p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Removing the <span class="QUOTE">"Last-Modified:"</span>
- header is useful for filter testing, where you want to force a
- real reload instead of getting status code <span class=
- "QUOTE">"304"</span>, which would cause the browser to reuse
- the old version of the page.</p>
- <p>The <span class="QUOTE">"randomize"</span> option overwrites
- the value of the <span class="QUOTE">"Last-Modified:"</span>
- header with a randomly chosen time between the original value
- and the current time. In theory the server could send each
- document with a different <span class=
- "QUOTE">"Last-Modified:"</span> header to track visits without
- using cookies. <span class="QUOTE">"Randomize"</span> makes it
- impossible and the browser can still revalidate cached
- documents.</p>
- <p><span class="QUOTE">"reset-to-request-time"</span>
- overwrites the value of the <span class=
- "QUOTE">"Last-Modified:"</span> header with the current time.
- You could use this option together with <tt class=
- "LITERAL"><a href=
- "actions-file.html#HIDE-IF-MODIFIED-SINCE">hide-if-modified-since</a></tt>
- to further customize your random range.</p>
- <p>The preferred parameter here is <span class=
- "QUOTE">"randomize"</span>. It is safe to use, as long as the
- time settings are more or less correct. If the server sets the
- <span class="QUOTE">"Last-Modified:"</span> header to the time
- of the request, the random range becomes zero and the value
- stays the same. Therefore you should later randomize it a
- second time with <tt class="LITERAL"><a href=
- "actions-file.html#HIDE-IF-MODIFIED-SINCE">hided-if-modified-since</a></tt>,
- just to be sure.</p>
- <p>It is also recommended to use this action together with
- <tt class="LITERAL"><a href=
+ <p>Removing the <span class="QUOTE">"Last-Modified:"</span> header is useful for filter testing, where
+ you want to force a real reload instead of getting status code <span class="QUOTE">"304"</span>, which
+ would cause the browser to reuse the old version of the page.</p>
+ <p>The <span class="QUOTE">"randomize"</span> option overwrites the value of the <span class=
+ "QUOTE">"Last-Modified:"</span> header with a randomly chosen time between the original value and the
+ current time. In theory the server could send each document with a different <span class=
+ "QUOTE">"Last-Modified:"</span> header to track visits without using cookies. <span class=
+ "QUOTE">"Randomize"</span> makes it impossible and the browser can still revalidate cached documents.</p>
+ <p><span class="QUOTE">"reset-to-request-time"</span> overwrites the value of the <span class=
+ "QUOTE">"Last-Modified:"</span> header with the current time. You could use this option together with
+ <tt class="LITERAL"><a href="actions-file.html#HIDE-IF-MODIFIED-SINCE">hide-if-modified-since</a></tt> to
+ further customize your random range.</p>
+ <p>The preferred parameter here is <span class="QUOTE">"randomize"</span>. It is safe to use, as long as
+ the time settings are more or less correct. If the server sets the <span class=
+ "QUOTE">"Last-Modified:"</span> header to the time of the request, the random range becomes zero and the
+ value stays the same. Therefore you should later randomize it a second time with <tt class=
+ "LITERAL"><a href="actions-file.html#HIDE-IF-MODIFIED-SINCE">hided-if-modified-since</a></tt>, just to be
+ sure.</p>
+ <p>It is also recommended to use this action together with <tt class="LITERAL"><a href=
"actions-file.html#CRUNCH-IF-NONE-MATCH">crunch-if-none-match</a></tt>.</p>
</dd>
<dt>Example usage:</dt>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Let the browser revalidate without being tracked across sessions
+ <pre class="SCREEN"># Let the browser revalidate without being tracked across sessions
{ +hide-if-modified-since{-60} \
+overwrite-last-modified{randomize} \
+crunch-if-none-match}
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="REDIRECT" id="REDIRECT">8.5.31.
- redirect</a></h4>
+ <h4 class="SECT3"><a name="REDIRECT" id="REDIRECT">8.5.31. redirect</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Convinces the browser that the requested document has been
- moved to another location and the browser should get it from
- there.</p>
+ <p>Convinces the browser that the requested document has been moved to another location and the browser
+ should get it from there.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Requests to which this action applies are answered with a
- HTTP redirect to URLs of your choosing. The new URL is either
- provided as parameter, or derived by applying a single pcrs
- command to the original URL.</p>
- <p>The syntax for pcrs commands is documented in the <a href=
- "filter-file.html">filter file</a> section.</p>
- <p>Requests can't be blocked and redirected at the same time,
- applying this action together with <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> is a configuration
- error. Currently the request is blocked and an error message
- logged, the behavior may change in the future and result in
+ <p>Requests to which this action applies are answered with a HTTP redirect to URLs of your choosing. The
+ new URL is either provided as parameter, or derived by applying a single pcrs command to the original
+ URL.</p>
+ <p>The syntax for pcrs commands is documented in the <a href="filter-file.html">filter file</a>
+ section.</p>
+ <p>Requests can't be blocked and redirected at the same time, applying this action together with
+ <tt class="LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> is a configuration error. Currently
+ the request is blocked and an error message logged, the behavior may change in the future and result in
Privoxy rejecting the action file.</p>
- <p>This action can be combined with <tt class=
- "LITERAL"><a href="actions-file.html#FAST-REDIRECTS">fast-redirects{check-decoded-url}</a></tt>
- to redirect to a decoded version of a rewritten URL.</p>
- <p>Use this action carefully, make sure not to create
- redirection loops and be aware that using your own redirects
- might make it possible to fingerprint your requests.</p>
- <p>In case of problems with your redirects, or simply to watch
- them working, enable <a href="config.html#DEBUG">debug
- 128</a>.</p>
+ <p>This action can be combined with <tt class="LITERAL"><a href=
+ "actions-file.html#FAST-REDIRECTS">fast-redirects{check-decoded-url}</a></tt> to redirect to a decoded
+ version of a rewritten URL.</p>
+ <p>Use this action carefully, make sure not to create redirection loops and be aware that using your own
+ redirects might make it possible to fingerprint your requests.</p>
+ <p>In case of problems with your redirects, or simply to watch them working, enable <a href=
+ "config.html#DEBUG">debug 128</a>.</p>
</dd>
<dt>Example usages:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Replace example.com's style sheet with another one
+ <pre class="SCREEN"># Replace example.com's style sheet with another one
{ +redirect{http://localhost/css-replacements/example.com.css} }
example.com/stylesheet\.css
# Create a short, easy to remember nickname for a favorite site
-# (relies on the browser to accept and forward invalid URLs to <span class=
-"APPLICATION">Privoxy</span>)
+# (relies on the browser to accept and forward invalid URLs to <span class="APPLICATION">Privoxy</span>)
{ +redirect{https://www.privoxy.org/user-manual/actions-file.html} }
a
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="SERVER-HEADER-FILTER" id=
- "SERVER-HEADER-FILTER">8.5.32. server-header-filter</a></h4>
+ <h4 class="SECT3"><a name="SERVER-HEADER-FILTER" id="SERVER-HEADER-FILTER">8.5.32.
+ server-header-filter</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
</dd>
<dt>Effect:</dt>
<dd>
- <p>All server headers to which this action applies are filtered
- on-the-fly through the specified regular expression based
- substitutions.</p>
+ <p>All server headers to which this action applies are filtered on-the-fly through the specified regular
+ expression based substitutions.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>The name of a server-header filter, as defined in one of the
- <a href="filter-file.html">filter files</a>.</p>
+ <p>The name of a server-header filter, as defined in one of the <a href="filter-file.html">filter
+ files</a>.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Server-header filters are applied to each header on its own,
- not to all at once. This makes it easier to diagnose problems,
- but on the downside you can't write filters that only change
- header x if header y's value is z. You can do that by using
- tags though.</p>
- <p>Server-header filters are executed after the other header
- actions have finished and use their output as input.</p>
- <p>Please refer to the <a href="filter-file.html">filter file
- chapter</a> to learn which server-header filters are available
- by default, and how to create your own.</p>
+ <p>Server-header filters are applied to each header on its own, not to all at once. This makes it easier
+ to diagnose problems, but on the downside you can't write filters that only change header x if header y's
+ value is z. You can do that by using tags though.</p>
+ <p>Server-header filters are executed after the other header actions have finished and use their output
+ as input.</p>
+ <p>Please refer to the <a href="filter-file.html">filter file chapter</a> to learn which server-header
+ filters are available by default, and how to create your own.</p>
</dd>
<dt>Example usage (section):</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="SERVER-HEADER-TAGGER" id=
- "SERVER-HEADER-TAGGER">8.5.33. server-header-tagger</a></h4>
+ <h4 class="SECT3"><a name="SERVER-HEADER-TAGGER" id="SERVER-HEADER-TAGGER">8.5.33.
+ server-header-tagger</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Enable or disable filters based on the Content-Type
- header.</p>
+ <p>Enable or disable filters based on the Content-Type header.</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Server headers to which this action applies are filtered
- on-the-fly through the specified regular expression based
- substitutions, the result is used as tag.</p>
+ <p>Server headers to which this action applies are filtered on-the-fly through the specified regular
+ expression based substitutions, the result is used as tag.</p>
</dd>
<dt>Type:</dt>
<dd>
</dd>
<dt>Parameter:</dt>
<dd>
- <p>The name of a server-header tagger, as defined in one of the
- <a href="filter-file.html">filter files</a>.</p>
+ <p>The name of a server-header tagger, as defined in one of the <a href="filter-file.html">filter
+ files</a>.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Server-header taggers are applied to each header on its own,
- and as the header isn't modified, each tagger <span class=
- "QUOTE">"sees"</span> the original.</p>
- <p>Server-header taggers are executed before all other header
- actions that modify server headers. Their tags can be used to
- control all of the other server-header actions, the content
- filters and the crunch actions (<a href=
- "actions-file.html#REDIRECT">redirect</a> and <a href=
+ <p>Server-header taggers are applied to each header on its own, and as the header isn't modified, each
+ tagger <span class="QUOTE">"sees"</span> the original.</p>
+ <p>Server-header taggers are executed before all other header actions that modify server headers. Their
+ tags can be used to control all of the other server-header actions, the content filters and the crunch
+ actions (<a href="actions-file.html#REDIRECT">redirect</a> and <a href=
"actions-file.html#BLOCK">block</a>).</p>
- <p>Obviously crunching based on tags created by server-header
- taggers doesn't prevent the request from showing up in the
- server's log file.</p>
+ <p>Obviously crunching based on tags created by server-header taggers doesn't prevent the request from
+ showing up in the server's log file.</p>
</dd>
<dt>Example usage (section):</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Tag every request with the content type declared by the server
+ <pre class="SCREEN"># Tag every request with the content type declared by the server
{+server-header-tagger{content-type}}
/
# filter that only applies to images.
#
# Note that the filter is not available by default, it's just a
-# <tt class="LITERAL"><a href=
-"filter-file.html#EXTERNAL-FILTER-SYNTAX">silly example</a></tt>.
+# <tt class="LITERAL"><a href="filter-file.html#EXTERNAL-FILTER-SYNTAX">silly example</a></tt>.
{+external-filter{rotate-image} +force-text-mode}
TAG:^image/
</pre>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="SESSION-COOKIES-ONLY" id=
- "SESSION-COOKIES-ONLY">8.5.34. session-cookies-only</a></h4>
+ <h4 class="SECT3"><a name="SESSION-COOKIES-ONLY" id="SESSION-COOKIES-ONLY">8.5.34.
+ session-cookies-only</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
<dd>
- <p>Allow only temporary <span class="QUOTE">"session"</span>
- cookies (for the current browser session <span class=
- "emphasis"><i class="EMPHASIS">only</i></span>).</p>
+ <p>Allow only temporary <span class="QUOTE">"session"</span> cookies (for the current browser session
+ <span class="emphasis"><i class="EMPHASIS">only</i></span>).</p>
</dd>
<dt>Effect:</dt>
<dd>
- <p>Deletes the <span class="QUOTE">"expires"</span> field from
- <span class="QUOTE">"Set-Cookie:"</span> server headers. Most
- browsers will not store such cookies permanently and forget
- them in between sessions.</p>
+ <p>Deletes the <span class="QUOTE">"expires"</span> field from <span class="QUOTE">"Set-Cookie:"</span>
+ server headers. Most browsers will not store such cookies permanently and forget them in between
+ sessions.</p>
</dd>
<dt>Type:</dt>
<dd>
<dt>Notes:</dt>
<dd>
<p>This is less strict than <tt class="LITERAL"><a href=
- "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt>
- / <tt class="LITERAL"><a href=
- "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>
- and allows you to browse websites that insist or rely on
- setting cookies, without compromising your privacy too
+ "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt> / <tt class=
+ "LITERAL"><a href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt> and allows
+ you to browse websites that insist or rely on setting cookies, without compromising your privacy too
badly.</p>
- <p>Most browsers will not permanently store cookies that have
- been processed by <tt class="LITERAL">session-cookies-only</tt>
- and will forget about them between sessions. This makes
- profiling cookies useless, but won't break sites which require
- cookies so that you can log in for transactions. This is
- generally turned on for all sites, and is the recommended
- setting.</p>
- <p>It makes <span class="emphasis"><i class="EMPHASIS">no sense
- at all</i></span> to use <tt class=
- "LITERAL">session-cookies-only</tt> together with <tt class=
- "LITERAL"><a href=
- "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt>
- or <tt class="LITERAL"><a href=
- "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>.
- If you do, cookies will be plainly killed.</p>
- <p>Note that it is up to the browser how it handles such
- cookies without an <span class="QUOTE">"expires"</span> field.
- If you use an exotic browser, you might want to try it out to
- be sure.</p>
- <p>This setting also has no effect on cookies that may have
- been stored previously by the browser before starting
- <span class="APPLICATION">Privoxy</span>. These would have to
- be removed manually.</p>
- <p><span class="APPLICATION">Privoxy</span> also uses the
- <a href=
- "actions-file.html#FILTER-CONTENT-COOKIES">content-cookies
- filter</a> to block some types of cookies. Content cookies are
- not effected by <tt class=
- "LITERAL">session-cookies-only</tt>.</p>
+ <p>Most browsers will not permanently store cookies that have been processed by <tt class=
+ "LITERAL">session-cookies-only</tt> and will forget about them between sessions. This makes profiling
+ cookies useless, but won't break sites which require cookies so that you can log in for transactions.
+ This is generally turned on for all sites, and is the recommended setting.</p>
+ <p>It makes <span class="emphasis"><i class="EMPHASIS">no sense at all</i></span> to use <tt class=
+ "LITERAL">session-cookies-only</tt> together with <tt class="LITERAL"><a href=
+ "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt> or <tt class=
+ "LITERAL"><a href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>. If you
+ do, cookies will be plainly killed.</p>
+ <p>Note that it is up to the browser how it handles such cookies without an <span class=
+ "QUOTE">"expires"</span> field. If you use an exotic browser, you might want to try it out to be
+ sure.</p>
+ <p>This setting also has no effect on cookies that may have been stored previously by the browser before
+ starting <span class="APPLICATION">Privoxy</span>. These would have to be removed manually.</p>
+ <p><span class="APPLICATION">Privoxy</span> also uses the <a href=
+ "actions-file.html#FILTER-CONTENT-COOKIES">content-cookies filter</a> to block some types of cookies.
+ Content cookies are not effected by <tt class="LITERAL">session-cookies-only</tt>.</p>
</dd>
<dt>Example usage:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="SET-IMAGE-BLOCKER" id=
- "SET-IMAGE-BLOCKER">8.5.35. set-image-blocker</a></h4>
+ <h4 class="SECT3"><a name="SET-IMAGE-BLOCKER" id="SET-IMAGE-BLOCKER">8.5.35. set-image-blocker</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Typical use:</dt>
</dd>
<dt>Effect:</dt>
<dd>
- <p>This action alone doesn't do anything noticeable. If
- <span class="emphasis"><i class="EMPHASIS">both</i></span>
- <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> <span class=
- "emphasis"><i class="EMPHASIS">and</i></span> <tt class=
- "LITERAL"><a href=
- "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>
- <span class="emphasis"><i class="EMPHASIS">also</i></span>
- apply, i.e. if the request is to be blocked as an image,
- <span class="emphasis"><i class="EMPHASIS">then</i></span> the
- parameter of this action decides what will be sent as a
- replacement.</p>
+ <p>This action alone doesn't do anything noticeable. If <span class="emphasis"><i class=
+ "EMPHASIS">both</i></span> <tt class="LITERAL"><a href="actions-file.html#BLOCK">block</a></tt>
+ <span class="emphasis"><i class="EMPHASIS">and</i></span> <tt class="LITERAL"><a href=
+ "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> <span class="emphasis"><i class=
+ "EMPHASIS">also</i></span> apply, i.e. if the request is to be blocked as an image, <span class=
+ "emphasis"><i class="EMPHASIS">then</i></span> the parameter of this action decides what will be sent as
+ a replacement.</p>
</dd>
<dt>Type:</dt>
<dd>
<dd>
<ul>
<li>
- <p><span class="QUOTE">"pattern"</span> to send a built-in
- checkerboard pattern image. The image is visually decent,
- scales very well, and makes it obvious where banners were
- busted.</p>
+ <p><span class="QUOTE">"pattern"</span> to send a built-in checkerboard pattern image. The image is
+ visually decent, scales very well, and makes it obvious where banners were busted.</p>
</li>
<li>
- <p><span class="QUOTE">"blank"</span> to send a built-in
- transparent image. This makes banners disappear completely,
- but makes it hard to detect where <span class=
- "APPLICATION">Privoxy</span> has blocked images on a given
- page and complicates troubleshooting if <span class=
- "APPLICATION">Privoxy</span> has blocked innocent images,
- like navigation icons.</p>
+ <p><span class="QUOTE">"blank"</span> to send a built-in transparent image. This makes banners
+ disappear completely, but makes it hard to detect where <span class="APPLICATION">Privoxy</span> has
+ blocked images on a given page and complicates troubleshooting if <span class=
+ "APPLICATION">Privoxy</span> has blocked innocent images, like navigation icons.</p>
</li>
<li>
- <p><span class="QUOTE">"<tt class=
- "REPLACEABLE"><i>target-url</i></tt>"</span> to send a
- redirect to <tt class="REPLACEABLE"><i>target-url</i></tt>.
- You can redirect to any image anywhere, even in your local
- filesystem via <span class="QUOTE">"file:///"</span> URL.
- (But note that not all browsers support redirecting to a
- local file system).</p>
- <p>A good application of redirects is to use special
- <span class="APPLICATION">Privoxy</span>-built-in URLs,
- which send the built-in images, as <tt class=
- "REPLACEABLE"><i>target-url</i></tt>. This has the same
- visual effect as specifying <span class=
- "QUOTE">"blank"</span> or <span class=
- "QUOTE">"pattern"</span> in the first place, but enables
- your browser to cache the replacement image, instead of
- requesting it over and over again.</p>
+ <p><span class="QUOTE">"<tt class="REPLACEABLE"><i>target-url</i></tt>"</span> to send a redirect to
+ <tt class="REPLACEABLE"><i>target-url</i></tt>. You can redirect to any image anywhere, even in your
+ local filesystem via <span class="QUOTE">"file:///"</span> URL. (But note that not all browsers
+ support redirecting to a local file system).</p>
+ <p>A good application of redirects is to use special <span class=
+ "APPLICATION">Privoxy</span>-built-in URLs, which send the built-in images, as <tt class=
+ "REPLACEABLE"><i>target-url</i></tt>. This has the same visual effect as specifying <span class=
+ "QUOTE">"blank"</span> or <span class="QUOTE">"pattern"</span> in the first place, but enables your
+ browser to cache the replacement image, instead of requesting it over and over again.</p>
</li>
</ul>
</dd>
<dt>Notes:</dt>
<dd>
<p>The URLs for the built-in images are <span class=
- "QUOTE">"http://config.privoxy.org/send-banner?type=<tt class=
- "REPLACEABLE"><i>type</i></tt>"</span>, where <tt class=
- "REPLACEABLE"><i>type</i></tt> is either <span class=
- "QUOTE">"blank"</span> or <span class=
- "QUOTE">"pattern"</span>.</p>
- <p>There is a third (advanced) type, called <span class=
- "QUOTE">"auto"</span>. It is <span class="emphasis"><i class=
- "EMPHASIS">NOT</i></span> to be used in <tt class=
- "LITERAL">set-image-blocker</tt>, but meant for use from
- <a href="filter-file.html">filters</a>. Auto will select the
- type of image that would have applied to the referring page,
- had it been an image.</p>
+ "QUOTE">"http://config.privoxy.org/send-banner?type=<tt class="REPLACEABLE"><i>type</i></tt>"</span>,
+ where <tt class="REPLACEABLE"><i>type</i></tt> is either <span class="QUOTE">"blank"</span> or
+ <span class="QUOTE">"pattern"</span>.</p>
+ <p>There is a third (advanced) type, called <span class="QUOTE">"auto"</span>. It is <span class=
+ "emphasis"><i class="EMPHASIS">NOT</i></span> to be used in <tt class="LITERAL">set-image-blocker</tt>,
+ but meant for use from <a href="filter-file.html">filters</a>. Auto will select the type of image that
+ would have applied to the referring page, had it been an image.</p>
</dd>
<dt>Example usage:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}</pre>
+ <pre class="SCREEN">+set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}</pre>
</td>
</tr>
</table>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- +set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}</pre>
+ <pre class="SCREEN">+set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}</pre>
</td>
</tr>
</table>
</div>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="SUMMARY" id="SUMMARY">8.5.36.
- Summary</a></h3>
- <p>Note that many of these actions have the potential to cause a page
- to misbehave, possibly even not to display at all. There are many
- ways a site designer may choose to design his site, and what HTTP
- header content, and other criteria, he may depend on. There is no way
- to have hard and fast rules for all sites. See the <a href=
- "appendix.html#ACTIONSANAT">Appendix</a> for a brief example on
- troubleshooting actions.</p>
+ <h3 class="SECT3"><a name="SUMMARY" id="SUMMARY">8.5.36. Summary</a></h3>
+ <p>Note that many of these actions have the potential to cause a page to misbehave, possibly even not to
+ display at all. There are many ways a site designer may choose to design his site, and what HTTP header
+ content, and other criteria, he may depend on. There is no way to have hard and fast rules for all sites. See
+ the <a href="appendix.html#ACTIONSANAT">Appendix</a> for a brief example on troubleshooting actions.</p>
</div>
</div>
<div class="SECT2">
<h2 class="SECT2"><a name="ALIASES" id="ALIASES">8.6. Aliases</a></h2>
- <p>Custom <span class="QUOTE">"actions"</span>, known to <span class=
- "APPLICATION">Privoxy</span> as <span class="QUOTE">"aliases"</span>,
- can be defined by combining other actions. These can in turn be invoked
- just like the built-in actions. Currently, an alias name can contain
- any character except space, tab, <span class="QUOTE">"="</span>,
- <span class="QUOTE">"{"</span> and <span class="QUOTE">"}"</span>, but
- we <span class="emphasis"><i class="EMPHASIS">strongly
- recommend</i></span> that you only use <span class="QUOTE">"a"</span>
- to <span class="QUOTE">"z"</span>, <span class="QUOTE">"0"</span> to
- <span class="QUOTE">"9"</span>, <span class="QUOTE">"+"</span>, and
- <span class="QUOTE">"-"</span>. Alias names are not case sensitive, and
- are not required to start with a <span class="QUOTE">"+"</span> or
- <span class="QUOTE">"-"</span> sign, since they are merely textually
- expanded.</p>
- <p>Aliases can be used throughout the actions file, but they
- <span class="emphasis"><i class="EMPHASIS">must be defined in a special
- section at the top of the file!</i></span> And there can only be one
- such section per actions file. Each actions file may have its own alias
- section, and the aliases defined in it are only visible within that
- file.</p>
- <p>There are two main reasons to use aliases: One is to save typing for
- frequently used combinations of actions, the other one is a gain in
- flexibility: If you decide once how you want to handle shops by
- defining an alias called <span class="QUOTE">"shop"</span>, you can
- later change your policy on shops in <span class="emphasis"><i class=
- "EMPHASIS">one</i></span> place, and your changes will take effect
- everywhere in the actions file where the <span class=
- "QUOTE">"shop"</span> alias is used. Calling aliases by their purpose
- also makes your actions files more readable.</p>
- <p>Currently, there is one big drawback to using aliases, though:
- <span class="APPLICATION">Privoxy</span>'s built-in web-based action
- file editor honors aliases when reading the actions files, but it
- expands them before writing. So the effects of your aliases are of
- course preserved, but the aliases themselves are lost when you edit
- sections that use aliases with it.</p>
+ <p>Custom <span class="QUOTE">"actions"</span>, known to <span class="APPLICATION">Privoxy</span> as <span class=
+ "QUOTE">"aliases"</span>, can be defined by combining other actions. These can in turn be invoked just like the
+ built-in actions. Currently, an alias name can contain any character except space, tab, <span class=
+ "QUOTE">"="</span>, <span class="QUOTE">"{"</span> and <span class="QUOTE">"}"</span>, but we <span class=
+ "emphasis"><i class="EMPHASIS">strongly recommend</i></span> that you only use <span class="QUOTE">"a"</span> to
+ <span class="QUOTE">"z"</span>, <span class="QUOTE">"0"</span> to <span class="QUOTE">"9"</span>, <span class=
+ "QUOTE">"+"</span>, and <span class="QUOTE">"-"</span>. Alias names are not case sensitive, and are not required
+ to start with a <span class="QUOTE">"+"</span> or <span class="QUOTE">"-"</span> sign, since they are merely
+ textually expanded.</p>
+ <p>Aliases can be used throughout the actions file, but they <span class="emphasis"><i class="EMPHASIS">must be
+ defined in a special section at the top of the file!</i></span> And there can only be one such section per
+ actions file. Each actions file may have its own alias section, and the aliases defined in it are only visible
+ within that file.</p>
+ <p>There are two main reasons to use aliases: One is to save typing for frequently used combinations of actions,
+ the other one is a gain in flexibility: If you decide once how you want to handle shops by defining an alias
+ called <span class="QUOTE">"shop"</span>, you can later change your policy on shops in <span class=
+ "emphasis"><i class="EMPHASIS">one</i></span> place, and your changes will take effect everywhere in the actions
+ file where the <span class="QUOTE">"shop"</span> alias is used. Calling aliases by their purpose also makes your
+ actions files more readable.</p>
+ <p>Currently, there is one big drawback to using aliases, though: <span class="APPLICATION">Privoxy</span>'s
+ built-in web-based action file editor honors aliases when reading the actions files, but it expands them before
+ writing. So the effects of your aliases are of course preserved, but the aliases themselves are lost when you
+ edit sections that use aliases with it.</p>
<p>Now let's define some aliases...</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
# These aliases just save typing later:
# (Note that some already use other aliases!)
#
- +crunch-all-cookies = +<a href=
-"actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> +<a href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a>
- -crunch-all-cookies = -<a href=
-"actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> -<a href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a>
+ +crunch-all-cookies = +<a href="actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> +<a href=
+"actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a>
+ -crunch-all-cookies = -<a href="actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> -<a href=
+"actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a>
+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> -<a href=
"actions-file.html#HIDE-REFERER">hide-referrer</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>
+ shop = -crunch-all-cookies -<a href="actions-file.html#FILTER-ALL-POPUPS">filter{all-popups}</a>
# Short names for other aliases, for really lazy people ;-)
#
</td>
</tr>
</table>
- <p>...and put them to use. These sections would appear in the lower
- part of an actions file and define exceptions to the default actions
- (as specified further up for the <span class="QUOTE">"/"</span>
- pattern):</p>
+ <p>...and put them to use. These sections would appear in the lower part of an actions file and define exceptions
+ to the default actions (as specified further up for the <span class="QUOTE">"/"</span> pattern):</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # These sites are either very complex or very keen on
+ <pre class="SCREEN"> # These sites are either very complex or very keen on
# user data and require minimal interference to work:
#
{fragile}
</td>
</tr>
</table>
- <p>Aliases like <span class="QUOTE">"shop"</span> and <span class=
- "QUOTE">"fragile"</span> are typically used for <span class=
- "QUOTE">"problem"</span> sites that require more than one action to be
- disabled in order to function properly.</p>
+ <p>Aliases like <span class="QUOTE">"shop"</span> and <span class="QUOTE">"fragile"</span> are typically used for
+ <span class="QUOTE">"problem"</span> sites that require more than one action to be disabled in order to function
+ properly.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="ACT-EXAMPLES" id="ACT-EXAMPLES">8.7. Actions
- Files Tutorial</a></h2>
- <p>The above chapters have shown <a href="actions-file.html">which
- actions files there are and how they are organized</a>, how actions are
- <a href="actions-file.html#ACTIONS">specified</a> and <a href=
- "actions-file.html#ACTIONS-APPLY">applied to URLs</a>, how <a href=
- "actions-file.html#AF-PATTERNS">patterns</a> work, and how to define
- and use <a href="actions-file.html#ALIASES">aliases</a>. Now, let's
- look at an example <tt class="FILENAME">match-all.action</tt>,
- <tt class="FILENAME">default.action</tt> and <tt class=
- "FILENAME">user.action</tt> file and see how all these pieces come
- together:</p>
+ <h2 class="SECT2"><a name="ACT-EXAMPLES" id="ACT-EXAMPLES">8.7. Actions Files Tutorial</a></h2>
+ <p>The above chapters have shown <a href="actions-file.html">which actions files there are and how they are
+ organized</a>, how actions are <a href="actions-file.html#ACTIONS">specified</a> and <a href=
+ "actions-file.html#ACTIONS-APPLY">applied to URLs</a>, how <a href="actions-file.html#AF-PATTERNS">patterns</a>
+ work, and how to define and use <a href="actions-file.html#ALIASES">aliases</a>. Now, let's look at an example
+ <tt class="FILENAME">match-all.action</tt>, <tt class="FILENAME">default.action</tt> and <tt class=
+ "FILENAME">user.action</tt> file and see how all these pieces come together:</p>
<div class="SECT3">
- <h3 class="SECT3"><a name="MATCH-ALL" id="MATCH-ALL">8.7.1.
- match-all.action</a></h3>
- <p>Remember <span class="emphasis"><i class="EMPHASIS">all actions
- are disabled when matching starts</i></span>, so we have to
- explicitly enable the ones we want.</p>
- <p>While the <tt class="FILENAME">match-all.action</tt> file only
- contains a single section, it is probably the most important one. It
- has only one pattern, <span class="QUOTE">"<tt class=
- "LITERAL">/</tt>"</span>, but this pattern <a href=
- "actions-file.html#AF-PATTERNS">matches all URLs</a>. Therefore, the
- set of actions used in this <span class="QUOTE">"default"</span>
- section <span class="emphasis"><i class="EMPHASIS">will be applied to
- all requests as a start</i></span>. It can be partly or wholly
- overridden by other actions files like <tt class=
- "FILENAME">default.action</tt> and <tt class=
- "FILENAME">user.action</tt>, but it will still be largely responsible
- for your overall browsing experience.</p>
- <p>Again, at the start of matching, all actions are disabled, so
- there is no need to disable any actions here. (Remember: a
- <span class="QUOTE">"+"</span> preceding the action name enables the
- action, a <span class="QUOTE">"-"</span> disables!). Also note how
- this long line has been made more readable by splitting it into
+ <h3 class="SECT3"><a name="MATCH-ALL" id="MATCH-ALL">8.7.1. match-all.action</a></h3>
+ <p>Remember <span class="emphasis"><i class="EMPHASIS">all actions are disabled when matching
+ starts</i></span>, so we have to explicitly enable the ones we want.</p>
+ <p>While the <tt class="FILENAME">match-all.action</tt> file only contains a single section, it is probably the
+ most important one. It has only one pattern, <span class="QUOTE">"<tt class="LITERAL">/</tt>"</span>, but this
+ pattern <a href="actions-file.html#AF-PATTERNS">matches all URLs</a>. Therefore, the set of actions used in
+ this <span class="QUOTE">"default"</span> section <span class="emphasis"><i class="EMPHASIS">will be applied to
+ all requests as a start</i></span>. It can be partly or wholly overridden by other actions files like
+ <tt class="FILENAME">default.action</tt> and <tt class="FILENAME">user.action</tt>, but it will still be
+ largely responsible for your overall browsing experience.</p>
+ <p>Again, at the start of matching, all actions are disabled, so there is no need to disable any actions here.
+ (Remember: a <span class="QUOTE">"+"</span> preceding the action name enables the action, a <span class=
+ "QUOTE">"-"</span> disables!). Also note how this long line has been made more readable by splitting it into
multiple lines with line continuation.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
<pre class="SCREEN">{ \
- +<a href=
-"actions-file.html#CHANGE-X-FORWARDED-FOR">change-x-forwarded-for{block}</a> \
+ +<a href="actions-file.html#CHANGE-X-FORWARDED-FOR">change-x-forwarded-for{block}</a> \
+<a href="actions-file.html#HIDE-FROM-HEADER">hide-from-header{block}</a> \
- +<a href=
-"actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker{pattern}</a> \
+ +<a href="actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker{pattern}</a> \
}
/ # Match all URLs
</pre>
<p>The default behavior is now set.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="DEFAULT-ACTION" id="DEFAULT-ACTION">8.7.2.
- default.action</a></h3>
- <p>If you aren't a developer, there's no need for you to edit the
- <tt class="FILENAME">default.action</tt> file. It is maintained by
- the <span class="APPLICATION">Privoxy</span> developers and if you
- disagree with some of the sections, you should overrule them in your
- <tt class="FILENAME">user.action</tt>.</p>
- <p>Understanding the <tt class="FILENAME">default.action</tt> file
- can help you with your <tt class="FILENAME">user.action</tt>,
- though.</p>
- <p>The first section in this file is a special section for internal
- use that prevents older <span class="APPLICATION">Privoxy</span>
- versions from reading the file:</p>
+ <h3 class="SECT3"><a name="DEFAULT-ACTION" id="DEFAULT-ACTION">8.7.2. default.action</a></h3>
+ <p>If you aren't a developer, there's no need for you to edit the <tt class="FILENAME">default.action</tt>
+ file. It is maintained by the <span class="APPLICATION">Privoxy</span> developers and if you disagree with some
+ of the sections, you should overrule them in your <tt class="FILENAME">user.action</tt>.</p>
+ <p>Understanding the <tt class="FILENAME">default.action</tt> file can help you with your <tt class=
+ "FILENAME">user.action</tt>, though.</p>
+ <p>The first section in this file is a special section for internal use that prevents older <span class=
+ "APPLICATION">Privoxy</span> versions from reading the file:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- ##########################################################################
+ <pre class="SCREEN">##########################################################################
# Settings -- Don't change! For internal Privoxy use ONLY.
##########################################################################
{{settings}}
</td>
</tr>
</table>
- <p>After that comes the (optional) alias section. We'll use the
- example section from the above <a href=
- "actions-file.html#ALIASES">chapter on aliases</a>, that also
- explains why and how aliases are used:</p>
+ <p>After that comes the (optional) alias section. We'll use the example section from the above <a href=
+ "actions-file.html#ALIASES">chapter on aliases</a>, that also explains why and how aliases are used:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- ##########################################################################
+ <pre class="SCREEN">##########################################################################
# Aliases
##########################################################################
{{alias}}
# These aliases just save typing later:
# (Note that some already use other aliases!)
#
- +crunch-all-cookies = +<a href=
-"actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> +<a href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a>
- -crunch-all-cookies = -<a href=
-"actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> -<a href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a>
+ +crunch-all-cookies = +<a href="actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> +<a href=
+"actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a>
+ -crunch-all-cookies = -<a href="actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> -<a href=
+"actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a>
+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=
#
fragile = -<a href="actions-file.html#BLOCK">block</a> -<a href=
"actions-file.html#FILTER">filter</a> -crunch-all-cookies -<a href=
-"actions-file.html#FAST-REDIRECTS">fast-redirects</a> -<a href=
-"actions-file.html#HIDE-REFERER">hide-referrer</a>
- shop = -crunch-all-cookies -<a href=
-"actions-file.html#FILTER-ALL-POPUPS">filter{all-popups}</a></pre>
+"actions-file.html#FAST-REDIRECTS">fast-redirects</a> -<a href="actions-file.html#HIDE-REFERER">hide-referrer</a>
+ shop = -crunch-all-cookies -<a href="actions-file.html#FILTER-ALL-POPUPS">filter{all-popups}</a></pre>
</td>
</tr>
</table>
- <p>The first of our specialized sections is concerned with
- <span class="QUOTE">"fragile"</span> sites, i.e. sites that require
- minimum interference, because they are either very complex or very
- keen on tracking you (and have mechanisms in place that make them
- unusable for people who avoid being tracked). We will use our
- pre-defined <tt class="LITERAL">fragile</tt> alias instead of stating
- the list of actions explicitly:</p>
+ <p>The first of our specialized sections is concerned with <span class="QUOTE">"fragile"</span> sites, i.e.
+ sites that require minimum interference, because they are either very complex or very keen on tracking you (and
+ have mechanisms in place that make them unusable for people who avoid being tracked). We will use our
+ pre-defined <tt class="LITERAL">fragile</tt> alias instead of stating the list of actions explicitly:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- ##########################################################################
+ <pre class="SCREEN">##########################################################################
# Exceptions for sites that'll break under the default action set:
##########################################################################
</td>
</tr>
</table>
- <p>Shopping sites are not as fragile, but they typically require
- cookies to log in, and pop-up windows for shopping carts or item
- details. Again, we'll use a pre-defined alias:</p>
+ <p>Shopping sites are not as fragile, but they typically require cookies to log in, and pop-up windows for
+ shopping carts or item details. Again, we'll use a pre-defined alias:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>The <tt class="LITERAL"><a href=
- "actions-file.html#FAST-REDIRECTS">fast-redirects</a></tt> action,
- which may have been enabled in <tt class=
- "FILENAME">match-all.action</tt>, breaks some sites. So disable it
- for popular sites where we know it misbehaves:</p>
+ <p>The <tt class="LITERAL"><a href="actions-file.html#FAST-REDIRECTS">fast-redirects</a></tt> action, which may
+ have been enabled in <tt class="FILENAME">match-all.action</tt>, breaks some sites. So disable it for popular
+ sites where we know it misbehaves:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">{ -<a href=
- "actions-file.html#FAST-REDIRECTS">fast-redirects</a> }
+ <pre class="SCREEN">{ -<a href="actions-file.html#FAST-REDIRECTS">fast-redirects</a> }
login.yahoo.com
edit.*.yahoo.com
.google.com
</td>
</tr>
</table>
- <p>It is important that <span class="APPLICATION">Privoxy</span>
- knows which URLs belong to images, so that <span class=
- "emphasis"><i class="EMPHASIS">if</i></span> they are to be blocked,
- a substitute image can be sent, rather than an HTML page. Contacting
- the remote site to find out is not an option, since it would destroy
- the loading time advantage of banner blocking, and it would feed the
- advertisers information about you. We can mark any URL as an image
- with the <tt class="LITERAL"><a href=
- "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> action,
- and marking all URLs that end in a known image file extension is a
- good start:</p>
+ <p>It is important that <span class="APPLICATION">Privoxy</span> knows which URLs belong to images, so that
+ <span class="emphasis"><i class="EMPHASIS">if</i></span> they are to be blocked, a substitute image can be
+ sent, rather than an HTML page. Contacting the remote site to find out is not an option, since it would destroy
+ the loading time advantage of banner blocking, and it would feed the advertisers information about you. We can
+ mark any URL as an image with the <tt class="LITERAL"><a href=
+ "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> action, and marking all URLs that end in a known
+ image file extension is a good start:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- ##########################################################################
+ <pre class="SCREEN">##########################################################################
# Images:
##########################################################################
</td>
</tr>
</table>
- <p>And then there are known banner sources. They often use scripts to
- generate the banners, so it won't be visible from the URL that the
- request is for an image. Hence we block them <span class=
- "emphasis"><i class="EMPHASIS">and</i></span> mark them as images in
- one go, with the help of our <tt class="LITERAL">+block-as-image</tt>
- alias defined above. (We could of course just as well use <tt class=
+ <p>And then there are known banner sources. They often use scripts to generate the banners, so it won't be
+ visible from the URL that the request is for an image. Hence we block them <span class="emphasis"><i class=
+ "EMPHASIS">and</i></span> mark them as images in one go, with the help of our <tt class=
+ "LITERAL">+block-as-image</tt> alias defined above. (We could of course just as well use <tt class=
"LITERAL">+<a href="actions-file.html#BLOCK">block</a> +<a href=
- "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> here.)
- Remember that the type of the replacement image is chosen by the
- <tt class="LITERAL"><a href=
- "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt>
- action. Since all URLs have matched the default section with its
- <tt class="LITERAL">+<a href=
- "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a>{pattern}</tt>
- action before, it still applies and needn't be repeated:</p>
+ "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> here.) Remember that the type of the replacement
+ image is chosen by the <tt class="LITERAL"><a href=
+ "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt> action. Since all URLs have matched the
+ default section with its <tt class="LITERAL">+<a href=
+ "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a>{pattern}</tt> action before, it still applies and
+ needn't be repeated:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>One of the most important jobs of <span class=
- "APPLICATION">Privoxy</span> is to block banners. Many of these can
- be <span class="QUOTE">"blocked"</span> by the <tt class=
- "LITERAL"><a href=
- "actions-file.html#FILTER">filter</a>{banners-by-size}</tt> action,
- which we enabled above, and which deletes the references to banner
- images from the pages while they are loaded, so the browser doesn't
- request them anymore, and hence they don't need to be blocked here.
- But this naturally doesn't catch all banners, and some people choose
- not to use filters, so we need a comprehensive list of patterns for
- banner URLs here, and apply the <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> action to them.</p>
- <p>First comes many generic patterns, which do most of the work, by
- matching typical domain and path name components of banners. Then
- comes a list of individual patterns for specific sites, which is
- omitted here to keep the example short:</p>
+ <p>One of the most important jobs of <span class="APPLICATION">Privoxy</span> is to block banners. Many of
+ these can be <span class="QUOTE">"blocked"</span> by the <tt class="LITERAL"><a href=
+ "actions-file.html#FILTER">filter</a>{banners-by-size}</tt> action, which we enabled above, and which deletes
+ the references to banner images from the pages while they are loaded, so the browser doesn't request them
+ anymore, and hence they don't need to be blocked here. But this naturally doesn't catch all banners, and some
+ people choose not to use filters, so we need a comprehensive list of patterns for banner URLs here, and apply
+ the <tt class="LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> action to them.</p>
+ <p>First comes many generic patterns, which do most of the work, by matching typical domain and path name
+ components of banners. Then comes a list of individual patterns for specific sites, which is omitted here to
+ keep the example short:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- ##########################################################################
+ <pre class="SCREEN">##########################################################################
# Block these fine banners:
##########################################################################
{ <a href="actions-file.html#BLOCK">+block{Banner ads.}</a> }
</td>
</tr>
</table>
- <p>It's quite remarkable how many advertisers actually call their
- banner servers ads.<tt class="REPLACEABLE"><i>company</i></tt>.com,
- or call the directory in which the banners are stored literally
- <span class="QUOTE">"banners"</span>. So the above generic patterns
- are surprisingly effective.</p>
- <p>But being very generic, they necessarily also catch URLs that we
- don't want to block. The pattern <tt class="LITERAL">.*ads.</tt> e.g.
- catches <span class="QUOTE">"nasty-<span class="emphasis"><i class=
- "EMPHASIS">ads</i></span>.nasty-corp.com"</span> as intended, but
- also <span class="QUOTE">"downlo<span class="emphasis"><i class=
- "EMPHASIS">ads</i></span>.sourcefroge.net"</span> or <span class=
- "QUOTE">"<span class="emphasis"><i class=
- "EMPHASIS">ads</i></span>l.some-provider.net."</span> So here come
- some well-known exceptions to the <tt class="LITERAL">+<a href=
- "actions-file.html#BLOCK">block</a></tt> section above.</p>
- <p>Note that these are exceptions to exceptions from the default!
- Consider the URL <span class=
- "QUOTE">"downloads.sourcefroge.net"</span>: Initially, all actions
- are deactivated, so it wouldn't get blocked. Then comes the defaults
- section, which matches the URL, but just deactivates the <tt class=
- "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> action
- once again. Then it matches <tt class="LITERAL">.*ads.</tt>, an
- exception to the general non-blocking policy, and suddenly <tt class=
- "LITERAL"><a href="actions-file.html#BLOCK">+block</a></tt> applies.
- And now, it'll match <tt class="LITERAL">.*loads.</tt>, where
- <tt class="LITERAL"><a href="actions-file.html#BLOCK">-block</a></tt>
- applies, so (unless it matches <span class="emphasis"><i class=
- "EMPHASIS">again</i></span> further down) it ends up with no
- <tt class="LITERAL"><a href="actions-file.html#BLOCK">block</a></tt>
- action applying.</p>
+ <p>It's quite remarkable how many advertisers actually call their banner servers ads.<tt class=
+ "REPLACEABLE"><i>company</i></tt>.com, or call the directory in which the banners are stored literally
+ <span class="QUOTE">"banners"</span>. So the above generic patterns are surprisingly effective.</p>
+ <p>But being very generic, they necessarily also catch URLs that we don't want to block. The pattern <tt class=
+ "LITERAL">.*ads.</tt> e.g. catches <span class="QUOTE">"nasty-<span class="emphasis"><i class=
+ "EMPHASIS">ads</i></span>.nasty-corp.com"</span> as intended, but also <span class="QUOTE">"downlo<span class=
+ "emphasis"><i class="EMPHASIS">ads</i></span>.sourcefroge.net"</span> or <span class="QUOTE">"<span class=
+ "emphasis"><i class="EMPHASIS">ads</i></span>l.some-provider.net."</span> So here come some well-known
+ exceptions to the <tt class="LITERAL">+<a href="actions-file.html#BLOCK">block</a></tt> section above.</p>
+ <p>Note that these are exceptions to exceptions from the default! Consider the URL <span class=
+ "QUOTE">"downloads.sourcefroge.net"</span>: Initially, all actions are deactivated, so it wouldn't get blocked.
+ Then comes the defaults section, which matches the URL, but just deactivates the <tt class="LITERAL"><a href=
+ "actions-file.html#BLOCK">block</a></tt> action once again. Then it matches <tt class="LITERAL">.*ads.</tt>, an
+ exception to the general non-blocking policy, and suddenly <tt class="LITERAL"><a href=
+ "actions-file.html#BLOCK">+block</a></tt> applies. And now, it'll match <tt class="LITERAL">.*loads.</tt>,
+ where <tt class="LITERAL"><a href="actions-file.html#BLOCK">-block</a></tt> applies, so (unless it matches
+ <span class="emphasis"><i class="EMPHASIS">again</i></span> further down) it ends up with no <tt class=
+ "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> action applying.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- ##########################################################################
+ <pre class="SCREEN">##########################################################################
# Save some innocent victims of the above generic block patterns:
##########################################################################
</td>
</tr>
</table>
- <p>Filtering source code can have nasty side effects, so make an
- exception for our friends at sourceforge.net, and all paths with
- <span class="QUOTE">"cvs"</span> in them. Note that <tt class=
- "LITERAL">-<a href="actions-file.html#FILTER">filter</a></tt>
- disables <span class="emphasis"><i class="EMPHASIS">all</i></span>
+ <p>Filtering source code can have nasty side effects, so make an exception for our friends at sourceforge.net,
+ and all paths with <span class="QUOTE">"cvs"</span> in them. Note that <tt class="LITERAL">-<a href=
+ "actions-file.html#FILTER">filter</a></tt> disables <span class="emphasis"><i class="EMPHASIS">all</i></span>
filters in one fell swoop!</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>The actual <tt class="FILENAME">default.action</tt> is of course
- much more comprehensive, but we hope this example made clear how it
- works.</p>
+ <p>The actual <tt class="FILENAME">default.action</tt> is of course much more comprehensive, but we hope this
+ example made clear how it works.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="USER-ACTION" id="USER-ACTION">8.7.3.
- user.action</a></h3>
- <p>So far we are painting with a broad brush by setting general
- policies, which would be a reasonable starting point for many people.
- Now, you might want to be more specific and have customized rules
- that are more suitable to your personal habits and preferences. These
- would be for narrowly defined situations like your ISP or your bank,
- and should be placed in <tt class="FILENAME">user.action</tt>, which
- is parsed after all other actions files and hence has the last word,
- over-riding any previously defined actions. <tt class=
- "FILENAME">user.action</tt> is also a <span class=
- "emphasis"><i class="EMPHASIS">safe</i></span> place for your
- personal settings, since <tt class="FILENAME">default.action</tt> is
- actively maintained by the <span class="APPLICATION">Privoxy</span>
- developers and you'll probably want to install updated versions from
- time to time.</p>
- <p>So let's look at a few examples of things that one might typically
- do in <tt class="FILENAME">user.action</tt>:</p>
+ <h3 class="SECT3"><a name="USER-ACTION" id="USER-ACTION">8.7.3. user.action</a></h3>
+ <p>So far we are painting with a broad brush by setting general policies, which would be a reasonable starting
+ point for many people. Now, you might want to be more specific and have customized rules that are more suitable
+ to your personal habits and preferences. These would be for narrowly defined situations like your ISP or your
+ bank, and should be placed in <tt class="FILENAME">user.action</tt>, which is parsed after all other actions
+ files and hence has the last word, over-riding any previously defined actions. <tt class=
+ "FILENAME">user.action</tt> is also a <span class="emphasis"><i class="EMPHASIS">safe</i></span> place for your
+ personal settings, since <tt class="FILENAME">default.action</tt> is actively maintained by the <span class=
+ "APPLICATION">Privoxy</span> developers and you'll probably want to install updated versions from time to
+ time.</p>
+ <p>So let's look at a few examples of things that one might typically do in <tt class=
+ "FILENAME">user.action</tt>:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # My user.action file. <fred@example.com></pre>
+ <pre class="SCREEN"># My user.action file. <fred@example.com></pre>
</td>
</tr>
</table>
- <p>As <a href="actions-file.html#ALIASES">aliases</a> are local to
- the actions file that they are defined in, you can't use the ones
- from <tt class="FILENAME">default.action</tt>, unless you repeat them
- here:</p>
+ <p>As <a href="actions-file.html#ALIASES">aliases</a> are local to the actions file that they are defined in,
+ you can't use the ones from <tt class="FILENAME">default.action</tt>, unless you repeat them here:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # Aliases are local to the file they are defined in.
+ <pre class="SCREEN"># Aliases are local to the file they are defined in.
# (Re-)define aliases for this file:
#
{{alias}}
# Alias for specific file types that are text, but might have conflicting
# MIME types. We want the browser to force these to be text documents.
handle-as-text = -<a href="actions-file.html#FILTER">filter</a> +-<a href=
-"actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite{text/plain}</a> +-<a href="actions-file.html#FORCE-TEXT-MODE">force-text-mode</a> -<a href="actions-file.html#HIDE-CONTENT-DISPOSITION">hide-content-disposition</a></pre>
+"actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite{text/plain}</a> +-<a href=
+"actions-file.html#FORCE-TEXT-MODE">force-text-mode</a> -<a href=
+"actions-file.html#HIDE-CONTENT-DISPOSITION">hide-content-disposition</a></pre>
</td>
</tr>
</table>
- <p>Say you have accounts on some sites that you visit regularly, and
- you don't want to have to log in manually each time. So you'd like to
- allow persistent cookies for these sites. The <tt class=
- "LITERAL">allow-all-cookies</tt> alias defined above does exactly
- that, i.e. it disables crunching of cookies in any direction, and the
- processing of cookies to make them only temporary.</p>
+ <p>Say you have accounts on some sites that you visit regularly, and you don't want to have to log in manually
+ each time. So you'd like to allow persistent cookies for these sites. The <tt class=
+ "LITERAL">allow-all-cookies</tt> alias defined above does exactly that, i.e. it disables crunching of cookies
+ in any direction, and the processing of cookies to make them only temporary.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Your bank is allergic to some filter, but you don't know which, so
- you disable them all:</p>
+ <p>Your bank is allergic to some filter, but you don't know which, so you disable them all:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">{ -<a href=
- "actions-file.html#FILTER">filter</a> }
+ <pre class="SCREEN">{ -<a href="actions-file.html#FILTER">filter</a> }
.your-home-banking-site.com</pre>
</td>
</tr>
</table>
- <p>Some file types you may not want to filter for various
- reasons:</p>
+ <p>Some file types you may not want to filter for various reasons:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # Technical documentation is likely to contain strings that might
+ <pre class="SCREEN"># Technical documentation is likely to contain strings that might
# erroneously get altered by the JavaScript-oriented filters:
#
.tldp.org
</td>
</tr>
</table>
- <p>Example of a simple <a href="actions-file.html#BLOCK">block</a>
- action. Say you've seen an ad on your favourite page on example.com
- that you want to get rid of. You have right-clicked the image,
- selected <span class="QUOTE">"copy image location"</span> and pasted
- the URL below while removing the leading http://, into a <tt class=
- "LITERAL">{ +block{} }</tt> section. Note that <tt class="LITERAL">{
- +handle-as-image }</tt> need not be specified, since all URLs ending
- in <tt class="LITERAL">.gif</tt> will be tagged as images by the
+ <p>Example of a simple <a href="actions-file.html#BLOCK">block</a> action. Say you've seen an ad on your
+ favourite page on example.com that you want to get rid of. You have right-clicked the image, selected
+ <span class="QUOTE">"copy image location"</span> and pasted the URL below while removing the leading http://,
+ into a <tt class="LITERAL">{ +block{} }</tt> section. Note that <tt class="LITERAL">{ +handle-as-image }</tt>
+ need not be specified, since all URLs ending in <tt class="LITERAL">.gif</tt> will be tagged as images by the
general rules as set in default.action anyway:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">{ +<a href=
- "actions-file.html#BLOCK">block</a>{Nasty ads.} }
+ <pre class="SCREEN">{ +<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>
</tr>
</table>
- <p>The URLs of dynamically generated banners, especially from large
- banner farms, often don't use the well-known image file name
- extensions, which makes it impossible for <span class=
- "APPLICATION">Privoxy</span> to guess the file type just by looking
- at the URL. You can use the <tt class="LITERAL">+block-as-image</tt>
- alias defined above for these cases. Note that objects which match
- this rule but then turn out NOT to be an image are typically rendered
- as a <span class="QUOTE">"broken image"</span> icon by the browser.
- Use cautiously.</p>
+ <p>The URLs of dynamically generated banners, especially from large banner farms, often don't use the
+ well-known image file name extensions, which makes it impossible for <span class="APPLICATION">Privoxy</span>
+ to guess the file type just by looking at the URL. You can use the <tt class="LITERAL">+block-as-image</tt>
+ alias defined above for these cases. Note that objects which match this rule but then turn out NOT to be an
+ image are typically rendered as a <span class="QUOTE">"broken image"</span> icon by the browser. Use
+ cautiously.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Now you noticed that the default configuration breaks Forbes
- Magazine, but you were too lazy to find out which action is the
- culprit, and you were again too lazy to give <a href=
- "contact.html">feedback</a>, so you just used the <tt class=
- "LITERAL">fragile</tt> alias on the site, and -- <span class=
- "emphasis"><i class="EMPHASIS">whoa!</i></span> -- it worked. The
- <tt class="LITERAL">fragile</tt> aliases disables those actions that
- are most likely to break a site. Also, good for testing purposes to
- see if it is <span class="APPLICATION">Privoxy</span> that is causing
- the problem or not. We later find other regular sites that misbehave,
- and add those to our personalized list of troublemakers:</p>
+ <p>Now you noticed that the default configuration breaks Forbes Magazine, but you were too lazy to find out
+ which action is the culprit, and you were again too lazy to give <a href="contact.html">feedback</a>, so you
+ just used the <tt class="LITERAL">fragile</tt> alias on the site, and -- <span class="emphasis"><i class=
+ "EMPHASIS">whoa!</i></span> -- it worked. The <tt class="LITERAL">fragile</tt> aliases disables those actions
+ that are most likely to break a site. Also, good for testing purposes to see if it is <span class=
+ "APPLICATION">Privoxy</span> that is causing the problem or not. We later find other regular sites that
+ misbehave, and add those to our personalized list of troublemakers:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>You like the <span class="QUOTE">"fun"</span> text replacements in
- <tt class="FILENAME">default.filter</tt>, but it is disabled in the
- distributed actions file. So you'd like to turn it on in your
- private, update-safe config, once and for all:</p>
+ <p>You like the <span class="QUOTE">"fun"</span> text replacements in <tt class="FILENAME">default.filter</tt>,
+ but it is disabled in the distributed actions file. So you'd like to turn it on in your private, update-safe
+ config, once and for all:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">{ +<a href=
- "actions-file.html#FILTER-FUN">filter{fun}</a> }
+ <pre class="SCREEN">{ +<a href="actions-file.html#FILTER-FUN">filter{fun}</a> }
/ # For ALL sites!</pre>
</td>
</tr>
</table>
- <p>Note that the above is not really a good idea: There are
- exceptions to the filters in <tt class="FILENAME">default.action</tt>
- for things that really shouldn't be filtered, like code on
- CVS->Web interfaces. Since <tt class="FILENAME">user.action</tt>
- has the last word, these exceptions won't be valid for the
- <span class="QUOTE">"fun"</span> filtering specified here.</p>
- <p>You might also worry about how your favourite free websites are
- funded, and find that they rely on displaying banner advertisements
- to survive. So you might want to specifically allow banners for those
- sites that you feel provide value to you:</p>
+ <p>Note that the above is not really a good idea: There are exceptions to the filters in <tt class=
+ "FILENAME">default.action</tt> for things that really shouldn't be filtered, like code on CVS->Web
+ interfaces. Since <tt class="FILENAME">user.action</tt> has the last word, these exceptions won't be valid for
+ the <span class="QUOTE">"fun"</span> filtering specified here.</p>
+ <p>You might also worry about how your favourite free websites are funded, and find that they rely on
+ displaying banner advertisements to survive. So you might want to specifically allow banners for those sites
+ that you feel provide value to you:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Note that <tt class="LITERAL">allow-ads</tt> has been aliased to
- <tt class="LITERAL">-<a href=
- "actions-file.html#BLOCK">block</a></tt>, <tt class=
- "LITERAL">-<a href=
- "actions-file.html#FILTER-BANNERS-BY-SIZE">filter{banners-by-size}</a></tt>,
- and <tt class="LITERAL">-<a href=
- "actions-file.html#FILTER-BANNERS-BY-LINK">filter{banners-by-link}</a></tt>
- above.</p>
- <p>Invoke another alias here to force an over-ride of the MIME type
- <tt class="LITERAL">application/x-sh</tt> which typically would open
- a download type dialog. In my case, I want to look at the shell
- script, and then I can save it should I choose to.</p>
+ <p>Note that <tt class="LITERAL">allow-ads</tt> has been aliased to <tt class="LITERAL">-<a href=
+ "actions-file.html#BLOCK">block</a></tt>, <tt class="LITERAL">-<a href=
+ "actions-file.html#FILTER-BANNERS-BY-SIZE">filter{banners-by-size}</a></tt>, and <tt class="LITERAL">-<a href=
+ "actions-file.html#FILTER-BANNERS-BY-LINK">filter{banners-by-link}</a></tt> above.</p>
+ <p>Invoke another alias here to force an over-ride of the MIME type <tt class="LITERAL">application/x-sh</tt>
+ which typically would open a download type dialog. In my case, I want to look at the shell script, and then I
+ can save it should I choose to.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p><tt class="FILENAME">user.action</tt> is generally the best place
- to define exceptions and additions to the default policies of
- <tt class="FILENAME">default.action</tt>. Some actions are safe to
- have their default policies set here though. So let's set a default
- policy to have a <span class="QUOTE">"blank"</span> image as opposed
- to the checkerboard pattern for <span class="emphasis"><i class=
- "EMPHASIS">ALL</i></span> sites. <span class="QUOTE">"/"</span> of
- course matches all URL paths and patterns:</p>
+ <p><tt class="FILENAME">user.action</tt> is generally the best place to define exceptions and additions to the
+ default policies of <tt class="FILENAME">default.action</tt>. Some actions are safe to have their default
+ policies set here though. So let's set a default policy to have a <span class="QUOTE">"blank"</span> image as
+ opposed to the checkerboard pattern for <span class="emphasis"><i class="EMPHASIS">ALL</i></span> sites.
+ <span class="QUOTE">"/"</span> of course matches all URL paths and patterns:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">{ +<a href=
- "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker{blank}</a> }
+ <pre class="SCREEN">{ +<a href="actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker{blank}</a> }
/ # ALL sites</pre>
</td>
</tr>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="config.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="filter-file.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="config.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="filter-file.html" accesskey="N">Next</a></td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">The Main Configuration
- File</td>
+ <td width="33%" align="left" valign="top">The Main Configuration File</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">Filter Files</td>
</tr>
<html>
<head>
<title>Appendix</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
<link rel="PREVIOUS" title="See Also" href="seealso.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="seealso.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="seealso.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
<td width="10%" align="right" valign="bottom"> </td>
</tr>
<div class="SECT1">
<h1 class="SECT1"><a name="APPENDIX" id="APPENDIX">14. Appendix</a></h1>
<div class="SECT2">
- <h2 class="SECT2"><a name="REGEX" id="REGEX">14.1. Regular
- Expressions</a></h2>
- <p><span class="APPLICATION">Privoxy</span> uses Perl-style
- <span class="QUOTE">"regular expressions"</span> in its <a href=
- "actions-file.html">actions files</a> and <a href=
- "filter-file.html">filter file</a>, through the <a href=
- "http://www.pcre.org/" target="_top">PCRE</a> and <span class=
- "APPLICATION">PCRS</span> libraries.</p>
- <p>If you are reading this, you probably don't understand what
- <span class="QUOTE">"regular expressions"</span> are, or what they can
- do. So this will be a very brief introduction only. A full explanation
- would require a <a href="http://www.oreilly.com/catalog/regex/" target=
- "_top">book</a> ;-)</p>
- <p>Regular expressions provide a language to describe patterns that can
- be run against strings of characters (letter, numbers, etc), to see if
- they match the string or not. The patterns are themselves (sometimes
- complex) strings of literal characters, combined with wild-cards, and
- other special characters, called meta-characters. The <span class=
- "QUOTE">"meta-characters"</span> have special meanings and are used to
- build complex patterns to be matched against. Perl Compatible Regular
- Expressions are an especially convenient <span class=
+ <h2 class="SECT2"><a name="REGEX" id="REGEX">14.1. Regular Expressions</a></h2>
+ <p><span class="APPLICATION">Privoxy</span> uses Perl-style <span class="QUOTE">"regular expressions"</span> in
+ its <a href="actions-file.html">actions files</a> and <a href="filter-file.html">filter file</a>, through the
+ <a href="http://www.pcre.org/" target="_top">PCRE</a> and <span class="APPLICATION">PCRS</span> libraries.</p>
+ <p>If you are reading this, you probably don't understand what <span class="QUOTE">"regular expressions"</span>
+ are, or what they can do. So this will be a very brief introduction only. A full explanation would require a
+ <a href="http://www.oreilly.com/catalog/regex/" target="_top">book</a> ;-)</p>
+ <p>Regular expressions provide a language to describe patterns that can be run against strings of characters
+ (letter, numbers, etc), to see if they match the string or not. The patterns are themselves (sometimes complex)
+ strings of literal characters, combined with wild-cards, and other special characters, called meta-characters.
+ The <span class="QUOTE">"meta-characters"</span> have special meanings and are used to build complex patterns to
+ be matched against. Perl Compatible Regular Expressions are an especially convenient <span class=
"QUOTE">"dialect"</span> of the regular expression language.</p>
- <p>To make a simple analogy, we do something similar when we use
- wild-card characters when listing files with the <b class=
- "COMMAND">dir</b> command in DOS. <tt class="LITERAL">*.*</tt> matches
- all filenames. The <span class="QUOTE">"special"</span> character here
- is the asterisk which matches any and all characters. We can be more
- specific and use <tt class="LITERAL">?</tt> to match just individual
- characters. So <span class="QUOTE">"dir file?.text"</span> would match
- <span class="QUOTE">"file1.txt"</span>, <span class=
- "QUOTE">"file2.txt"</span>, etc. We are pattern matching, using a
- similar technique to <span class="QUOTE">"regular
- expressions"</span>!</p>
- <p>Regular expressions do essentially the same thing, but are much,
- much more powerful. There are many more <span class="QUOTE">"special
- characters"</span> and ways of building complex patterns however. Let's
- look at a few of the common ones, and then some examples:</p>
+ <p>To make a simple analogy, we do something similar when we use wild-card characters when listing files with the
+ <b class="COMMAND">dir</b> command in DOS. <tt class="LITERAL">*.*</tt> matches all filenames. The <span class=
+ "QUOTE">"special"</span> character here is the asterisk which matches any and all characters. We can be more
+ specific and use <tt class="LITERAL">?</tt> to match just individual characters. So <span class="QUOTE">"dir
+ file?.text"</span> would match <span class="QUOTE">"file1.txt"</span>, <span class="QUOTE">"file2.txt"</span>,
+ etc. We are pattern matching, using a similar technique to <span class="QUOTE">"regular expressions"</span>!</p>
+ <p>Regular expressions do essentially the same thing, but are much, much more powerful. There are many more
+ <span class="QUOTE">"special characters"</span> and ways of building complex patterns however. Let's look at a
+ few of the common ones, and then some examples:</p>
<table border="0">
<tbody>
<tr>
- <td><span class="emphasis"><i class="EMPHASIS">.</i></span> -
- Matches any single character, e.g. <span class=
- "QUOTE">"a"</span>, <span class="QUOTE">"A"</span>, <span class=
- "QUOTE">"4"</span>, <span class="QUOTE">":"</span>, or
- <span class="QUOTE">"@"</span>.</td>
+ <td><span class="emphasis"><i class="EMPHASIS">.</i></span> - Matches any single character, e.g.
+ <span class="QUOTE">"a"</span>, <span class="QUOTE">"A"</span>, <span class="QUOTE">"4"</span>,
+ <span class="QUOTE">":"</span>, or <span class="QUOTE">"@"</span>.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><span class="emphasis"><i class="EMPHASIS">?</i></span> - The
- preceding character or expression is matched ZERO or ONE times.
- Either/or.</td>
+ <td><span class="emphasis"><i class="EMPHASIS">?</i></span> - The preceding character or expression is
+ matched ZERO or ONE times. Either/or.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><span class="emphasis"><i class="EMPHASIS">+</i></span> - The
- preceding character or expression is matched ONE or MORE
- times.</td>
+ <td><span class="emphasis"><i class="EMPHASIS">+</i></span> - The preceding character or expression is
+ matched ONE or MORE times.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><span class="emphasis"><i class="EMPHASIS">*</i></span> - The
- preceding character or expression is matched ZERO or MORE
- times.</td>
+ <td><span class="emphasis"><i class="EMPHASIS">*</i></span> - The preceding character or expression is
+ matched ZERO or MORE times.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><span class="emphasis"><i class="EMPHASIS">\</i></span> - The
- <span class="QUOTE">"escape"</span> character denotes that the
- following character should be taken literally. This is used where
- one of the special characters (e.g. <span class=
- "QUOTE">"."</span>) needs to be taken literally and not as a
- special meta-character. Example: <span class=
- "QUOTE">"example\.com"</span>, makes sure the period is
- recognized only as a period (and not expanded to its
- meta-character meaning of any single character).</td>
+ <td><span class="emphasis"><i class="EMPHASIS">\</i></span> - The <span class="QUOTE">"escape"</span>
+ character denotes that the following character should be taken literally. This is used where one of the
+ special characters (e.g. <span class="QUOTE">"."</span>) needs to be taken literally and not as a special
+ meta-character. Example: <span class="QUOTE">"example\.com"</span>, makes sure the period is recognized
+ only as a period (and not expanded to its meta-character meaning of any single character).</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><span class="emphasis"><i class="EMPHASIS">[ ]</i></span> -
- Characters enclosed in brackets will be matched if any of the
- enclosed characters are encountered. For instance, <span class=
- "QUOTE">"[0-9]"</span> matches any numeric digit (zero through
- nine). As an example, we can combine this with <span class=
- "QUOTE">"+"</span> to match any digit one of more times:
- <span class="QUOTE">"[0-9]+"</span>.</td>
+ <td><span class="emphasis"><i class="EMPHASIS">[ ]</i></span> - Characters enclosed in brackets will be
+ matched if any of the enclosed characters are encountered. For instance, <span class="QUOTE">"[0-9]"</span>
+ matches any numeric digit (zero through nine). As an example, we can combine this with <span class=
+ "QUOTE">"+"</span> to match any digit one of more times: <span class="QUOTE">"[0-9]+"</span>.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><span class="emphasis"><i class="EMPHASIS">( )</i></span> -
- parentheses are used to group a sub-expression, or multiple
- sub-expressions.</td>
+ <td><span class="emphasis"><i class="EMPHASIS">( )</i></span> - parentheses are used to group a
+ sub-expression, or multiple sub-expressions.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><span class="emphasis"><i class="EMPHASIS">|</i></span> - The
- <span class="QUOTE">"bar"</span> character works like an
- <span class="QUOTE">"or"</span> conditional statement. A match is
- successful if the sub-expression on either side of <span class=
- "QUOTE">"|"</span> matches. As an example: <span class=
- "QUOTE">"/(this|that) example/"</span> uses grouping and the bar
- character and would match either <span class="QUOTE">"this
- example"</span> or <span class="QUOTE">"that example"</span>, and
- nothing else.</td>
+ <td><span class="emphasis"><i class="EMPHASIS">|</i></span> - The <span class="QUOTE">"bar"</span>
+ character works like an <span class="QUOTE">"or"</span> conditional statement. A match is successful if the
+ sub-expression on either side of <span class="QUOTE">"|"</span> matches. As an example: <span class=
+ "QUOTE">"/(this|that) example/"</span> uses grouping and the bar character and would match either
+ <span class="QUOTE">"this example"</span> or <span class="QUOTE">"that example"</span>, and nothing
+ else.</td>
</tr>
</tbody>
</table>
- <p>These are just some of the ones you are likely to use when matching
- URLs with <span class="APPLICATION">Privoxy</span>, and is a long way
- from a definitive list. This is enough to get us started with a few
- simple examples which may be more illuminating:</p>
- <p><span class="emphasis"><i class="EMPHASIS"><tt class=
- "LITERAL">/.*/banners/.*</tt></i></span> - A simple example that uses
- the common combination of <span class="QUOTE">"."</span> and
- <span class="QUOTE">"*"</span> to denote any character, zero or more
- times. In other words, any string at all. So we start with a literal
- forward slash, then our regular expression pattern (<span class=
- "QUOTE">".*"</span>) another literal forward slash, the string
- <span class="QUOTE">"banners"</span>, another forward slash, and lastly
- another <span class="QUOTE">".*"</span>. We are building a directory
- path here. This will match any file with the path that has a directory
- named <span class="QUOTE">"banners"</span> in it. The <span class=
- "QUOTE">".*"</span> matches any characters, and this could conceivably
- be more forward slashes, so it might expand into a much longer looking
- path. For example, this could match: <span class=
- "QUOTE">"/eye/hate/spammers/banners/annoy_me_please.gif"</span>, or
- just <span class="QUOTE">"/banners/annoying.html"</span>, or almost an
- infinite number of other possible combinations, just so it has
- <span class="QUOTE">"banners"</span> in the path somewhere.</p>
+ <p>These are just some of the ones you are likely to use when matching URLs with <span class=
+ "APPLICATION">Privoxy</span>, and is a long way from a definitive list. This is enough to get us started with a
+ few simple examples which may be more illuminating:</p>
+ <p><span class="emphasis"><i class="EMPHASIS"><tt class="LITERAL">/.*/banners/.*</tt></i></span> - A simple
+ example that uses the common combination of <span class="QUOTE">"."</span> and <span class="QUOTE">"*"</span> to
+ denote any character, zero or more times. In other words, any string at all. So we start with a literal forward
+ slash, then our regular expression pattern (<span class="QUOTE">".*"</span>) another literal forward slash, the
+ string <span class="QUOTE">"banners"</span>, another forward slash, and lastly another <span class=
+ "QUOTE">".*"</span>. We are building a directory path here. This will match any file with the path that has a
+ directory named <span class="QUOTE">"banners"</span> in it. The <span class="QUOTE">".*"</span> matches any
+ characters, and this could conceivably be more forward slashes, so it might expand into a much longer looking
+ path. For example, this could match: <span class="QUOTE">"/eye/hate/spammers/banners/annoy_me_please.gif"</span>,
+ or just <span class="QUOTE">"/banners/annoying.html"</span>, or almost an infinite number of other possible
+ combinations, just so it has <span class="QUOTE">"banners"</span> in the path somewhere.</p>
<p>And now something a little more complex:</p>
<p><span class="emphasis"><i class="EMPHASIS"><tt class=
- "LITERAL">/.*/adv((er)?ts?|ertis(ing|ements?))?/</tt></i></span> - We
- have several literal forward slashes again (<span class=
- "QUOTE">"/"</span>), so we are building another expression that is a
- file path statement. We have another <span class="QUOTE">".*"</span>,
- so we are matching against any conceivable sub-path, just so it matches
- our expression. The only true literal that <span class=
- "emphasis"><i class="EMPHASIS">must match</i></span> our pattern is
- <span class="APPLICATION">adv</span>, together with the forward
- slashes. What comes after the <span class="QUOTE">"adv"</span> string
- is the interesting part.</p>
- <p>Remember the <span class="QUOTE">"?"</span> means the preceding
- expression (either a literal character or anything grouped with
- <span class="QUOTE">"(...)"</span> in this case) can exist or not,
- since this means either zero or one match. So <span class=
- "QUOTE">"((er)?ts?|ertis(ing|ements?))"</span> is optional, as are the
- individual sub-expressions: <span class="QUOTE">"(er)"</span>,
- <span class="QUOTE">"(ing|ements?)"</span>, and the <span class=
- "QUOTE">"s"</span>. The <span class="QUOTE">"|"</span> means
- <span class="QUOTE">"or"</span>. We have two of those. For instance,
- <span class="QUOTE">"(ing|ements?)"</span>, can expand to match either
- <span class="QUOTE">"ing"</span> <span class="emphasis"><i class=
- "EMPHASIS">OR</i></span> <span class="QUOTE">"ements?"</span>. What is
- being done here, is an attempt at matching as many variations of
- <span class="QUOTE">"advertisement"</span>, and similar, as possible.
- So this would expand to match just <span class="QUOTE">"adv"</span>, or
- <span class="QUOTE">"advert"</span>, or <span class=
- "QUOTE">"adverts"</span>, or <span class="QUOTE">"advertising"</span>,
- or <span class="QUOTE">"advertisement"</span>, or <span class=
- "QUOTE">"advertisements"</span>. You get the idea. But it would not
- match <span class="QUOTE">"advertizements"</span> (with a <span class=
- "QUOTE">"z"</span>). We could fix that by changing our regular
- expression to: <span class=
- "QUOTE">"/.*/adv((er)?ts?|erti(s|z)(ing|ements?))?/"</span>, which
- would then match either spelling.</p>
- <p><span class="emphasis"><i class="EMPHASIS"><tt class=
- "LITERAL">/.*/advert[0-9]+\.(gif|jpe?g)</tt></i></span> - Again another
- path statement with forward slashes. Anything in the square brackets
- <span class="QUOTE">"[ ]"</span> can be matched. This is using
- <span class="QUOTE">"0-9"</span> as a shorthand expression to mean any
- digit one through nine. It is the same as saying <span class=
- "QUOTE">"0123456789"</span>. So any digit matches. The <span class=
- "QUOTE">"+"</span> means one or more of the preceding expression must
- be included. The preceding expression here is what is in the square
- brackets -- in this case, any digit one through nine. Then, at the end,
- we have a grouping: <span class="QUOTE">"(gif|jpe?g)"</span>. This
- includes a <span class="QUOTE">"|"</span>, so this needs to match the
- expression on either side of that bar character also. A simple
- <span class="QUOTE">"gif"</span> on one side, and the other side will
- in turn match either <span class="QUOTE">"jpeg"</span> or <span class=
- "QUOTE">"jpg"</span>, since the <span class="QUOTE">"?"</span> means
- the letter <span class="QUOTE">"e"</span> is optional and can be
- matched once or not at all. So we are building an expression here to
- match image GIF or JPEG type image file. It must include the literal
- string <span class="QUOTE">"advert"</span>, then one or more digits,
- and a <span class="QUOTE">"."</span> (which is now a literal, and not a
- special character, since it is escaped with <span class=
- "QUOTE">"\"</span>), and lastly either <span class=
- "QUOTE">"gif"</span>, or <span class="QUOTE">"jpeg"</span>, or
- <span class="QUOTE">"jpg"</span>. Some possible matches would include:
- <span class="QUOTE">"//advert1.jpg"</span>, <span class=
- "QUOTE">"/nasty/ads/advert1234.gif"</span>, <span class=
- "QUOTE">"/banners/from/hell/advert99.jpg"</span>. It would not match
- <span class="QUOTE">"advert1.gif"</span> (no leading slash), or
- <span class="QUOTE">"/adverts232.jpg"</span> (the expression does not
- include an <span class="QUOTE">"s"</span>), or <span class=
- "QUOTE">"/advert1.jsp"</span> (<span class="QUOTE">"jsp"</span> is not
- in the expression anywhere).</p>
- <p>We are barely scratching the surface of regular expressions here so
- that you can understand the default <span class=
- "APPLICATION">Privoxy</span> configuration files, and maybe use this
- knowledge to customize your own installation. There is much, much more
- that can be done with regular expressions. Now that you know enough to
- get started, you can learn more on your own :/</p>
- <p>More reading on Perl Compatible Regular expressions: <a href=
- "http://perldoc.perl.org/perlre.html" target=
+ "LITERAL">/.*/adv((er)?ts?|ertis(ing|ements?))?/</tt></i></span> - We have several literal forward slashes again
+ (<span class="QUOTE">"/"</span>), so we are building another expression that is a file path statement. We have
+ another <span class="QUOTE">".*"</span>, so we are matching against any conceivable sub-path, just so it matches
+ our expression. The only true literal that <span class="emphasis"><i class="EMPHASIS">must match</i></span> our
+ pattern is <span class="APPLICATION">adv</span>, together with the forward slashes. What comes after the
+ <span class="QUOTE">"adv"</span> string is the interesting part.</p>
+ <p>Remember the <span class="QUOTE">"?"</span> means the preceding expression (either a literal character or
+ anything grouped with <span class="QUOTE">"(...)"</span> in this case) can exist or not, since this means either
+ zero or one match. So <span class="QUOTE">"((er)?ts?|ertis(ing|ements?))"</span> is optional, as are the
+ individual sub-expressions: <span class="QUOTE">"(er)"</span>, <span class="QUOTE">"(ing|ements?)"</span>, and
+ the <span class="QUOTE">"s"</span>. The <span class="QUOTE">"|"</span> means <span class="QUOTE">"or"</span>. We
+ have two of those. For instance, <span class="QUOTE">"(ing|ements?)"</span>, can expand to match either
+ <span class="QUOTE">"ing"</span> <span class="emphasis"><i class="EMPHASIS">OR</i></span> <span class=
+ "QUOTE">"ements?"</span>. What is being done here, is an attempt at matching as many variations of <span class=
+ "QUOTE">"advertisement"</span>, and similar, as possible. So this would expand to match just <span class=
+ "QUOTE">"adv"</span>, or <span class="QUOTE">"advert"</span>, or <span class="QUOTE">"adverts"</span>, or
+ <span class="QUOTE">"advertising"</span>, or <span class="QUOTE">"advertisement"</span>, or <span class=
+ "QUOTE">"advertisements"</span>. You get the idea. But it would not match <span class=
+ "QUOTE">"advertizements"</span> (with a <span class="QUOTE">"z"</span>). We could fix that by changing our
+ regular expression to: <span class="QUOTE">"/.*/adv((er)?ts?|erti(s|z)(ing|ements?))?/"</span>, which would then
+ match either spelling.</p>
+ <p><span class="emphasis"><i class="EMPHASIS"><tt class="LITERAL">/.*/advert[0-9]+\.(gif|jpe?g)</tt></i></span> -
+ Again another path statement with forward slashes. Anything in the square brackets <span class="QUOTE">"[
+ ]"</span> can be matched. This is using <span class="QUOTE">"0-9"</span> as a shorthand expression to mean any
+ digit one through nine. It is the same as saying <span class="QUOTE">"0123456789"</span>. So any digit matches.
+ The <span class="QUOTE">"+"</span> means one or more of the preceding expression must be included. The preceding
+ expression here is what is in the square brackets -- in this case, any digit one through nine. Then, at the end,
+ we have a grouping: <span class="QUOTE">"(gif|jpe?g)"</span>. This includes a <span class="QUOTE">"|"</span>, so
+ this needs to match the expression on either side of that bar character also. A simple <span class=
+ "QUOTE">"gif"</span> on one side, and the other side will in turn match either <span class="QUOTE">"jpeg"</span>
+ or <span class="QUOTE">"jpg"</span>, since the <span class="QUOTE">"?"</span> means the letter <span class=
+ "QUOTE">"e"</span> is optional and can be matched once or not at all. So we are building an expression here to
+ match image GIF or JPEG type image file. It must include the literal string <span class="QUOTE">"advert"</span>,
+ then one or more digits, and a <span class="QUOTE">"."</span> (which is now a literal, and not a special
+ character, since it is escaped with <span class="QUOTE">"\"</span>), and lastly either <span class=
+ "QUOTE">"gif"</span>, or <span class="QUOTE">"jpeg"</span>, or <span class="QUOTE">"jpg"</span>. Some possible
+ matches would include: <span class="QUOTE">"//advert1.jpg"</span>, <span class=
+ "QUOTE">"/nasty/ads/advert1234.gif"</span>, <span class="QUOTE">"/banners/from/hell/advert99.jpg"</span>. It
+ would not match <span class="QUOTE">"advert1.gif"</span> (no leading slash), or <span class=
+ "QUOTE">"/adverts232.jpg"</span> (the expression does not include an <span class="QUOTE">"s"</span>), or
+ <span class="QUOTE">"/advert1.jsp"</span> (<span class="QUOTE">"jsp"</span> is not in the expression
+ anywhere).</p>
+ <p>We are barely scratching the surface of regular expressions here so that you can understand the default
+ <span class="APPLICATION">Privoxy</span> configuration files, and maybe use this knowledge to customize your own
+ installation. There is much, much more that can be done with regular expressions. Now that you know enough to get
+ started, you can learn more on your own :/</p>
+ <p>More reading on Perl Compatible Regular expressions: <a href="http://perldoc.perl.org/perlre.html" target=
"_top">http://perldoc.perl.org/perlre.html</a></p>
- <p>For information on regular expression based substitutions and their
- applications in filters, please see the <a href=
- "filter-file.html">filter file tutorial</a> in this manual.</p>
+ <p>For information on regular expression based substitutions and their applications in filters, please see the
+ <a href="filter-file.html">filter file tutorial</a> in this manual.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="INTERNAL-PAGES" id="INTERNAL-PAGES">14.2.
- Privoxy's Internal Pages</a></h2>
- <p>Since <span class="APPLICATION">Privoxy</span> proxies each
- requested web page, it is easy for <span class=
- "APPLICATION">Privoxy</span> to trap certain special URLs. In this way,
- we can talk directly to <span class="APPLICATION">Privoxy</span>, and
- see how it is configured, see how our rules are being applied, change
- these rules and other configuration options, and even turn <span class=
- "APPLICATION">Privoxy's</span> filtering off, all with a web
- browser.</p>
- <p>The URLs listed below are the special ones that allow direct access
- to <span class="APPLICATION">Privoxy</span>. Of course, <span class=
- "APPLICATION">Privoxy</span> must be running to access these. If not,
- you will get a friendly error message. Internet access is not necessary
- either.</p>
+ <h2 class="SECT2"><a name="INTERNAL-PAGES" id="INTERNAL-PAGES">14.2. Privoxy's Internal Pages</a></h2>
+ <p>Since <span class="APPLICATION">Privoxy</span> proxies each requested web page, it is easy for <span class=
+ "APPLICATION">Privoxy</span> to trap certain special URLs. In this way, we can talk directly to <span class=
+ "APPLICATION">Privoxy</span>, and see how it is configured, see how our rules are being applied, change these
+ rules and other configuration options, and even turn <span class="APPLICATION">Privoxy's</span> filtering off,
+ all with a web browser.</p>
+ <p>The URLs listed below are the special ones that allow direct access to <span class=
+ "APPLICATION">Privoxy</span>. Of course, <span class="APPLICATION">Privoxy</span> must be running to access
+ these. If not, you will get a friendly error message. Internet access is not necessary either.</p>
<ul>
<li>
<p>Privoxy main page:</p><a name="AEN6099" id="AEN6099"></a>
<blockquote class="BLOCKQUOTE">
- <p><a href="http://config.privoxy.org/" target=
- "_top">http://config.privoxy.org/</a></p>
+ <p><a href="http://config.privoxy.org/" target="_top">http://config.privoxy.org/</a></p>
</blockquote>
- <p>There is a shortcut: <a href="http://p.p/" target=
- "_top">http://p.p/</a> (But it doesn't provide a fall-back to a
- real page, in case the request is not sent through <span class=
+ <p>There is a shortcut: <a href="http://p.p/" target="_top">http://p.p/</a> (But it doesn't provide a
+ fall-back to a real page, in case the request is not sent through <span class=
"APPLICATION">Privoxy</span>)</p>
</li>
<li>
- <p>Show information about the current configuration, including
- viewing and editing of actions files:</p><a name="AEN6107" id=
- "AEN6107"></a>
+ <p>Show information about the current configuration, including viewing and editing of actions
+ files:</p><a name="AEN6107" id="AEN6107"></a>
<blockquote class="BLOCKQUOTE">
<p><a href="http://config.privoxy.org/show-status" target=
"_top">http://config.privoxy.org/show-status</a></p>
</blockquote>
</li>
<li>
- <p>Show the source code version numbers:</p><a name="AEN6112" id=
- "AEN6112"></a>
+ <p>Show the source code version numbers:</p><a name="AEN6112" id="AEN6112"></a>
<blockquote class="BLOCKQUOTE">
<p><a href="http://config.privoxy.org/show-version" target=
"_top">http://config.privoxy.org/show-version</a></p>
</blockquote>
</li>
<li>
- <p>Show the browser's request headers:</p><a name="AEN6117" id=
- "AEN6117"></a>
+ <p>Show the browser's request headers:</p><a name="AEN6117" id="AEN6117"></a>
<blockquote class="BLOCKQUOTE">
<p><a href="http://config.privoxy.org/show-request" target=
"_top">http://config.privoxy.org/show-request</a></p>
</blockquote>
</li>
<li>
- <p>Show which actions apply to a URL and why:</p><a name="AEN6122"
- id="AEN6122"></a>
+ <p>Show which actions apply to a URL and why:</p><a name="AEN6122" id="AEN6122"></a>
<blockquote class="BLOCKQUOTE">
<p><a href="http://config.privoxy.org/show-url-info" target=
"_top">http://config.privoxy.org/show-url-info</a></p>
</blockquote>
</li>
<li>
- <p>Toggle Privoxy on or off. This feature can be turned off/on in
- the main <tt class="FILENAME">config</tt> file. When toggled
- <span class="QUOTE">"off"</span>, <span class=
- "QUOTE">"Privoxy"</span> continues to run, but only as a
- pass-through proxy, with no actions taking place:</p><a name=
- "AEN6130" id="AEN6130"></a>
+ <p>Toggle Privoxy on or off. This feature can be turned off/on in the main <tt class="FILENAME">config</tt>
+ file. When toggled <span class="QUOTE">"off"</span>, <span class="QUOTE">"Privoxy"</span> continues to run,
+ but only as a pass-through proxy, with no actions taking place:</p><a name="AEN6130" id="AEN6130"></a>
<blockquote class="BLOCKQUOTE">
- <p><a href="http://config.privoxy.org/toggle" target=
- "_top">http://config.privoxy.org/toggle</a></p>
+ <p><a href="http://config.privoxy.org/toggle" target="_top">http://config.privoxy.org/toggle</a></p>
</blockquote>
- <p>Short cuts. Turn off, then on:</p><a name="AEN6134" id=
- "AEN6134"></a>
+ <p>Short cuts. Turn off, then on:</p><a name="AEN6134" id="AEN6134"></a>
<blockquote class="BLOCKQUOTE">
<p><a href="http://config.privoxy.org/toggle?set=disable" target=
"_top">http://config.privoxy.org/toggle?set=disable</a></p>
</ul>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="CHAIN" id="CHAIN">14.3. Chain of
- Events</a></h2>
- <p>Let's take a quick look at how some of <span class=
- "APPLICATION">Privoxy's</span> core features are triggered, and the
- ensuing sequence of events when a web page is requested by your
- browser:</p>
+ <h2 class="SECT2"><a name="CHAIN" id="CHAIN">14.3. Chain of Events</a></h2>
+ <p>Let's take a quick look at how some of <span class="APPLICATION">Privoxy's</span> core features are triggered,
+ and the ensuing sequence of events when a web page is requested by your browser:</p>
<ul>
<li>
- <p>First, your web browser requests a web page. The browser knows
- to send the request to <span class="APPLICATION">Privoxy</span>,
- which will in turn, relay the request to the remote web server
- after passing the following tests:</p>
+ <p>First, your web browser requests a web page. The browser knows to send the request to <span class=
+ "APPLICATION">Privoxy</span>, which will in turn, relay the request to the remote web server after passing
+ the following tests:</p>
</li>
<li>
- <p><span class="APPLICATION">Privoxy</span> traps any request for
- its own internal CGI pages (e.g <a href="http://p.p/" target=
- "_top">http://p.p/</a>) and sends the CGI page back to the
- browser.</p>
+ <p><span class="APPLICATION">Privoxy</span> traps any request for its own internal CGI pages (e.g <a href=
+ "http://p.p/" target="_top">http://p.p/</a>) and sends the CGI page back to the browser.</p>
</li>
<li>
- <p>Next, <span class="APPLICATION">Privoxy</span> checks to see if
- the URL matches any <a href="actions-file.html#BLOCK"><span class=
- "QUOTE">"+block"</span></a> patterns. If so, the URL is then
- blocked, and the remote web server will not be contacted. <a href=
- "actions-file.html#HANDLE-AS-IMAGE"><span class=
- "QUOTE">"+handle-as-image"</span></a> and <a href=
- "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT"><span class=
- "QUOTE">"+handle-as-empty-document"</span></a> are then checked,
- and if there is no match, an HTML <span class=
- "QUOTE">"BLOCKED"</span> page is sent back to the browser.
- Otherwise, if it does match, an image is returned for the former,
- and an empty text document for the latter. The type of image would
- depend on the setting of <a href=
- "actions-file.html#SET-IMAGE-BLOCKER"><span class=
- "QUOTE">"+set-image-blocker"</span></a> (blank, checkerboard
- pattern, or an HTTP redirect to an image elsewhere).</p>
+ <p>Next, <span class="APPLICATION">Privoxy</span> checks to see if the URL matches any <a href=
+ "actions-file.html#BLOCK"><span class="QUOTE">"+block"</span></a> patterns. If so, the URL is then blocked,
+ and the remote web server will not be contacted. <a href="actions-file.html#HANDLE-AS-IMAGE"><span class=
+ "QUOTE">"+handle-as-image"</span></a> and <a href="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT"><span class=
+ "QUOTE">"+handle-as-empty-document"</span></a> are then checked, and if there is no match, an HTML
+ <span class="QUOTE">"BLOCKED"</span> page is sent back to the browser. Otherwise, if it does match, an image
+ is returned for the former, and an empty text document for the latter. The type of image would depend on the
+ setting of <a href="actions-file.html#SET-IMAGE-BLOCKER"><span class="QUOTE">"+set-image-blocker"</span></a>
+ (blank, checkerboard pattern, or an HTTP redirect to an image elsewhere).</p>
</li>
<li>
- <p>Untrusted URLs are blocked. If URLs are being added to the
- <tt class="FILENAME">trust</tt> file, then that is done.</p>
+ <p>Untrusted URLs are blocked. If URLs are being added to the <tt class="FILENAME">trust</tt> file, then that
+ is done.</p>
</li>
<li>
- <p>If the URL pattern matches the <a href=
- "actions-file.html#FAST-REDIRECTS"><span class=
- "QUOTE">"+fast-redirects"</span></a> action, it is then processed.
- Unwanted parts of the requested URL are stripped.</p>
+ <p>If the URL pattern matches the <a href="actions-file.html#FAST-REDIRECTS"><span class=
+ "QUOTE">"+fast-redirects"</span></a> action, it is then processed. Unwanted parts of the requested URL are
+ stripped.</p>
</li>
<li>
- <p>Now the rest of the client browser's request headers are
- processed. If any of these match any of the relevant actions (e.g.
- <a href="actions-file.html#HIDE-USER-AGENT"><span class=
- "QUOTE">"+hide-user-agent"</span></a>, etc.), headers are
- suppressed or forged as determined by these actions and their
- parameters.</p>
+ <p>Now the rest of the client browser's request headers are processed. If any of these match any of the
+ relevant actions (e.g. <a href="actions-file.html#HIDE-USER-AGENT"><span class=
+ "QUOTE">"+hide-user-agent"</span></a>, etc.), headers are suppressed or forged as determined by these actions
+ and their parameters.</p>
</li>
<li>
- <p>Now the web server starts sending its response back (i.e.
- typically a web page).</p>
+ <p>Now the web server starts sending its response back (i.e. typically a web page).</p>
</li>
<li>
- <p>First, the server headers are read and processed to determine,
- among other things, the MIME type (document type) and encoding. The
- headers are then filtered as determined by the <a href=
- "actions-file.html#CRUNCH-INCOMING-COOKIES"><span class=
- "QUOTE">"+crunch-incoming-cookies"</span></a>, <a href=
- "actions-file.html#SESSION-COOKIES-ONLY"><span class=
- "QUOTE">"+session-cookies-only"</span></a>, and <a href=
- "actions-file.html#DOWNGRADE-HTTP-VERSION"><span class=
- "QUOTE">"+downgrade-http-version"</span></a> actions.</p>
+ <p>First, the server headers are read and processed to determine, among other things, the MIME type (document
+ type) and encoding. The headers are then filtered as determined by the <a href=
+ "actions-file.html#CRUNCH-INCOMING-COOKIES"><span class="QUOTE">"+crunch-incoming-cookies"</span></a>,
+ <a href="actions-file.html#SESSION-COOKIES-ONLY"><span class="QUOTE">"+session-cookies-only"</span></a>, and
+ <a href="actions-file.html#DOWNGRADE-HTTP-VERSION"><span class="QUOTE">"+downgrade-http-version"</span></a>
+ actions.</p>
</li>
<li>
- <p>If any <a href="actions-file.html#FILTER"><span class=
- "QUOTE">"+filter"</span></a> action or <a href=
- "actions-file.html#DEANIMATE-GIFS"><span class=
- "QUOTE">"+deanimate-gifs"</span></a> action applies (and the
- document type fits the action), the rest of the page is read into
- memory (up to a configurable limit). Then the filter rules (from
- <tt class="FILENAME">default.filter</tt> and any other filter
- files) are processed against the buffered content. Filters are
- applied in the order they are specified in one of the filter files.
- Animated GIFs, if present, are reduced to either the first or last
- frame, depending on the action setting.The entire page, which is
- now filtered, is then sent by <span class=
- "APPLICATION">Privoxy</span> back to your browser.</p>
- <p>If neither a <a href="actions-file.html#FILTER"><span class=
- "QUOTE">"+filter"</span></a> action or <a href=
- "actions-file.html#DEANIMATE-GIFS"><span class=
- "QUOTE">"+deanimate-gifs"</span></a> matches, then <span class=
- "APPLICATION">Privoxy</span> passes the raw data through to the
- client browser as it becomes available.</p>
+ <p>If any <a href="actions-file.html#FILTER"><span class="QUOTE">"+filter"</span></a> action or <a href=
+ "actions-file.html#DEANIMATE-GIFS"><span class="QUOTE">"+deanimate-gifs"</span></a> action applies (and the
+ document type fits the action), the rest of the page is read into memory (up to a configurable limit). Then
+ the filter rules (from <tt class="FILENAME">default.filter</tt> and any other filter files) are processed
+ against the buffered content. Filters are applied in the order they are specified in one of the filter files.
+ Animated GIFs, if present, are reduced to either the first or last frame, depending on the action setting.The
+ entire page, which is now filtered, is then sent by <span class="APPLICATION">Privoxy</span> back to your
+ browser.</p>
+ <p>If neither a <a href="actions-file.html#FILTER"><span class="QUOTE">"+filter"</span></a> action or
+ <a href="actions-file.html#DEANIMATE-GIFS"><span class="QUOTE">"+deanimate-gifs"</span></a> matches, then
+ <span class="APPLICATION">Privoxy</span> passes the raw data through to the client browser as it becomes
+ available.</p>
</li>
<li>
- <p>As the browser receives the now (possibly filtered) page
- content, it reads and then requests any URLs that may be embedded
- within the page source, e.g. ad images, stylesheets, JavaScript,
- other HTML documents (e.g. frames), sounds, etc. For each of these
- objects, the browser issues a separate request (this is easily
- viewable in <span class="APPLICATION">Privoxy's</span> logs). And
- each such request is in turn processed just as above. Note that a
- complex web page will have many, many such embedded URLs. If these
- secondary requests are to a different server, then quite possibly a
- very differing set of actions is triggered.</p>
+ <p>As the browser receives the now (possibly filtered) page content, it reads and then requests any URLs that
+ may be embedded within the page source, e.g. ad images, stylesheets, JavaScript, other HTML documents (e.g.
+ frames), sounds, etc. For each of these objects, the browser issues a separate request (this is easily
+ viewable in <span class="APPLICATION">Privoxy's</span> logs). And each such request is in turn processed just
+ as above. Note that a complex web page will have many, many such embedded URLs. If these secondary requests
+ are to a different server, then quite possibly a very differing set of actions is triggered.</p>
</li>
</ul>
- <p>NOTE: This is somewhat of a simplistic overview of what happens with
- each URL request. For the sake of brevity and simplicity, we have
- focused on <span class="APPLICATION">Privoxy's</span> core features
- only.</p>
+ <p>NOTE: This is somewhat of a simplistic overview of what happens with each URL request. For the sake of brevity
+ and simplicity, we have focused on <span class="APPLICATION">Privoxy's</span> core features only.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="ACTIONSANAT" id="ACTIONSANAT">14.4.
- Troubleshooting: Anatomy of an Action</a></h2>
- <p>The way <span class="APPLICATION">Privoxy</span> applies <a href=
- "actions-file.html#ACTIONS">actions</a> and <a href=
- "actions-file.html#FILTER">filters</a> to any given URL can be complex,
- and not always so easy to understand what is happening. And sometimes
- we need to be able to <span class="emphasis"><i class=
- "EMPHASIS">see</i></span> just what <span class=
- "APPLICATION">Privoxy</span> is doing. Especially, if something
- <span class="APPLICATION">Privoxy</span> is doing is causing us a
- problem inadvertently. It can be a little daunting to look at the
- actions and filters files themselves, since they tend to be filled with
- <a href="appendix.html#REGEX">regular expressions</a> whose
- consequences are not always so obvious.</p>
- <p>One quick test to see if <span class="APPLICATION">Privoxy</span> is
- causing a problem or not, is to disable it temporarily. This should be
- the first troubleshooting step (be sure to flush caches afterward!).
- Looking at the logs is a good idea too. (Note that both the toggle
- feature and logging are enabled via <tt class="FILENAME">config</tt>
- file settings, and may need to be turned <span class=
- "QUOTE">"on"</span>.)</p>
- <p>Another easy troubleshooting step to try is if you have done any
- customization of your installation, revert back to the installed
- defaults and see if that helps. There are times the developers get
- complaints about one thing or another, and the problem is more related
- to a customized configuration issue.</p>
- <p><span class="APPLICATION">Privoxy</span> also provides the <a href=
- "http://config.privoxy.org/show-url-info" target=
- "_top">http://config.privoxy.org/show-url-info</a> page that can show
- us very specifically how <span class="APPLICATION">actions</span> are
- being applied to any given URL. This is a big help for
+ <h2 class="SECT2"><a name="ACTIONSANAT" id="ACTIONSANAT">14.4. Troubleshooting: Anatomy of an Action</a></h2>
+ <p>The way <span class="APPLICATION">Privoxy</span> applies <a href="actions-file.html#ACTIONS">actions</a> and
+ <a href="actions-file.html#FILTER">filters</a> to any given URL can be complex, and not always so easy to
+ understand what is happening. And sometimes we need to be able to <span class="emphasis"><i class=
+ "EMPHASIS">see</i></span> just what <span class="APPLICATION">Privoxy</span> is doing. Especially, if something
+ <span class="APPLICATION">Privoxy</span> is doing is causing us a problem inadvertently. It can be a little
+ daunting to look at the actions and filters files themselves, since they tend to be filled with <a href=
+ "appendix.html#REGEX">regular expressions</a> whose consequences are not always so obvious.</p>
+ <p>One quick test to see if <span class="APPLICATION">Privoxy</span> is causing a problem or not, is to disable
+ it temporarily. This should be the first troubleshooting step (be sure to flush caches afterward!). Looking at
+ the logs is a good idea too. (Note that both the toggle feature and logging are enabled via <tt class=
+ "FILENAME">config</tt> file settings, and may need to be turned <span class="QUOTE">"on"</span>.)</p>
+ <p>Another easy troubleshooting step to try is if you have done any customization of your installation, revert
+ back to the installed defaults and see if that helps. There are times the developers get complaints about one
+ thing or another, and the problem is more related to a customized configuration issue.</p>
+ <p><span class="APPLICATION">Privoxy</span> also provides the <a href="http://config.privoxy.org/show-url-info"
+ target="_top">http://config.privoxy.org/show-url-info</a> page that can show us very specifically how
+ <span class="APPLICATION">actions</span> are being applied to any given URL. This is a big help for
troubleshooting.</p>
- <p>First, enter one URL (or partial URL) at the prompt, and then
- <span class="APPLICATION">Privoxy</span> will tell us how the current
- configuration will handle it. This will not help with filtering effects
- (i.e. the <a href="actions-file.html#FILTER"><span class=
- "QUOTE">"+filter"</span></a> action) from one of the filter files since
- this is handled very differently and not so easy to trap! It also will
- not tell you about any other URLs that may be embedded within the URL
- you are testing. For instance, images such as ads are expressed as URLs
- within the raw page source of HTML pages. So you will only get info for
- the actual URL that is pasted into the prompt area -- not any sub-URLs.
- If you want to know about embedded URLs like ads, you will have to dig
- those out of the HTML source. Use your browser's <span class=
- "QUOTE">"View Page Source"</span> option for this. Or right click on
- the ad, and grab the URL.</p>
- <p>Let's try an example, <a href="http://google.com" target=
- "_top">google.com</a>, and look at it one section at a time in a sample
- configuration (your real configuration may vary):</p>
+ <p>First, enter one URL (or partial URL) at the prompt, and then <span class="APPLICATION">Privoxy</span> will
+ tell us how the current configuration will handle it. This will not help with filtering effects (i.e. the
+ <a href="actions-file.html#FILTER"><span class="QUOTE">"+filter"</span></a> action) from one of the filter files
+ since this is handled very differently and not so easy to trap! It also will not tell you about any other URLs
+ that may be embedded within the URL you are testing. For instance, images such as ads are expressed as URLs
+ within the raw page source of HTML pages. So you will only get info for the actual URL that is pasted into the
+ prompt area -- not any sub-URLs. If you want to know about embedded URLs like ads, you will have to dig those out
+ of the HTML source. Use your browser's <span class="QUOTE">"View Page Source"</span> option for this. Or right
+ click on the ad, and grab the URL.</p>
+ <p>Let's try an example, <a href="http://google.com" target="_top">google.com</a>, and look at it one section at
+ a time in a sample configuration (your real configuration may vary):</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
<pre class="SCREEN"> Matches for http://www.google.com:
- In file: default.action <span class="GUIBUTTON">[ View ]</span> <span class=
-"GUIBUTTON">[ Edit ]</span>
+ In file: default.action <span class="GUIBUTTON">[ View ]</span> <span class="GUIBUTTON">[ Edit ]</span>
{+change-x-forwarded-for{block}
+deanimate-gifs {last}
{ -fast-redirects }
.google.com
-In file: user.action <span class="GUIBUTTON">[ View ]</span> <span class=
-"GUIBUTTON">[ Edit ]</span>
+In file: user.action <span class="GUIBUTTON">[ View ]</span> <span class="GUIBUTTON">[ Edit ]</span>
(no matches in this file)</pre>
</td>
</tr>
</table>
- <p>This is telling us how we have defined our <a href=
- "actions-file.html#ACTIONS"><span class="QUOTE">"actions"</span></a>,
- and which ones match for our test case, <span class=
- "QUOTE">"google.com"</span>. Displayed is all the actions that are
- available to us. Remember, the <tt class="LITERAL">+</tt> sign denotes
- <span class="QUOTE">"on"</span>. <tt class="LITERAL">-</tt> denotes
- <span class="QUOTE">"off"</span>. So some are <span class=
- "QUOTE">"on"</span> here, but many are <span class=
- "QUOTE">"off"</span>. Each example we try may provide a slightly
- different end result, depending on our configuration directives.</p>
- <p>The first listing is for our <tt class=
- "FILENAME">default.action</tt> file. The large, multi-line listing, is
- how the actions are set to match for all URLs, i.e. our default
- settings. If you look at your <span class="QUOTE">"actions"</span>
- file, this would be the section just below the <span class=
- "QUOTE">"aliases"</span> section near the top. This will apply to all
- URLs as signified by the single forward slash at the end of the listing
- -- <span class="QUOTE">" / "</span>.</p>
- <p>But we have defined additional actions that would be exceptions to
- these general rules, and then we list specific URLs (or patterns) that
- these exceptions would apply to. Last match wins. Just below this then
- are two explicit matches for <span class="QUOTE">".google.com"</span>.
- The first is negating our previous cookie setting, which was for
- <a href="actions-file.html#SESSION-COOKIES-ONLY"><span class=
- "QUOTE">"+session-cookies-only"</span></a> (i.e. not persistent). So we
- will allow persistent cookies for google, at least that is how it is in
- this example. The second turns <span class="emphasis"><i class=
- "EMPHASIS">off</i></span> any <a href=
- "actions-file.html#FAST-REDIRECTS"><span class=
- "QUOTE">"+fast-redirects"</span></a> action, allowing this to take
- place unmolested. Note that there is a leading dot here -- <span class=
- "QUOTE">".google.com"</span>. This will match any hosts and
- sub-domains, in the google.com domain also, such as <span class=
- "QUOTE">"www.google.com"</span> or <span class=
- "QUOTE">"mail.google.com"</span>. But it would not match <span class=
- "QUOTE">"www.google.de"</span>! So, apparently, we have these two
- actions defined as exceptions to the general rules at the top somewhere
- in the lower part of our <tt class="FILENAME">default.action</tt> file,
- and <span class="QUOTE">"google.com"</span> is referenced somewhere in
- these latter sections.</p>
- <p>Then, for our <tt class="FILENAME">user.action</tt> file, we again
- have no hits. So there is nothing google-specific that we might have
- added to our own, local configuration. If there was, those actions
- would over-rule any actions from previously processed files, such as
- <tt class="FILENAME">default.action</tt>. <tt class=
- "FILENAME">user.action</tt> typically has the last word. This is the
- best place to put hard and fast exceptions,</p>
- <p>And finally we pull it all together in the bottom section and
- summarize how <span class="APPLICATION">Privoxy</span> is applying all
- its <span class="QUOTE">"actions"</span> to <span class=
+ <p>This is telling us how we have defined our <a href="actions-file.html#ACTIONS"><span class=
+ "QUOTE">"actions"</span></a>, and which ones match for our test case, <span class="QUOTE">"google.com"</span>.
+ Displayed is all the actions that are available to us. Remember, the <tt class="LITERAL">+</tt> sign denotes
+ <span class="QUOTE">"on"</span>. <tt class="LITERAL">-</tt> denotes <span class="QUOTE">"off"</span>. So some are
+ <span class="QUOTE">"on"</span> here, but many are <span class="QUOTE">"off"</span>. Each example we try may
+ provide a slightly different end result, depending on our configuration directives.</p>
+ <p>The first listing is for our <tt class="FILENAME">default.action</tt> file. The large, multi-line listing, is
+ how the actions are set to match for all URLs, i.e. our default settings. If you look at your <span class=
+ "QUOTE">"actions"</span> file, this would be the section just below the <span class="QUOTE">"aliases"</span>
+ section near the top. This will apply to all URLs as signified by the single forward slash at the end of the
+ listing -- <span class="QUOTE">" / "</span>.</p>
+ <p>But we have defined additional actions that would be exceptions to these general rules, and then we list
+ specific URLs (or patterns) that these exceptions would apply to. Last match wins. Just below this then are two
+ explicit matches for <span class="QUOTE">".google.com"</span>. The first is negating our previous cookie setting,
+ which was for <a href="actions-file.html#SESSION-COOKIES-ONLY"><span class=
+ "QUOTE">"+session-cookies-only"</span></a> (i.e. not persistent). So we will allow persistent cookies for google,
+ at least that is how it is in this example. The second turns <span class="emphasis"><i class=
+ "EMPHASIS">off</i></span> any <a href="actions-file.html#FAST-REDIRECTS"><span class=
+ "QUOTE">"+fast-redirects"</span></a> action, allowing this to take place unmolested. Note that there is a leading
+ dot here -- <span class="QUOTE">".google.com"</span>. This will match any hosts and sub-domains, in the
+ google.com domain also, such as <span class="QUOTE">"www.google.com"</span> or <span class=
+ "QUOTE">"mail.google.com"</span>. But it would not match <span class="QUOTE">"www.google.de"</span>! So,
+ apparently, we have these two actions defined as exceptions to the general rules at the top somewhere in the
+ lower part of our <tt class="FILENAME">default.action</tt> file, and <span class="QUOTE">"google.com"</span> is
+ referenced somewhere in these latter sections.</p>
+ <p>Then, for our <tt class="FILENAME">user.action</tt> file, we again have no hits. So there is nothing
+ google-specific that we might have added to our own, local configuration. If there was, those actions would
+ over-rule any actions from previously processed files, such as <tt class="FILENAME">default.action</tt>.
+ <tt class="FILENAME">user.action</tt> typically has the last word. This is the best place to put hard and fast
+ exceptions,</p>
+ <p>And finally we pull it all together in the bottom section and summarize how <span class=
+ "APPLICATION">Privoxy</span> is applying all its <span class="QUOTE">"actions"</span> to <span class=
"QUOTE">"google.com"</span>:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>Notice the only difference here to the previous listing, is to
- <span class="QUOTE">"fast-redirects"</span> and <span class=
- "QUOTE">"session-cookies-only"</span>, which are activated specifically
- for this site in our configuration, and thus show in the <span class=
- "QUOTE">"Final Results"</span>.</p>
- <p>Now another example, <span class=
- "QUOTE">"ad.doubleclick.net"</span>:</p>
+ <p>Notice the only difference here to the previous listing, is to <span class="QUOTE">"fast-redirects"</span> and
+ <span class="QUOTE">"session-cookies-only"</span>, which are activated specifically for this site in our
+ configuration, and thus show in the <span class="QUOTE">"Final Results"</span>.</p>
+ <p>Now another example, <span class="QUOTE">"ad.doubleclick.net"</span>:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>We'll just show the interesting part here - the explicit matches. It
- is matched three different times. Two <span class=
- "QUOTE">"+block{}"</span> sections, and a <span class="QUOTE">"+block{}
- +handle-as-image"</span>, which is the expanded form of one of our
- aliases that had been defined as: <span class=
- "QUOTE">"+block-as-image"</span>. (<a href=
- "actions-file.html#ALIASES"><span class="QUOTE">"Aliases"</span></a>
- are defined in the first section of the actions file and typically used
- to combine more than one action.)</p>
- <p>Any one of these would have done the trick and blocked this as an
- unwanted image. This is unnecessarily redundant since the last case
- effectively would also cover the first. No point in taking chances with
- these guys though ;-) Note that if you want an ad or obnoxious URL to
- be invisible, it should be defined as <span class=
- "QUOTE">"ad.doubleclick.net"</span> is done here -- as both a <a href=
- "actions-file.html#BLOCK"><span class="QUOTE">"+block{}"</span></a>
- <span class="emphasis"><i class="EMPHASIS">and</i></span> an <a href=
- "actions-file.html#HANDLE-AS-IMAGE"><span class=
- "QUOTE">"+handle-as-image"</span></a>. The custom alias <span class=
- "QUOTE">"<tt class="LITERAL">+block-as-image</tt>"</span> just
- simplifies the process and make it more readable.</p>
- <p>One last example. Let's try <span class=
- "QUOTE">"http://www.example.net/adsl/HOWTO/"</span>. This one is giving
- us problems. We are getting a blank page. Hmmm ...</p>
+ <p>We'll just show the interesting part here - the explicit matches. It is matched three different times. Two
+ <span class="QUOTE">"+block{}"</span> sections, and a <span class="QUOTE">"+block{} +handle-as-image"</span>,
+ which is the expanded form of one of our aliases that had been defined as: <span class=
+ "QUOTE">"+block-as-image"</span>. (<a href="actions-file.html#ALIASES"><span class="QUOTE">"Aliases"</span></a>
+ are defined in the first section of the actions file and typically used to combine more than one action.)</p>
+ <p>Any one of these would have done the trick and blocked this as an unwanted image. This is unnecessarily
+ redundant since the last case effectively would also cover the first. No point in taking chances with these guys
+ though ;-) Note that if you want an ad or obnoxious URL to be invisible, it should be defined as <span class=
+ "QUOTE">"ad.doubleclick.net"</span> is done here -- as both a <a href="actions-file.html#BLOCK"><span class=
+ "QUOTE">"+block{}"</span></a> <span class="emphasis"><i class="EMPHASIS">and</i></span> an <a href=
+ "actions-file.html#HANDLE-AS-IMAGE"><span class="QUOTE">"+handle-as-image"</span></a>. The custom alias
+ <span class="QUOTE">"<tt class="LITERAL">+block-as-image</tt>"</span> just simplifies the process and make it
+ more readable.</p>
+ <p>One last example. Let's try <span class="QUOTE">"http://www.example.net/adsl/HOWTO/"</span>. This one is
+ giving us problems. We are getting a blank page. Hmmm ...</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
<pre class="SCREEN">
-
Matches for http://www.example.net/adsl/HOWTO/:
- In file: default.action <span class="GUIBUTTON">[ View ]</span> <span class=
-"GUIBUTTON">[ Edit ]</span>
+ In file: default.action <span class="GUIBUTTON">[ View ]</span> <span class="GUIBUTTON">[ Edit ]</span>
{-add-header
-block
</td>
</tr>
</table>
- <p>Ooops, the <span class="QUOTE">"/adsl/"</span> is matching
- <span class="QUOTE">"/ads"</span> in our configuration! But we did not
- want this at all! Now we see why we get the blank page. It is actually
- triggering two different actions here, and the effects are aggregated
- so that the URL is blocked, and <span class=
- "APPLICATION">Privoxy</span> is told to treat the block as if it were
- an image. But this is, of course, all wrong. We could now add a new
- action below this (or better in our own <tt class=
- "FILENAME">user.action</tt> file) that explicitly <span class=
- "emphasis"><i class="EMPHASIS">un</i></span> blocks ( <a href=
- "actions-file.html#BLOCK"><span class="QUOTE">"{-block}"</span></a>)
- paths with <span class="QUOTE">"adsl"</span> in them (remember, last
- match in the configuration wins). There are various ways to handle such
- exceptions. Example:</p>
+ <p>Ooops, the <span class="QUOTE">"/adsl/"</span> is matching <span class="QUOTE">"/ads"</span> in our
+ configuration! But we did not want this at all! Now we see why we get the blank page. It is actually triggering
+ two different actions here, and the effects are aggregated so that the URL is blocked, and <span class=
+ "APPLICATION">Privoxy</span> is told to treat the block as if it were an image. But this is, of course, all
+ wrong. We could now add a new action below this (or better in our own <tt class="FILENAME">user.action</tt> file)
+ that explicitly <span class="emphasis"><i class="EMPHASIS">un</i></span> blocks ( <a href=
+ "actions-file.html#BLOCK"><span class="QUOTE">"{-block}"</span></a>) paths with <span class="QUOTE">"adsl"</span>
+ in them (remember, last match in the configuration wins). There are various ways to handle such exceptions.
+ Example:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Now the page displays ;-) Remember to flush your browser's caches
- when making these kinds of changes to your configuration to insure that
- you get a freshly delivered page! Or, try using <tt class=
+ <p>Now the page displays ;-) Remember to flush your browser's caches when making these kinds of changes to your
+ configuration to insure that you get a freshly delivered page! Or, try using <tt class=
"LITERAL">Shift+Reload</tt>.</p>
- <p>But now what about a situation where we get no explicit matches like
- we did with:</p>
+ <p>But now what about a situation where we get no explicit matches like we did with:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
<pre class="SCREEN">
-
{ +block{Path starts with "ads".} +handle-as-image }
/ads</pre>
</td>
</tr>
</table>
- <p>That actually was very helpful and pointed us quickly to where the
- problem was. If you don't get this kind of match, then it means one of
- the default rules in the first section of <tt class=
- "FILENAME">default.action</tt> is causing the problem. This would
- require some guesswork, and maybe a little trial and error to isolate
- the offending rule. One likely cause would be one of the <a href=
- "actions-file.html#FILTER"><span class="QUOTE">"+filter"</span></a>
- actions. These tend to be harder to troubleshoot. Try adding the URL
- for the site to one of aliases that turn off <a href=
- "actions-file.html#FILTER"><span class=
- "QUOTE">"+filter"</span></a>:</p>
+ <p>That actually was very helpful and pointed us quickly to where the problem was. If you don't get this kind of
+ match, then it means one of the default rules in the first section of <tt class="FILENAME">default.action</tt> is
+ causing the problem. This would require some guesswork, and maybe a little trial and error to isolate the
+ offending rule. One likely cause would be one of the <a href="actions-file.html#FILTER"><span class=
+ "QUOTE">"+filter"</span></a> actions. These tend to be harder to troubleshoot. Try adding the URL for the site to
+ one of aliases that turn off <a href="actions-file.html#FILTER"><span class="QUOTE">"+filter"</span></a>:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p><span class="QUOTE">"<tt class="LITERAL">{ shop }</tt>"</span> is an
- <span class="QUOTE">"alias"</span> that expands to <span class=
- "QUOTE">"<tt class="LITERAL">{ -filter -session-cookies-only
- }</tt>"</span>. Or you could do your own exception to negate
- filtering:</p>
+ <p><span class="QUOTE">"<tt class="LITERAL">{ shop }</tt>"</span> is an <span class="QUOTE">"alias"</span> that
+ expands to <span class="QUOTE">"<tt class="LITERAL">{ -filter -session-cookies-only }</tt>"</span>. Or you could
+ do your own exception to negate filtering:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>This would turn off all filtering for these sites. This is best put
- in <tt class="FILENAME">user.action</tt>, for local site exceptions.
- Note that when a simple domain pattern is used by itself (without the
- subsequent path portion), all sub-pages within that domain are included
- automatically in the scope of the action.</p>
- <p>Images that are inexplicably being blocked, may well be hitting the
- <a href="actions-file.html#FILTER-BANNERS-BY-SIZE"><span class=
- "QUOTE">"+filter{banners-by-size}"</span></a> rule, which assumes that
- images of certain sizes are ad banners (works well <span class=
- "emphasis"><i class="EMPHASIS">most of the time</i></span> since these
- tend to be standardized).</p>
- <p><span class="QUOTE">"<tt class="LITERAL">{ fragile }</tt>"</span> is
- an alias that disables most actions that are the most likely to cause
- trouble. This can be used as a last resort for problem sites.</p>
+ <p>This would turn off all filtering for these sites. This is best put in <tt class="FILENAME">user.action</tt>,
+ for local site exceptions. Note that when a simple domain pattern is used by itself (without the subsequent path
+ portion), all sub-pages within that domain are included automatically in the scope of the action.</p>
+ <p>Images that are inexplicably being blocked, may well be hitting the <a href=
+ "actions-file.html#FILTER-BANNERS-BY-SIZE"><span class="QUOTE">"+filter{banners-by-size}"</span></a> rule, which
+ assumes that images of certain sizes are ad banners (works well <span class="emphasis"><i class="EMPHASIS">most
+ of the time</i></span> since these tend to be standardized).</p>
+ <p><span class="QUOTE">"<tt class="LITERAL">{ fragile }</tt>"</span> is an alias that disables most actions that
+ are the most likely to cause trouble. This can be used as a last resort for problem sites.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p><span class="emphasis"><i class="EMPHASIS">Remember to flush
- caches!</i></span> Note that the <tt class="LITERAL">mail.google</tt>
- reference lacks the TLD portion (e.g. <span class=
- "QUOTE">".com"</span>). This will effectively match any TLD with
- <tt class="LITERAL">google</tt> in it, such as <tt class=
+ <p><span class="emphasis"><i class="EMPHASIS">Remember to flush caches!</i></span> Note that the <tt class=
+ "LITERAL">mail.google</tt> reference lacks the TLD portion (e.g. <span class="QUOTE">".com"</span>). This will
+ effectively match any TLD with <tt class="LITERAL">google</tt> in it, such as <tt class=
"LITERAL">mail.google.de.</tt>, just as an example.</p>
- <p>If this still does not work, you will have to go through the
- remaining actions one by one to find which one(s) is causing the
- problem.</p>
+ <p>If this still does not work, you will have to go through the remaining actions one by one to find which one(s)
+ is causing the problem.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="seealso.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
+ <td width="33%" align="left" valign="top"><a href="seealso.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
<td width="33%" align="right" valign="top"> </td>
</tr>
<tr>
<html>
<head>
<title>The Main Configuration File</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
- <link rel="PREVIOUS" title="Privoxy Configuration" href=
- "configuration.html">
+ <link rel="PREVIOUS" title="Privoxy Configuration" href="configuration.html">
<link rel="NEXT" title="Actions Files" href="actions-file.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "configuration.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="configuration.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "actions-file.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="actions-file.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="CONFIG" id="CONFIG">7. The Main Configuration
- File</a></h1>
- <p>By default, the main configuration file is named <tt class=
- "FILENAME">config</tt>, with the exception of Windows, where it is named
- <tt class="FILENAME">config.txt</tt>. Configuration lines consist of an
- initial keyword followed by a list of values, all separated by whitespace
- (any number of spaces or tabs). For example:</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class=
- "emphasis"><i class="EMPHASIS">confdir /etc/privoxy</i></span></tt></p>
- <p>Assigns the value <tt class="LITERAL">/etc/privoxy</tt> to the option
- <tt class="LITERAL">confdir</tt> and thus indicates that the
- configuration directory is named <span class=
- "QUOTE">"/etc/privoxy/"</span>.</p>
- <p>All options in the config file except for <tt class=
- "LITERAL">confdir</tt> and <tt class="LITERAL">logdir</tt> are optional.
- Watch out in the below description for what happens if you leave them
- unset.</p>
- <p>The main config file controls all aspects of <span class=
- "APPLICATION">Privoxy</span>'s operation that are not location dependent
- (i.e. they apply universally, no matter where you may be surfing). Like
- the filter and action files, the config file is a plain text file and can
- be modified with a text editor like emacs, vim or notepad.exe.</p>
+ <h1 class="SECT1"><a name="CONFIG" id="CONFIG">7. The Main Configuration File</a></h1>
+ <p>By default, the main configuration file is named <tt class="FILENAME">config</tt>, with the exception of
+ Windows, where it is named <tt class="FILENAME">config.txt</tt>. Configuration lines consist of an initial keyword
+ followed by a list of values, all separated by whitespace (any number of spaces or tabs). For example:</p>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class="emphasis"><i class="EMPHASIS">confdir
+ /etc/privoxy</i></span></tt></p>
+ <p>Assigns the value <tt class="LITERAL">/etc/privoxy</tt> to the option <tt class="LITERAL">confdir</tt> and thus
+ indicates that the configuration directory is named <span class="QUOTE">"/etc/privoxy/"</span>.</p>
+ <p>All options in the config file except for <tt class="LITERAL">confdir</tt> and <tt class="LITERAL">logdir</tt>
+ are optional. Watch out in the below description for what happens if you leave them unset.</p>
+ <p>The main config file controls all aspects of <span class="APPLICATION">Privoxy</span>'s operation that are not
+ location dependent (i.e. they apply universally, no matter where you may be surfing). Like the filter and action
+ files, the config file is a plain text file and can be modified with a text editor like emacs, vim or
+ notepad.exe.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="LOCAL-SET-UP" id="LOCAL-SET-UP">7.1. Local
- Set-up Documentation</a></h2>
- <p>If you intend to operate <span class="APPLICATION">Privoxy</span>
- for more users than just yourself, it might be a good idea to let them
- know how to reach you, what you block and why you do that, your
- policies, etc.</p>
+ <h2 class="SECT2"><a name="LOCAL-SET-UP" id="LOCAL-SET-UP">7.1. Local Set-up Documentation</a></h2>
+ <p>If you intend to operate <span class="APPLICATION">Privoxy</span> for more users than just yourself, it might
+ be a good idea to let them know how to reach you, what you block and why you do that, your policies, etc.</p>
<div class="SECT3">
- <h4 class="SECT3"><a name="USER-MANUAL" id="USER-MANUAL">7.1.1.
- user-manual</a></h4>
+ <h4 class="SECT3"><a name="USER-MANUAL" id="USER-MANUAL">7.1.1. user-manual</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Location of the <span class="APPLICATION">Privoxy</span>
- User Manual.</p>
+ <p>Location of the <span class="APPLICATION">Privoxy</span> User Manual.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Default value:</dt>
<dd>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Unset</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Unset</i></span></p>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p><a href="https://www.privoxy.org/user-manual/" target=
- "_top">https://www.privoxy.org/<tt class=
- "REPLACEABLE"><i>version</i></tt>/user-manual/</a> will be
- used, where <tt class="REPLACEABLE"><i>version</i></tt> is the
- <span class="APPLICATION">Privoxy</span> version.</p>
+ <p><a href="https://www.privoxy.org/user-manual/" target="_top">https://www.privoxy.org/<tt class=
+ "REPLACEABLE"><i>version</i></tt>/user-manual/</a> will be used, where <tt class=
+ "REPLACEABLE"><i>version</i></tt> is the <span class="APPLICATION">Privoxy</span> version.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>The User Manual URI is the single best source of information
- on <span class="APPLICATION">Privoxy</span>, and is used for
- help links from some of the internal CGI pages. The manual
- itself is normally packaged with the binary distributions, so
- you probably want to set this to a locally installed copy.</p>
+ <p>The User Manual URI is the single best source of information on <span class=
+ "APPLICATION">Privoxy</span>, and is used for help links from some of the internal CGI pages. The manual
+ itself is normally packaged with the binary distributions, so you probably want to set this to a locally
+ installed copy.</p>
<p>Examples:</p>
- <p>The best all purpose solution is simply to put the full
- local <tt class="LITERAL">PATH</tt> to where the <i class=
- "CITETITLE">User Manual</i> is located:</p>
+ <p>The best all purpose solution is simply to put the full local <tt class="LITERAL">PATH</tt> to where
+ the <i class="CITETITLE">User Manual</i> is located:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- ��user-manual��/usr/share/doc/privoxy/user-manual</pre>
+ <pre class="SCREEN">��user-manual��/usr/share/doc/privoxy/user-manual</pre>
</td>
</tr>
</table>
- <p>The User Manual is then available to anyone with access to
- <span class="APPLICATION">Privoxy</span>, by following the
- built-in URL: <tt class=
- "LITERAL">http://config.privoxy.org/user-manual/</tt> (or the
- shortcut: <tt class=
- "LITERAL">http://p.p/user-manual/</tt>).</p>
- <p>If the documentation is not on the local system, it can be
- accessed from a remote server, as:</p>
+ <p>The User Manual is then available to anyone with access to <span class="APPLICATION">Privoxy</span>,
+ by following the built-in URL: <tt class="LITERAL">http://config.privoxy.org/user-manual/</tt> (or the
+ shortcut: <tt class="LITERAL">http://p.p/user-manual/</tt>).</p>
+ <p>If the documentation is not on the local system, it can be accessed from a remote server, as:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- ��user-manual��http://example.com/privoxy/user-manual/</pre>
+ <pre class="SCREEN">��user-manual��http://example.com/privoxy/user-manual/</pre>
</td>
</tr>
</table>
</tr>
<tr>
<td align="left">
- <p>If set, this option should be <span class=
- "emphasis"><i class="EMPHASIS">the first option in the
- config file</i></span>, because it is used while the
- config file is being read on start-up.</p>
+ <p>If set, this option should be <span class="emphasis"><i class="EMPHASIS">the first option in
+ the config file</i></span>, because it is used while the config file is being read on
+ start-up.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="TRUST-INFO-URL" id="TRUST-INFO-URL">7.1.2.
- trust-info-url</a></h4>
+ <h4 class="SECT3"><a name="TRUST-INFO-URL" id="TRUST-INFO-URL">7.1.2. trust-info-url</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>A URL to be displayed in the error page that users will see
- if access to an untrusted page is denied.</p>
+ <p>A URL to be displayed in the error page that users will see if access to an untrusted page is
+ denied.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Default value:</dt>
<dd>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Unset</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Unset</i></span></p>
</dd>
<dt>Effect if unset:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>The value of this option only matters if the experimental
- trust mechanism has been activated. (See <a href=
- "config.html#TRUSTFILE"><span class="emphasis"><i class=
- "EMPHASIS">trustfile</i></span></a> below.)</p>
- <p>If you use the trust mechanism, it is a good idea to write
- up some on-line documentation about your trust policy and to
- specify the URL(s) here. Use multiple times for multiple
- URLs.</p>
- <p>The URL(s) should be added to the trustfile as well, so
- users don't end up locked out from the information on why they
- were locked out in the first place!</p>
+ <p>The value of this option only matters if the experimental trust mechanism has been activated. (See
+ <a href="config.html#TRUSTFILE"><span class="emphasis"><i class="EMPHASIS">trustfile</i></span></a>
+ below.)</p>
+ <p>If you use the trust mechanism, it is a good idea to write up some on-line documentation about your
+ trust policy and to specify the URL(s) here. Use multiple times for multiple URLs.</p>
+ <p>The URL(s) should be added to the trustfile as well, so users don't end up locked out from the
+ information on why they were locked out in the first place!</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ADMIN-ADDRESS" id="ADMIN-ADDRESS">7.1.3.
- admin-address</a></h4>
+ <h4 class="SECT3"><a name="ADMIN-ADDRESS" id="ADMIN-ADDRESS">7.1.3. admin-address</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>An email address to reach the <span class=
- "APPLICATION">Privoxy</span> administrator.</p>
+ <p>An email address to reach the <span class="APPLICATION">Privoxy</span> administrator.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Default value:</dt>
<dd>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Unset</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Unset</i></span></p>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>No email address is displayed on error pages and the CGI
- user interface.</p>
+ <p>No email address is displayed on error pages and the CGI user interface.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>If both <tt class="LITERAL">admin-address</tt> and
- <tt class="LITERAL">proxy-info-url</tt> are unset, the whole
- "Local Privoxy Support" box on all generated pages will not be
- shown.</p>
+ <p>If both <tt class="LITERAL">admin-address</tt> and <tt class="LITERAL">proxy-info-url</tt> are unset,
+ the whole "Local Privoxy Support" box on all generated pages will not be shown.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="PROXY-INFO-URL" id="PROXY-INFO-URL">7.1.4.
- proxy-info-url</a></h4>
+ <h4 class="SECT3"><a name="PROXY-INFO-URL" id="PROXY-INFO-URL">7.1.4. proxy-info-url</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>A URL to documentation about the local <span class=
- "APPLICATION">Privoxy</span> setup, configuration or
- policies.</p>
+ <p>A URL to documentation about the local <span class="APPLICATION">Privoxy</span> setup, configuration
+ or policies.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Default value:</dt>
<dd>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Unset</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Unset</i></span></p>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>No link to local documentation is displayed on error pages
- and the CGI user interface.</p>
+ <p>No link to local documentation is displayed on error pages and the CGI user interface.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>If both <tt class="LITERAL">admin-address</tt> and
- <tt class="LITERAL">proxy-info-url</tt> are unset, the whole
- "Local Privoxy Support" box on all generated pages will not be
- shown.</p>
+ <p>If both <tt class="LITERAL">admin-address</tt> and <tt class="LITERAL">proxy-info-url</tt> are unset,
+ the whole "Local Privoxy Support" box on all generated pages will not be shown.</p>
<p>This URL shouldn't be blocked ;-)</p>
</dd>
</dl>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="CONF-LOG-LOC" id="CONF-LOG-LOC">7.2.
- Configuration and Log File Locations</a></h2>
- <p><span class="APPLICATION">Privoxy</span> can (and normally does) use
- a number of other files for additional configuration, help and logging.
- This section of the configuration file tells <span class=
+ <h2 class="SECT2"><a name="CONF-LOG-LOC" id="CONF-LOG-LOC">7.2. Configuration and Log File Locations</a></h2>
+ <p><span class="APPLICATION">Privoxy</span> can (and normally does) use a number of other files for additional
+ configuration, help and logging. This section of the configuration file tells <span class=
"APPLICATION">Privoxy</span> where to find those other files.</p>
- <p>The user running <span class="APPLICATION">Privoxy</span>, must have
- read permission for all configuration files, and write permission to
- any files that would be modified, such as log files and actions
- files.</p>
+ <p>The user running <span class="APPLICATION">Privoxy</span>, must have read permission for all configuration
+ files, and write permission to any files that would be modified, such as log files and actions files.</p>
<div class="SECT3">
- <h4 class="SECT3"><a name="CONFDIR" id="CONFDIR">7.2.1.
- confdir</a></h4>
+ <h4 class="SECT3"><a name="CONFDIR" id="CONFDIR">7.2.1. confdir</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>The directory where the other configuration files are
- located.</p>
+ <p>The directory where the other configuration files are located.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Default value:</dt>
<dd>
- <p>/etc/privoxy (Unix) <span class="emphasis"><i class=
- "EMPHASIS">or</i></span> <span class=
+ <p>/etc/privoxy (Unix) <span class="emphasis"><i class="EMPHASIS">or</i></span> <span class=
"APPLICATION">Privoxy</span> installation dir (Windows)</p>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Mandatory</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Mandatory</i></span></p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>No trailing <span class="QUOTE">"<tt class=
- "LITERAL">/</tt>"</span>, please.</p>
+ <p>No trailing <span class="QUOTE">"<tt class="LITERAL">/</tt>"</span>, please.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="TEMPLDIR" id="TEMPLDIR">7.2.2.
- templdir</a></h4>
+ <h4 class="SECT3"><a name="TEMPLDIR" id="TEMPLDIR">7.2.2. templdir</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>An alternative directory where the templates are loaded
- from.</p>
+ <p>An alternative directory where the templates are loaded from.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>The templates are assumed to be located in
- confdir/template.</p>
+ <p>The templates are assumed to be located in confdir/template.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p><span class="APPLICATION">Privoxy's</span> original
- templates are usually overwritten with each update. Use this
- option to relocate customized templates that should be kept. As
- template variables might change between updates, you shouldn't
- expect templates to work with <span class=
- "APPLICATION">Privoxy</span> releases other than the one they
- were part of, though.</p>
+ <p><span class="APPLICATION">Privoxy's</span> original templates are usually overwritten with each
+ update. Use this option to relocate customized templates that should be kept. As template variables might
+ change between updates, you shouldn't expect templates to work with <span class=
+ "APPLICATION">Privoxy</span> releases other than the one they were part of, though.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="TEMPORARY-DIRECTORY" id=
- "TEMPORARY-DIRECTORY">7.2.3. temporary-directory</a></h4>
+ <h4 class="SECT3"><a name="TEMPORARY-DIRECTORY" id="TEMPORARY-DIRECTORY">7.2.3. temporary-directory</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>No temporary files are created, external filters don't
- work.</p>
+ <p>No temporary files are created, external filters don't work.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>To execute <tt class="LITERAL"><a href=
- "actions-file.html#EXTERNAL-FILTER" target="_top">external
- filters</a></tt>, <span class="APPLICATION">Privoxy</span> has
- to create temporary files. This directive specifies the
- directory the temporary files should be written to.</p>
- <p>It should be a directory only <span class=
- "APPLICATION">Privoxy</span> (and trusted users) can
+ <p>To execute <tt class="LITERAL"><a href="actions-file.html#EXTERNAL-FILTER" target="_top">external
+ filters</a></tt>, <span class="APPLICATION">Privoxy</span> has to create temporary files. This directive
+ specifies the directory the temporary files should be written to.</p>
+ <p>It should be a directory only <span class="APPLICATION">Privoxy</span> (and trusted users) can
access.</p>
</dd>
</dl>
<dl>
<dt>Specifies:</dt>
<dd>
- <p>The directory where all logging takes place (i.e. where the
- <tt class="FILENAME">logfile</tt> is located).</p>
+ <p>The directory where all logging takes place (i.e. where the <tt class="FILENAME">logfile</tt> is
+ located).</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Default value:</dt>
<dd>
- <p>/var/log/privoxy (Unix) <span class="emphasis"><i class=
- "EMPHASIS">or</i></span> <span class=
+ <p>/var/log/privoxy (Unix) <span class="emphasis"><i class="EMPHASIS">or</i></span> <span class=
"APPLICATION">Privoxy</span> installation dir (Windows)</p>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Mandatory</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Mandatory</i></span></p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>No trailing <span class="QUOTE">"<tt class=
- "LITERAL">/</tt>"</span>, please.</p>
+ <p>No trailing <span class="QUOTE">"<tt class="LITERAL">/</tt>"</span>, please.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ACTIONSFILE" id="ACTIONSFILE">7.2.5.
- actionsfile</a></h4><a name="DEFAULT.ACTION" id=
- "DEFAULT.ACTION"></a><a name="STANDARD.ACTION" id=
- "STANDARD.ACTION"></a><a name="USER.ACTION" id="USER.ACTION"></a>
+ <h4 class="SECT3"><a name="ACTIONSFILE" id="ACTIONSFILE">7.2.5. actionsfile</a></h4><a name="DEFAULT.ACTION"
+ id="DEFAULT.ACTION"></a><a name="STANDARD.ACTION" id="STANDARD.ACTION"></a><a name="USER.ACTION" id=
+ "USER.ACTION"></a>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>The <a href="actions-file.html">actions file(s)</a> to
- use</p>
+ <p>The <a href="actions-file.html">actions file(s)</a> to use</p>
</dd>
<dt>Type of value:</dt>
<dd>
- <p>Complete file name, relative to <tt class=
- "LITERAL">confdir</tt></p>
+ <p>Complete file name, relative to <tt class="LITERAL">confdir</tt></p>
</dd>
<dt>Default values:</dt>
<dd>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>No actions are taken at all. More or less neutral
- proxying.</p>
+ <p>No actions are taken at all. More or less neutral proxying.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Multiple <tt class="LITERAL">actionsfile</tt> lines are
- permitted, and are in fact recommended!</p>
- <p>The default values are <tt class=
- "FILENAME">default.action</tt>, which is the <span class=
- "QUOTE">"main"</span> actions file maintained by the
- developers, and <tt class="FILENAME">user.action</tt>, where
- you can make your personal additions.</p>
- <p>Actions files contain all the per site and per URL
- configuration for ad blocking, cookie management, privacy
- considerations, etc.</p>
+ <p>Multiple <tt class="LITERAL">actionsfile</tt> lines are permitted, and are in fact recommended!</p>
+ <p>The default values are <tt class="FILENAME">default.action</tt>, which is the <span class=
+ "QUOTE">"main"</span> actions file maintained by the developers, and <tt class=
+ "FILENAME">user.action</tt>, where you can make your personal additions.</p>
+ <p>Actions files contain all the per site and per URL configuration for ad blocking, cookie management,
+ privacy considerations, etc.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="FILTERFILE" id="FILTERFILE">7.2.6.
- filterfile</a></h4><a name="DEFAULT.FILTER" id="DEFAULT.FILTER"></a>
+ <h4 class="SECT3"><a name="FILTERFILE" id="FILTERFILE">7.2.6. filterfile</a></h4><a name="DEFAULT.FILTER" id=
+ "DEFAULT.FILTER"></a>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</dd>
<dt>Default value:</dt>
<dd>
- <p>default.filter (Unix) <span class="emphasis"><i class=
- "EMPHASIS">or</i></span> default.filter.txt (Windows)</p>
+ <p>default.filter (Unix) <span class="emphasis"><i class="EMPHASIS">or</i></span> default.filter.txt
+ (Windows)</p>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>No textual content filtering takes place, i.e. all
- <tt class="LITERAL">+<a href=
- "actions-file.html#FILTER">filter</a>{<tt class=
- "REPLACEABLE"><i>name</i></tt>}</tt> actions in the actions
- files are turned neutral.</p>
+ <p>No textual content filtering takes place, i.e. all <tt class="LITERAL">+<a href=
+ "actions-file.html#FILTER">filter</a>{<tt class="REPLACEABLE"><i>name</i></tt>}</tt> actions in the
+ actions files are turned neutral.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Multiple <tt class="LITERAL">filterfile</tt> lines are
- permitted.</p>
- <p>The <a href="filter-file.html">filter files</a> contain
- content modification rules that use <a href=
- "appendix.html#REGEX">regular expressions</a>. These rules
- permit powerful changes on the content of Web pages, and
- optionally the headers as well, e.g., you could try to disable
- your favorite JavaScript annoyances, re-write the actual
- displayed text, or just have some fun playing buzzword bingo
- with web pages.</p>
- <p>The <tt class="LITERAL">+<a href=
- "actions-file.html#FILTER">filter</a>{<tt class=
- "REPLACEABLE"><i>name</i></tt>}</tt> actions rely on the
- relevant filter (<tt class="REPLACEABLE"><i>name</i></tt>) to
- be defined in a filter file!</p>
- <p>A pre-defined filter file called <tt class=
- "FILENAME">default.filter</tt> that contains a number of useful
- filters for common problems is included in the distribution.
- See the section on the <tt class="LITERAL"><a href=
- "actions-file.html#FILTER">filter</a></tt> action for a
- list.</p>
- <p>It is recommended to place any locally adapted filters into
- a separate file, such as <tt class=
+ <p>Multiple <tt class="LITERAL">filterfile</tt> lines are permitted.</p>
+ <p>The <a href="filter-file.html">filter files</a> contain content modification rules that use <a href=
+ "appendix.html#REGEX">regular expressions</a>. These rules permit powerful changes on the content of Web
+ pages, and optionally the headers as well, e.g., you could try to disable your favorite JavaScript
+ annoyances, re-write the actual displayed text, or just have some fun playing buzzword bingo with web
+ pages.</p>
+ <p>The <tt class="LITERAL">+<a href="actions-file.html#FILTER">filter</a>{<tt class=
+ "REPLACEABLE"><i>name</i></tt>}</tt> actions rely on the relevant filter (<tt class=
+ "REPLACEABLE"><i>name</i></tt>) to be defined in a filter file!</p>
+ <p>A pre-defined filter file called <tt class="FILENAME">default.filter</tt> that contains a number of
+ useful filters for common problems is included in the distribution. See the section on the <tt class=
+ "LITERAL"><a href="actions-file.html#FILTER">filter</a></tt> action for a list.</p>
+ <p>It is recommended to place any locally adapted filters into a separate file, such as <tt class=
"FILENAME">user.filter</tt>.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="LOGFILE" id="LOGFILE">7.2.7.
- logfile</a></h4>
+ <h4 class="SECT3"><a name="LOGFILE" id="LOGFILE">7.2.7. logfile</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</dd>
<dt>Default value:</dt>
<dd>
- <p><span class="emphasis"><i class="EMPHASIS">Unset (commented
- out)</i></span>. When activated: logfile (Unix) <span class=
- "emphasis"><i class="EMPHASIS">or</i></span> privoxy.log
- (Windows).</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Unset (commented out)</i></span>. When activated: logfile
+ (Unix) <span class="emphasis"><i class="EMPHASIS">or</i></span> privoxy.log (Windows).</p>
</dd>
<dt>Effect if unset:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>The logfile is where all logging and error messages are
- written. The level of detail and number of messages are set
- with the <tt class="LITERAL">debug</tt> option (see below). The
- logfile can be useful for tracking down a problem with
- <span class="APPLICATION">Privoxy</span> (e.g., it's not
- blocking an ad you think it should block) and it can help you
- to monitor what your browser is doing.</p>
- <p>Depending on the debug options below, the logfile may be a
- privacy risk if third parties can get access to it. As most
- users will never look at it, <span class=
- "APPLICATION">Privoxy</span> only logs fatal errors by
- default.</p>
- <p>For most troubleshooting purposes, you will have to change
- that, please refer to the debugging section for details.</p>
- <p>Any log files must be writable by whatever user <span class=
- "APPLICATION">Privoxy</span> is being run as (on Unix, default
- user id is <span class="QUOTE">"privoxy"</span>).</p>
- <p>To prevent the logfile from growing indefinitely, it is
- recommended to periodically rotate or shorten it. Many
- operating systems support log rotation out of the box, some
- require additional software to do it. For details, please refer
- to the documentation for your operating system.</p>
+ <p>The logfile is where all logging and error messages are written. The level of detail and number of
+ messages are set with the <tt class="LITERAL">debug</tt> option (see below). The logfile can be useful
+ for tracking down a problem with <span class="APPLICATION">Privoxy</span> (e.g., it's not blocking an ad
+ you think it should block) and it can help you to monitor what your browser is doing.</p>
+ <p>Depending on the debug options below, the logfile may be a privacy risk if third parties can get
+ access to it. As most users will never look at it, <span class="APPLICATION">Privoxy</span> only logs
+ fatal errors by default.</p>
+ <p>For most troubleshooting purposes, you will have to change that, please refer to the debugging section
+ for details.</p>
+ <p>Any log files must be writable by whatever user <span class="APPLICATION">Privoxy</span> is being run
+ as (on Unix, default user id is <span class="QUOTE">"privoxy"</span>).</p>
+ <p>To prevent the logfile from growing indefinitely, it is recommended to periodically rotate or shorten
+ it. Many operating systems support log rotation out of the box, some require additional software to do
+ it. For details, please refer to the documentation for your operating system.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="TRUSTFILE" id="TRUSTFILE">7.2.8.
- trustfile</a></h4>
+ <h4 class="SECT3"><a name="TRUSTFILE" id="TRUSTFILE">7.2.8. trustfile</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</dd>
<dt>Default value:</dt>
<dd>
- <p><span class="emphasis"><i class="EMPHASIS">Unset (commented
- out)</i></span>. When activated: trust (Unix) <span class=
- "emphasis"><i class="EMPHASIS">or</i></span> trust.txt
- (Windows)</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Unset (commented out)</i></span>. When activated: trust
+ (Unix) <span class="emphasis"><i class="EMPHASIS">or</i></span> trust.txt (Windows)</p>
</dd>
<dt>Effect if unset:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>The trust mechanism is an experimental feature for building
- white-lists and should be used with care. It is <span class=
- "emphasis"><i class="EMPHASIS">NOT</i></span> recommended for
- the casual user.</p>
- <p>If you specify a trust file, <span class=
- "APPLICATION">Privoxy</span> will only allow access to sites
- that are specified in the trustfile. Sites can be listed in one
- of two ways:</p>
- <p>Prepending a <tt class="LITERAL">~</tt> character limits
- access to this site only (and any sub-paths within this site),
- e.g. <tt class="LITERAL">~www.example.com</tt> allows access to
- <tt class="LITERAL">~www.example.com/features/news.html</tt>,
- etc.</p>
- <p>Or, you can designate sites as <span class=
- "emphasis"><i class="EMPHASIS">trusted referrers</i></span>, by
- prepending the name with a <tt class="LITERAL">+</tt>
- character. The effect is that access to untrusted sites will be
- granted -- but only if a link from this trusted referrer was
- used to get there. The link target will then be added to the
- <span class="QUOTE">"trustfile"</span> so that future, direct
- accesses will be granted. Sites added via this mechanism do not
- become trusted referrers themselves (i.e. they are added with a
- <tt class="LITERAL">~</tt> designation). There is a limit of
- 512 such entries, after which new entries will not be made.</p>
- <p>If you use the <tt class="LITERAL">+</tt> operator in the
- trust file, it may grow considerably over time.</p>
- <p>It is recommended that <span class=
- "APPLICATION">Privoxy</span> be compiled with the <tt class=
- "LITERAL">--disable-force</tt>, <tt class=
- "LITERAL">--disable-toggle</tt> and <tt class=
- "LITERAL">--disable-editor</tt> options, if this feature is to
- be used.</p>
- <p>Possible applications include limiting Internet access for
- children.</p>
+ <p>The trust mechanism is an experimental feature for building white-lists and should be used with care.
+ It is <span class="emphasis"><i class="EMPHASIS">NOT</i></span> recommended for the casual user.</p>
+ <p>If you specify a trust file, <span class="APPLICATION">Privoxy</span> will only allow access to sites
+ that are specified in the trustfile. Sites can be listed in one of two ways:</p>
+ <p>Prepending a <tt class="LITERAL">~</tt> character limits access to this site only (and any sub-paths
+ within this site), e.g. <tt class="LITERAL">~www.example.com</tt> allows access to <tt class=
+ "LITERAL">~www.example.com/features/news.html</tt>, etc.</p>
+ <p>Or, you can designate sites as <span class="emphasis"><i class="EMPHASIS">trusted
+ referrers</i></span>, by prepending the name with a <tt class="LITERAL">+</tt> character. The effect is
+ that access to untrusted sites will be granted -- but only if a link from this trusted referrer was used
+ to get there. The link target will then be added to the <span class="QUOTE">"trustfile"</span> so that
+ future, direct accesses will be granted. Sites added via this mechanism do not become trusted referrers
+ themselves (i.e. they are added with a <tt class="LITERAL">~</tt> designation). There is a limit of 512
+ such entries, after which new entries will not be made.</p>
+ <p>If you use the <tt class="LITERAL">+</tt> operator in the trust file, it may grow considerably over
+ time.</p>
+ <p>It is recommended that <span class="APPLICATION">Privoxy</span> be compiled with the <tt class=
+ "LITERAL">--disable-force</tt>, <tt class="LITERAL">--disable-toggle</tt> and <tt class=
+ "LITERAL">--disable-editor</tt> options, if this feature is to be used.</p>
+ <p>Possible applications include limiting Internet access for children.</p>
</dd>
</dl>
</div>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="DEBUGGING" id="DEBUGGING">7.3.
- Debugging</a></h2>
- <p>These options are mainly useful when tracing a problem. Note that
- you might also want to invoke <span class="APPLICATION">Privoxy</span>
- with the <tt class="LITERAL">--no-daemon</tt> command line option when
+ <h2 class="SECT2"><a name="DEBUGGING" id="DEBUGGING">7.3. Debugging</a></h2>
+ <p>These options are mainly useful when tracing a problem. Note that you might also want to invoke <span class=
+ "APPLICATION">Privoxy</span> with the <tt class="LITERAL">--no-daemon</tt> command line option when
debugging.</p>
<div class="SECT3">
<h4 class="SECT3"><a name="DEBUG" id="DEBUG">7.3.1. debug</a></h4>
</dd>
<dt>Default value:</dt>
<dd>
- <p>0 (i.e.: only fatal errors (that cause Privoxy to exit) are
- logged)</p>
+ <p>0 (i.e.: only fatal errors (that cause Privoxy to exit) are logged)</p>
</dd>
<dt>Effect if unset:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- debug 1 # Log the destination for each request <span class="APPLICATION">Privoxy</span> let through. See also debug 1024.
+ <pre class="PROGRAMLISTING"> debug 1 # Log the destination for each request <span class=
+ "APPLICATION">Privoxy</span> let through. See also debug 1024.
debug 2 # show each connection status
debug 4 # show I/O status
debug 8 # show header parsing
</td>
</tr>
</table>
- <p>To select multiple debug levels, you can either add them or
- use multiple <tt class="LITERAL">debug</tt> lines.</p>
- <p>A debug level of 1 is informative because it will show you
- each request as it happens. <span class="emphasis"><i class=
- "EMPHASIS">1, 1024, 4096 and 8192 are recommended</i></span> so
- that you will notice when things go wrong. The other levels are
- probably only of interest if you are hunting down a specific
- problem. They can produce a hell of an output (especially
- 16).</p>
- <p>If you are used to the more verbose settings, simply enable
- the debug lines below again.</p>
- <p>If you want to use pure CLF (Common Log Format), you should
- set <span class="QUOTE">"debug 512"</span> <span class=
- "emphasis"><i class="EMPHASIS">ONLY</i></span> and not enable
- anything else.</p>
- <p><span class="APPLICATION">Privoxy</span> has a hard-coded
- limit for the length of log messages. If it's reached, messages
- are logged truncated and marked with <span class="QUOTE">"...
- [too long, truncated]"</span>.</p>
- <p>Please don't file any support requests without trying to
- reproduce the problem with increased debug level first. Once
- you read the log messages, you may even be able to solve the
- problem on your own.</p>
+ <p>To select multiple debug levels, you can either add them or use multiple <tt class=
+ "LITERAL">debug</tt> lines.</p>
+ <p>A debug level of 1 is informative because it will show you each request as it happens. <span class=
+ "emphasis"><i class="EMPHASIS">1, 1024, 4096 and 8192 are recommended</i></span> so that you will notice
+ when things go wrong. The other levels are probably only of interest if you are hunting down a specific
+ problem. They can produce a hell of an output (especially 16).</p>
+ <p>If you are used to the more verbose settings, simply enable the debug lines below again.</p>
+ <p>If you want to use pure CLF (Common Log Format), you should set <span class="QUOTE">"debug 512"</span>
+ <span class="emphasis"><i class="EMPHASIS">ONLY</i></span> and not enable anything else.</p>
+ <p><span class="APPLICATION">Privoxy</span> has a hard-coded limit for the length of log messages. If
+ it's reached, messages are logged truncated and marked with <span class="QUOTE">"... [too long,
+ truncated]"</span>.</p>
+ <p>Please don't file any support requests without trying to reproduce the problem with increased debug
+ level first. Once you read the log messages, you may even be able to solve the problem on your own.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="SINGLE-THREADED" id=
- "SINGLE-THREADED">7.3.2. single-threaded</a></h4>
+ <h4 class="SECT3"><a name="SINGLE-THREADED" id="SINGLE-THREADED">7.3.2. single-threaded</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</dd>
<dt>Type of value:</dt>
<dd>
- <p><span class="emphasis"><i class="EMPHASIS">1 or
- 0</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">1 or 0</i></span></p>
</dd>
<dt>Default value:</dt>
<dd>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>Multi-threaded (or, where unavailable: forked) operation,
- i.e. the ability to serve multiple requests simultaneously.</p>
+ <p>Multi-threaded (or, where unavailable: forked) operation, i.e. the ability to serve multiple requests
+ simultaneously.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This option is only there for debugging purposes.
- <span class="emphasis"><i class="EMPHASIS">It will drastically
- reduce performance.</i></span></p>
+ <p>This option is only there for debugging purposes. <span class="emphasis"><i class="EMPHASIS">It will
+ drastically reduce performance.</i></span></p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="HOSTNAME" id="HOSTNAME">7.3.3.
- hostname</a></h4>
+ <h4 class="SECT3"><a name="HOSTNAME" id="HOSTNAME">7.3.3. hostname</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</dd>
<dt>Default value:</dt>
<dd>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Unset</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Unset</i></span></p>
</dd>
<dt>Effect if unset:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>On some misconfigured systems resolving the hostname fails
- or takes too much time and slows Privoxy down. Setting a fixed
- hostname works around the problem.</p>
- <p>In other circumstances it might be desirable to show a
- hostname other than the one returned by the operating system.
- For example if the system has several different hostnames and
- you don't want to use the first one.</p>
- <p>Note that Privoxy does not validate the specified hostname
- value.</p>
+ <p>On some misconfigured systems resolving the hostname fails or takes too much time and slows Privoxy
+ down. Setting a fixed hostname works around the problem.</p>
+ <p>In other circumstances it might be desirable to show a hostname other than the one returned by the
+ operating system. For example if the system has several different hostnames and you don't want to use the
+ first one.</p>
+ <p>Note that Privoxy does not validate the specified hostname value.</p>
</dd>
</dl>
</div>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="ACCESS-CONTROL" id="ACCESS-CONTROL">7.4.
- Access Control and Security</a></h2>
- <p>This section of the config file controls the security-relevant
- aspects of <span class="APPLICATION">Privoxy</span>'s
- configuration.</p>
+ <h2 class="SECT2"><a name="ACCESS-CONTROL" id="ACCESS-CONTROL">7.4. Access Control and Security</a></h2>
+ <p>This section of the config file controls the security-relevant aspects of <span class=
+ "APPLICATION">Privoxy</span>'s configuration.</p>
<div class="SECT3">
- <h4 class="SECT3"><a name="LISTEN-ADDRESS" id="LISTEN-ADDRESS">7.4.1.
- listen-address</a></h4>
+ <h4 class="SECT3"><a name="LISTEN-ADDRESS" id="LISTEN-ADDRESS">7.4.1. listen-address</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>The address and TCP port on which <span class=
- "APPLICATION">Privoxy</span> will listen for client
+ <p>The address and TCP port on which <span class="APPLICATION">Privoxy</span> will listen for client
requests.</p>
</dd>
<dt>Type of value:</dt>
<dd>
- <p>[<tt class="REPLACEABLE"><i>IP-Address</i></tt>]:<tt class=
- "REPLACEABLE"><i>Port</i></tt></p>
- <p>[<tt class="REPLACEABLE"><i>Hostname</i></tt>]:<tt class=
- "REPLACEABLE"><i>Port</i></tt></p>
+ <p>[<tt class="REPLACEABLE"><i>IP-Address</i></tt>]:<tt class="REPLACEABLE"><i>Port</i></tt></p>
+ <p>[<tt class="REPLACEABLE"><i>Hostname</i></tt>]:<tt class="REPLACEABLE"><i>Port</i></tt></p>
</dd>
<dt>Default value:</dt>
<dd>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>Bind to 127.0.0.1 (IPv4 localhost), port 8118. This is
- suitable and recommended for home users who run <span class=
- "APPLICATION">Privoxy</span> on the same machine as their
- browser.</p>
+ <p>Bind to 127.0.0.1 (IPv4 localhost), port 8118. This is suitable and recommended for home users who run
+ <span class="APPLICATION">Privoxy</span> on the same machine as their browser.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>You will need to configure your browser(s) to this proxy
- address and port.</p>
- <p>If you already have another service running on port 8118, or
- if you want to serve requests from other machines (e.g. on your
- local network) as well, you will need to override the
- default.</p>
- <p>You can use this statement multiple times to make
- <span class="APPLICATION">Privoxy</span> listen on more ports
- or more <abbr class="ABBREV">IP</abbr> addresses. Suitable if
- your operating system does not support sharing <abbr class=
- "ABBREV">IPv6</abbr> and <abbr class="ABBREV">IPv4</abbr>
- protocols on the same socket.</p>
- <p>If a hostname is used instead of an IP address, <span class=
- "APPLICATION">Privoxy</span> will try to resolve it to an IP
- address and if there are multiple, use the first one
- returned.</p>
- <p>If the address for the hostname isn't already known on the
- system (for example because it's in /etc/hostname), this may
- result in DNS traffic.</p>
- <p>If the specified address isn't available on the system, or
- if the hostname can't be resolved, <span class=
- "APPLICATION">Privoxy</span> will fail to start.</p>
- <p>IPv6 addresses containing colons have to be quoted by
- brackets. They can only be used if <span class=
- "APPLICATION">Privoxy</span> has been compiled with IPv6
- support. If you aren't sure if your version supports it, have a
- look at <tt class=
- "LITERAL">http://config.privoxy.org/show-status</tt>.</p>
- <p>Some operating systems will prefer IPv6 to IPv4 addresses
- even if the system has no IPv6 connectivity which is usually
- not expected by the user. Some even rely on DNS to resolve
- localhost which mean the "localhost" address used may not
- actually be local.</p>
- <p>It is therefore recommended to explicitly configure the
- intended IP address instead of relying on the operating system,
- unless there's a strong reason not to.</p>
- <p>If you leave out the address, <span class=
- "APPLICATION">Privoxy</span> will bind to all IPv4 interfaces
- (addresses) on your machine and may become reachable from the
- Internet and/or the local network. Be aware that some GNU/Linux
- distributions modify that behaviour without updating the
- documentation. Check for non-standard patches if your
- <span class="APPLICATION">Privoxy</span> version behaves
- differently.</p>
- <p>If you configure <span class="APPLICATION">Privoxy</span> to
- be reachable from the network, consider using <a href=
- "config.html#ACLS">access control lists</a> (ACL's, see below),
- and/or a firewall.</p>
- <p>If you open <span class="APPLICATION">Privoxy</span> to
- untrusted users, you will also want to make sure that the
- following actions are disabled: <tt class="LITERAL"><a href=
- "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a></tt>
- and <tt class="LITERAL"><a href=
+ <p>You will need to configure your browser(s) to this proxy address and port.</p>
+ <p>If you already have another service running on port 8118, or if you want to serve requests from other
+ machines (e.g. on your local network) as well, you will need to override the default.</p>
+ <p>You can use this statement multiple times to make <span class="APPLICATION">Privoxy</span> listen on
+ more ports or more <abbr class="ABBREV">IP</abbr> addresses. Suitable if your operating system does not
+ support sharing <abbr class="ABBREV">IPv6</abbr> and <abbr class="ABBREV">IPv4</abbr> protocols on the
+ same socket.</p>
+ <p>If a hostname is used instead of an IP address, <span class="APPLICATION">Privoxy</span> will try to
+ resolve it to an IP address and if there are multiple, use the first one returned.</p>
+ <p>If the address for the hostname isn't already known on the system (for example because it's in
+ /etc/hostname), this may result in DNS traffic.</p>
+ <p>If the specified address isn't available on the system, or if the hostname can't be resolved,
+ <span class="APPLICATION">Privoxy</span> will fail to start.</p>
+ <p>IPv6 addresses containing colons have to be quoted by brackets. They can only be used if <span class=
+ "APPLICATION">Privoxy</span> has been compiled with IPv6 support. If you aren't sure if your version
+ supports it, have a look at <tt class="LITERAL">http://config.privoxy.org/show-status</tt>.</p>
+ <p>Some operating systems will prefer IPv6 to IPv4 addresses even if the system has no IPv6 connectivity
+ which is usually not expected by the user. Some even rely on DNS to resolve localhost which mean the
+ "localhost" address used may not actually be local.</p>
+ <p>It is therefore recommended to explicitly configure the intended IP address instead of relying on the
+ operating system, unless there's a strong reason not to.</p>
+ <p>If you leave out the address, <span class="APPLICATION">Privoxy</span> will bind to all IPv4
+ interfaces (addresses) on your machine and may become reachable from the Internet and/or the local
+ network. Be aware that some GNU/Linux distributions modify that behaviour without updating the
+ documentation. Check for non-standard patches if your <span class="APPLICATION">Privoxy</span> version
+ behaves differently.</p>
+ <p>If you configure <span class="APPLICATION">Privoxy</span> to be reachable from the network, consider
+ using <a href="config.html#ACLS">access control lists</a> (ACL's, see below), and/or a firewall.</p>
+ <p>If you open <span class="APPLICATION">Privoxy</span> to untrusted users, you will also want to make
+ sure that the following actions are disabled: <tt class="LITERAL"><a href=
+ "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a></tt> and <tt class="LITERAL"><a href=
"config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle</a></tt></p>
</dd>
<dt>Example:</dt>
<dd>
- <p>Suppose you are running <span class=
- "APPLICATION">Privoxy</span> on a machine which has the address
- 192.168.0.1 on your local private network (192.168.0.0) and has
- another outside connection with a different address. You want
- it to serve requests from inside only:</p>
+ <p>Suppose you are running <span class="APPLICATION">Privoxy</span> on a machine which has the address
+ 192.168.0.1 on your local private network (192.168.0.0) and has another outside connection with a
+ different address. You want it to serve requests from inside only:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- listen-address 192.168.0.1:8118</pre>
+ <pre class="PROGRAMLISTING"> listen-address 192.168.0.1:8118</pre>
</td>
</tr>
</table>
- <p>Suppose you are running <span class=
- "APPLICATION">Privoxy</span> on an IPv6-capable machine and you
- want it to listen on the IPv6 address of the loopback
- device:</p>
+ <p>Suppose you are running <span class="APPLICATION">Privoxy</span> on an IPv6-capable machine and you
+ want it to listen on the IPv6 address of the loopback device:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- listen-address [::1]:8118</pre>
+ <pre class="PROGRAMLISTING"> listen-address [::1]:8118</pre>
</td>
</tr>
</table>
</dd>
<dt>Notes:</dt>
<dd>
- <p>If set to 0, <span class="APPLICATION">Privoxy</span> will
- start in <span class="QUOTE">"toggled off"</span> mode, i.e.
- mostly behave like a normal, content-neutral proxy with both ad
- blocking and content filtering disabled. See <tt class=
- "LITERAL">enable-remote-toggle</tt> below.</p>
+ <p>If set to 0, <span class="APPLICATION">Privoxy</span> will start in <span class="QUOTE">"toggled
+ off"</span> mode, i.e. mostly behave like a normal, content-neutral proxy with both ad blocking and
+ content filtering disabled. See <tt class="LITERAL">enable-remote-toggle</tt> below.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ENABLE-REMOTE-TOGGLE" id=
- "ENABLE-REMOTE-TOGGLE">7.4.3. enable-remote-toggle</a></h4>
+ <h4 class="SECT3"><a name="ENABLE-REMOTE-TOGGLE" id="ENABLE-REMOTE-TOGGLE">7.4.3. enable-remote-toggle</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Whether or not the <a href=
- "http://config.privoxy.org/toggle" target="_top">web-based
- toggle feature</a> may be used</p>
+ <p>Whether or not the <a href="http://config.privoxy.org/toggle" target="_top">web-based toggle
+ feature</a> may be used</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>When toggled off, <span class="APPLICATION">Privoxy</span>
- mostly acts like a normal, content-neutral proxy, i.e. doesn't
- block ads or filter content.</p>
- <p>Access to the toggle feature can <span class=
- "emphasis"><i class="EMPHASIS">not</i></span> be controlled
- separately by <span class="QUOTE">"ACLs"</span> or HTTP
- authentication, so that everybody who can access <span class=
- "APPLICATION">Privoxy</span> (see <span class=
- "QUOTE">"ACLs"</span> and <tt class=
- "LITERAL">listen-address</tt> above) can toggle it for all
- users. So this option is <span class="emphasis"><i class=
- "EMPHASIS">not recommended</i></span> for multi-user
- environments with untrusted users.</p>
- <p>Note that malicious client side code (e.g Java) is also
- capable of using this option.</p>
- <p>As a lot of <span class="APPLICATION">Privoxy</span> users
- don't read documentation, this feature is disabled by
- default.</p>
- <p>Note that you must have compiled <span class=
- "APPLICATION">Privoxy</span> with support for this feature,
- otherwise this option has no effect.</p>
+ <p>When toggled off, <span class="APPLICATION">Privoxy</span> mostly acts like a normal, content-neutral
+ proxy, i.e. doesn't block ads or filter content.</p>
+ <p>Access to the toggle feature can <span class="emphasis"><i class="EMPHASIS">not</i></span> be
+ controlled separately by <span class="QUOTE">"ACLs"</span> or HTTP authentication, so that everybody who
+ can access <span class="APPLICATION">Privoxy</span> (see <span class="QUOTE">"ACLs"</span> and <tt class=
+ "LITERAL">listen-address</tt> above) can toggle it for all users. So this option is <span class=
+ "emphasis"><i class="EMPHASIS">not recommended</i></span> for multi-user environments with untrusted
+ users.</p>
+ <p>Note that malicious client side code (e.g Java) is also capable of using this option.</p>
+ <p>As a lot of <span class="APPLICATION">Privoxy</span> users don't read documentation, this feature is
+ disabled by default.</p>
+ <p>Note that you must have compiled <span class="APPLICATION">Privoxy</span> with support for this
+ feature, otherwise this option has no effect.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ENABLE-REMOTE-HTTP-TOGGLE" id=
- "ENABLE-REMOTE-HTTP-TOGGLE">7.4.4. enable-remote-http-toggle</a></h4>
+ <h4 class="SECT3"><a name="ENABLE-REMOTE-HTTP-TOGGLE" id="ENABLE-REMOTE-HTTP-TOGGLE">7.4.4.
+ enable-remote-http-toggle</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Whether or not Privoxy recognizes special HTTP headers to
- change its behaviour.</p>
+ <p>Whether or not Privoxy recognizes special HTTP headers to change its behaviour.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>When toggled on, the client can change <span class=
- "APPLICATION">Privoxy's</span> behaviour by setting special
- HTTP headers. Currently the only supported special header is
- <span class="QUOTE">"X-Filter: No"</span>, to disable filtering
- for the ongoing request, even if it is enabled in one of the
- action files.</p>
- <p>This feature is disabled by default. If you are using
- <span class="APPLICATION">Privoxy</span> in a environment with
- trusted clients, you may enable this feature at your
- discretion. Note that malicious client side code (e.g Java) is
- also capable of using this feature.</p>
- <p>This option will be removed in future releases as it has
- been obsoleted by the more general header taggers.</p>
+ <p>When toggled on, the client can change <span class="APPLICATION">Privoxy's</span> behaviour by setting
+ special HTTP headers. Currently the only supported special header is <span class="QUOTE">"X-Filter:
+ No"</span>, to disable filtering for the ongoing request, even if it is enabled in one of the action
+ files.</p>
+ <p>This feature is disabled by default. If you are using <span class="APPLICATION">Privoxy</span> in a
+ environment with trusted clients, you may enable this feature at your discretion. Note that malicious
+ client side code (e.g Java) is also capable of using this feature.</p>
+ <p>This option will be removed in future releases as it has been obsoleted by the more general header
+ taggers.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ENABLE-EDIT-ACTIONS" id=
- "ENABLE-EDIT-ACTIONS">7.4.5. enable-edit-actions</a></h4>
+ <h4 class="SECT3"><a name="ENABLE-EDIT-ACTIONS" id="ENABLE-EDIT-ACTIONS">7.4.5. enable-edit-actions</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Whether or not the <a href=
- "http://config.privoxy.org/show-status" target="_top">web-based
- actions file editor</a> may be used</p>
+ <p>Whether or not the <a href="http://config.privoxy.org/show-status" target="_top">web-based actions
+ file editor</a> may be used</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Access to the editor can <span class="emphasis"><i class=
- "EMPHASIS">not</i></span> be controlled separately by
- <span class="QUOTE">"ACLs"</span> or HTTP authentication, so
- that everybody who can access <span class=
- "APPLICATION">Privoxy</span> (see <span class=
- "QUOTE">"ACLs"</span> and <tt class=
- "LITERAL">listen-address</tt> above) can modify its
- configuration for all users.</p>
- <p>This option is <span class="emphasis"><i class=
- "EMPHASIS">not recommended</i></span> for environments with
- untrusted users and as a lot of <span class=
- "APPLICATION">Privoxy</span> users don't read documentation,
- this feature is disabled by default.</p>
- <p>Note that malicious client side code (e.g Java) is also
- capable of using the actions editor and you shouldn't enable
- this options unless you understand the consequences and are
- sure your browser is configured correctly.</p>
- <p>Note that you must have compiled <span class=
- "APPLICATION">Privoxy</span> with support for this feature,
- otherwise this option has no effect.</p>
+ <p>Access to the editor can <span class="emphasis"><i class="EMPHASIS">not</i></span> be controlled
+ separately by <span class="QUOTE">"ACLs"</span> or HTTP authentication, so that everybody who can access
+ <span class="APPLICATION">Privoxy</span> (see <span class="QUOTE">"ACLs"</span> and <tt class=
+ "LITERAL">listen-address</tt> above) can modify its configuration for all users.</p>
+ <p>This option is <span class="emphasis"><i class="EMPHASIS">not recommended</i></span> for environments
+ with untrusted users and as a lot of <span class="APPLICATION">Privoxy</span> users don't read
+ documentation, this feature is disabled by default.</p>
+ <p>Note that malicious client side code (e.g Java) is also capable of using the actions editor and you
+ shouldn't enable this options unless you understand the consequences and are sure your browser is
+ configured correctly.</p>
+ <p>Note that you must have compiled <span class="APPLICATION">Privoxy</span> with support for this
+ feature, otherwise this option has no effect.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ENFORCE-BLOCKS" id="ENFORCE-BLOCKS">7.4.6.
- enforce-blocks</a></h4>
+ <h4 class="SECT3"><a name="ENFORCE-BLOCKS" id="ENFORCE-BLOCKS">7.4.6. enforce-blocks</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Whether the user is allowed to ignore blocks and can
- <span class="QUOTE">"go there anyway"</span>.</p>
+ <p>Whether the user is allowed to ignore blocks and can <span class="QUOTE">"go there anyway"</span>.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p><span class="APPLICATION">Privoxy</span> is mainly used to
- block and filter requests as a service to the user, for example
- to block ads and other junk that clogs the pipes. <span class=
- "APPLICATION">Privoxy's</span> configuration isn't perfect and
- sometimes innocent pages are blocked. In this situation it
- makes sense to allow the user to enforce the request and have
- <span class="APPLICATION">Privoxy</span> ignore the block.</p>
- <p>In the default configuration <span class=
- "APPLICATION">Privoxy's</span> <span class=
- "QUOTE">"Blocked"</span> page contains a <span class=
- "QUOTE">"go there anyway"</span> link to adds a special string
- (the force prefix) to the request URL. If that link is used,
- <span class="APPLICATION">Privoxy</span> will detect the force
- prefix, remove it again and let the request pass.</p>
- <p>Of course <span class="APPLICATION">Privoxy</span> can also
- be used to enforce a network policy. In that case the user
- obviously should not be able to bypass any blocks, and that's
- what the <span class="QUOTE">"enforce-blocks"</span> option is
- for. If it's enabled, <span class="APPLICATION">Privoxy</span>
- hides the <span class="QUOTE">"go there anyway"</span> link. If
- the user adds the force prefix by hand, it will not be accepted
- and the circumvention attempt is logged.</p>
+ <p><span class="APPLICATION">Privoxy</span> is mainly used to block and filter requests as a service to
+ the user, for example to block ads and other junk that clogs the pipes. <span class=
+ "APPLICATION">Privoxy's</span> configuration isn't perfect and sometimes innocent pages are blocked. In
+ this situation it makes sense to allow the user to enforce the request and have <span class=
+ "APPLICATION">Privoxy</span> ignore the block.</p>
+ <p>In the default configuration <span class="APPLICATION">Privoxy's</span> <span class=
+ "QUOTE">"Blocked"</span> page contains a <span class="QUOTE">"go there anyway"</span> link to adds a
+ special string (the force prefix) to the request URL. If that link is used, <span class=
+ "APPLICATION">Privoxy</span> will detect the force prefix, remove it again and let the request pass.</p>
+ <p>Of course <span class="APPLICATION">Privoxy</span> can also be used to enforce a network policy. In
+ that case the user obviously should not be able to bypass any blocks, and that's what the <span class=
+ "QUOTE">"enforce-blocks"</span> option is for. If it's enabled, <span class="APPLICATION">Privoxy</span>
+ hides the <span class="QUOTE">"go there anyway"</span> link. If the user adds the force prefix by hand,
+ it will not be accepted and the circumvention attempt is logged.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ACLS" id="ACLS">7.4.7. ACLs: permit-access
- and deny-access</a></h4><a name="PERMIT-ACCESS" id=
- "PERMIT-ACCESS"></a><a name="DENY-ACCESS" id="DENY-ACCESS"></a>
+ <h4 class="SECT3"><a name="ACLS" id="ACLS">7.4.7. ACLs: permit-access and deny-access</a></h4><a name=
+ "PERMIT-ACCESS" id="PERMIT-ACCESS"></a><a name="DENY-ACCESS" id="DENY-ACCESS"></a>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</dd>
<dt>Type of value:</dt>
<dd>
- <p><tt class="REPLACEABLE"><i>src_addr</i></tt>[:<tt class=
- "REPLACEABLE"><i>port</i></tt>][/<tt class=
- "REPLACEABLE"><i>src_masklen</i></tt>] [<tt class=
- "REPLACEABLE"><i>dst_addr</i></tt>[:<tt class=
- "REPLACEABLE"><i>port</i></tt>][/<tt class=
- "REPLACEABLE"><i>dst_masklen</i></tt>]]</p>
- <p>Where <tt class="REPLACEABLE"><i>src_addr</i></tt> and
- <tt class="REPLACEABLE"><i>dst_addr</i></tt> are IPv4 addresses
- in dotted decimal notation or valid DNS names, <tt class=
- "REPLACEABLE"><i>port</i></tt> is a port number, and <tt class=
- "REPLACEABLE"><i>src_masklen</i></tt> and <tt class=
- "REPLACEABLE"><i>dst_masklen</i></tt> are subnet masks in CIDR
- notation, i.e. integer values from 2 to 30 representing the
- length (in bits) of the network address. The masks and the
- whole destination part are optional.</p>
- <p>If your system implements <a href=
- "http://tools.ietf.org/html/rfc3493" target="_top">RFC
- 3493</a>, then <tt class="REPLACEABLE"><i>src_addr</i></tt> and
- <tt class="REPLACEABLE"><i>dst_addr</i></tt> can be IPv6
- addresses delimeted by brackets, <tt class=
- "REPLACEABLE"><i>port</i></tt> can be a number or a service
- name, and <tt class="REPLACEABLE"><i>src_masklen</i></tt> and
- <tt class="REPLACEABLE"><i>dst_masklen</i></tt> can be a number
- from 0 to 128.</p>
+ <p><tt class="REPLACEABLE"><i>src_addr</i></tt>[:<tt class="REPLACEABLE"><i>port</i></tt>][/<tt class=
+ "REPLACEABLE"><i>src_masklen</i></tt>] [<tt class="REPLACEABLE"><i>dst_addr</i></tt>[:<tt class=
+ "REPLACEABLE"><i>port</i></tt>][/<tt class="REPLACEABLE"><i>dst_masklen</i></tt>]]</p>
+ <p>Where <tt class="REPLACEABLE"><i>src_addr</i></tt> and <tt class="REPLACEABLE"><i>dst_addr</i></tt>
+ are IPv4 addresses in dotted decimal notation or valid DNS names, <tt class=
+ "REPLACEABLE"><i>port</i></tt> is a port number, and <tt class="REPLACEABLE"><i>src_masklen</i></tt> and
+ <tt class="REPLACEABLE"><i>dst_masklen</i></tt> are subnet masks in CIDR notation, i.e. integer values
+ from 2 to 30 representing the length (in bits) of the network address. The masks and the whole
+ destination part are optional.</p>
+ <p>If your system implements <a href="http://tools.ietf.org/html/rfc3493" target="_top">RFC 3493</a>,
+ then <tt class="REPLACEABLE"><i>src_addr</i></tt> and <tt class="REPLACEABLE"><i>dst_addr</i></tt> can be
+ IPv6 addresses delimeted by brackets, <tt class="REPLACEABLE"><i>port</i></tt> can be a number or a
+ service name, and <tt class="REPLACEABLE"><i>src_masklen</i></tt> and <tt class=
+ "REPLACEABLE"><i>dst_masklen</i></tt> can be a number from 0 to 128.</p>
</dd>
<dt>Default value:</dt>
<dd>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Unset</i></span></p>
- <p>If no <tt class="REPLACEABLE"><i>port</i></tt> is specified,
- any port will match. If no <tt class=
- "REPLACEABLE"><i>src_masklen</i></tt> or <tt class=
- "REPLACEABLE"><i>src_masklen</i></tt> is given, the complete IP
- address has to match (i.e. 32 bits for IPv4 and 128 bits for
- IPv6).</p>
+ <p><span class="emphasis"><i class="EMPHASIS">Unset</i></span></p>
+ <p>If no <tt class="REPLACEABLE"><i>port</i></tt> is specified, any port will match. If no <tt class=
+ "REPLACEABLE"><i>src_masklen</i></tt> or <tt class="REPLACEABLE"><i>src_masklen</i></tt> is given, the
+ complete IP address has to match (i.e. 32 bits for IPv4 and 128 bits for IPv6).</p>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>Don't restrict access further than implied by <tt class=
- "LITERAL">listen-address</tt></p>
+ <p>Don't restrict access further than implied by <tt class="LITERAL">listen-address</tt></p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Access controls are included at the request of ISPs and
- systems administrators, and <span class="emphasis"><i class=
- "EMPHASIS">are not usually needed by individual
- users</i></span>. For a typical home user, it will normally
- suffice to ensure that <span class="APPLICATION">Privoxy</span>
- only listens on the localhost (127.0.0.1) or internal (home)
- network address by means of the <a href=
- "config.html#LISTEN-ADDRESS"><span class="emphasis"><i class=
- "EMPHASIS">listen-address</i></span></a> option.</p>
- <p>Please see the warnings in the FAQ that <span class=
- "APPLICATION">Privoxy</span> is not intended to be a substitute
- for a firewall or to encourage anyone to defer addressing basic
- security weaknesses.</p>
- <p>Multiple ACL lines are OK. If any ACLs are specified,
- <span class="APPLICATION">Privoxy</span> only talks to IP
- addresses that match at least one <tt class=
- "LITERAL">permit-access</tt> line and don't match any
- subsequent <tt class="LITERAL">deny-access</tt> line. In other
- words, the last match wins, with the default being <tt class=
- "LITERAL">deny-access</tt>.</p>
- <p>If <span class="APPLICATION">Privoxy</span> is using a
- forwarder (see <tt class="LITERAL">forward</tt> below) for a
- particular destination URL, the <tt class=
- "REPLACEABLE"><i>dst_addr</i></tt> that is examined is the
- address of the forwarder and <span class="emphasis"><i class=
- "EMPHASIS">NOT</i></span> the address of the ultimate target.
- This is necessary because it may be impossible for the local
- <span class="APPLICATION">Privoxy</span> to determine the IP
- address of the ultimate target (that's often what gateways are
- used for).</p>
- <p>You should prefer using IP addresses over DNS names, because
- the address lookups take time. All DNS names must resolve! You
- can <span class="emphasis"><i class="EMPHASIS">not</i></span>
- use domain patterns like <span class="QUOTE">"*.org"</span> or
- partial domain names. If a DNS name resolves to multiple IP
+ <p>Access controls are included at the request of ISPs and systems administrators, and <span class=
+ "emphasis"><i class="EMPHASIS">are not usually needed by individual users</i></span>. For a typical home
+ user, it will normally suffice to ensure that <span class="APPLICATION">Privoxy</span> only listens on
+ the localhost (127.0.0.1) or internal (home) network address by means of the <a href=
+ "config.html#LISTEN-ADDRESS"><span class="emphasis"><i class="EMPHASIS">listen-address</i></span></a>
+ option.</p>
+ <p>Please see the warnings in the FAQ that <span class="APPLICATION">Privoxy</span> is not intended to be
+ a substitute for a firewall or to encourage anyone to defer addressing basic security weaknesses.</p>
+ <p>Multiple ACL lines are OK. If any ACLs are specified, <span class="APPLICATION">Privoxy</span> only
+ talks to IP addresses that match at least one <tt class="LITERAL">permit-access</tt> line and don't match
+ any subsequent <tt class="LITERAL">deny-access</tt> line. In other words, the last match wins, with the
+ default being <tt class="LITERAL">deny-access</tt>.</p>
+ <p>If <span class="APPLICATION">Privoxy</span> is using a forwarder (see <tt class="LITERAL">forward</tt>
+ below) for a particular destination URL, the <tt class="REPLACEABLE"><i>dst_addr</i></tt> that is
+ examined is the address of the forwarder and <span class="emphasis"><i class="EMPHASIS">NOT</i></span>
+ the address of the ultimate target. This is necessary because it may be impossible for the local
+ <span class="APPLICATION">Privoxy</span> to determine the IP address of the ultimate target (that's often
+ what gateways are used for).</p>
+ <p>You should prefer using IP addresses over DNS names, because the address lookups take time. All DNS
+ names must resolve! You can <span class="emphasis"><i class="EMPHASIS">not</i></span> use domain patterns
+ like <span class="QUOTE">"*.org"</span> or partial domain names. If a DNS name resolves to multiple IP
addresses, only the first one is used.</p>
- <p>Some systems allow IPv4 clients to connect to IPv6 server
- sockets. Then the client's IPv4 address will be translated by
- the system into IPv6 address space with special prefix
- ::ffff:0:0/96 (so called IPv4 mapped IPv6 address).
- <span class="APPLICATION">Privoxy</span> can handle it and maps
- such ACL addresses automatically.</p>
- <p>Denying access to particular sites by ACL may have undesired
- side effects if the site in question is hosted on a machine
- which also hosts other sites (most sites are).</p>
+ <p>Some systems allow IPv4 clients to connect to IPv6 server sockets. Then the client's IPv4 address will
+ be translated by the system into IPv6 address space with special prefix ::ffff:0:0/96 (so called IPv4
+ mapped IPv6 address). <span class="APPLICATION">Privoxy</span> can handle it and maps such ACL addresses
+ automatically.</p>
+ <p>Denying access to particular sites by ACL may have undesired side effects if the site in question is
+ hosted on a machine which also hosts other sites (most sites are).</p>
</dd>
<dt>Examples:</dt>
<dd>
- <p>Explicitly define the default behavior if no ACL and
- <tt class="LITERAL">listen-address</tt> are set: <span class=
- "QUOTE">"localhost"</span> is OK. The absence of a <tt class=
- "REPLACEABLE"><i>dst_addr</i></tt> implies that <span class=
- "emphasis"><i class="EMPHASIS">all</i></span> destination
- addresses are OK:</p>
+ <p>Explicitly define the default behavior if no ACL and <tt class="LITERAL">listen-address</tt> are set:
+ <span class="QUOTE">"localhost"</span> is OK. The absence of a <tt class=
+ "REPLACEABLE"><i>dst_addr</i></tt> implies that <span class="emphasis"><i class="EMPHASIS">all</i></span>
+ destination addresses are OK:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Allow any host on the same class C subnet as www.privoxy.org
- access to nothing but www.example.com (or other domains hosted
- on the same system):</p>
+ <p>Allow any host on the same class C subnet as www.privoxy.org access to nothing but www.example.com (or
+ other domains hosted on the same system):</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- permit-access www.privoxy.org/24 www.example.com/32</pre>
+ <pre class="SCREEN"> permit-access www.privoxy.org/24 www.example.com/32</pre>
</td>
</tr>
</table>
- <p>Allow access from any host on the 26-bit subnet
- 192.168.45.64 to anywhere, with the exception that
- 192.168.45.73 may not access the IP address behind
- www.dirty-stuff.example.com:</p>
+ <p>Allow access from any host on the 26-bit subnet 192.168.45.64 to anywhere, with the exception that
+ 192.168.45.73 may not access the IP address behind www.dirty-stuff.example.com:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Allow access from the IPv4 network 192.0.2.0/24 even if
- listening on an IPv6 wild card address (not supported on all
- platforms):</p>
+ <p>Allow access from the IPv4 network 192.0.2.0/24 even if listening on an IPv6 wild card address (not
+ supported on all platforms):</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- permit-access 192.0.2.0/24</pre>
+ <pre class="PROGRAMLISTING"> permit-access 192.0.2.0/24</pre>
</td>
</tr>
</table>
- <p>This is equivalent to the following line even if listening
- on an IPv4 address (not supported on all platforms):</p>
+ <p>This is equivalent to the following line even if listening on an IPv4 address (not supported on all
+ platforms):</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- permit-access [::ffff:192.0.2.0]/120</pre>
+ <pre class="PROGRAMLISTING"> permit-access [::ffff:192.0.2.0]/120</pre>
</td>
</tr>
</table>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="BUFFER-LIMIT" id="BUFFER-LIMIT">7.4.8.
- buffer-limit</a></h4>
+ <h4 class="SECT3"><a name="BUFFER-LIMIT" id="BUFFER-LIMIT">7.4.8. buffer-limit</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</dd>
<dt>Notes:</dt>
<dd>
- <p>For content filtering, i.e. the <tt class=
- "LITERAL">+filter</tt> and <tt class=
- "LITERAL">+deanimate-gif</tt> actions, it is necessary that
- <span class="APPLICATION">Privoxy</span> buffers the entire
- document body. This can be potentially dangerous, since a
- server could just keep sending data indefinitely and wait for
- your RAM to exhaust -- with nasty consequences. Hence this
+ <p>For content filtering, i.e. the <tt class="LITERAL">+filter</tt> and <tt class=
+ "LITERAL">+deanimate-gif</tt> actions, it is necessary that <span class="APPLICATION">Privoxy</span>
+ buffers the entire document body. This can be potentially dangerous, since a server could just keep
+ sending data indefinitely and wait for your RAM to exhaust -- with nasty consequences. Hence this
option.</p>
- <p>When a document buffer size reaches the <tt class=
- "LITERAL">buffer-limit</tt>, it is flushed to the client
- unfiltered and no further attempt to filter the rest of the
- document is made. Remember that there may be multiple threads
- running, which might require up to <tt class=
- "LITERAL">buffer-limit</tt> Kbytes <span class=
- "emphasis"><i class="EMPHASIS">each</i></span>, unless you have
- enabled <span class="QUOTE">"single-threaded"</span> above.</p>
+ <p>When a document buffer size reaches the <tt class="LITERAL">buffer-limit</tt>, it is flushed to the
+ client unfiltered and no further attempt to filter the rest of the document is made. Remember that there
+ may be multiple threads running, which might require up to <tt class="LITERAL">buffer-limit</tt> Kbytes
+ <span class="emphasis"><i class="EMPHASIS">each</i></span>, unless you have enabled <span class=
+ "QUOTE">"single-threaded"</span> above.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ENABLE-PROXY-AUTHENTICATION-FORWARDING"
- id="ENABLE-PROXY-AUTHENTICATION-FORWARDING">7.4.9.
- enable-proxy-authentication-forwarding</a></h4>
+ <h4 class="SECT3"><a name="ENABLE-PROXY-AUTHENTICATION-FORWARDING" id=
+ "ENABLE-PROXY-AUTHENTICATION-FORWARDING">7.4.9. enable-proxy-authentication-forwarding</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Whether or not proxy authentication through <span class=
- "APPLICATION">Privoxy</span> should work.</p>
+ <p>Whether or not proxy authentication through <span class="APPLICATION">Privoxy</span> should work.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Privoxy itself does not support proxy authentication, but
- can allow clients to authenticate against Privoxy's parent
- proxy.</p>
- <p>By default Privoxy (3.0.21 and later) don't do that and
- remove Proxy-Authorization headers in requests and
- Proxy-Authenticate headers in responses to make it harder for
- malicious sites to trick inexperienced users into providing
- login information.</p>
+ <p>Privoxy itself does not support proxy authentication, but can allow clients to authenticate against
+ Privoxy's parent proxy.</p>
+ <p>By default Privoxy (3.0.21 and later) don't do that and remove Proxy-Authorization headers in requests
+ and Proxy-Authenticate headers in responses to make it harder for malicious sites to trick inexperienced
+ users into providing login information.</p>
<p>If this option is enabled the headers are forwarded.</p>
- <p>Enabling this option is <span class="emphasis"><i class=
- "EMPHASIS">not recommended</i></span> if there is no parent
- proxy that requires authentication or if the local network
- between Privoxy and the parent proxy isn't trustworthy. If
- proxy authentication is only required for some requests, it is
- recommended to use a client header filter to remove the
- authentication headers for requests where they aren't
+ <p>Enabling this option is <span class="emphasis"><i class="EMPHASIS">not recommended</i></span> if there
+ is no parent proxy that requires authentication or if the local network between Privoxy and the parent
+ proxy isn't trustworthy. If proxy authentication is only required for some requests, it is recommended to
+ use a client header filter to remove the authentication headers for requests where they aren't
needed.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="TRUSTED-CGI-REFERER" id=
- "TRUSTED-CGI-REFERER">7.4.10. trusted-cgi-referer</a></h4>
+ <h4 class="SECT3"><a name="TRUSTED-CGI-REFERER" id="TRUSTED-CGI-REFERER">7.4.10. trusted-cgi-referer</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>A trusted website or webpage whose links can be followed to
- reach sensitive CGI pages</p>
+ <p>A trusted website or webpage whose links can be followed to reach sensitive CGI pages</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Before <span class="APPLICATION">Privoxy</span> accepts
- configuration changes through CGI pages like <a href=
- "config.html#CLIENT-SPECIFIC-TAG">client-tags</a> or the
- <a href="config.html#ENABLE-REMOTE-TOGGLE">remote toggle</a>,
- it checks the Referer header to see if the request comes from a
- trusted source.</p>
- <p>By default only the webinterface domains <a href=
- "http://config.privoxy.org/" target=
- "_top">config.privoxy.org</a> and <a href="http://p.p/" target=
- "_top">p.p</a> are considered trustworthy. Requests originating
- from other domains are rejected to prevent third-parties from
- modifiying Privoxy's state by e.g. embedding images that result
- in CGI requests.</p>
- <p>In some environments it may be desirable to embed links to
- CGI pages on external pages, for example on an Intranet
- homepage the Privoxy admin controls.</p>
- <p>The <span class="QUOTE">"trusted-cgi-referer"</span> option
- can be used to add that page, or the whole domain, as trusted
- source so the resulting requests aren't rejected. Requests are
- accepted if the specified trusted-cgi-refer is the prefix of
- the Referer.</p>
+ <p>Before <span class="APPLICATION">Privoxy</span> accepts configuration changes through CGI pages like
+ <a href="config.html#CLIENT-SPECIFIC-TAG">client-tags</a> or the <a href=
+ "config.html#ENABLE-REMOTE-TOGGLE">remote toggle</a>, it checks the Referer header to see if the request
+ comes from a trusted source.</p>
+ <p>By default only the webinterface domains <a href="http://config.privoxy.org/" target=
+ "_top">config.privoxy.org</a> and <a href="http://p.p/" target="_top">p.p</a> are considered trustworthy.
+ Requests originating from other domains are rejected to prevent third-parties from modifiying Privoxy's
+ state by e.g. embedding images that result in CGI requests.</p>
+ <p>In some environments it may be desirable to embed links to CGI pages on external pages, for example on
+ an Intranet homepage the Privoxy admin controls.</p>
+ <p>The <span class="QUOTE">"trusted-cgi-referer"</span> option can be used to add that page, or the whole
+ domain, as trusted source so the resulting requests aren't rejected. Requests are accepted if the
+ specified trusted-cgi-refer is the prefix of the Referer.</p>
<div class="WARNING">
<table class="WARNING" border="1" width="90%">
<tr>
</tr>
<tr>
<td align="left">
- <p>Declaring pages the admin doesn't control
- trustworthy may allow malicious third parties to modify
- Privoxy's internal state against the user's wishes and
- without the user's knowledge.</p>
+ <p>Declaring pages the admin doesn't control trustworthy may allow malicious third parties to
+ modify Privoxy's internal state against the user's wishes and without the user's knowledge.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="FORWARDING" id="FORWARDING">7.5.
- Forwarding</a></h2>
- <p>This feature allows routing of HTTP requests through a chain of
- multiple proxies.</p>
- <p>Forwarding can be used to chain Privoxy with a caching proxy to
- speed up browsing. Using a parent proxy may also be necessary if the
- machine that <span class="APPLICATION">Privoxy</span> runs on has no
- direct Internet access.</p>
- <p>Note that parent proxies can severely decrease your privacy level.
- For example a parent proxy could add your IP address to the request
- headers and if it's a caching proxy it may add the <span class=
- "QUOTE">"Etag"</span> header to revalidation requests again, even
- though you configured Privoxy to remove it. It may also ignore
- Privoxy's header time randomization and use the original values which
- could be used by the server as cookie replacement to track your steps
- between visits.</p>
- <p>Also specified here are SOCKS proxies. <span class=
- "APPLICATION">Privoxy</span> supports the SOCKS 4 and SOCKS 4A
- protocols.</p>
+ <h2 class="SECT2"><a name="FORWARDING" id="FORWARDING">7.5. Forwarding</a></h2>
+ <p>This feature allows routing of HTTP requests through a chain of multiple proxies.</p>
+ <p>Forwarding can be used to chain Privoxy with a caching proxy to speed up browsing. Using a parent proxy may
+ also be necessary if the machine that <span class="APPLICATION">Privoxy</span> runs on has no direct Internet
+ access.</p>
+ <p>Note that parent proxies can severely decrease your privacy level. For example a parent proxy could add your
+ IP address to the request headers and if it's a caching proxy it may add the <span class="QUOTE">"Etag"</span>
+ header to revalidation requests again, even though you configured Privoxy to remove it. It may also ignore
+ Privoxy's header time randomization and use the original values which could be used by the server as cookie
+ replacement to track your steps between visits.</p>
+ <p>Also specified here are SOCKS proxies. <span class="APPLICATION">Privoxy</span> supports the SOCKS 4 and SOCKS
+ 4A protocols.</p>
<div class="SECT3">
- <h4 class="SECT3"><a name="FORWARD" id="FORWARD">7.5.1.
- forward</a></h4>
+ <h4 class="SECT3"><a name="FORWARD" id="FORWARD">7.5.1. forward</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>To which parent HTTP proxy specific requests should be
- routed.</p>
+ <p>To which parent HTTP proxy specific requests should be routed.</p>
</dd>
<dt>Type of value:</dt>
<dd>
- <p><tt class="REPLACEABLE"><i>target_pattern</i></tt>
- <tt class="REPLACEABLE"><i>http_parent</i></tt>[:<tt class=
- "REPLACEABLE"><i>port</i></tt>]</p>
- <p>where <tt class="REPLACEABLE"><i>target_pattern</i></tt> is
- a <a href="actions-file.html#AF-PATTERNS">URL pattern</a> that
- specifies to which requests (i.e. URLs) this forward rule shall
- apply. Use <tt class="LITERAL">/</tt> to denote <span class=
- "QUOTE">"all URLs"</span>. <tt class=
- "REPLACEABLE"><i>http_parent</i></tt>[:<tt class=
- "REPLACEABLE"><i>port</i></tt>] is the DNS name or IP address
- of the parent HTTP proxy through which the requests should be
- forwarded, optionally followed by its listening port (default:
- 8000). Use a single dot (<tt class="LITERAL">.</tt>) to denote
+ <p><tt class="REPLACEABLE"><i>target_pattern</i></tt> <tt class=
+ "REPLACEABLE"><i>http_parent</i></tt>[:<tt class="REPLACEABLE"><i>port</i></tt>]</p>
+ <p>where <tt class="REPLACEABLE"><i>target_pattern</i></tt> is a <a href=
+ "actions-file.html#AF-PATTERNS">URL pattern</a> that specifies to which requests (i.e. URLs) this forward
+ rule shall apply. Use <tt class="LITERAL">/</tt> to denote <span class="QUOTE">"all URLs"</span>.
+ <tt class="REPLACEABLE"><i>http_parent</i></tt>[:<tt class="REPLACEABLE"><i>port</i></tt>] is the DNS
+ name or IP address of the parent HTTP proxy through which the requests should be forwarded, optionally
+ followed by its listening port (default: 8000). Use a single dot (<tt class="LITERAL">.</tt>) to denote
<span class="QUOTE">"no forwarding"</span>.</p>
</dd>
<dt>Default value:</dt>
<dd>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Unset</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Unset</i></span></p>
</dd>
<dt>Effect if unset:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>If <tt class="REPLACEABLE"><i>http_parent</i></tt> is
- <span class="QUOTE">"."</span>, then requests are not forwarded
- to another HTTP proxy but are made directly to the web
- servers.</p>
- <p><tt class="REPLACEABLE"><i>http_parent</i></tt> can be a
- numerical IPv6 address (if <a href=
- "http://tools.ietf.org/html/rfc3493" target="_top">RFC 3493</a>
- is implemented). To prevent clashes with the port delimiter,
- the whole IP address has to be put into brackets. On the other
- hand a <tt class="REPLACEABLE"><i>target_pattern</i></tt>
- containing an IPv6 address has to be put into angle brackets
- (normal brackets are reserved for regular expressions
- already).</p>
- <p>Multiple lines are OK, they are checked in sequence, and the
- last match wins.</p>
+ <p>If <tt class="REPLACEABLE"><i>http_parent</i></tt> is <span class="QUOTE">"."</span>, then requests
+ are not forwarded to another HTTP proxy but are made directly to the web servers.</p>
+ <p><tt class="REPLACEABLE"><i>http_parent</i></tt> can be a numerical IPv6 address (if <a href=
+ "http://tools.ietf.org/html/rfc3493" target="_top">RFC 3493</a> is implemented). To prevent clashes with
+ the port delimiter, the whole IP address has to be put into brackets. On the other hand a <tt class=
+ "REPLACEABLE"><i>target_pattern</i></tt> containing an IPv6 address has to be put into angle brackets
+ (normal brackets are reserved for regular expressions already).</p>
+ <p>Multiple lines are OK, they are checked in sequence, and the last match wins.</p>
</dd>
<dt>Examples:</dt>
<dd>
- <p>Everything goes to an example parent proxy, except SSL on
- port 443 (which it doesn't handle):</p>
+ <p>Everything goes to an example parent proxy, except SSL on port 443 (which it doesn't handle):</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- forward / parent-proxy.example.org:8080
+ <pre class="SCREEN"> forward / parent-proxy.example.org:8080
forward :443 .</pre>
</td>
</tr>
</table>
- <p>Everything goes to our example ISP's caching proxy, except
- for requests to that ISP's sites:</p>
+ <p>Everything goes to our example ISP's caching proxy, except for requests to that ISP's sites:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- forward / caching-proxy.isp.example.net:8000
+ <pre class="SCREEN"> forward / caching-proxy.isp.example.net:8000
forward .isp.example.net .</pre>
</td>
</tr>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- forward / [2001:DB8::1]:8000</pre>
+ <pre class="PROGRAMLISTING"> forward / [2001:DB8::1]:8000</pre>
</td>
</tr>
</table>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="PROGRAMLISTING">
- forward / parent-proxy.example.org:8000
+ <pre class="PROGRAMLISTING"> forward / parent-proxy.example.org:8000
forward ipv6-server.example.org .
forward <[2-3][0-9a-f][0-9a-f][0-9a-f]:*> .</pre>
</td>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="SOCKS" id="SOCKS">7.5.2. forward-socks4,
- forward-socks4a, forward-socks5 and forward-socks5t</a></h4><a name=
- "FORWARD-SOCKS4" id="FORWARD-SOCKS4"></a><a name="FORWARD-SOCKS4A"
- id="FORWARD-SOCKS4A"></a>
+ <h4 class="SECT3"><a name="SOCKS" id="SOCKS">7.5.2. forward-socks4, forward-socks4a, forward-socks5 and
+ forward-socks5t</a></h4><a name="FORWARD-SOCKS4" id="FORWARD-SOCKS4"></a><a name="FORWARD-SOCKS4A" id=
+ "FORWARD-SOCKS4A"></a>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Through which SOCKS proxy (and optionally to which parent
- HTTP proxy) specific requests should be routed.</p>
+ <p>Through which SOCKS proxy (and optionally to which parent HTTP proxy) specific requests should be
+ routed.</p>
</dd>
<dt>Type of value:</dt>
<dd>
- <p><tt class="REPLACEABLE"><i>target_pattern</i></tt>
- <tt class="REPLACEABLE"><i>socks_proxy</i></tt>[:<tt class=
- "REPLACEABLE"><i>port</i></tt>] <tt class=
- "REPLACEABLE"><i>http_parent</i></tt>[:<tt class=
- "REPLACEABLE"><i>port</i></tt>]</p>
- <p>where <tt class="REPLACEABLE"><i>target_pattern</i></tt> is
- a <a href="actions-file.html#AF-PATTERNS">URL pattern</a> that
- specifies to which requests (i.e. URLs) this forward rule shall
- apply. Use <tt class="LITERAL">/</tt> to denote <span class=
- "QUOTE">"all URLs"</span>. <tt class=
- "REPLACEABLE"><i>http_parent</i></tt> and <tt class=
- "REPLACEABLE"><i>socks_proxy</i></tt> are IP addresses in
- dotted decimal notation or valid DNS names (<tt class=
- "REPLACEABLE"><i>http_parent</i></tt> may be <span class=
- "QUOTE">"."</span> to denote <span class="QUOTE">"no HTTP
- forwarding"</span>), and the optional <tt class=
- "REPLACEABLE"><i>port</i></tt> parameters are TCP ports, i.e.
- integer values from 1 to 65535</p>
+ <p><tt class="REPLACEABLE"><i>target_pattern</i></tt> <tt class=
+ "REPLACEABLE"><i>socks_proxy</i></tt>[:<tt class="REPLACEABLE"><i>port</i></tt>] <tt class=
+ "REPLACEABLE"><i>http_parent</i></tt>[:<tt class="REPLACEABLE"><i>port</i></tt>]</p>
+ <p>where <tt class="REPLACEABLE"><i>target_pattern</i></tt> is a <a href=
+ "actions-file.html#AF-PATTERNS">URL pattern</a> that specifies to which requests (i.e. URLs) this forward
+ rule shall apply. Use <tt class="LITERAL">/</tt> to denote <span class="QUOTE">"all URLs"</span>.
+ <tt class="REPLACEABLE"><i>http_parent</i></tt> and <tt class="REPLACEABLE"><i>socks_proxy</i></tt> are
+ IP addresses in dotted decimal notation or valid DNS names (<tt class=
+ "REPLACEABLE"><i>http_parent</i></tt> may be <span class="QUOTE">"."</span> to denote <span class=
+ "QUOTE">"no HTTP forwarding"</span>), and the optional <tt class="REPLACEABLE"><i>port</i></tt>
+ parameters are TCP ports, i.e. integer values from 1 to 65535</p>
</dd>
<dt>Default value:</dt>
<dd>
- <p><span class="emphasis"><i class=
- "EMPHASIS">Unset</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">Unset</i></span></p>
</dd>
<dt>Effect if unset:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Multiple lines are OK, they are checked in sequence, and the
- last match wins.</p>
- <p>The difference between <tt class=
- "LITERAL">forward-socks4</tt> and <tt class=
- "LITERAL">forward-socks4a</tt> is that in the SOCKS 4A
- protocol, the DNS resolution of the target hostname happens on
- the SOCKS server, while in SOCKS 4 it happens locally.</p>
- <p>With <tt class="LITERAL">forward-socks5</tt> the DNS
- resolution will happen on the remote server as well.</p>
- <p><tt class="LITERAL">forward-socks5t</tt> works like vanilla
- <tt class="LITERAL">forward-socks5</tt> but lets <span class=
- "APPLICATION">Privoxy</span> additionally use Tor-specific
- SOCKS extensions. Currently the only supported SOCKS extension
- is optimistic data which can reduce the latency for the first
- request made on a newly created connection.</p>
- <p><tt class="REPLACEABLE"><i>socks_proxy</i></tt> and
- <tt class="REPLACEABLE"><i>http_parent</i></tt> can be a
- numerical IPv6 address (if <a href=
- "http://tools.ietf.org/html/rfc3493" target="_top">RFC 3493</a>
- is implemented). To prevent clashes with the port delimiter,
- the whole IP address has to be put into brackets. On the other
- hand a <tt class="REPLACEABLE"><i>target_pattern</i></tt>
- containing an IPv6 address has to be put into angle brackets
- (normal brackets are reserved for regular expressions
+ <p>Multiple lines are OK, they are checked in sequence, and the last match wins.</p>
+ <p>The difference between <tt class="LITERAL">forward-socks4</tt> and <tt class=
+ "LITERAL">forward-socks4a</tt> is that in the SOCKS 4A protocol, the DNS resolution of the target
+ hostname happens on the SOCKS server, while in SOCKS 4 it happens locally.</p>
+ <p>With <tt class="LITERAL">forward-socks5</tt> the DNS resolution will happen on the remote server as
+ well.</p>
+ <p><tt class="LITERAL">forward-socks5t</tt> works like vanilla <tt class="LITERAL">forward-socks5</tt>
+ but lets <span class="APPLICATION">Privoxy</span> additionally use Tor-specific SOCKS extensions.
+ Currently the only supported SOCKS extension is optimistic data which can reduce the latency for the
+ first request made on a newly created connection.</p>
+ <p><tt class="REPLACEABLE"><i>socks_proxy</i></tt> and <tt class="REPLACEABLE"><i>http_parent</i></tt>
+ can be a numerical IPv6 address (if <a href="http://tools.ietf.org/html/rfc3493" target="_top">RFC
+ 3493</a> is implemented). To prevent clashes with the port delimiter, the whole IP address has to be put
+ into brackets. On the other hand a <tt class="REPLACEABLE"><i>target_pattern</i></tt> containing an IPv6
+ address has to be put into angle brackets (normal brackets are reserved for regular expressions
already).</p>
- <p>If <tt class="REPLACEABLE"><i>http_parent</i></tt> is
- <span class="QUOTE">"."</span>, then requests are not forwarded
- to another HTTP proxy but are made (HTTP-wise) directly to the
- web servers, albeit through a SOCKS proxy.</p>
+ <p>If <tt class="REPLACEABLE"><i>http_parent</i></tt> is <span class="QUOTE">"."</span>, then requests
+ are not forwarded to another HTTP proxy but are made (HTTP-wise) directly to the web servers, albeit
+ through a SOCKS proxy.</p>
</dd>
<dt>Examples:</dt>
<dd>
- <p>From the company example.com, direct connections are made to
- all <span class="QUOTE">"internal"</span> domains, but
- everything outbound goes through their ISP's proxy by way of
- example.com's corporate SOCKS 4A gateway to the Internet.</p>
+ <p>From the company example.com, direct connections are made to all <span class="QUOTE">"internal"</span>
+ domains, but everything outbound goes through their ISP's proxy by way of example.com's corporate SOCKS
+ 4A gateway to the Internet.</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p>A rule that uses a SOCKS 4 gateway for all destinations but
- no HTTP parent looks like this:</p>
+ <p>A rule that uses a SOCKS 4 gateway for all destinations but no HTTP parent looks like this:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- forward-socks4 / socks-gw.example.com:1080 .</pre>
+ <pre class="SCREEN"> forward-socks4 / socks-gw.example.com:1080 .</pre>
</td>
</tr>
</table>
- <p>To chain Privoxy and Tor, both running on the same system,
- you would use something like:</p>
+ <p>To chain Privoxy and Tor, both running on the same system, you would use something like:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- forward-socks5t / 127.0.0.1:9050 .</pre>
+ <pre class="SCREEN"> forward-socks5t / 127.0.0.1:9050 .</pre>
</td>
</tr>
</table>
- <p>Note that if you got Tor through one of the bundles, you may
- have to change the port from 9050 to 9150 (or even another
- one). For details, please check the documentation on the
- <a href="https://torproject.org/" target="_top">Tor
- website</a>.</p>
- <p>The public <span class="APPLICATION">Tor</span> network
- can't be used to reach your local network, if you need to
- access local servers you therefore might want to make some
- exceptions:</p>
+ <p>Note that if you got Tor through one of the bundles, you may have to change the port from 9050 to 9150
+ (or even another one). For details, please check the documentation on the <a href=
+ "https://torproject.org/" target="_top">Tor website</a>.</p>
+ <p>The public <span class="APPLICATION">Tor</span> network can't be used to reach your local network, if
+ you need to access local servers you therefore might want to make some exceptions:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
</td>
</tr>
</table>
- <p>Unencrypted connections to systems in these address ranges
- will be as (un)secure as the local network is, but the
- alternative is that you can't reach the local network through
- <span class="APPLICATION">Privoxy</span> at all. Of course this
- may actually be desired and there is no reason to make these
- exceptions if you aren't sure you need them.</p>
- <p>If you also want to be able to reach servers in your local
- network by using their names, you will need additional
- exceptions that look like this:</p>
+ <p>Unencrypted connections to systems in these address ranges will be as (un)secure as the local network
+ is, but the alternative is that you can't reach the local network through <span class=
+ "APPLICATION">Privoxy</span> at all. Of course this may actually be desired and there is no reason to
+ make these exceptions if you aren't sure you need them.</p>
+ <p>If you also want to be able to reach servers in your local network by using their names, you will need
+ additional exceptions that look like this:</p>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- forward localhost/ .</pre>
+ <pre class="SCREEN"> forward localhost/ .</pre>
</td>
</tr>
</table>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ADVANCED-FORWARDING-EXAMPLES" id=
- "ADVANCED-FORWARDING-EXAMPLES">7.5.3. Advanced Forwarding
- Examples</a></h4>
- <p>If you have links to multiple ISPs that provide various special
- content only to their subscribers, you can configure multiple
- <span class="APPLICATION">Privoxies</span> which have connections to
- the respective ISPs to act as forwarders to each other, so that
- <span class="emphasis"><i class="EMPHASIS">your</i></span> users can
+ <h4 class="SECT3"><a name="ADVANCED-FORWARDING-EXAMPLES" id="ADVANCED-FORWARDING-EXAMPLES">7.5.3. Advanced
+ Forwarding Examples</a></h4>
+ <p>If you have links to multiple ISPs that provide various special content only to their subscribers, you can
+ configure multiple <span class="APPLICATION">Privoxies</span> which have connections to the respective ISPs to
+ act as forwarders to each other, so that <span class="emphasis"><i class="EMPHASIS">your</i></span> users can
see the internal content of all ISPs.</p>
- <p>Assume that host-a has a PPP connection to isp-a.example.net. And
- host-b has a PPP connection to isp-b.example.org. Both run
- <span class="APPLICATION">Privoxy</span>. Their forwarding
- configuration can look like this:</p>
+ <p>Assume that host-a has a PPP connection to isp-a.example.net. And host-b has a PPP connection to
+ isp-b.example.org. Both run <span class="APPLICATION">Privoxy</span>. Their forwarding configuration can look
+ like this:</p>
<p>host-a:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>Now, your users can set their browser's proxy to use either host-a
- or host-b and be able to browse the internal content of both isp-a
- and isp-b.</p>
- <p>If you intend to chain <span class="APPLICATION">Privoxy</span>
- and <span class="APPLICATION">squid</span> locally, then chaining as
- <tt class="LITERAL">browser -> squid -> privoxy</tt> is the
- recommended way.</p>
- <p>Assuming that <span class="APPLICATION">Privoxy</span> and
- <span class="APPLICATION">squid</span> run on the same box, your
- <span class="APPLICATION">squid</span> configuration could then look
- like this:</p>
+ <p>Now, your users can set their browser's proxy to use either host-a or host-b and be able to browse the
+ internal content of both isp-a and isp-b.</p>
+ <p>If you intend to chain <span class="APPLICATION">Privoxy</span> and <span class="APPLICATION">squid</span>
+ locally, then chaining as <tt class="LITERAL">browser -> squid -> privoxy</tt> is the recommended
+ way.</p>
+ <p>Assuming that <span class="APPLICATION">Privoxy</span> and <span class="APPLICATION">squid</span> run on the
+ same box, your <span class="APPLICATION">squid</span> configuration could then look like this:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # Define Privoxy as parent proxy (without ICP)
+ <pre class="SCREEN"> # Define Privoxy as parent proxy (without ICP)
cache_peer 127.0.0.1 parent 8118 7 no-query
# Define ACL for protocol FTP
</td>
</tr>
</table>
- <p>You would then need to change your browser's proxy settings to
- <span class="APPLICATION">squid</span>'s address and port. Squid
- normally uses port 3128. If unsure consult <tt class=
- "LITERAL">http_port</tt> in <tt class="FILENAME">squid.conf</tt>.</p>
- <p>You could just as well decide to only forward requests you suspect
- of leading to Windows executables through a virus-scanning parent
- proxy, say, on <tt class="LITERAL">antivir.example.com</tt>, port
- 8010:</p>
+ <p>You would then need to change your browser's proxy settings to <span class="APPLICATION">squid</span>'s
+ address and port. Squid normally uses port 3128. If unsure consult <tt class="LITERAL">http_port</tt> in
+ <tt class="FILENAME">squid.conf</tt>.</p>
+ <p>You could just as well decide to only forward requests you suspect of leading to Windows executables through
+ a virus-scanning parent proxy, say, on <tt class="LITERAL">antivir.example.com</tt>, port 8010:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</table>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="FORWARDED-CONNECT-RETRIES" id=
- "FORWARDED-CONNECT-RETRIES">7.5.4. forwarded-connect-retries</a></h4>
+ <h4 class="SECT3"><a name="FORWARDED-CONNECT-RETRIES" id="FORWARDED-CONNECT-RETRIES">7.5.4.
+ forwarded-connect-retries</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>How often Privoxy retries if a forwarded connection request
- fails.</p>
+ <p>How often Privoxy retries if a forwarded connection request fails.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>Connections forwarded through other proxies are treated like
- direct connections and no retry attempts are made.</p>
+ <p>Connections forwarded through other proxies are treated like direct connections and no retry attempts
+ are made.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p><tt class=
- "REPLACEABLE"><i>forwarded-connect-retries</i></tt> is mainly
- interesting for socks4a connections, where <span class=
- "APPLICATION">Privoxy</span> can't detect why the connections
- failed. The connection might have failed because of a DNS
- timeout in which case a retry makes sense, but it might also
- have failed because the server doesn't exist or isn't
- reachable. In this case the retry will just delay the
- appearance of Privoxy's error message.</p>
- <p>Note that in the context of this option, <span class=
- "QUOTE">"forwarded connections"</span> includes all connections
- that Privoxy forwards through other proxies. This option is not
- limited to the HTTP CONNECT method.</p>
- <p>Only use this option, if you are getting lots of
- forwarding-related error messages that go away when you try
- again manually. Start with a small value and check Privoxy's
- logfile from time to time, to see how many retries are usually
- needed.</p>
+ <p><tt class="REPLACEABLE"><i>forwarded-connect-retries</i></tt> is mainly interesting for socks4a
+ connections, where <span class="APPLICATION">Privoxy</span> can't detect why the connections failed. The
+ connection might have failed because of a DNS timeout in which case a retry makes sense, but it might
+ also have failed because the server doesn't exist or isn't reachable. In this case the retry will just
+ delay the appearance of Privoxy's error message.</p>
+ <p>Note that in the context of this option, <span class="QUOTE">"forwarded connections"</span> includes
+ all connections that Privoxy forwards through other proxies. This option is not limited to the HTTP
+ CONNECT method.</p>
+ <p>Only use this option, if you are getting lots of forwarding-related error messages that go away when
+ you try again manually. Start with a small value and check Privoxy's logfile from time to time, to see
+ how many retries are usually needed.</p>
</dd>
<dt>Examples:</dt>
<dd>
<div class="SECT2">
<h2 class="SECT2"><a name="MISC" id="MISC">7.6. Miscellaneous</a></h2>
<div class="SECT3">
- <h4 class="SECT3"><a name="ACCEPT-INTERCEPTED-REQUESTS" id=
- "ACCEPT-INTERCEPTED-REQUESTS">7.6.1.
+ <h4 class="SECT3"><a name="ACCEPT-INTERCEPTED-REQUESTS" id="ACCEPT-INTERCEPTED-REQUESTS">7.6.1.
accept-intercepted-requests</a></h4>
<div class="VARIABLELIST">
<dl>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>Only proxy requests are accepted, intercepted requests are
- treated as invalid.</p>
+ <p>Only proxy requests are accepted, intercepted requests are treated as invalid.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>If you don't trust your clients and want to force them to
- use <span class="APPLICATION">Privoxy</span>, enable this
- option and configure your packet filter to redirect outgoing
- HTTP connections into <span class=
- "APPLICATION">Privoxy</span>.</p>
- <p>Note that intercepting encrypted connections (HTTPS) isn't
- supported.</p>
- <p>Make sure that <span class="APPLICATION">Privoxy's</span>
- own requests aren't redirected as well. Additionally take care
- that <span class="APPLICATION">Privoxy</span> can't
- intentionally connect to itself, otherwise you could run into
- redirection loops if <span class="APPLICATION">Privoxy's</span>
- listening port is reachable by the outside or an attacker has
- access to the pages you visit.</p>
- <p>If you are running Privoxy as intercepting proxy without
- being able to intercept all client requests you may want to
- adjust the CGI templates to make sure they don't reference
- content from config.privoxy.org.</p>
+ <p>If you don't trust your clients and want to force them to use <span class=
+ "APPLICATION">Privoxy</span>, enable this option and configure your packet filter to redirect outgoing
+ HTTP connections into <span class="APPLICATION">Privoxy</span>.</p>
+ <p>Note that intercepting encrypted connections (HTTPS) isn't supported.</p>
+ <p>Make sure that <span class="APPLICATION">Privoxy's</span> own requests aren't redirected as well.
+ Additionally take care that <span class="APPLICATION">Privoxy</span> can't intentionally connect to
+ itself, otherwise you could run into redirection loops if <span class="APPLICATION">Privoxy's</span>
+ listening port is reachable by the outside or an attacker has access to the pages you visit.</p>
+ <p>If you are running Privoxy as intercepting proxy without being able to intercept all client requests
+ you may want to adjust the CGI templates to make sure they don't reference content from
+ config.privoxy.org.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ALLOW-CGI-REQUEST-CRUNCHING" id=
- "ALLOW-CGI-REQUEST-CRUNCHING">7.6.2.
+ <h4 class="SECT3"><a name="ALLOW-CGI-REQUEST-CRUNCHING" id="ALLOW-CGI-REQUEST-CRUNCHING">7.6.2.
allow-cgi-request-crunching</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Whether requests to <span class=
- "APPLICATION">Privoxy's</span> CGI pages can be blocked or
+ <p>Whether requests to <span class="APPLICATION">Privoxy's</span> CGI pages can be blocked or
redirected.</p>
</dd>
<dt>Type of value:</dt>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p><span class="APPLICATION">Privoxy</span> ignores block and
- redirect actions for its CGI pages.</p>
+ <p><span class="APPLICATION">Privoxy</span> ignores block and redirect actions for its CGI pages.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>By default <span class="APPLICATION">Privoxy</span> ignores
- block or redirect actions for its CGI pages. Intercepting these
- requests can be useful in multi-user setups to implement
- fine-grained access control, but it can also render the
- complete web interface useless and make debugging problems
- painful if done without care.</p>
- <p>Don't enable this option unless you're sure that you really
- need it.</p>
+ <p>By default <span class="APPLICATION">Privoxy</span> ignores block or redirect actions for its CGI
+ pages. Intercepting these requests can be useful in multi-user setups to implement fine-grained access
+ control, but it can also render the complete web interface useless and make debugging problems painful if
+ done without care.</p>
+ <p>Don't enable this option unless you're sure that you really need it.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="SPLIT-LARGE-FORMS" id=
- "SPLIT-LARGE-FORMS">7.6.3. split-large-forms</a></h4>
+ <h4 class="SECT3"><a name="SPLIT-LARGE-FORMS" id="SPLIT-LARGE-FORMS">7.6.3. split-large-forms</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Whether the CGI interface should stay compatible with broken
- HTTP clients.</p>
+ <p>Whether the CGI interface should stay compatible with broken HTTP clients.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p><span class="APPLICATION">Privoxy's</span> CGI forms can
- lead to rather long URLs. This isn't a problem as far as the
- HTTP standard is concerned, but it can confuse clients with
- arbitrary URL length limitations.</p>
- <p>Enabling split-large-forms causes <span class=
- "APPLICATION">Privoxy</span> to divide big forms into smaller
- ones to keep the URL length down. It makes editing a lot less
- convenient and you can no longer submit all changes at once,
- but at least it works around this browser bug.</p>
- <p>If you don't notice any editing problems, there is no reason
- to enable this option, but if one of the submit buttons appears
- to be broken, you should give it a try.</p>
+ <p><span class="APPLICATION">Privoxy's</span> CGI forms can lead to rather long URLs. This isn't a
+ problem as far as the HTTP standard is concerned, but it can confuse clients with arbitrary URL length
+ limitations.</p>
+ <p>Enabling split-large-forms causes <span class="APPLICATION">Privoxy</span> to divide big forms into
+ smaller ones to keep the URL length down. It makes editing a lot less convenient and you can no longer
+ submit all changes at once, but at least it works around this browser bug.</p>
+ <p>If you don't notice any editing problems, there is no reason to enable this option, but if one of the
+ submit buttons appears to be broken, you should give it a try.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="KEEP-ALIVE-TIMEOUT" id=
- "KEEP-ALIVE-TIMEOUT">7.6.4. keep-alive-timeout</a></h4>
+ <h4 class="SECT3"><a name="KEEP-ALIVE-TIMEOUT" id="KEEP-ALIVE-TIMEOUT">7.6.4. keep-alive-timeout</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Number of seconds after which an open connection will no
- longer be reused.</p>
+ <p>Number of seconds after which an open connection will no longer be reused.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This option allows clients to keep the connection to
- <span class="APPLICATION">Privoxy</span> alive. If the server
- supports it, <span class="APPLICATION">Privoxy</span> will keep
- the connection to the server alive as well. Under certain
- circumstances this may result in speed-ups.</p>
- <p>By default, <span class="APPLICATION">Privoxy</span> will
- close the connection to the server if the client connection
- gets closed, or if the specified timeout has been reached
- without a new request coming in. This behaviour can be changed
- with the <a href="#CONNECTION-SHARING" target=
+ <p>This option allows clients to keep the connection to <span class="APPLICATION">Privoxy</span> alive.
+ If the server supports it, <span class="APPLICATION">Privoxy</span> will keep the connection to the
+ server alive as well. Under certain circumstances this may result in speed-ups.</p>
+ <p>By default, <span class="APPLICATION">Privoxy</span> will close the connection to the server if the
+ client connection gets closed, or if the specified timeout has been reached without a new request coming
+ in. This behaviour can be changed with the <a href="#CONNECTION-SHARING" target=
"_top">connection-sharing</a> option.</p>
- <p>This option has no effect if <span class=
- "APPLICATION">Privoxy</span> has been compiled without
+ <p>This option has no effect if <span class="APPLICATION">Privoxy</span> has been compiled without
keep-alive support.</p>
- <p>Note that a timeout of five seconds as used in the default
- configuration file significantly decreases the number of
- connections that will be reused. The value is used because some
- browsers limit the number of connections they open to a single
- host and apply the same limit to proxies. This can result in a
- single website <span class="QUOTE">"grabbing"</span> all the
- connections the browser allows, which means connections to
- other websites can't be opened until the connections currently
- in use time out.</p>
- <p>Several users have reported this as a Privoxy bug, so the
- default value has been reduced. Consider increasing it to 300
- seconds or even more if you think your browser can handle it.
- If your browser appears to be hanging, it probably can't.</p>
+ <p>Note that a timeout of five seconds as used in the default configuration file significantly decreases
+ the number of connections that will be reused. The value is used because some browsers limit the number
+ of connections they open to a single host and apply the same limit to proxies. This can result in a
+ single website <span class="QUOTE">"grabbing"</span> all the connections the browser allows, which means
+ connections to other websites can't be opened until the connections currently in use time out.</p>
+ <p>Several users have reported this as a Privoxy bug, so the default value has been reduced. Consider
+ increasing it to 300 seconds or even more if you think your browser can handle it. If your browser
+ appears to be hanging, it probably can't.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="TOLERATE-PIPELINING" id=
- "TOLERATE-PIPELINING">7.6.5. tolerate-pipelining</a></h4>
+ <h4 class="SECT3"><a name="TOLERATE-PIPELINING" id="TOLERATE-PIPELINING">7.6.5. tolerate-pipelining</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>If Privoxy receives more than one request at once, it
- terminates the client connection after serving the first
- one.</p>
+ <p>If Privoxy receives more than one request at once, it terminates the client connection after serving
+ the first one.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p><span class="APPLICATION">Privoxy</span> currently doesn't
- pipeline outgoing requests, thus allowing pipelining on the
- client connection is not guaranteed to improve the
- performance.</p>
- <p>By default <span class="APPLICATION">Privoxy</span> tries to
- discourage clients from pipelining by discarding aggressively
- pipelined requests, which forces the client to resend them
- through a new connection.</p>
- <p>This option lets <span class="APPLICATION">Privoxy</span>
- tolerate pipelining. Whether or not that improves performance
- mainly depends on the client configuration.</p>
- <p>If you are seeing problems with pages not properly loading,
- disabling this option could work around the problem.</p>
+ <p><span class="APPLICATION">Privoxy</span> currently doesn't pipeline outgoing requests, thus allowing
+ pipelining on the client connection is not guaranteed to improve the performance.</p>
+ <p>By default <span class="APPLICATION">Privoxy</span> tries to discourage clients from pipelining by
+ discarding aggressively pipelined requests, which forces the client to resend them through a new
+ connection.</p>
+ <p>This option lets <span class="APPLICATION">Privoxy</span> tolerate pipelining. Whether or not that
+ improves performance mainly depends on the client configuration.</p>
+ <p>If you are seeing problems with pages not properly loading, disabling this option could work around
+ the problem.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="DEFAULT-SERVER-TIMEOUT" id=
- "DEFAULT-SERVER-TIMEOUT">7.6.6. default-server-timeout</a></h4>
+ <h4 class="SECT3"><a name="DEFAULT-SERVER-TIMEOUT" id="DEFAULT-SERVER-TIMEOUT">7.6.6.
+ default-server-timeout</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Assumed server-side keep-alive timeout if not specified by
- the server.</p>
+ <p>Assumed server-side keep-alive timeout if not specified by the server.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>Connections for which the server didn't specify the
- keep-alive timeout are not reused.</p>
+ <p>Connections for which the server didn't specify the keep-alive timeout are not reused.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Enabling this option significantly increases the number of
- connections that are reused, provided the <a href=
- "#KEEP-ALIVE-TIMEOUT" target="_top">keep-alive-timeout</a>
- option is also enabled.</p>
- <p>While it also increases the number of connections problems
- when <span class="APPLICATION">Privoxy</span> tries to reuse a
- connection that already has been closed on the server side, or
- is closed while <span class="APPLICATION">Privoxy</span> is
- trying to reuse it, this should only be a problem if it happens
- for the first request sent by the client. If it happens for
- requests on reused client connections, <span class=
- "APPLICATION">Privoxy</span> will simply close the connection
- and the client is supposed to retry the request without
- bothering the user.</p>
- <p>Enabling this option is therefore only recommended if the
- <a href="#CONNECTION-SHARING" target=
+ <p>Enabling this option significantly increases the number of connections that are reused, provided the
+ <a href="#KEEP-ALIVE-TIMEOUT" target="_top">keep-alive-timeout</a> option is also enabled.</p>
+ <p>While it also increases the number of connections problems when <span class=
+ "APPLICATION">Privoxy</span> tries to reuse a connection that already has been closed on the server side,
+ or is closed while <span class="APPLICATION">Privoxy</span> is trying to reuse it, this should only be a
+ problem if it happens for the first request sent by the client. If it happens for requests on reused
+ client connections, <span class="APPLICATION">Privoxy</span> will simply close the connection and the
+ client is supposed to retry the request without bothering the user.</p>
+ <p>Enabling this option is therefore only recommended if the <a href="#CONNECTION-SHARING" target=
"_top">connection-sharing</a> option is disabled.</p>
- <p>It is an error to specify a value larger than the <a href=
- "#KEEP-ALIVE-TIMEOUT" target="_top">keep-alive-timeout</a>
- value.</p>
- <p>This option has no effect if <span class=
- "APPLICATION">Privoxy</span> has been compiled without
+ <p>It is an error to specify a value larger than the <a href="#KEEP-ALIVE-TIMEOUT" target=
+ "_top">keep-alive-timeout</a> value.</p>
+ <p>This option has no effect if <span class="APPLICATION">Privoxy</span> has been compiled without
keep-alive support.</p>
</dd>
<dt>Examples:</dt>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CONNECTION-SHARING" id=
- "CONNECTION-SHARING">7.6.7. connection-sharing</a></h4>
+ <h4 class="SECT3"><a name="CONNECTION-SHARING" id="CONNECTION-SHARING">7.6.7. connection-sharing</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Whether or not outgoing connections that have been kept
- alive should be shared between different incoming
- connections.</p>
+ <p>Whether or not outgoing connections that have been kept alive should be shared between different
+ incoming connections.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This option has no effect if <span class=
- "APPLICATION">Privoxy</span> has been compiled without
+ <p>This option has no effect if <span class="APPLICATION">Privoxy</span> has been compiled without
keep-alive support, or if it's disabled.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Note that reusing connections doesn't necessary cause
- speedups. There are also a few privacy implications you should
- be aware of.</p>
- <p>If this option is effective, outgoing connections are shared
- between clients (if there are more than one) and closing the
- browser that initiated the outgoing connection does no longer
- affect the connection between <span class=
- "APPLICATION">Privoxy</span> and the server unless the client's
- request hasn't been completed yet.</p>
- <p>If the outgoing connection is idle, it will not be closed
- until either <span class="APPLICATION">Privoxy's</span> or the
- server's timeout is reached. While it's open, the server knows
- that the system running <span class=
- "APPLICATION">Privoxy</span> is still there.</p>
- <p>If there are more than one client (maybe even belonging to
- multiple users), they will be able to reuse each others
- connections. This is potentially dangerous in case of
- authentication schemes like NTLM where only the connection is
- authenticated, instead of requiring authentication for each
- request.</p>
- <p>If there is only a single client, and if said client can
- keep connections alive on its own, enabling this option has
- next to no effect. If the client doesn't support connection
- keep-alive, enabling this option may make sense as it allows
- <span class="APPLICATION">Privoxy</span> to keep outgoing
- connections alive even if the client itself doesn't support
- it.</p>
- <p>You should also be aware that enabling this option increases
- the likelihood of getting the "No server or forwarder data"
- error message, especially if you are using a slow connection to
- the Internet.</p>
- <p>This option should only be used by experienced users who
- understand the risks and can weight them against the
- benefits.</p>
+ <p>Note that reusing connections doesn't necessary cause speedups. There are also a few privacy
+ implications you should be aware of.</p>
+ <p>If this option is effective, outgoing connections are shared between clients (if there are more than
+ one) and closing the browser that initiated the outgoing connection does no longer affect the connection
+ between <span class="APPLICATION">Privoxy</span> and the server unless the client's request hasn't been
+ completed yet.</p>
+ <p>If the outgoing connection is idle, it will not be closed until either <span class=
+ "APPLICATION">Privoxy's</span> or the server's timeout is reached. While it's open, the server knows that
+ the system running <span class="APPLICATION">Privoxy</span> is still there.</p>
+ <p>If there are more than one client (maybe even belonging to multiple users), they will be able to reuse
+ each others connections. This is potentially dangerous in case of authentication schemes like NTLM where
+ only the connection is authenticated, instead of requiring authentication for each request.</p>
+ <p>If there is only a single client, and if said client can keep connections alive on its own, enabling
+ this option has next to no effect. If the client doesn't support connection keep-alive, enabling this
+ option may make sense as it allows <span class="APPLICATION">Privoxy</span> to keep outgoing connections
+ alive even if the client itself doesn't support it.</p>
+ <p>You should also be aware that enabling this option increases the likelihood of getting the "No server
+ or forwarder data" error message, especially if you are using a slow connection to the Internet.</p>
+ <p>This option should only be used by experienced users who understand the risks and can weight them
+ against the benefits.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="SOCKET-TIMEOUT" id="SOCKET-TIMEOUT">7.6.8.
- socket-timeout</a></h4>
+ <h4 class="SECT3"><a name="SOCKET-TIMEOUT" id="SOCKET-TIMEOUT">7.6.8. socket-timeout</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Number of seconds after which a socket times out if no data
- is received.</p>
+ <p>Number of seconds after which a socket times out if no data is received.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>The default is quite high and you probably want to reduce
- it. If you aren't using an occasionally slow proxy like Tor,
- reducing it to a few seconds should be fine.</p>
+ <p>The default is quite high and you probably want to reduce it. If you aren't using an occasionally slow
+ proxy like Tor, reducing it to a few seconds should be fine.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="MAX-CLIENT-CONNECTIONS" id=
- "MAX-CLIENT-CONNECTIONS">7.6.9. max-client-connections</a></h4>
+ <h4 class="SECT3"><a name="MAX-CLIENT-CONNECTIONS" id="MAX-CLIENT-CONNECTIONS">7.6.9.
+ max-client-connections</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Maximum number of client connections that will be
- served.</p>
+ <p>Maximum number of client connections that will be served.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>Connections are served until a resource limit is
- reached.</p>
+ <p>Connections are served until a resource limit is reached.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p><span class="APPLICATION">Privoxy</span> creates one thread
- (or process) for every incoming client connection that isn't
- rejected based on the access control settings.</p>
- <p>If the system is powerful enough, <span class=
- "APPLICATION">Privoxy</span> can theoretically deal with
- several hundred (or thousand) connections at the same time, but
- some operating systems enforce resource limits by shutting down
- offending processes and their default limits may be below the
- ones <span class="APPLICATION">Privoxy</span> would require
- under heavy load.</p>
- <p>Configuring <span class="APPLICATION">Privoxy</span> to
- enforce a connection limit below the thread or process limit
- used by the operating system makes sure this doesn't happen.
- Simply increasing the operating system's limit would work too,
- but if <span class="APPLICATION">Privoxy</span> isn't the only
- application running on the system, you may actually want to
- limit the resources used by <span class=
+ <p><span class="APPLICATION">Privoxy</span> creates one thread (or process) for every incoming client
+ connection that isn't rejected based on the access control settings.</p>
+ <p>If the system is powerful enough, <span class="APPLICATION">Privoxy</span> can theoretically deal with
+ several hundred (or thousand) connections at the same time, but some operating systems enforce resource
+ limits by shutting down offending processes and their default limits may be below the ones <span class=
+ "APPLICATION">Privoxy</span> would require under heavy load.</p>
+ <p>Configuring <span class="APPLICATION">Privoxy</span> to enforce a connection limit below the thread or
+ process limit used by the operating system makes sure this doesn't happen. Simply increasing the
+ operating system's limit would work too, but if <span class="APPLICATION">Privoxy</span> isn't the only
+ application running on the system, you may actually want to limit the resources used by <span class=
"APPLICATION">Privoxy</span>.</p>
- <p>If <span class="APPLICATION">Privoxy</span> is only used by
- a single trusted user, limiting the number of client
- connections is probably unnecessary. If there are multiple
- possibly untrusted users you probably still want to
- additionally use a packet filter to limit the maximal number of
- incoming connections per client. Otherwise a malicious user
- could intentionally create a high number of connections to
- prevent other users from using <span class=
- "APPLICATION">Privoxy</span>.</p>
- <p>Obviously using this option only makes sense if you choose a
- limit below the one enforced by the operating system.</p>
- <p>One most POSIX-compliant systems <span class=
- "APPLICATION">Privoxy</span> can't properly deal with more than
- FD_SETSIZE file descriptors at the same time and has to reject
- connections if the limit is reached. This will likely change in
- a future version, but currently this limit can't be increased
- without recompiling <span class="APPLICATION">Privoxy</span>
- with a different FD_SETSIZE limit.</p>
+ <p>If <span class="APPLICATION">Privoxy</span> is only used by a single trusted user, limiting the number
+ of client connections is probably unnecessary. If there are multiple possibly untrusted users you
+ probably still want to additionally use a packet filter to limit the maximal number of incoming
+ connections per client. Otherwise a malicious user could intentionally create a high number of
+ connections to prevent other users from using <span class="APPLICATION">Privoxy</span>.</p>
+ <p>Obviously using this option only makes sense if you choose a limit below the one enforced by the
+ operating system.</p>
+ <p>One most POSIX-compliant systems <span class="APPLICATION">Privoxy</span> can't properly deal with
+ more than FD_SETSIZE file descriptors at the same time and has to reject connections if the limit is
+ reached. This will likely change in a future version, but currently this limit can't be increased without
+ recompiling <span class="APPLICATION">Privoxy</span> with a different FD_SETSIZE limit.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="LISTEN-BACKLOG" id=
- "LISTEN-BACKLOG">7.6.10. listen-backlog</a></h4>
+ <h4 class="SECT3"><a name="LISTEN-BACKLOG" id="LISTEN-BACKLOG">7.6.10. listen-backlog</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Connection queue length requested from the operating
- system.</p>
+ <p>Connection queue length requested from the operating system.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>A connection queue length of 128 is requested from the
- operating system.</p>
+ <p>A connection queue length of 128 is requested from the operating system.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Under high load incoming connection may queue up before
- Privoxy gets around to serve them. The queue length is limitted
- by the operating system. Once the queue is full, additional
- connections are dropped before Privoxy can accept and serve
- them.</p>
- <p>Increasing the queue length allows Privoxy to accept more
- incomming connections that arrive roughly at the same time.</p>
- <p>Note that Privoxy can only request a certain queue length,
- whether or not the requested length is actually used depends on
- the operating system which may use a different length
- instead.</p>
- <p>On many operating systems a limit of -1 can be specified to
- instruct the operating system to use the maximum queue length
- allowed. Check the listen man page to see if your platform
- allows this.</p>
- <p>On some platforms you can use "netstat -Lan -p tcp" to see
- the effective queue length.</p>
- <p>Effectively using a value above 128 usually requires
- changing the system configuration as well. On FreeBSD-based
- system the limit is controlled by the kern.ipc.soacceptqueue
- sysctl.</p>
+ <p>Under high load incoming connection may queue up before Privoxy gets around to serve them. The queue
+ length is limitted by the operating system. Once the queue is full, additional connections are dropped
+ before Privoxy can accept and serve them.</p>
+ <p>Increasing the queue length allows Privoxy to accept more incomming connections that arrive roughly at
+ the same time.</p>
+ <p>Note that Privoxy can only request a certain queue length, whether or not the requested length is
+ actually used depends on the operating system which may use a different length instead.</p>
+ <p>On many operating systems a limit of -1 can be specified to instruct the operating system to use the
+ maximum queue length allowed. Check the listen man page to see if your platform allows this.</p>
+ <p>On some platforms you can use "netstat -Lan -p tcp" to see the effective queue length.</p>
+ <p>Effectively using a value above 128 usually requires changing the system configuration as well. On
+ FreeBSD-based system the limit is controlled by the kern.ipc.soacceptqueue sysctl.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ENABLE-ACCEPT-FILTER" id=
- "ENABLE-ACCEPT-FILTER">7.6.11. enable-accept-filter</a></h4>
+ <h4 class="SECT3"><a name="ENABLE-ACCEPT-FILTER" id="ENABLE-ACCEPT-FILTER">7.6.11.
+ enable-accept-filter</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Accept filters reduce the number of context switches by not
- passing sockets for new connections to Privoxy until a complete
- HTTP request is available.</p>
- <p>As a result, Privoxy can process the whole request right
- away without having to wait for additional data first.</p>
- <p>For this option to work, Privoxy has to be compiled with
- FEATURE_ACCEPT_FILTER and the operating system has to support
- it (which may require loading a kernel module).</p>
- <p>Currently accept filters are only supported on FreeBSD-based
- systems. Check the <a href=
- "https://www.freebsd.org/cgi/man.cgi?query=accf_http" target=
- "_top">accf_http(9) man page</a> to learn how to enable the
- support in the operating system.</p>
+ <p>Accept filters reduce the number of context switches by not passing sockets for new connections to
+ Privoxy until a complete HTTP request is available.</p>
+ <p>As a result, Privoxy can process the whole request right away without having to wait for additional
+ data first.</p>
+ <p>For this option to work, Privoxy has to be compiled with FEATURE_ACCEPT_FILTER and the operating
+ system has to support it (which may require loading a kernel module).</p>
+ <p>Currently accept filters are only supported on FreeBSD-based systems. Check the <a href=
+ "https://www.freebsd.org/cgi/man.cgi?query=accf_http" target="_top">accf_http(9) man page</a> to learn
+ how to enable the support in the operating system.</p>
</dd>
<dt>Examples:</dt>
<dd>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="HANDLE-AS-EMPTY-DOC-RETURNS-OK" id=
- "HANDLE-AS-EMPTY-DOC-RETURNS-OK">7.6.12.
+ <h4 class="SECT3"><a name="HANDLE-AS-EMPTY-DOC-RETURNS-OK" id="HANDLE-AS-EMPTY-DOC-RETURNS-OK">7.6.12.
handle-as-empty-doc-returns-ok</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>The status code Privoxy returns for pages blocked with
- <tt class="LITERAL"><a href=
- "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT" target=
- "_top">+handle-as-empty-document</a></tt>.</p>
+ <p>The status code Privoxy returns for pages blocked with <tt class="LITERAL"><a href=
+ "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT" target="_top">+handle-as-empty-document</a></tt>.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Effect if unset:</dt>
<dd>
- <p>Privoxy returns a status 403(forbidden) for all blocked
- pages.</p>
+ <p>Privoxy returns a status 403(forbidden) for all blocked pages.</p>
</dd>
<dt>Effect if set:</dt>
<dd>
- <p>Privoxy returns a status 200(OK) for pages blocked with
- +handle-as-empty-document and a status 403(Forbidden) for all
- other blocked pages.</p>
+ <p>Privoxy returns a status 200(OK) for pages blocked with +handle-as-empty-document and a status
+ 403(Forbidden) for all other blocked pages.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This directive was added as a work-around for Firefox bug
- 492459: <span class="QUOTE">"Websites are no longer rendered if
- SSL requests for JavaScripts are blocked by a proxy."</span>
- (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=492459"
- target=
- "_top">https://bugzilla.mozilla.org/show_bug.cgi?id=492459</a>),
- the bug has been fixed for quite some time, but this directive
- is also useful to make it harder for websites to detect whether
- or not resources are being blocked.</p>
+ <p>This directive was added as a work-around for Firefox bug 492459: <span class="QUOTE">"Websites are no
+ longer rendered if SSL requests for JavaScripts are blocked by a proxy."</span> (<a href=
+ "https://bugzilla.mozilla.org/show_bug.cgi?id=492459" target=
+ "_top">https://bugzilla.mozilla.org/show_bug.cgi?id=492459</a>), the bug has been fixed for quite some
+ time, but this directive is also useful to make it harder for websites to detect whether or not resources
+ are being blocked.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="ENABLE-COMPRESSION" id=
- "ENABLE-COMPRESSION">7.6.13. enable-compression</a></h4>
+ <h4 class="SECT3"><a name="ENABLE-COMPRESSION" id="ENABLE-COMPRESSION">7.6.13. enable-compression</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Whether or not buffered content is compressed before
- delivery.</p>
+ <p>Whether or not buffered content is compressed before delivery.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Effect if set:</dt>
<dd>
- <p>Privoxy compresses buffered content before delivering it to
- the client, provided the client supports it.</p>
+ <p>Privoxy compresses buffered content before delivering it to the client, provided the client supports
+ it.</p>
</dd>
<dt>Notes:</dt>
<dd>
- <p>This directive is only supported if Privoxy has been
- compiled with FEATURE_COMPRESSION, which should not to be
- confused with FEATURE_ZLIB.</p>
- <p>Compressing buffered content is mainly useful if Privoxy and
- the client are running on different systems. If they are
- running on the same system, enabling compression is likely to
- slow things down. If you didn't measure otherwise, you should
- assume that it does and keep this option disabled.</p>
- <p>Privoxy will not compress buffered content below a certain
- length.</p>
+ <p>This directive is only supported if Privoxy has been compiled with FEATURE_COMPRESSION, which should
+ not to be confused with FEATURE_ZLIB.</p>
+ <p>Compressing buffered content is mainly useful if Privoxy and the client are running on different
+ systems. If they are running on the same system, enabling compression is likely to slow things down. If
+ you didn't measure otherwise, you should assume that it does and keep this option disabled.</p>
+ <p>Privoxy will not compress buffered content below a certain length.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="COMPRESSION-LEVEL" id=
- "COMPRESSION-LEVEL">7.6.14. compression-level</a></h4>
+ <h4 class="SECT3"><a name="COMPRESSION-LEVEL" id="COMPRESSION-LEVEL">7.6.14. compression-level</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>The compression level that is passed to the zlib library
- when compressing buffered content.</p>
+ <p>The compression level that is passed to the zlib library when compressing buffered content.</p>
</dd>
<dt>Type of value:</dt>
<dd>
- <p><tt class="REPLACEABLE"><i>Positive number ranging from 0 to
- 9.</i></tt></p>
+ <p><tt class="REPLACEABLE"><i>Positive number ranging from 0 to 9.</i></tt></p>
</dd>
<dt>Default value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Compressing the data more takes usually longer than
- compressing it less or not compressing it at all. Which level
- is best depends on the connection between Privoxy and the
- client. If you can't be bothered to benchmark it for yourself,
- you should stick with the default and keep compression
- disabled.</p>
- <p>If compression is disabled, the compression level is
- irrelevant.</p>
+ <p>Compressing the data more takes usually longer than compressing it less or not compressing it at all.
+ Which level is best depends on the connection between Privoxy and the client. If you can't be bothered to
+ benchmark it for yourself, you should stick with the default and keep compression disabled.</p>
+ <p>If compression is disabled, the compression level is irrelevant.</p>
</dd>
<dt>Examples:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Best speed (compared to the other levels)
+ <pre class="SCREEN"> # Best speed (compared to the other levels)
compression-level 1
# Best compression
compression-level 9
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CLIENT-HEADER-ORDER" id=
- "CLIENT-HEADER-ORDER">7.6.15. client-header-order</a></h4>
+ <h4 class="SECT3"><a name="CLIENT-HEADER-ORDER" id="CLIENT-HEADER-ORDER">7.6.15. client-header-order</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>The order in which client headers are sorted before
- forwarding them.</p>
+ <p>The order in which client headers are sorted before forwarding them.</p>
</dd>
<dt>Type of value:</dt>
<dd>
- <p><tt class="REPLACEABLE"><i>Client header names delimited by
- spaces or tabs</i></tt></p>
+ <p><tt class="REPLACEABLE"><i>Client header names delimited by spaces or tabs</i></tt></p>
</dd>
<dt>Default value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>By default <span class="APPLICATION">Privoxy</span> leaves
- the client headers in the order they were sent by the client.
- Headers are modified in-place, new headers are added at the end
- of the already existing headers.</p>
- <p>The header order can be used to fingerprint client requests
- independently of other headers like the User-Agent.</p>
- <p>This directive allows to sort the headers differently to
- better mimic a different User-Agent. Client headers will be
- emitted in the order given, headers whose name isn't explicitly
- specified are added at the end.</p>
- <p>Note that sorting headers in an uncommon way will make
- fingerprinting actually easier. Encrypted headers are not
- affected by this directive.</p>
+ <p>By default <span class="APPLICATION">Privoxy</span> leaves the client headers in the order they were
+ sent by the client. Headers are modified in-place, new headers are added at the end of the already
+ existing headers.</p>
+ <p>The header order can be used to fingerprint client requests independently of other headers like the
+ User-Agent.</p>
+ <p>This directive allows to sort the headers differently to better mimic a different User-Agent. Client
+ headers will be emitted in the order given, headers whose name isn't explicitly specified are added at
+ the end.</p>
+ <p>Note that sorting headers in an uncommon way will make fingerprinting actually easier. Encrypted
+ headers are not affected by this directive.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CLIENT-SPECIFIC-TAG" id=
- "CLIENT-SPECIFIC-TAG">7.6.16. client-specific-tag</a></h4>
+ <h4 class="SECT3"><a name="CLIENT-SPECIFIC-TAG" id="CLIENT-SPECIFIC-TAG">7.6.16. client-specific-tag</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>The name of a tag that will always be set for clients that
- requested it through the webinterface.</p>
+ <p>The name of a tag that will always be set for clients that requested it through the webinterface.</p>
</dd>
<dt>Type of value:</dt>
<dd>
- <p><tt class="REPLACEABLE"><i>Tag name followed by a
- description that will be shown in the webinterface</i></tt></p>
+ <p><tt class="REPLACEABLE"><i>Tag name followed by a description that will be shown in the
+ webinterface</i></tt></p>
</dd>
<dt>Default value:</dt>
<dd>
</tr>
<tr>
<td align="left">
- <p>This is an experimental feature. The syntax is
- likely to change in future versions.</p>
+ <p>This is an experimental feature. The syntax is likely to change in future versions.</p>
</td>
</tr>
</table>
</div>
- <p>Client-specific tags allow Privoxy admins to create
- different profiles and let the users chose which one they want
- without impacting other users.</p>
- <p>One use case is allowing users to circumvent certain blocks
- without having to allow them to circumvent all blocks. This is
- not possible with the <a href=
- "config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle
- feature</a> because it would bluntly disable all blocks for all
- users and also affect other actions like filters. It also is
- set globally which renders it useless in most multi-user
- setups.</p>
- <p>After a client-specific tag has been defined with the
- client-specific-tag directive, action sections can be activated
- based on the tag by using a <a href=
- "actions-file.html#CLIENT-TAG-PATTERN" target=
- "_top">CLIENT-TAG</a> pattern. The CLIENT-TAG pattern is
- evaluated at the same priority as URL patterns, as a result the
- last matching pattern wins. Tags that are created based on
- client or server headers are evaluated later on and can
- overrule CLIENT-TAG and URL patterns!</p>
- <p>The tag is set for all requests that come from clients that
- requested it to be set. Note that "clients" are differentiated
- by IP address, if the IP address changes the tag has to be
- requested again.</p>
- <p>Clients can request tags to be set by using the CGI
- interface <a href="http://config.privoxy.org/client-tags"
- target="_top">http://config.privoxy.org/client-tags</a>. The
- specific tag description is only used on the web page and
- should be phrased in away that the user understand the effect
- of the tag.</p>
+ <p>Client-specific tags allow Privoxy admins to create different profiles and let the users chose which
+ one they want without impacting other users.</p>
+ <p>One use case is allowing users to circumvent certain blocks without having to allow them to circumvent
+ all blocks. This is not possible with the <a href="config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle
+ feature</a> because it would bluntly disable all blocks for all users and also affect other actions like
+ filters. It also is set globally which renders it useless in most multi-user setups.</p>
+ <p>After a client-specific tag has been defined with the client-specific-tag directive, action sections
+ can be activated based on the tag by using a <a href="actions-file.html#CLIENT-TAG-PATTERN" target=
+ "_top">CLIENT-TAG</a> pattern. The CLIENT-TAG pattern is evaluated at the same priority as URL patterns,
+ as a result the last matching pattern wins. Tags that are created based on client or server headers are
+ evaluated later on and can overrule CLIENT-TAG and URL patterns!</p>
+ <p>The tag is set for all requests that come from clients that requested it to be set. Note that
+ "clients" are differentiated by IP address, if the IP address changes the tag has to be requested
+ again.</p>
+ <p>Clients can request tags to be set by using the CGI interface <a href=
+ "http://config.privoxy.org/client-tags" target="_top">http://config.privoxy.org/client-tags</a>. The
+ specific tag description is only used on the web page and should be phrased in away that the user
+ understand the effect of the tag.</p>
</dd>
<dt>Examples:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Define a couple of tags, the described effect requires action sections
+ <pre class="SCREEN"> # Define a couple of tags, the described effect requires action sections
# that are enabled based on CLIENT-TAG patterns.
client-specific-tag circumvent-blocks Overrule blocks but do not affect other actions
disable-content-filters Disable content-filters but do not affect other actions
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="CLIENT-TAG-LIFETIME" id=
- "CLIENT-TAG-LIFETIME">7.6.17. client-tag-lifetime</a></h4>
+ <h4 class="SECT3"><a name="CLIENT-TAG-LIFETIME" id="CLIENT-TAG-LIFETIME">7.6.17. client-tag-lifetime</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
</tr>
<tr>
<td align="left">
- <p>This is an experimental feature. The syntax is
- likely to change in future versions.</p>
+ <p>This is an experimental feature. The syntax is likely to change in future versions.</p>
</td>
</tr>
</table>
</div>
- <p>In case of some tags users may not want to enable them
- permanently, but only for a short amount of time, for example
- to circumvent a block that is the result of an overly-broad URL
- pattern.</p>
- <p>The CGI interface <a href=
- "http://config.privoxy.org/client-tags" target=
- "_top">http://config.privoxy.org/client-tags</a> therefore
- provides a "enable this tag temporarily" option. If it is used,
- the tag will be set until the client-tag-lifetime is over.</p>
+ <p>In case of some tags users may not want to enable them permanently, but only for a short amount of
+ time, for example to circumvent a block that is the result of an overly-broad URL pattern.</p>
+ <p>The CGI interface <a href="http://config.privoxy.org/client-tags" target=
+ "_top">http://config.privoxy.org/client-tags</a> therefore provides a "enable this tag temporarily"
+ option. If it is used, the tag will be set until the client-tag-lifetime is over.</p>
</dd>
<dt>Examples:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Increase the time to life for temporarily enabled tags to 3 minutes
+ <pre class="SCREEN"> # Increase the time to life for temporarily enabled tags to 3 minutes
client-tag-lifetime 180
</pre>
</td>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="TRUST-X-FORWARDED-FOR" id=
- "TRUST-X-FORWARDED-FOR">7.6.18. trust-x-forwarded-for</a></h4>
+ <h4 class="SECT3"><a name="TRUST-X-FORWARDED-FOR" id="TRUST-X-FORWARDED-FOR">7.6.18.
+ trust-x-forwarded-for</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>Whether or not Privoxy should use IP addresses specified
- with the X-Forwarded-For header</p>
+ <p>Whether or not Privoxy should use IP addresses specified with the X-Forwarded-For header</p>
</dd>
<dt>Type of value:</dt>
<dd>
</tr>
<tr>
<td align="left">
- <p>This is an experimental feature. The syntax is
- likely to change in future versions.</p>
+ <p>This is an experimental feature. The syntax is likely to change in future versions.</p>
</td>
</tr>
</table>
</div>
- <p>If clients reach Privoxy through another proxy, for example
- a load balancer, Privoxy can't tell the client's IP address
- from the connection. If multiple clients use the same proxy,
- they will share the same client tag settings which is usually
- not desired.</p>
- <p>This option lets Privoxy use the X-Forwarded-For header
- value as client IP address. If the proxy sets the header,
- multiple clients using the same proxy do not share the same
- client tag settings.</p>
- <p>This option should only be enabled if Privoxy can only be
- reached through a proxy and if the proxy can be trusted to set
- the header correctly. It is recommended that ACL are used to
- make sure only trusted systems can reach Privoxy.</p>
- <p>If access to Privoxy isn't limited to trusted systems, this
- option would allow malicious clients to change the client tags
- for other clients or increase Privoxy's memory requirements by
- registering lots of client tag settings for clients that don't
- exist.</p>
+ <p>If clients reach Privoxy through another proxy, for example a load balancer, Privoxy can't tell the
+ client's IP address from the connection. If multiple clients use the same proxy, they will share the same
+ client tag settings which is usually not desired.</p>
+ <p>This option lets Privoxy use the X-Forwarded-For header value as client IP address. If the proxy sets
+ the header, multiple clients using the same proxy do not share the same client tag settings.</p>
+ <p>This option should only be enabled if Privoxy can only be reached through a proxy and if the proxy can
+ be trusted to set the header correctly. It is recommended that ACL are used to make sure only trusted
+ systems can reach Privoxy.</p>
+ <p>If access to Privoxy isn't limited to trusted systems, this option would allow malicious clients to
+ change the client tags for other clients or increase Privoxy's memory requirements by registering lots of
+ client tag settings for clients that don't exist.</p>
</dd>
<dt>Examples:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Allow systems that can reach Privoxy to provide the client
+ <pre class="SCREEN"> # Allow systems that can reach Privoxy to provide the client
# IP address with a X-Forwarded-For header.
trust-x-forwarded-for 1
</pre>
</div>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="RECEIVE-BUFFER-SIZE" id=
- "RECEIVE-BUFFER-SIZE">7.6.19. receive-buffer-size</a></h4>
+ <h4 class="SECT3"><a name="RECEIVE-BUFFER-SIZE" id="RECEIVE-BUFFER-SIZE">7.6.19. receive-buffer-size</a></h4>
<div class="VARIABLELIST">
<dl>
<dt>Specifies:</dt>
<dd>
- <p>The size of the buffer Privoxy uses to receive data from the
- server.</p>
+ <p>The size of the buffer Privoxy uses to receive data from the server.</p>
</dd>
<dt>Type of value:</dt>
<dd>
</dd>
<dt>Notes:</dt>
<dd>
- <p>Increasing the receive-buffer-size increases Privoxy's
- memory usage but can lower the number of context switches and
- thereby reduce the cpu usage and potentially increase the
+ <p>Increasing the receive-buffer-size increases Privoxy's memory usage but can lower the number of
+ context switches and thereby reduce the cpu usage and potentially increase the throughput.</p>
+ <p>This is mostly relevant for fast network connections and large downloads that don't require
+ filtering.</p>
+ <p>Reducing the buffer size reduces the amount of memory Privoxy needs to handle the request but
+ increases the number of systemcalls and may reduce the throughput.</p>
+ <p>A dtrace command like: <span class="QUOTE">"sudo dtrace -n 'syscall::read:return /execname ==
+ "privoxy"/ { @[execname] = llquantize(arg0, 10, 0, 5, 20); @m = max(arg0)}'"</span> can be used to
+ properly tune the receive-buffer-size. On systems without dtrace, strace or truss may be used as less
+ convenient alternatives.</p>
+ <p>If the buffer is too large it will increase Privoxy's memory footprint without any benefit. As the
+ memory is (currently) cleared before using it, a buffer that is too large can actually reduce the
throughput.</p>
- <p>This is mostly relevant for fast network connections and
- large downloads that don't require filtering.</p>
- <p>Reducing the buffer size reduces the amount of memory
- Privoxy needs to handle the request but increases the number of
- systemcalls and may reduce the throughput.</p>
- <p>A dtrace command like: <span class="QUOTE">"sudo dtrace -n
- 'syscall::read:return /execname == "privoxy"/ { @[execname] =
- llquantize(arg0, 10, 0, 5, 20); @m = max(arg0)}'"</span> can be
- used to properly tune the receive-buffer-size. On systems
- without dtrace, strace or truss may be used as less convenient
- alternatives.</p>
- <p>If the buffer is too large it will increase Privoxy's memory
- footprint without any benefit. As the memory is (currently)
- cleared before using it, a buffer that is too large can
- actually reduce the throughput.</p>
</dd>
<dt>Examples:</dt>
<dd>
<table border="0" bgcolor="#E0E0E0" width="90%">
<tr>
<td>
- <pre class="SCREEN">
- # Increase the receive buffer size
+ <pre class="SCREEN"> # Increase the receive buffer size
receive-buffer-size 32768
</pre>
</td>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="WINDOWS-GUI" id="WINDOWS-GUI">7.7. Windows
- GUI Options</a></h2>
- <p><span class="APPLICATION">Privoxy</span> has a number of options
- specific to the Windows GUI interface:</p><a name="ACTIVITY-ANIMATION"
- id="ACTIVITY-ANIMATION"></a>
- <p>If <span class="QUOTE">"activity-animation"</span> is set to 1, the
- <span class="APPLICATION">Privoxy</span> icon will animate when
- <span class="QUOTE">"Privoxy"</span> is active. To turn off, set to
- 0.</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class=
- "emphasis"><i class="EMPHASIS">activity-animation 1</i></span><br>
- </tt></p><a name="LOG-MESSAGES" id=
- "LOG-MESSAGES"></a>
- <p>If <span class="QUOTE">"log-messages"</span> is set to 1,
- <span class="APPLICATION">Privoxy</span> copies log messages to the
- console window. The log detail depends on the <a href=
- "config.html#DEBUG">debug</a> directive.</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class=
- "emphasis"><i class="EMPHASIS">log-messages 1</i></span><br>
- </tt></p><a name="LOG-BUFFER-SIZE" id=
- "LOG-BUFFER-SIZE"></a>
- <p>If <span class="QUOTE">"log-buffer-size"</span> is set to 1, the
- size of the log buffer, i.e. the amount of memory used for the log
- messages displayed in the console window, will be limited to
- <span class="QUOTE">"log-max-lines"</span> (see below).</p>
- <p>Warning: Setting this to 0 will result in the buffer to grow
- infinitely and eat up all your memory!</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class=
- "emphasis"><i class="EMPHASIS">log-buffer-size 1</i></span><br>
- </tt></p><a name="LOG-MAX-LINES" id=
- "LOG-MAX-LINES"></a>
- <p><span class="APPLICATION">log-max-lines</span> is the maximum number
- of lines held in the log buffer. See above.</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class=
- "emphasis"><i class="EMPHASIS">log-max-lines 200</i></span><br>
- </tt></p><a name="LOG-HIGHLIGHT-MESSAGES" id=
- "LOG-HIGHLIGHT-MESSAGES"></a>
- <p>If <span class="QUOTE">"log-highlight-messages"</span> is set to 1,
- <span class="APPLICATION">Privoxy</span> will highlight portions of the
- log messages with a bold-faced font:</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class=
- "emphasis"><i class="EMPHASIS">log-highlight-messages 1</i></span><br>
- </tt></p><a name="LOG-FONT-NAME" id=
- "LOG-FONT-NAME"></a>
+ <h2 class="SECT2"><a name="WINDOWS-GUI" id="WINDOWS-GUI">7.7. Windows GUI Options</a></h2>
+ <p><span class="APPLICATION">Privoxy</span> has a number of options specific to the Windows GUI
+ interface:</p><a name="ACTIVITY-ANIMATION" id="ACTIVITY-ANIMATION"></a>
+ <p>If <span class="QUOTE">"activity-animation"</span> is set to 1, the <span class="APPLICATION">Privoxy</span>
+ icon will animate when <span class="QUOTE">"Privoxy"</span> is active. To turn off, set to 0.</p>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class="emphasis"><i class=
+ "EMPHASIS">activity-animation 1</i></span><br>
+ </tt></p><a name="LOG-MESSAGES" id="LOG-MESSAGES"></a>
+ <p>If <span class="QUOTE">"log-messages"</span> is set to 1, <span class="APPLICATION">Privoxy</span> copies log
+ messages to the console window. The log detail depends on the <a href="config.html#DEBUG">debug</a>
+ directive.</p>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class="emphasis"><i class="EMPHASIS">log-messages
+ 1</i></span><br>
+ </tt></p><a name="LOG-BUFFER-SIZE" id="LOG-BUFFER-SIZE"></a>
+ <p>If <span class="QUOTE">"log-buffer-size"</span> is set to 1, the size of the log buffer, i.e. the amount of
+ memory used for the log messages displayed in the console window, will be limited to <span class=
+ "QUOTE">"log-max-lines"</span> (see below).</p>
+ <p>Warning: Setting this to 0 will result in the buffer to grow infinitely and eat up all your memory!</p>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class="emphasis"><i class=
+ "EMPHASIS">log-buffer-size 1</i></span><br>
+ </tt></p><a name="LOG-MAX-LINES" id="LOG-MAX-LINES"></a>
+ <p><span class="APPLICATION">log-max-lines</span> is the maximum number of lines held in the log buffer. See
+ above.</p>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class="emphasis"><i class="EMPHASIS">log-max-lines
+ 200</i></span><br>
+ </tt></p><a name="LOG-HIGHLIGHT-MESSAGES" id="LOG-HIGHLIGHT-MESSAGES"></a>
+ <p>If <span class="QUOTE">"log-highlight-messages"</span> is set to 1, <span class="APPLICATION">Privoxy</span>
+ will highlight portions of the log messages with a bold-faced font:</p>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class="emphasis"><i class=
+ "EMPHASIS">log-highlight-messages 1</i></span><br>
+ </tt></p><a name="LOG-FONT-NAME" id="LOG-FONT-NAME"></a>
<p>The font used in the console window:</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class=
- "emphasis"><i class="EMPHASIS">log-font-name Comic Sans
- MS</i></span><br>
- </tt></p><a name="LOG-FONT-SIZE" id=
- "LOG-FONT-SIZE"></a>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class="emphasis"><i class="EMPHASIS">log-font-name
+ Comic Sans MS</i></span><br>
+ </tt></p><a name="LOG-FONT-SIZE" id="LOG-FONT-SIZE"></a>
<p>Font size used in the console window:</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class=
- "emphasis"><i class="EMPHASIS">log-font-size 8</i></span><br>
- </tt></p><a name="SHOW-ON-TASK-BAR" id=
- "SHOW-ON-TASK-BAR"></a>
- <p><span class="QUOTE">"show-on-task-bar"</span> controls whether or
- not <span class="APPLICATION">Privoxy</span> will appear as a button on
- the Task bar when minimized:</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class=
- "emphasis"><i class="EMPHASIS">show-on-task-bar 0</i></span><br>
- </tt></p><a name="CLOSE-BUTTON-MINIMIZES" id=
- "CLOSE-BUTTON-MINIMIZES"></a>
- <p>If <span class="QUOTE">"close-button-minimizes"</span> is set to 1,
- the Windows close button will minimize <span class=
- "APPLICATION">Privoxy</span> instead of closing the program (close with
- the exit option on the File menu).</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class=
- "emphasis"><i class="EMPHASIS">close-button-minimizes 1</i></span><br>
- </tt></p><a name="HIDE-CONSOLE" id=
- "HIDE-CONSOLE"></a>
- <p>The <span class="QUOTE">"hide-console"</span> option is specific to
- the MS-Win console version of <span class="APPLICATION">Privoxy</span>.
- If this option is used, <span class="APPLICATION">Privoxy</span> will
- disconnect from and hide the command console.</p>
- <p class="LITERALLAYOUT"><tt class="LITERAL"> #<span class=
- "emphasis"><i class="EMPHASIS">hide-console</i></span><br>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class="emphasis"><i class="EMPHASIS">log-font-size
+ 8</i></span><br>
+ </tt></p><a name="SHOW-ON-TASK-BAR" id="SHOW-ON-TASK-BAR"></a>
+ <p><span class="QUOTE">"show-on-task-bar"</span> controls whether or not <span class="APPLICATION">Privoxy</span>
+ will appear as a button on the Task bar when minimized:</p>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class="emphasis"><i class=
+ "EMPHASIS">show-on-task-bar 0</i></span><br>
+ </tt></p><a name="CLOSE-BUTTON-MINIMIZES" id="CLOSE-BUTTON-MINIMIZES"></a>
+ <p>If <span class="QUOTE">"close-button-minimizes"</span> is set to 1, the Windows close button will minimize
+ <span class="APPLICATION">Privoxy</span> instead of closing the program (close with the exit option on the File
+ menu).</p>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> <span class="emphasis"><i class=
+ "EMPHASIS">close-button-minimizes 1</i></span><br>
+ </tt></p><a name="HIDE-CONSOLE" id="HIDE-CONSOLE"></a>
+ <p>The <span class="QUOTE">"hide-console"</span> option is specific to the MS-Win console version of <span class=
+ "APPLICATION">Privoxy</span>. If this option is used, <span class="APPLICATION">Privoxy</span> will disconnect
+ from and hide the command console.</p>
+ <p class="LITERALLAYOUT"><tt class="LITERAL"> #<span class="emphasis"><i class=
+ "EMPHASIS">hide-console</i></span><br>
</tt></p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href=
- "configuration.html" accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href=
- "actions-file.html" accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="configuration.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="actions-file.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Privoxy Configuration</td>
<html>
<head>
<title>Privoxy Configuration</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
<link rel="PREVIOUS" title="Starting Privoxy" href="startup.html">
<link rel="NEXT" title="The Main Configuration File" href="config.html">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="startup.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="startup.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="config.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="config.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="CONFIGURATION" id="CONFIGURATION">6. Privoxy
- Configuration</a></h1>
- <p>All <span class="APPLICATION">Privoxy</span> configuration is stored
- in text files. These files can be edited with a text editor. Many
- important aspects of <span class="APPLICATION">Privoxy</span> can also be
- controlled easily with a web browser.</p>
+ <h1 class="SECT1"><a name="CONFIGURATION" id="CONFIGURATION">6. Privoxy Configuration</a></h1>
+ <p>All <span class="APPLICATION">Privoxy</span> configuration is stored in text files. These files can be edited
+ with a text editor. Many important aspects of <span class="APPLICATION">Privoxy</span> can also be controlled
+ easily with a web browser.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="CONTROL-WITH-WEBBROWSER" id=
- "CONTROL-WITH-WEBBROWSER">6.1. Controlling Privoxy with Your Web
- Browser</a></h2>
- <p><span class="APPLICATION">Privoxy</span>'s user interface can be
- reached through the special URL <a href="http://config.privoxy.org/"
- target="_top">http://config.privoxy.org/</a> (shortcut: <a href=
- "http://p.p/" target="_top">http://p.p/</a>), which is a built-in page
- and works without Internet access. You will see the following
- section:</p>
+ <h2 class="SECT2"><a name="CONTROL-WITH-WEBBROWSER" id="CONTROL-WITH-WEBBROWSER">6.1. Controlling Privoxy with
+ Your Web Browser</a></h2>
+ <p><span class="APPLICATION">Privoxy</span>'s user interface can be reached through the special URL <a href=
+ "http://config.privoxy.org/" target="_top">http://config.privoxy.org/</a> (shortcut: <a href="http://p.p/"
+ target="_top">http://p.p/</a>), which is a built-in page and works without Internet access. You will see the
+ following section:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
<pre class="SCREEN"> </pre>
- <h2 class="BRIDGEHEAD"><a name="AEN904" id=
- "AEN904"></a>����Privoxy Menu</h2>
+ <h2 class="BRIDGEHEAD"><a name="AEN904" id="AEN904"></a>����Privoxy Menu</h2>
<pre><br></pre>
<table border="0">
<tbody>
<tr>
- <td>��������▪��<a href=
- "http://config.privoxy.org/show-status" target="_top">View
- & change the current configuration</a></td>
+ <td>��������▪��<a href="http://config.privoxy.org/show-status" target="_top">View & change the
+ current configuration</a></td>
</tr>
<tr>
- <td>��������▪��<a href=
- "http://config.privoxy.org/show-version" target="_top">View
- the source code version numbers</a></td>
+ <td>��������▪��<a href="http://config.privoxy.org/show-version" target="_top">View the source code
+ version numbers</a></td>
</tr>
<tr>
- <td>��������▪��<a href=
- "http://config.privoxy.org/show-request" target="_top">View
- the request headers.</a></td>
+ <td>��������▪��<a href="http://config.privoxy.org/show-request" target="_top">View the request
+ headers.</a></td>
</tr>
<tr>
- <td>��������▪��<a href=
- "http://config.privoxy.org/show-url-info" target=
- "_top">Look up which actions apply to a URL and
- why</a></td>
+ <td>��������▪��<a href="http://config.privoxy.org/show-url-info" target="_top">Look up which actions
+ apply to a URL and why</a></td>
</tr>
<tr>
- <td>��������▪��<a href="http://config.privoxy.org/toggle"
- target="_top">Toggle Privoxy on or off</a></td>
+ <td>��������▪��<a href="http://config.privoxy.org/toggle" target="_top">Toggle Privoxy on or
+ off</a></td>
</tr>
<tr>
- <td>��������▪��<a href=
- "https://www.privoxy.org/3.0.27/user-manual/" target=
+ <td>��������▪��<a href="https://www.privoxy.org/3.0.27/user-manual/" target=
"_top">Documentation</a></td>
</tr>
</tbody>
</td>
</tr>
</table>
- <p>This should be self-explanatory. Note the first item leads to an
- editor for the <a href="actions-file.html">actions files</a>, which is
- where the ad, banner, cookie, and URL blocking magic is configured as
- well as other advanced features of <span class=
- "APPLICATION">Privoxy</span>. This is an easy way to adjust various
- aspects of <span class="APPLICATION">Privoxy</span> configuration. The
- actions file, and other configuration files, are explained in detail
- below.</p>
- <p><span class="QUOTE">"Toggle Privoxy On or Off"</span> is handy for
- sites that might have problems with your current actions and filters.
- You can in fact use it as a test to see whether it is <span class=
- "APPLICATION">Privoxy</span> causing the problem or not. <span class=
- "APPLICATION">Privoxy</span> continues to run as a proxy in this case,
- but all manipulation is disabled, i.e. <span class=
- "APPLICATION">Privoxy</span> acts like a normal forwarding proxy.</p>
- <p>Note that several of the features described above are disabled by
- default in <span class="APPLICATION">Privoxy</span> 3.0.7 beta and
- later. Check the <a href="config.html" target="_top">configuration
- file</a> to learn why and in which cases it's safe to enable them
- again.</p>
+ <p>This should be self-explanatory. Note the first item leads to an editor for the <a href=
+ "actions-file.html">actions files</a>, which is where the ad, banner, cookie, and URL blocking magic is
+ configured as well as other advanced features of <span class="APPLICATION">Privoxy</span>. This is an easy way to
+ adjust various aspects of <span class="APPLICATION">Privoxy</span> configuration. The actions file, and other
+ configuration files, are explained in detail below.</p>
+ <p><span class="QUOTE">"Toggle Privoxy On or Off"</span> is handy for sites that might have problems with your
+ current actions and filters. You can in fact use it as a test to see whether it is <span class=
+ "APPLICATION">Privoxy</span> causing the problem or not. <span class="APPLICATION">Privoxy</span> continues to
+ run as a proxy in this case, but all manipulation is disabled, i.e. <span class="APPLICATION">Privoxy</span> acts
+ like a normal forwarding proxy.</p>
+ <p>Note that several of the features described above are disabled by default in <span class=
+ "APPLICATION">Privoxy</span> 3.0.7 beta and later. Check the <a href="config.html" target="_top">configuration
+ file</a> to learn why and in which cases it's safe to enable them again.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="CONFOVERVIEW" id="CONFOVERVIEW">6.2.
- Configuration Files Overview</a></h2>
- <p>For Unix, *BSD and Linux, all configuration files are located in
- <tt class="FILENAME">/etc/privoxy/</tt> by default. For MS Windows,
- OS/2, and AmigaOS these are all in the same directory as the
- <span class="APPLICATION">Privoxy</span> executable. The name and
- number of configuration files has changed from previous versions, and
- is subject to change as development progresses.</p>
- <p>The installed defaults provide a reasonable starting point, though
- some settings may be aggressive by some standards. For the time being,
- the principle configuration files are:</p>
+ <h2 class="SECT2"><a name="CONFOVERVIEW" id="CONFOVERVIEW">6.2. Configuration Files Overview</a></h2>
+ <p>For Unix, *BSD and Linux, all configuration files are located in <tt class="FILENAME">/etc/privoxy/</tt> by
+ default. For MS Windows, OS/2, and AmigaOS these are all in the same directory as the <span class=
+ "APPLICATION">Privoxy</span> executable. The name and number of configuration files has changed from previous
+ versions, and is subject to change as development progresses.</p>
+ <p>The installed defaults provide a reasonable starting point, though some settings may be aggressive by some
+ standards. For the time being, the principle configuration files are:</p>
<ul>
<li>
- <p>The <a href="config.html">main configuration file</a> is named
- <tt class="FILENAME">config</tt> on Linux, Unix, BSD, OS/2, and
- AmigaOS and <tt class="FILENAME">config.txt</tt> on Windows. This
- is a required file.</p>
+ <p>The <a href="config.html">main configuration file</a> is named <tt class="FILENAME">config</tt> on Linux,
+ Unix, BSD, OS/2, and AmigaOS and <tt class="FILENAME">config.txt</tt> on Windows. This is a required
+ file.</p>
</li>
<li>
- <p><tt class="FILENAME">match-all.action</tt> is used to define
- which <span class="QUOTE">"actions"</span> relating to
- banner-blocking, images, pop-ups, content modification, cookie
- handling etc should be applied by default. It should be the first
- actions file loaded.</p>
- <p><tt class="FILENAME">default.action</tt> defines many exceptions
- (both positive and negative) from the default set of actions that's
- configured in <tt class="FILENAME">match-all.action</tt>. It should
- be the second actions file loaded and shouldn't be edited by the
- user.</p>
- <p>Multiple actions files may be defined in <tt class=
- "FILENAME">config</tt>. These are processed in the order they are
- defined. Local customizations and locally preferred exceptions to
- the default policies as defined in <tt class=
- "FILENAME">match-all.action</tt> (which you will most probably want
- to define sooner or later) are best applied in <tt class=
- "FILENAME">user.action</tt>, where you can preserve them across
- upgrades. The file isn't installed by all installers, but you can
- easily create it yourself with a text editor.</p>
- <p>There is also a web based editor that can be accessed from
- <a href="http://config.privoxy.org/show-status" target=
- "_top">http://config.privoxy.org/show-status</a> (Shortcut:
- <a href="http://p.p/show-status" target=
- "_top">http://p.p/show-status</a>) for the various actions
- files.</p>
+ <p><tt class="FILENAME">match-all.action</tt> is used to define which <span class="QUOTE">"actions"</span>
+ relating to banner-blocking, images, pop-ups, content modification, cookie handling etc should be applied by
+ default. It should be the first actions file loaded.</p>
+ <p><tt class="FILENAME">default.action</tt> defines many exceptions (both positive and negative) from the
+ default set of actions that's configured in <tt class="FILENAME">match-all.action</tt>. It should be the
+ second actions file loaded and shouldn't be edited by the user.</p>
+ <p>Multiple actions files may be defined in <tt class="FILENAME">config</tt>. These are processed in the
+ order they are defined. Local customizations and locally preferred exceptions to the default policies as
+ defined in <tt class="FILENAME">match-all.action</tt> (which you will most probably want to define sooner or
+ later) are best applied in <tt class="FILENAME">user.action</tt>, where you can preserve them across
+ upgrades. The file isn't installed by all installers, but you can easily create it yourself with a text
+ editor.</p>
+ <p>There is also a web based editor that can be accessed from <a href="http://config.privoxy.org/show-status"
+ target="_top">http://config.privoxy.org/show-status</a> (Shortcut: <a href="http://p.p/show-status" target=
+ "_top">http://p.p/show-status</a>) for the various actions files.</p>
</li>
<li>
- <p><span class="QUOTE">"Filter files"</span> (the <a href=
- "filter-file.html">filter file</a>) can be used to re-write the raw
- page content, including viewable text as well as embedded HTML and
- JavaScript, and whatever else lurks on any given web page. The
- filtering jobs are only pre-defined here; whether to apply them or
- not is up to the actions files. <tt class=
- "FILENAME">default.filter</tt> includes various filters made
- available for use by the developers. Some are much more intrusive
- than others, and all should be used with caution. You may define
- additional filter files in <tt class="FILENAME">config</tt> as you
- can with actions files. We suggest <tt class=
- "FILENAME">user.filter</tt> for any locally defined filters or
- customizations.</p>
+ <p><span class="QUOTE">"Filter files"</span> (the <a href="filter-file.html">filter file</a>) can be used to
+ re-write the raw page content, including viewable text as well as embedded HTML and JavaScript, and whatever
+ else lurks on any given web page. The filtering jobs are only pre-defined here; whether to apply them or not
+ is up to the actions files. <tt class="FILENAME">default.filter</tt> includes various filters made available
+ for use by the developers. Some are much more intrusive than others, and all should be used with caution. You
+ may define additional filter files in <tt class="FILENAME">config</tt> as you can with actions files. We
+ suggest <tt class="FILENAME">user.filter</tt> for any locally defined filters or customizations.</p>
</li>
</ul>
- <p>The syntax of the configuration and filter files may change between
- different Privoxy versions, unfortunately some enhancements cost
- backwards compatibility.</p>
- <p>All files use the <span class="QUOTE">"<tt class=
- "LITERAL">#</tt>"</span> character to denote a comment (the rest of the
- line will be ignored) and understand line continuation through placing
- a backslash ("<tt class="LITERAL">\</tt>") as the very last character
- in a line. If the <tt class="LITERAL">#</tt> is preceded by a
- backslash, it looses its special function. Placing a <tt class=
- "LITERAL">#</tt> in front of an otherwise valid configuration line to
- prevent it from being interpreted is called "commenting out" that line.
- Blank lines are ignored.</p>
- <p>The actions files and filter files can use Perl style <a href=
- "appendix.html#REGEX">regular expressions</a> for maximum
- flexibility.</p>
- <p>After making any changes, there is no need to restart <span class=
- "APPLICATION">Privoxy</span> in order for the changes to take effect.
- <span class="APPLICATION">Privoxy</span> detects such changes
- automatically. Note, however, that it may take one or two additional
- requests for the change to take effect. When changing the listening
- address of <span class="APPLICATION">Privoxy</span>, these <span class=
- "QUOTE">"wake up"</span> requests must obviously be sent to the
- <span class="emphasis"><i class="EMPHASIS">old</i></span> listening
+ <p>The syntax of the configuration and filter files may change between different Privoxy versions, unfortunately
+ some enhancements cost backwards compatibility.</p>
+ <p>All files use the <span class="QUOTE">"<tt class="LITERAL">#</tt>"</span> character to denote a comment (the
+ rest of the line will be ignored) and understand line continuation through placing a backslash ("<tt class=
+ "LITERAL">\</tt>") as the very last character in a line. If the <tt class="LITERAL">#</tt> is preceded by a
+ backslash, it looses its special function. Placing a <tt class="LITERAL">#</tt> in front of an otherwise valid
+ configuration line to prevent it from being interpreted is called "commenting out" that line. Blank lines are
+ ignored.</p>
+ <p>The actions files and filter files can use Perl style <a href="appendix.html#REGEX">regular expressions</a>
+ for maximum flexibility.</p>
+ <p>After making any changes, there is no need to restart <span class="APPLICATION">Privoxy</span> in order for
+ the changes to take effect. <span class="APPLICATION">Privoxy</span> detects such changes automatically. Note,
+ however, that it may take one or two additional requests for the change to take effect. When changing the
+ listening address of <span class="APPLICATION">Privoxy</span>, these <span class="QUOTE">"wake up"</span>
+ requests must obviously be sent to the <span class="emphasis"><i class="EMPHASIS">old</i></span> listening
address.</p>
- <p>While under development, the configuration content is subject to
- change. The below documentation may not be accurate by the time you
- read this. Also, what constitutes a <span class=
- "QUOTE">"default"</span> setting, may change, so please check all your
- configuration files on important issues.</p>
+ <p>While under development, the configuration content is subject to change. The below documentation may not be
+ accurate by the time you read this. Also, what constitutes a <span class="QUOTE">"default"</span> setting, may
+ change, so please check all your configuration files on important issues.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="startup.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="config.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="startup.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="config.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Starting Privoxy</td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top">The Main Configuration
- File</td>
+ <td width="33%" align="right" valign="top">The Main Configuration File</td>
</tr>
</table>
</div>
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
- <title>Contacting the Developers, Bug Reporting and Feature
- Requests</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <title>Contacting the Developers, Bug Reporting and Feature Requests</title>
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
- <link rel="PREVIOUS" title="Privoxy's Template Files" href=
- "templates.html">
- <link rel="NEXT" title="Privoxy Copyright, License and History" href=
- "copyright.html">
+ <link rel="PREVIOUS" title="Privoxy's Template Files" href="templates.html">
+ <link rel="NEXT" title="Privoxy Copyright, License and History" href="copyright.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="templates.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="templates.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "copyright.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="copyright.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="CONTACT" id="CONTACT">11. Contacting the
- Developers, Bug Reporting and Feature Requests</a></h1>
- <p>We value your feedback. In fact, we rely on it to improve <span class=
- "APPLICATION">Privoxy</span> and its configuration. However, please note
- the following hints, so we can provide you with the best support.</p>
+ <h1 class="SECT1"><a name="CONTACT" id="CONTACT">11. Contacting the Developers, Bug Reporting and Feature
+ Requests</a></h1>
+ <p>We value your feedback. In fact, we rely on it to improve <span class="APPLICATION">Privoxy</span> and its
+ configuration. However, please note the following hints, so we can provide you with the best support.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="SUFFICIENT-INFORMATION" id=
- "SUFFICIENT-INFORMATION">11.1. Please provide sufficient
+ <h2 class="SECT2"><a name="SUFFICIENT-INFORMATION" id="SUFFICIENT-INFORMATION">11.1. Please provide sufficient
information</a></h2>
- <p>A lot of support requests don't contain enough information and can't
- be solved without a lot of back and forth which causes unnecessary
- delays. Reading this section should help to prevent that.</p>
- <p>Before contacting us to report a problem, please try to verify that
- it is a <span class="APPLICATION">Privoxy</span> problem, and not a
- browser or site problem or documented behaviour that just happens to be
- different than what you expected. If unsure, try <a href=
- "http://config.privoxy.org/toggle?set=disable" target="_top">toggling
- off</a> <span class="APPLICATION">Privoxy</span>, and see if the
- problem persists.</p>
- <p>If you are using your own custom configuration, please try the
- default configuration to see if the problem is configuration related.
- If you're having problems with a feature that is disabled by default,
- please ask around on the mailing list if others can reproduce the
- problem.</p>
- <p>If you aren't using the latest Privoxy version, the problem may have
- been found and fixed in the meantime. We would appreciate if you could
- take the time to <a href=
- "https://www.privoxy.org/user-manual/installation.html" target=
- "_top">upgrade to the latest version</a> and verify that the problem
- still exists.</p>
- <p>Please be sure to provide the following information when reporting
- problems or requesting support:</p>
+ <p>A lot of support requests don't contain enough information and can't be solved without a lot of back and forth
+ which causes unnecessary delays. Reading this section should help to prevent that.</p>
+ <p>Before contacting us to report a problem, please try to verify that it is a <span class=
+ "APPLICATION">Privoxy</span> problem, and not a browser or site problem or documented behaviour that just happens
+ to be different than what you expected. If unsure, try <a href="http://config.privoxy.org/toggle?set=disable"
+ target="_top">toggling off</a> <span class="APPLICATION">Privoxy</span>, and see if the problem persists.</p>
+ <p>If you are using your own custom configuration, please try the default configuration to see if the problem is
+ configuration related. If you're having problems with a feature that is disabled by default, please ask around on
+ the mailing list if others can reproduce the problem.</p>
+ <p>If you aren't using the latest Privoxy version, the problem may have been found and fixed in the meantime. We
+ would appreciate if you could take the time to <a href="https://www.privoxy.org/user-manual/installation.html"
+ target="_top">upgrade to the latest version</a> and verify that the problem still exists.</p>
+ <p>Please be sure to provide the following information when reporting problems or requesting support:</p>
<ul>
<li>
- <p>The exact <span class="APPLICATION">Privoxy</span> version you
- are using.</p>
+ <p>The exact <span class="APPLICATION">Privoxy</span> version you are using.</p>
</li>
<li>
- <p>The operating system and versions you run <span class=
- "APPLICATION">Privoxy</span> on, e.g. <span class=
+ <p>The operating system and versions you run <span class="APPLICATION">Privoxy</span> on, e.g. <span class=
"APPLICATION">Windows XP SP2</span>.</p>
</li>
<li>
- <p>The name, platform, and version of the <span class=
- "APPLICATION">browser</span> you were using (e.g. <span class=
- "APPLICATION">Internet Explorer v5.5</span> for Mac).</p>
+ <p>The name, platform, and version of the <span class="APPLICATION">browser</span> you were using (e.g.
+ <span class="APPLICATION">Internet Explorer v5.5</span> for Mac).</p>
</li>
<li>
- <p>The URL where the problem occurred, or some way for us to
- duplicate the problem (e.g. <tt class=
+ <p>The URL where the problem occurred, or some way for us to duplicate the problem (e.g. <tt class=
"LITERAL">http://somesite.example.com/?somethingelse=123</tt>).</p>
</li>
<li>
- <p>Whether your version of <span class="APPLICATION">Privoxy</span>
- is one supplied by the <span class="APPLICATION">Privoxy</span>
- developers via SourceForge, or if you got your copy somewhere
- else.</p>
+ <p>Whether your version of <span class="APPLICATION">Privoxy</span> is one supplied by the <span class=
+ "APPLICATION">Privoxy</span> developers via SourceForge, or if you got your copy somewhere else.</p>
</li>
<li>
- <p>Whether you are using <span class="APPLICATION">Privoxy</span>
- together with another proxy such as <span class=
- "APPLICATION">Tor</span>. If so, please temporary disable the other
- proxy to see if the symptoms change.</p>
+ <p>Whether you are using <span class="APPLICATION">Privoxy</span> together with another proxy such as
+ <span class="APPLICATION">Tor</span>. If so, please temporary disable the other proxy to see if the symptoms
+ change.</p>
</li>
<li>
- <p>Whether you are using a personal firewall product. If so, does
- <span class="APPLICATION">Privoxy</span> work without it?</p>
+ <p>Whether you are using a personal firewall product. If so, does <span class="APPLICATION">Privoxy</span>
+ work without it?</p>
</li>
<li>
- <p>Any other pertinent information to help identify the problem
- such as config or log file excerpts (yes, you should have log file
- entries for each action taken). To get a meaningful logfile, please
- make sure that the <a href="../user-manual/config.html#LOGFILE"
- target="_top">logfile directive</a> is being used and the following
- <a href="../user-manual/config.html#DEBUG" target="_top">debug
- options</a> are enabled (all of them):</p>
+ <p>Any other pertinent information to help identify the problem such as config or log file excerpts (yes, you
+ should have log file entries for each action taken). To get a meaningful logfile, please make sure that the
+ <a href="../user-manual/config.html#LOGFILE" target="_top">logfile directive</a> is being used and the
+ following <a href="../user-manual/config.html#DEBUG" target="_top">debug options</a> are enabled (all of
+ them):</p>
<p class="LITERALLAYOUT">
- debug 1 # Log the destination for each request Privoxy let through. See also debug 1024.<br>
+ debug 1 # Log the destination for each request Privoxy let through.<br>
- debug 2 # show each connection status<br>
+ # See also debug 1024.<br>
+ debug 2 # show each connection status<br>
debug 4 # show I/O status<br>
-
debug 8 # show header parsing<br>
-
debug 128 # debug redirects<br>
debug 256 # debug GIF de-animation<br>
-
debug 512 # Common Log Format<br>
+ debug 1024 # Log the destination for requests Privoxy didn't let through,<br>
- debug 1024 # Log the destination for requests Privoxy didn't let through, and the reason why.<br>
+ # and the reason why.<br>
debug 4096 # Startup banner and warnings.<br>
-
debug 8192 # Non-fatal errors<br>
debug 65536 # Log applying actions</p>
- <p>If you are having trouble with a filter, please additionally
- enable</p>
+ <p>If you are having trouble with a filter, please additionally enable</p>
<p class="LITERALLAYOUT">
- debug 64 # debug regular expression filters</p>If
- you suspect that Privoxy interprets the request or the response
- incorrectly, please enable
+ debug 64 # debug regular expression filters</p>If you suspect
+ that Privoxy interprets the request or the response incorrectly, please enable
<p class="LITERALLAYOUT">
debug 32768 # log all data read from the network</p>
- <p>It's easy for us to ignore log messages that aren't relevant but
- missing log messages may make it impossible to investigate a
- problem. If you aren't sure which of the debug directives are
- relevant, please just enable all of them and let us worry about
- it.</p>
- <p>Note that Privoxy log files may contain sensitive information so
- please don't submit any logfiles you didn't read first. You can
- mask sensitive information as long as it's clear that you removed
- something.</p>
+ <p>It's easy for us to ignore log messages that aren't relevant but missing log messages may make it
+ impossible to investigate a problem. If you aren't sure which of the debug directives are relevant, please
+ just enable all of them and let us worry about it.</p>
+ <p>Note that Privoxy log files may contain sensitive information so please don't submit any logfiles you
+ didn't read first. You can mask sensitive information as long as it's clear that you removed something.</p>
</li>
</ul>
- <p>You don't have to tell us your actual name when filing a problem
- report, but if you don't, please use a nickname so we can differentiate
- between your messages and the ones entered by other "anonymous" users
- that may respond to your request if they have the same problem or
- already found a solution. Note that due to spam the trackers may not
- always allow to post without being logged into SourceForge. If that's
- the case, you are still free to create a login that isn't directly
- linked to your name, though.</p>
- <p>Please also check the status of your request a few days after
- submitting it, as we may request additional information. If you use a
- SF id, you should automatically get a mail when someone responds to
- your request. Please don't bother to add an email address when using
- the tracker. If you prefer to communicate through email, just use one
- of the mailing lists directly.</p>
- <p>If you are new to reporting problems, you might be interested in
- <a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html" target=
- "_top">How to Report Bugs Effectively</a>.</p>
- <p>The <a href=
- "https://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT" target=
- "_top">appendix of the Privoxy User Manual</a> also has helpful
- information on understanding <tt class="LITERAL">actions</tt>, and
+ <p>You don't have to tell us your actual name when filing a problem report, but if you don't, please use a
+ nickname so we can differentiate between your messages and the ones entered by other "anonymous" users that may
+ respond to your request if they have the same problem or already found a solution. Note that due to spam the
+ trackers may not always allow to post without being logged into SourceForge. If that's the case, you are still
+ free to create a login that isn't directly linked to your name, though.</p>
+ <p>Please also check the status of your request a few days after submitting it, as we may request additional
+ information. If you use a SF id, you should automatically get a mail when someone responds to your request.
+ Please don't bother to add an email address when using the tracker. If you prefer to communicate through email,
+ just use one of the mailing lists directly.</p>
+ <p>If you are new to reporting problems, you might be interested in <a href=
+ "http://www.chiark.greenend.org.uk/~sgtatham/bugs.html" target="_top">How to Report Bugs Effectively</a>.</p>
+ <p>The <a href="https://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT" target="_top">appendix of the
+ Privoxy User Manual</a> also has helpful information on understanding <tt class="LITERAL">actions</tt>, and
<tt class="LITERAL">action</tt> debugging.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="CONTACT-SUPPORT" id="CONTACT-SUPPORT">11.2.
- Get Support</a></h2>
+ <h2 class="SECT2"><a name="CONTACT-SUPPORT" id="CONTACT-SUPPORT">11.2. Get Support</a></h2>
<p>All users are welcome to discuss their issues on the <a href=
- "https://lists.privoxy.org/mailman/listinfo/privoxy-users" target=
- "_top">users mailing list</a>, where the developers also hang
- around.</p>
- <p>Please don't send private support requests to individual Privoxy
- developers, either use the mailing lists or the support trackers.</p>
- <p>If you have to contact a Privoxy developer directly for other
- reasons, please send a real mail and do not bother with SourceForge's
- messaging system. Answers to SourceForge messages are usually bounced
- by SourceForge's mail server in which case the developer wasted time
- writing a response you don't get. From your point of view it will look
- like your message has been completely ignored, so this is frustrating
- for all parties involved.</p>
- <p>Note that the Privoxy mailing lists are moderated. Posts from
- unsubscribed addresses have to be accepted manually by a moderator.
- This may cause a delay of several days and if you use a subject that
- doesn't clearly mention Privoxy or one of its features, your message
- may be accidentally discarded as spam.</p>
- <p>If you aren't subscribed, you should therefore spend a few seconds
- to come up with a proper subject. Additionally you should make it clear
- that you want to get CC'd. Otherwise some responses will be directed to
- the mailing list only, and you won't see them.</p>
+ "https://lists.privoxy.org/mailman/listinfo/privoxy-users" target="_top">users mailing list</a>, where the
+ developers also hang around.</p>
+ <p>Please don't send private support requests to individual Privoxy developers, either use the mailing lists or
+ the support trackers.</p>
+ <p>If you have to contact a Privoxy developer directly for other reasons, please send a real mail and do not
+ bother with SourceForge's messaging system. Answers to SourceForge messages are usually bounced by SourceForge's
+ mail server in which case the developer wasted time writing a response you don't get. From your point of view it
+ will look like your message has been completely ignored, so this is frustrating for all parties involved.</p>
+ <p>Note that the Privoxy mailing lists are moderated. Posts from unsubscribed addresses have to be accepted
+ manually by a moderator. This may cause a delay of several days and if you use a subject that doesn't clearly
+ mention Privoxy or one of its features, your message may be accidentally discarded as spam.</p>
+ <p>If you aren't subscribed, you should therefore spend a few seconds to come up with a proper subject.
+ Additionally you should make it clear that you want to get CC'd. Otherwise some responses will be directed to the
+ mailing list only, and you won't see them.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="REPORTING" id="REPORTING">11.3. Reporting
- Problems</a></h2>
- <p><span class="QUOTE">"Problems"</span> for our purposes, come in two
- forms:</p>
+ <h2 class="SECT2"><a name="REPORTING" id="REPORTING">11.3. Reporting Problems</a></h2>
+ <p><span class="QUOTE">"Problems"</span> for our purposes, come in two forms:</p>
<ul>
<li>
- <p>Configuration issues, such as ads that slip through, or sites
- that don't function properly due to one <span class=
- "APPLICATION">Privoxy</span> <span class="QUOTE">"action"</span> or
- another being turned <span class="QUOTE">"on"</span>.</p>
+ <p>Configuration issues, such as ads that slip through, or sites that don't function properly due to one
+ <span class="APPLICATION">Privoxy</span> <span class="QUOTE">"action"</span> or another being turned
+ <span class="QUOTE">"on"</span>.</p>
</li>
<li>
- <p><span class="QUOTE">"Bugs"</span> in the programming code that
- makes up <span class="APPLICATION">Privoxy</span>, such as that
- might cause a crash. Documentation issues, for example spelling
+ <p><span class="QUOTE">"Bugs"</span> in the programming code that makes up <span class=
+ "APPLICATION">Privoxy</span>, such as that might cause a crash. Documentation issues, for example spelling
errors and unclear descriptions, are bugs, too.</p>
</li>
</ul>
<div class="SECT3">
- <h3 class="SECT3"><a name="CONTACT-ADS" id="CONTACT-ADS">11.3.1.
- Reporting Ads or Other Configuration Problems</a></h3>
- <p>Please send feedback on ads that slipped through, innocent images
- that were blocked, sites that don't work properly, and other
- configuration related problem of <tt class=
- "FILENAME">default.action</tt> file, to <a href=
- "https://sourceforge.net/tracker/?group_id=11118&atid=460288"
- target=
- "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>,
- the Actions File Tracker.</p>
+ <h3 class="SECT3"><a name="CONTACT-ADS" id="CONTACT-ADS">11.3.1. Reporting Ads or Other Configuration
+ Problems</a></h3>
+ <p>Please send feedback on ads that slipped through, innocent images that were blocked, sites that don't work
+ properly, and other configuration related problem of <tt class="FILENAME">default.action</tt> file, to <a href=
+ "https://sourceforge.net/tracker/?group_id=11118&atid=460288" target=
+ "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>, the Actions File Tracker.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="CONTACT-BUGS" id="CONTACT-BUGS">11.3.2.
- Reporting Bugs</a></h3>
- <p>Before reporting bugs, please make sure that the bug has
- <span class="emphasis"><i class="EMPHASIS">not already been
- submitted</i></span> and observe the additional hints at the top of
- the <a href=
- "https://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118"
- target="_top">submit form</a>. If already submitted, please feel free
- to add any info to the original report that might help to solve the
+ <h3 class="SECT3"><a name="CONTACT-BUGS" id="CONTACT-BUGS">11.3.2. Reporting Bugs</a></h3>
+ <p>Before reporting bugs, please make sure that the bug has <span class="emphasis"><i class="EMPHASIS">not
+ already been submitted</i></span> and observe the additional hints at the top of the <a href=
+ "https://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118" target="_top">submit form</a>.
+ If already submitted, please feel free to add any info to the original report that might help to solve the
issue.</p>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="SECURITY-CONTACT" id=
- "SECURITY-CONTACT">11.4. Reporting security problems</a></h2>
- <p>If you discovered a security problem or merely suspect that a bug
- might be a security issue, please mail Fabian Keil
- <fk@fabiankeil.de> (OpenPGP fingerprint: 4F36 C17F 3816 9136 54A1
- E850 6918 2291 8BA2 371C).</p>
- <p>Usually you should get a response within a day, otherwise it's
- likely that either your mail or the response didn't make it. If that
- happens, please mail to the developer list to request a status
- update.</p>
+ <h2 class="SECT2"><a name="SECURITY-CONTACT" id="SECURITY-CONTACT">11.4. Reporting security problems</a></h2>
+ <p>If you discovered a security problem or merely suspect that a bug might be a security issue, please mail
+ Fabian Keil <fk@fabiankeil.de> (OpenPGP fingerprint: 4F36 C17F 3816 9136 54A1 E850 6918 2291 8BA2
+ 371C).</p>
+ <p>Usually you should get a response within a day, otherwise it's likely that either your mail or the response
+ didn't make it. If that happens, please mail to the developer list to request a status update.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="MAILING-LISTS" id="MAILING-LISTS">11.5.
- Mailing Lists</a></h2>
- <p>If you prefer to communicate through email, instead of using a web
- interface, feel free to use one of the mailing lists. To discuss issues
- that haven't been completely diagnosed yet, please use the Privoxy
- users list. Technically interested users and people who wish to
- contribute to the project are always welcome on the developers list.
- You can find an overview of all <span class=
- "APPLICATION">Privoxy</span>-related mailing lists, including list
- archives, at: <a href="https://lists.privoxy.org/mailman/listinfo"
- target="_top">https://lists.privoxy.org/mailman/listinfo</a>. The lists
- hosted on privoxy.org have been created in 2016, the previously-used
- lists hosted at SourceForge are deprecated but the archives may still
- be useful: <a href="https://sourceforge.net/mail/?group_id=11118"
- target="_top">https://sourceforge.net/mail/?group_id=11118</a>.</p>
+ <h2 class="SECT2"><a name="MAILING-LISTS" id="MAILING-LISTS">11.5. Mailing Lists</a></h2>
+ <p>If you prefer to communicate through email, instead of using a web interface, feel free to use one of the
+ mailing lists. To discuss issues that haven't been completely diagnosed yet, please use the Privoxy users list.
+ Technically interested users and people who wish to contribute to the project are always welcome on the
+ developers list. You can find an overview of all <span class="APPLICATION">Privoxy</span>-related mailing lists,
+ including list archives, at: <a href="https://lists.privoxy.org/mailman/listinfo" target=
+ "_top">https://lists.privoxy.org/mailman/listinfo</a>. The lists hosted on privoxy.org have been created in 2016,
+ the previously-used lists hosted at SourceForge are deprecated but the archives may still be useful: <a href=
+ "https://sourceforge.net/mail/?group_id=11118" target=
+ "_top">https://sourceforge.net/mail/?group_id=11118</a>.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="SF-TRACKERS" id="SF-TRACKERS">11.6.
- SourceForge support trackers</a></h2>
- <p>The <a href=
- "https://sourceforge.net/tracker/?group_id=11118&atid=211118"
- target="_top">SourceForge support trackers</a> may be used as well, but
- have various technical problems that are unlikely to be fixed anytime
- soon. If you don't get a timely response, please try the mailing list
- as well.</p>
+ <h2 class="SECT2"><a name="SF-TRACKERS" id="SF-TRACKERS">11.6. SourceForge support trackers</a></h2>
+ <p>The <a href="https://sourceforge.net/tracker/?group_id=11118&atid=211118" target="_top">SourceForge
+ support trackers</a> may be used as well, but have various technical problems that are unlikely to be fixed
+ anytime soon. If you don't get a timely response, please try the mailing list as well.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="templates.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="copyright.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="templates.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="copyright.html" accesskey="N">Next</a></td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">Privoxy's Template
- Files</td>
+ <td width="33%" align="left" valign="top">Privoxy's Template Files</td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top">Privoxy Copyright, License
- and History</td>
+ <td width="33%" align="right" valign="top">Privoxy Copyright, License and History</td>
</tr>
</table>
</div>
<html>
<head>
<title>Privoxy Copyright, License and History</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
- <link rel="PREVIOUS" title=
- "Contacting the Developers, Bug Reporting and Feature Requests" href=
- "contact.html">
+ <link rel="PREVIOUS" title="Contacting the Developers, Bug Reporting and Feature Requests" href="contact.html">
<link rel="NEXT" title="See Also" href="seealso.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="contact.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="contact.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="seealso.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="seealso.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="COPYRIGHT" id="COPYRIGHT">12. Privoxy
- Copyright, License and History</a></h1>
- <p>Copyright � 2001-2017 by Privoxy Developers <code class=
- "EMAIL"><<a href=
+ <h1 class="SECT1"><a name="COPYRIGHT" id="COPYRIGHT">12. Privoxy Copyright, License and History</a></h1>
+ <p>Copyright � 2001-2017 by Privoxy Developers <code class="EMAIL"><<a href=
"mailto:privoxy-devel@lists.privoxy.org">privoxy-devel@lists.privoxy.org</a>></code></p>
- <p>Some source code is based on code Copyright � 1997 by Anonymous Coders
- and Junkbusters, Inc. and licensed under the <i class="CITETITLE">GNU
- General Public License</i>.</p>
- <p><span class="APPLICATION">Privoxy</span> is free software; you can
- redistribute it and/or modify it under the terms of the <i class=
- "CITETITLE">GNU General Public License</i>, version 2, as published by
- the Free Software Foundation and included in the next section.</p>
+ <p>Some source code is based on code Copyright � 1997 by Anonymous Coders and Junkbusters, Inc. and licensed under
+ the <i class="CITETITLE">GNU General Public License</i>.</p>
+ <p><span class="APPLICATION">Privoxy</span> is free software; you can redistribute it and/or modify it under the
+ terms of the <i class="CITETITLE">GNU General Public License</i>, version 2, as published by the Free Software
+ Foundation and included in the next section.</p>
<div class="SECT2">
<h2 class="SECT2"><a name="LICENSE" id="LICENSE">12.1. License</a></h2>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- GNU GENERAL PUBLIC LICENSE
+ <pre class="SCREEN"> GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
</div>
<div class="SECT2">
<h2 class="SECT2"><a name="HISTORY" id="HISTORY">12.2. History</a></h2>
- <p>A long time ago, there was the <span class="APPLICATION">Internet
- Junkbuster</span>, by Anonymous Coders and Junkbusters Corporation.
- This saved many users a lot of pain in the early days of web
- advertising and user tracking.</p>
- <p>But the web, its protocols and standards, and with it, the
- techniques for forcing ads on users, give up autonomy over their
- browsing, and for tracking them, keeps evolving. Unfortunately, the
- <span class="APPLICATION">Internet Junkbuster</span> did not. Version
- 2.0.2, published in 1998, was the last official release, available from
- Junkbusters Corporation. Fortunately, it had been released under the
- GNU <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
- target="_top">GPL</a>, which allowed further development by others.</p>
- <p>So Stefan Waldherr started maintaining an improved version of the
- software, to which eventually a number of people contributed patches.
- It could already replace banners with a transparent image, and had a
- first version of pop-up killing, but it was still very closely based on
- the original, with all its limitations, such as the lack of HTTP/1.1
- support, flexible per-site configuration, or content modification. The
- last release from this effort was version 2.0.2-10, published in
- 2000.</p>
- <p>Then, some <a href=
- "https://www.privoxy.org/user-manual/copyright.html#AUTHORS" target=
- "_top">developers</a> picked up the thread, and started turning the
- software inside out, upside down, and then reassembled it, adding many
- <a href=
- "https://www.privoxy.org/user-manual/introduction.html#FEATURES"
- target="_top">new features</a> along the way.</p>
- <p>The result of this is <span class="APPLICATION">Privoxy</span>,
- whose first stable version, 3.0, was released August, 2002.</p>
- <p>As of 2012 the Junkbusters Corporation's website
- (http://www.junkbusters.com/) has been shut down, but Privoxy is still
- actively maintained.</p>
+ <p>A long time ago, there was the <span class="APPLICATION">Internet Junkbuster</span>, by Anonymous Coders and
+ Junkbusters Corporation. This saved many users a lot of pain in the early days of web advertising and user
+ tracking.</p>
+ <p>But the web, its protocols and standards, and with it, the techniques for forcing ads on users, give up
+ autonomy over their browsing, and for tracking them, keeps evolving. Unfortunately, the <span class=
+ "APPLICATION">Internet Junkbuster</span> did not. Version 2.0.2, published in 1998, was the last official
+ release, available from Junkbusters Corporation. Fortunately, it had been released under the GNU <a href=
+ "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" target="_top">GPL</a>, which allowed further development
+ by others.</p>
+ <p>So Stefan Waldherr started maintaining an improved version of the software, to which eventually a number of
+ people contributed patches. It could already replace banners with a transparent image, and had a first version of
+ pop-up killing, but it was still very closely based on the original, with all its limitations, such as the lack
+ of HTTP/1.1 support, flexible per-site configuration, or content modification. The last release from this effort
+ was version 2.0.2-10, published in 2000.</p>
+ <p>Then, some <a href="https://www.privoxy.org/user-manual/copyright.html#AUTHORS" target="_top">developers</a>
+ picked up the thread, and started turning the software inside out, upside down, and then reassembled it, adding
+ many <a href="https://www.privoxy.org/user-manual/introduction.html#FEATURES" target="_top">new features</a>
+ along the way.</p>
+ <p>The result of this is <span class="APPLICATION">Privoxy</span>, whose first stable version, 3.0, was released
+ August, 2002.</p>
+ <p>As of 2012 the Junkbusters Corporation's website (http://www.junkbusters.com/) has been shut down, but Privoxy
+ is still actively maintained.</p>
</div>
<div class="SECT2">
<h2 class="SECT2"><a name="AUTHORS" id="AUTHORS">12.3. Authors</a></h2>
<p>Current Privoxy Team:</p>
- <p class="LITERALLAYOUT">
- Fabian Keil, lead developer<br>
+ <p class="LITERALLAYOUT"> Fabian Keil, lead developer<br>
David Schmidt<br>
Hal Burgiss<br>
Lee Rian<br>
Sviatoslav Sviridov<br>
Sarantis Paskalis<br>
Stefan Waldherr</p>
- <p>Thanks to the many people who have tested Privoxy, reported bugs,
- provided patches, made suggestions, donated or contributed in some
- other way. These include (in alphabetical order):</p>
+ <p>Thanks to the many people who have tested Privoxy, reported bugs, provided patches, made suggestions, donated
+ or contributed in some other way. These include (in alphabetical order):</p>
<p class="LITERALLAYOUT"> Rustam Abdullaev<br>
Clint Adams<br>
Anatoly Arzhnikov<br>
Oliver Yeoh<br>
Yossi Zahn<br>
Jamie Zawinski</p>
- <p>Privoxy is based in part on code originally developed by Junkbusters
- Corp. and Anonymous Coders.</p>
+ <p>Privoxy is based in part on code originally developed by Junkbusters Corp. and Anonymous Coders.</p>
<p>Privoxy heavily relies on Philip Hazel's PCRE.</p>
- <p>The code to filter compressed content makes use of zlib which is
- written by Jean-loup Gailly and Mark Adler.</p>
- <p>On systems that lack snprintf(), Privoxy is using a version written
- by Mark Martinec. On systems that lack strptime(), Privoxy is using the
- one from the GNU C Library written by Ulrich Drepper.</p>
+ <p>The code to filter compressed content makes use of zlib which is written by Jean-loup Gailly and Mark
+ Adler.</p>
+ <p>On systems that lack snprintf(), Privoxy is using a version written by Mark Martinec. On systems that lack
+ strptime(), Privoxy is using the one from the GNU C Library written by Ulrich Drepper.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="contact.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="seealso.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="contact.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="seealso.html" accesskey="N">Next</a></td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">Contacting the Developers,
- Bug Reporting and Feature Requests</td>
+ <td width="33%" align="left" valign="top">Contacting the Developers, Bug Reporting and Feature Requests</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">See Also</td>
</tr>
<html>
<head>
<title>Filter Files</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
<link rel="PREVIOUS" title="Actions Files" href="actions-file.html">
<link rel="NEXT" title="Privoxy's Template Files" href="templates.html">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "actions-file.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="actions-file.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "templates.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="templates.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="FILTER-FILE" id="FILTER-FILE">9. Filter
- Files</a></h1>
- <p>On-the-fly text substitutions need to be defined in a <span class=
- "QUOTE">"filter file"</span>. Once defined, they can then be invoked as
- an <span class="QUOTE">"action"</span>.</p>
- <p><span class="APPLICATION">Privoxy</span> supports three different
- pcrs-based filter actions: <tt class="LITERAL"><a href=
- "actions-file.html#FILTER">filter</a></tt> to rewrite the content that is
- send to the client, <tt class="LITERAL"><a href=
- "actions-file.html#CLIENT-HEADER-FILTER">client-header-filter</a></tt> to
- rewrite headers that are send by the client, and <tt class=
- "LITERAL"><a href=
- "actions-file.html#SERVER-HEADER-FILTER">server-header-filter</a></tt> to
- rewrite headers that are send by the server.</p>
- <p><span class="APPLICATION">Privoxy</span> also supports two tagger
- actions: <tt class="LITERAL"><a href=
- "actions-file.html#CLIENT-HEADER-TAGGER">client-header-tagger</a></tt>
- and <tt class="LITERAL"><a href=
- "actions-file.html#SERVER-HEADER-TAGGER">server-header-tagger</a></tt>.
- Taggers and filters use the same syntax in the filter files, the
- difference is that taggers don't modify the text they are filtering, but
- use a rewritten version of the filtered text as tag. The tags can then be
- used to change the applying actions through sections with <a href=
- "actions-file.html#TAG-PATTERN">tag-patterns</a>.</p>
- <p>Finally <span class="APPLICATION">Privoxy</span> supports the
- <tt class="LITERAL"><a href=
- "actions-file.html#EXTERNAL-FILTER">external-filter</a></tt> action to
- enable <tt class="LITERAL"><a href=
- "filter-file.html#EXTERNAL-FILTER-SYNTAX">external filters</a></tt>
- written in proper programming languages.</p>
- <p>Multiple filter files can be defined through the <tt class=
- "LITERAL"><a href="config.html#FILTERFILE">filterfile</a></tt> config
- directive. The filters as supplied by the developers are located in
- <tt class="FILENAME">default.filter</tt>. It is recommended that any
- locally defined or modified filters go in a separately defined file such
- as <tt class="FILENAME">user.filter</tt>.</p>
- <p>Common tasks for content filters are to eliminate common annoyances in
- HTML and JavaScript, such as pop-up windows, exit consoles, crippled
- windows without navigation tools, the infamous <BLINK> tag etc, to
- suppress images with certain width and height attributes (standard banner
- sizes or web-bugs), or just to have fun.</p>
- <p>Enabled content filters are applied to any content whose <span class=
- "QUOTE">"Content Type"</span> header is recognised as a sign of
- text-based content, with the exception of <tt class=
- "LITERAL">text/plain</tt>. Use the <a href=
- "actions-file.html#FORCE-TEXT-MODE">force-text-mode</a> action to also
- filter other content.</p>
- <p>Substitutions are made at the source level, so if you want to
- <span class="QUOTE">"roll your own"</span> filters, you should first be
- familiar with HTML syntax, and, of course, regular expressions.</p>
- <p>Just like the <a href="actions-file.html">actions files</a>, the
- filter file is organized in sections, which are called <span class=
- "emphasis"><i class="EMPHASIS">filters</i></span> here. Each filter
- consists of a heading line, that starts with one of the <span class=
- "emphasis"><i class="EMPHASIS">keywords</i></span> <tt class=
- "LITERAL">FILTER:</tt>, <tt class="LITERAL">CLIENT-HEADER-FILTER:</tt> or
- <tt class="LITERAL">SERVER-HEADER-FILTER:</tt> followed by the filter's
- <span class="emphasis"><i class="EMPHASIS">name</i></span>, and a short
- (one line) <span class="emphasis"><i class=
- "EMPHASIS">description</i></span> of what it does. Below that line come
- the <span class="emphasis"><i class="EMPHASIS">jobs</i></span>, i.e.
- lines that define the actual text substitutions. By convention, the name
- of a filter should describe what the filter <span class=
- "emphasis"><i class="EMPHASIS">eliminates</i></span>. The comment is used
- in the <a href="http://config.privoxy.org/" target="_top">web-based user
- interface</a>.</p>
- <p>Once a filter called <tt class="REPLACEABLE"><i>name</i></tt> has been
- defined in the filter file, it can be invoked by using an action of the
- form +<tt class="LITERAL"><a href=
- "actions-file.html#FILTER">filter</a>{<tt class=
- "REPLACEABLE"><i>name</i></tt>}</tt> in any <a href=
+ <h1 class="SECT1"><a name="FILTER-FILE" id="FILTER-FILE">9. Filter Files</a></h1>
+ <p>On-the-fly text substitutions need to be defined in a <span class="QUOTE">"filter file"</span>. Once defined,
+ they can then be invoked as an <span class="QUOTE">"action"</span>.</p>
+ <p><span class="APPLICATION">Privoxy</span> supports three different pcrs-based filter actions: <tt class=
+ "LITERAL"><a href="actions-file.html#FILTER">filter</a></tt> to rewrite the content that is send to the client,
+ <tt class="LITERAL"><a href="actions-file.html#CLIENT-HEADER-FILTER">client-header-filter</a></tt> to rewrite
+ headers that are send by the client, and <tt class="LITERAL"><a href=
+ "actions-file.html#SERVER-HEADER-FILTER">server-header-filter</a></tt> to rewrite headers that are send by the
+ server.</p>
+ <p><span class="APPLICATION">Privoxy</span> also supports two tagger actions: <tt class="LITERAL"><a href=
+ "actions-file.html#CLIENT-HEADER-TAGGER">client-header-tagger</a></tt> and <tt class="LITERAL"><a href=
+ "actions-file.html#SERVER-HEADER-TAGGER">server-header-tagger</a></tt>. Taggers and filters use the same syntax in
+ the filter files, the difference is that taggers don't modify the text they are filtering, but use a rewritten
+ version of the filtered text as tag. The tags can then be used to change the applying actions through sections with
+ <a href="actions-file.html#TAG-PATTERN">tag-patterns</a>.</p>
+ <p>Finally <span class="APPLICATION">Privoxy</span> supports the <tt class="LITERAL"><a href=
+ "actions-file.html#EXTERNAL-FILTER">external-filter</a></tt> action to enable <tt class="LITERAL"><a href=
+ "filter-file.html#EXTERNAL-FILTER-SYNTAX">external filters</a></tt> written in proper programming languages.</p>
+ <p>Multiple filter files can be defined through the <tt class="LITERAL"><a href=
+ "config.html#FILTERFILE">filterfile</a></tt> config directive. The filters as supplied by the developers are
+ located in <tt class="FILENAME">default.filter</tt>. It is recommended that any locally defined or modified filters
+ go in a separately defined file such as <tt class="FILENAME">user.filter</tt>.</p>
+ <p>Common tasks for content filters are to eliminate common annoyances in HTML and JavaScript, such as pop-up
+ windows, exit consoles, crippled windows without navigation tools, the infamous <BLINK> tag etc, to suppress
+ images with certain width and height attributes (standard banner sizes or web-bugs), or just to have fun.</p>
+ <p>Enabled content filters are applied to any content whose <span class="QUOTE">"Content Type"</span> header is
+ recognised as a sign of text-based content, with the exception of <tt class="LITERAL">text/plain</tt>. Use the
+ <a href="actions-file.html#FORCE-TEXT-MODE">force-text-mode</a> action to also filter other content.</p>
+ <p>Substitutions are made at the source level, so if you want to <span class="QUOTE">"roll your own"</span>
+ filters, you should first be familiar with HTML syntax, and, of course, regular expressions.</p>
+ <p>Just like the <a href="actions-file.html">actions files</a>, the filter file is organized in sections, which are
+ called <span class="emphasis"><i class="EMPHASIS">filters</i></span> here. Each filter consists of a heading line,
+ that starts with one of the <span class="emphasis"><i class="EMPHASIS">keywords</i></span> <tt class=
+ "LITERAL">FILTER:</tt>, <tt class="LITERAL">CLIENT-HEADER-FILTER:</tt> or <tt class=
+ "LITERAL">SERVER-HEADER-FILTER:</tt> followed by the filter's <span class="emphasis"><i class=
+ "EMPHASIS">name</i></span>, and a short (one line) <span class="emphasis"><i class=
+ "EMPHASIS">description</i></span> of what it does. Below that line come the <span class="emphasis"><i class=
+ "EMPHASIS">jobs</i></span>, i.e. lines that define the actual text substitutions. By convention, the name of a
+ filter should describe what the filter <span class="emphasis"><i class="EMPHASIS">eliminates</i></span>. The
+ comment is used in the <a href="http://config.privoxy.org/" target="_top">web-based user interface</a>.</p>
+ <p>Once a filter called <tt class="REPLACEABLE"><i>name</i></tt> has been defined in the filter file, it can be
+ invoked by using an action of the form +<tt class="LITERAL"><a href=
+ "actions-file.html#FILTER">filter</a>{<tt class="REPLACEABLE"><i>name</i></tt>}</tt> in any <a href=
"actions-file.html">actions file</a>.</p>
- <p>Filter definitions start with a header line that contains the filter
- type, the filter name and the filter description. A content filter header
- line for a filter called <span class="QUOTE">"foo"</span> could look like
+ <p>Filter definitions start with a header line that contains the filter type, the filter name and the filter
+ description. A content filter header line for a filter called <span class="QUOTE">"foo"</span> could look like
this:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>Below that line, and up to the next header line, come the jobs that
- define what text replacements the filter executes. They are specified in
- a syntax that imitates <a href="http://www.perl.org/" target=
- "_top">Perl</a>'s <tt class="LITERAL">s///</tt> operator. If you are
- familiar with Perl, you will find this to be quite intuitive, and may
- want to look at the PCRS documentation for the subtle differences to Perl
- behaviour.</p>
- <p>Most notably, the non-standard option letter <tt class=
- "LITERAL">U</tt> is supported, which turns the default to ungreedy
- matching (add <tt class="LITERAL">?</tt> to quantifiers to turn them
- greedy again).</p>
- <p>The non-standard option letter <tt class="LITERAL">D</tt> (dynamic)
- allows to use the variables $host, $origin (the IP address the request
- came from), $path, $url and $listen-address (the address on which Privoxy
- accepted the client request. Example: 127.0.0.1:8118). They will be
- replaced with the value they refer to before the filter is executed.</p>
- <p>Note that '$' is a bad choice for a delimiter in a dynamic filter as
- you might end up with unintended variables if you use a variable name
- directly after the delimiter. Variables will be resolved without escaping
- anything, therefore you also have to be careful not to chose delimiters
- that appear in the replacement text. For example '<' should be save,
- while '?' will sooner or later cause conflicts with $url.</p>
- <p>The non-standard option letter <tt class="LITERAL">T</tt> (trivial)
- prevents parsing for backreferences in the substitute. Use it if you want
- to include text like '$&' in your substitute without quoting.</p>
- <p>If you are new to <a href=
- "http://en.wikipedia.org/wiki/Regular_expressions" target=
- "_top"><span class="QUOTE">"Regular Expressions"</span></a>, you might
- want to take a look at the <a href="appendix.html#REGEX">Appendix on
- regular expressions</a>, and see the <a href=
- "http://perldoc.perl.org/perlre.html" target="_top">Perl manual</a> for
- <a href="http://perldoc.perl.org/perlop.html" target="_top">the
- <tt class="LITERAL">s///</tt> operator's syntax</a> and <a href=
- "http://perldoc.perl.org/perlre.html" target="_top">Perl-style regular
- expressions</a> in general. The below examples might also help to get you
- started.</p>
+ <p>Below that line, and up to the next header line, come the jobs that define what text replacements the filter
+ executes. They are specified in a syntax that imitates <a href="http://www.perl.org/" target="_top">Perl</a>'s
+ <tt class="LITERAL">s///</tt> operator. If you are familiar with Perl, you will find this to be quite intuitive,
+ and may want to look at the PCRS documentation for the subtle differences to Perl behaviour.</p>
+ <p>Most notably, the non-standard option letter <tt class="LITERAL">U</tt> is supported, which turns the default to
+ ungreedy matching (add <tt class="LITERAL">?</tt> to quantifiers to turn them greedy again).</p>
+ <p>The non-standard option letter <tt class="LITERAL">D</tt> (dynamic) allows to use the variables $host, $origin
+ (the IP address the request came from), $path, $url and $listen-address (the address on which Privoxy accepted the
+ client request. Example: 127.0.0.1:8118). They will be replaced with the value they refer to before the filter is
+ executed.</p>
+ <p>Note that '$' is a bad choice for a delimiter in a dynamic filter as you might end up with unintended variables
+ if you use a variable name directly after the delimiter. Variables will be resolved without escaping anything,
+ therefore you also have to be careful not to chose delimiters that appear in the replacement text. For example
+ '<' should be save, while '?' will sooner or later cause conflicts with $url.</p>
+ <p>The non-standard option letter <tt class="LITERAL">T</tt> (trivial) prevents parsing for backreferences in the
+ substitute. Use it if you want to include text like '$&' in your substitute without quoting.</p>
+ <p>If you are new to <a href="http://en.wikipedia.org/wiki/Regular_expressions" target="_top"><span class=
+ "QUOTE">"Regular Expressions"</span></a>, you might want to take a look at the <a href=
+ "appendix.html#REGEX">Appendix on regular expressions</a>, and see the <a href=
+ "http://perldoc.perl.org/perlre.html" target="_top">Perl manual</a> for <a href=
+ "http://perldoc.perl.org/perlop.html" target="_top">the <tt class="LITERAL">s///</tt> operator's syntax</a> and
+ <a href="http://perldoc.perl.org/perlre.html" target="_top">Perl-style regular expressions</a> in general. The
+ below examples might also help to get you started.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="FILTER-FILE-TUT" id="FILTER-FILE-TUT">9.1.
- Filter File Tutorial</a></h2>
- <p>Now, let's complete our <span class="QUOTE">"foo"</span> content
- filter. We have already defined the heading, but the jobs are still
- missing. Since all it does is to replace <span class=
- "QUOTE">"foo"</span> with <span class="QUOTE">"bar"</span>, there is
- only one (trivial) job needed:</p>
+ <h2 class="SECT2"><a name="FILTER-FILE-TUT" id="FILTER-FILE-TUT">9.1. Filter File Tutorial</a></h2>
+ <p>Now, let's complete our <span class="QUOTE">"foo"</span> content filter. We have already defined the heading,
+ but the jobs are still missing. Since all it does is to replace <span class="QUOTE">"foo"</span> with
+ <span class="QUOTE">"bar"</span>, there is only one (trivial) job needed:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>But wait! Didn't the comment say that <span class=
- "emphasis"><i class="EMPHASIS">all</i></span> occurrences of
- <span class="QUOTE">"foo"</span> should be replaced? Our current job
- will only take care of the first <span class="QUOTE">"foo"</span> on
- each page. For global substitution, we'll need to add the <tt class=
+ <p>But wait! Didn't the comment say that <span class="emphasis"><i class="EMPHASIS">all</i></span> occurrences of
+ <span class="QUOTE">"foo"</span> should be replaced? Our current job will only take care of the first
+ <span class="QUOTE">"foo"</span> on each page. For global substitution, we'll need to add the <tt class=
"LITERAL">g</tt> option:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>Let's look at some real filters for more interesting examples. Here
- you see a filter that protects against some common annoyances that
- arise from JavaScript abuse. Let's look at its jobs one after the
- other:</p>
+ <p>Let's look at some real filters for more interesting examples. Here you see a filter that protects against
+ some common annoyances that arise from JavaScript abuse. Let's look at its jobs one after the other:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse
+ <pre class="SCREEN">FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse
# Get rid of JavaScript referrer tracking. Test page: http://www.randomoddness.com/untitled.htm
#
</td>
</tr>
</table>
- <p>Following the header line and a comment, you see the job. Note that
- it uses <tt class="LITERAL">|</tt> as the delimiter instead of
- <tt class="LITERAL">/</tt>, because the pattern contains a forward
- slash, which would otherwise have to be escaped by a backslash
- (<tt class="LITERAL">\</tt>).</p>
- <p>Now, let's examine the pattern: it starts with the text <tt class=
- "LITERAL"><script.*</tt> enclosed in parentheses. Since the dot
- matches any character, and <tt class="LITERAL">*</tt> means:
- <span class="QUOTE">"Match an arbitrary number of the element left of
- myself"</span>, this matches <span class="QUOTE">"<script"</span>,
- followed by <span class="emphasis"><i class="EMPHASIS">any</i></span>
- text, i.e. it matches the whole page, from the start of the first
- <script> tag.</p>
- <p>That's more than we want, but the pattern continues: <tt class=
- "LITERAL">document\.referrer</tt> matches only the exact string
- <span class="QUOTE">"document.referrer"</span>. The dot needed to be
- <span class="emphasis"><i class="EMPHASIS">escaped</i></span>, i.e.
- preceded by a backslash, to take away its special meaning as a joker,
- and make it just a regular dot. So far, the meaning is: Match from the
- start of the first <script> tag in a the page, up to, and
- including, the text <span class="QUOTE">"document.referrer"</span>, if
- <span class="emphasis"><i class="EMPHASIS">both</i></span> are present
- in the page (and appear in that order).</p>
- <p>But there's still more pattern to go. The next element, again
- enclosed in parentheses, is <tt class="LITERAL">.*</script></tt>.
- You already know what <tt class="LITERAL">.*</tt> means, so the whole
- pattern translates to: Match from the start of the first <script>
- tag in a page to the end of the last <script> tag, provided that
- the text <span class="QUOTE">"document.referrer"</span> appears
- somewhere in between.</p>
- <p>This is still not the whole story, since we have ignored the options
- and the parentheses: The portions of the page matched by sub-patterns
- that are enclosed in parentheses, will be remembered and be available
- through the variables <tt class="LITERAL">$1, $2, ...</tt> in the
- substitute. The <tt class="LITERAL">U</tt> option switches to ungreedy
- matching, which means that the first <tt class="LITERAL">.*</tt> in the
- pattern will only <span class="QUOTE">"eat up"</span> all text in
- between <span class="QUOTE">"<script"</span> and the <span class=
- "emphasis"><i class="EMPHASIS">first</i></span> occurrence of
- <span class="QUOTE">"document.referrer"</span>, and that the second
- <tt class="LITERAL">.*</tt> will only span the text up to the
- <span class="emphasis"><i class="EMPHASIS">first</i></span>
- <span class="QUOTE">"</script>"</span> tag. Furthermore, the
- <tt class="LITERAL">s</tt> option says that the match may span multiple
- lines in the page, and the <tt class="LITERAL">g</tt> option again
- means that the substitution is global.</p>
- <p>So, to summarize, the pattern means: Match all scripts that contain
- the text <span class="QUOTE">"document.referrer"</span>. Remember the
- parts of the script from (and including) the start tag up to (and
- excluding) the string <span class="QUOTE">"document.referrer"</span> as
- <tt class="LITERAL">$1</tt>, and the part following that string, up to
- and including the closing tag, as <tt class="LITERAL">$2</tt>.</p>
- <p>Now the pattern is deciphered, but wasn't this about substituting
- things? So lets look at the substitute: <tt class="LITERAL">$1"Not Your
- Business!"$2</tt> is easy to read: The text remembered as <tt class=
- "LITERAL">$1</tt>, followed by <tt class="LITERAL">"Not Your
- Business!"</tt> (<span class="emphasis"><i class=
- "EMPHASIS">including</i></span> the quotation marks!), followed by the
- text remembered as <tt class="LITERAL">$2</tt>. This produces an exact
- copy of the original string, with the middle part (the <span class=
- "QUOTE">"document.referrer"</span>) replaced by <tt class=
- "LITERAL">"Not Your Business!"</tt>.</p>
- <p>The whole job now reads: Replace <span class=
- "QUOTE">"document.referrer"</span> by <tt class="LITERAL">"Not Your
- Business!"</tt> wherever it appears inside a <script> tag. Note
- that this job won't break JavaScript syntax, since both the original
- and the replacement are syntactically valid string objects. The script
- just won't have access to the referrer information anymore.</p>
- <p>We'll show you two other jobs from the JavaScript taming department,
- but this time only point out the constructs of special interest:</p>
+ <p>Following the header line and a comment, you see the job. Note that it uses <tt class="LITERAL">|</tt> as the
+ delimiter instead of <tt class="LITERAL">/</tt>, because the pattern contains a forward slash, which would
+ otherwise have to be escaped by a backslash (<tt class="LITERAL">\</tt>).</p>
+ <p>Now, let's examine the pattern: it starts with the text <tt class="LITERAL"><script.*</tt> enclosed in
+ parentheses. Since the dot matches any character, and <tt class="LITERAL">*</tt> means: <span class=
+ "QUOTE">"Match an arbitrary number of the element left of myself"</span>, this matches <span class=
+ "QUOTE">"<script"</span>, followed by <span class="emphasis"><i class="EMPHASIS">any</i></span> text, i.e. it
+ matches the whole page, from the start of the first <script> tag.</p>
+ <p>That's more than we want, but the pattern continues: <tt class="LITERAL">document\.referrer</tt> matches only
+ the exact string <span class="QUOTE">"document.referrer"</span>. The dot needed to be <span class=
+ "emphasis"><i class="EMPHASIS">escaped</i></span>, i.e. preceded by a backslash, to take away its special meaning
+ as a joker, and make it just a regular dot. So far, the meaning is: Match from the start of the first
+ <script> tag in a the page, up to, and including, the text <span class="QUOTE">"document.referrer"</span>,
+ if <span class="emphasis"><i class="EMPHASIS">both</i></span> are present in the page (and appear in that
+ order).</p>
+ <p>But there's still more pattern to go. The next element, again enclosed in parentheses, is <tt class=
+ "LITERAL">.*</script></tt>. You already know what <tt class="LITERAL">.*</tt> means, so the whole pattern
+ translates to: Match from the start of the first <script> tag in a page to the end of the last
+ <script> tag, provided that the text <span class="QUOTE">"document.referrer"</span> appears somewhere in
+ between.</p>
+ <p>This is still not the whole story, since we have ignored the options and the parentheses: The portions of the
+ page matched by sub-patterns that are enclosed in parentheses, will be remembered and be available through the
+ variables <tt class="LITERAL">$1, $2, ...</tt> in the substitute. The <tt class="LITERAL">U</tt> option switches
+ to ungreedy matching, which means that the first <tt class="LITERAL">.*</tt> in the pattern will only
+ <span class="QUOTE">"eat up"</span> all text in between <span class="QUOTE">"<script"</span> and the
+ <span class="emphasis"><i class="EMPHASIS">first</i></span> occurrence of <span class=
+ "QUOTE">"document.referrer"</span>, and that the second <tt class="LITERAL">.*</tt> will only span the text up to
+ the <span class="emphasis"><i class="EMPHASIS">first</i></span> <span class="QUOTE">"</script>"</span> tag.
+ Furthermore, the <tt class="LITERAL">s</tt> option says that the match may span multiple lines in the page, and
+ the <tt class="LITERAL">g</tt> option again means that the substitution is global.</p>
+ <p>So, to summarize, the pattern means: Match all scripts that contain the text <span class=
+ "QUOTE">"document.referrer"</span>. Remember the parts of the script from (and including) the start tag up to
+ (and excluding) the string <span class="QUOTE">"document.referrer"</span> as <tt class="LITERAL">$1</tt>, and the
+ part following that string, up to and including the closing tag, as <tt class="LITERAL">$2</tt>.</p>
+ <p>Now the pattern is deciphered, but wasn't this about substituting things? So lets look at the substitute:
+ <tt class="LITERAL">$1"Not Your Business!"$2</tt> is easy to read: The text remembered as <tt class=
+ "LITERAL">$1</tt>, followed by <tt class="LITERAL">"Not Your Business!"</tt> (<span class="emphasis"><i class=
+ "EMPHASIS">including</i></span> the quotation marks!), followed by the text remembered as <tt class=
+ "LITERAL">$2</tt>. This produces an exact copy of the original string, with the middle part (the <span class=
+ "QUOTE">"document.referrer"</span>) replaced by <tt class="LITERAL">"Not Your Business!"</tt>.</p>
+ <p>The whole job now reads: Replace <span class="QUOTE">"document.referrer"</span> by <tt class="LITERAL">"Not
+ Your Business!"</tt> wherever it appears inside a <script> tag. Note that this job won't break JavaScript
+ syntax, since both the original and the replacement are syntactically valid string objects. The script just won't
+ have access to the referrer information anymore.</p>
+ <p>We'll show you two other jobs from the JavaScript taming department, but this time only point out the
+ constructs of special interest:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # The status bar is for displaying link targets, not pointless blahblah
+ <pre class="SCREEN"># The status bar is for displaying link targets, not pointless blahblah
#
s/window\.status\s*=\s*(['"]).*?\1/dUmMy=1/ig</pre>
</td>
</tr>
</table>
- <p><tt class="LITERAL">\s</tt> stands for whitespace characters (space,
- tab, newline, carriage return, form feed), so that <tt class=
- "LITERAL">\s*</tt> means: <span class="QUOTE">"zero or more
- whitespace"</span>. The <tt class="LITERAL">?</tt> in <tt class=
- "LITERAL">.*?</tt> makes this matching of arbitrary text ungreedy.
- (Note that the <tt class="LITERAL">U</tt> option is not set). The
- <tt class="LITERAL">['"]</tt> construct means: <span class="QUOTE">"a
- single <span class="emphasis"><i class="EMPHASIS">or</i></span> a
- double quote"</span>. Finally, <tt class="LITERAL">\1</tt> is a
- back-reference to the first parenthesis just like <tt class=
- "LITERAL">$1</tt> above, with the difference that in the <span class=
- "emphasis"><i class="EMPHASIS">pattern</i></span>, a backslash
- indicates a back-reference, whereas in the <span class=
- "emphasis"><i class="EMPHASIS">substitute</i></span>, it's the
- dollar.</p>
- <p>So what does this job do? It replaces assignments of single- or
- double-quoted strings to the <span class="QUOTE">"window.status"</span>
- object with a dummy assignment (using a variable name that is hopefully
- odd enough not to conflict with real variables in scripts). Thus, it
- catches many cases where e.g. pointless descriptions are displayed in
- the status bar instead of the link target when you move your mouse over
- links.</p>
+ <p><tt class="LITERAL">\s</tt> stands for whitespace characters (space, tab, newline, carriage return, form
+ feed), so that <tt class="LITERAL">\s*</tt> means: <span class="QUOTE">"zero or more whitespace"</span>. The
+ <tt class="LITERAL">?</tt> in <tt class="LITERAL">.*?</tt> makes this matching of arbitrary text ungreedy. (Note
+ that the <tt class="LITERAL">U</tt> option is not set). The <tt class="LITERAL">['"]</tt> construct means:
+ <span class="QUOTE">"a single <span class="emphasis"><i class="EMPHASIS">or</i></span> a double quote"</span>.
+ Finally, <tt class="LITERAL">\1</tt> is a back-reference to the first parenthesis just like <tt class=
+ "LITERAL">$1</tt> above, with the difference that in the <span class="emphasis"><i class=
+ "EMPHASIS">pattern</i></span>, a backslash indicates a back-reference, whereas in the <span class=
+ "emphasis"><i class="EMPHASIS">substitute</i></span>, it's the dollar.</p>
+ <p>So what does this job do? It replaces assignments of single- or double-quoted strings to the <span class=
+ "QUOTE">"window.status"</span> object with a dummy assignment (using a variable name that is hopefully odd enough
+ not to conflict with real variables in scripts). Thus, it catches many cases where e.g. pointless descriptions
+ are displayed in the status bar instead of the link target when you move your mouse over links.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # Kill OnUnload popups. Yummy. Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html
+ <pre class="SCREEN"># Kill OnUnload popups. Yummy. Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html
#
s/(<body [^>]*)onunload(.*>)/$1never$2/iU</pre>
</td>
</tr>
</table>
<p>Including the <a href=
- "http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-eventgroupings-htmlevents"
- target="_top">OnUnload event binding</a> in the HTML DOM was a
- <span class="emphasis"><i class="EMPHASIS">CRIME</i></span>. When I
- close a browser window, I want it to close and die. Basta. This job
- replaces the <span class="QUOTE">"onunload"</span> attribute in
- <span class="QUOTE">"<body>"</span> tags with the dummy word
- <tt class="LITERAL">never</tt>. Note that the <tt class=
- "LITERAL">i</tt> option makes the pattern matching case-insensitive.
- Also note that ungreedy matching alone doesn't always guarantee a
- minimal match: In the first parenthesis, we had to use <tt class=
- "LITERAL">[^>]*</tt> instead of <tt class="LITERAL">.*</tt> to
- prevent the match from exceeding the <body> tag if it doesn't
- contain <span class="QUOTE">"OnUnload"</span>, but the page's content
- does.</p>
+ "http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-eventgroupings-htmlevents" target=
+ "_top">OnUnload event binding</a> in the HTML DOM was a <span class="emphasis"><i class=
+ "EMPHASIS">CRIME</i></span>. When I close a browser window, I want it to close and die. Basta. This job replaces
+ the <span class="QUOTE">"onunload"</span> attribute in <span class="QUOTE">"<body>"</span> tags with the
+ dummy word <tt class="LITERAL">never</tt>. Note that the <tt class="LITERAL">i</tt> option makes the pattern
+ matching case-insensitive. Also note that ungreedy matching alone doesn't always guarantee a minimal match: In
+ the first parenthesis, we had to use <tt class="LITERAL">[^>]*</tt> instead of <tt class="LITERAL">.*</tt> to
+ prevent the match from exceeding the <body> tag if it doesn't contain <span class=
+ "QUOTE">"OnUnload"</span>, but the page's content does.</p>
<p>The last example is from the fun department:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>Note the <tt class="LITERAL">(?!\.com)</tt> part (a so-called
- negative lookahead) in the job's pattern, which means: Don't match, if
- the string <span class="QUOTE">".com"</span> appears directly following
- <span class="QUOTE">"microsoft"</span> in the page. This prevents links
- to microsoft.com from being trashed, while still replacing the word
- everywhere else.</p>
+ <p>Note the <tt class="LITERAL">(?!\.com)</tt> part (a so-called negative lookahead) in the job's pattern, which
+ means: Don't match, if the string <span class="QUOTE">".com"</span> appears directly following <span class=
+ "QUOTE">"microsoft"</span> in the page. This prevents links to microsoft.com from being trashed, while still
+ replacing the word everywhere else.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # Buzzword Bingo (example for extended regex syntax)
+ <pre class="SCREEN"># Buzzword Bingo (example for extended regex syntax)
#
s* industry[ -]leading \
| cutting[ -]edge \
</td>
</tr>
</table>
- <p>The <tt class="LITERAL">x</tt> option in this job turns on extended
- syntax, and allows for e.g. the liberal use of (non-interpreted!)
- whitespace for nicer formatting.</p>
+ <p>The <tt class="LITERAL">x</tt> option in this job turns on extended syntax, and allows for e.g. the liberal
+ use of (non-interpreted!) whitespace for nicer formatting.</p>
<p>You get the idea?</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="PREDEFINED-FILTERS" id=
- "PREDEFINED-FILTERS">9.2. The Pre-defined Filters</a></h2>
- <p>The distribution <tt class="FILENAME">default.filter</tt> file
- contains a selection of pre-defined filters for your convenience:</p>
+ <h2 class="SECT2"><a name="PREDEFINED-FILTERS" id="PREDEFINED-FILTERS">9.2. The Pre-defined Filters</a></h2>
+ <p>The distribution <tt class="FILENAME">default.filter</tt> file contains a selection of pre-defined filters for
+ your convenience:</p>
<div class="VARIABLELIST">
<dl>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">js-annoyances</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">js-annoyances</i></span></dt>
<dd>
- <p>The purpose of this filter is to get rid of particularly
- annoying JavaScript abuse. To that end, it</p>
+ <p>The purpose of this filter is to get rid of particularly annoying JavaScript abuse. To that end, it</p>
<ul>
<li>
- <p>replaces JavaScript references to the browser's referrer
- information with the string "Not Your Business!". This
- compliments the <tt class="LITERAL"><a href=
- "actions-file.html#HIDE-REFERRER">hide-referrer</a></tt>
- action on the content level.</p>
+ <p>replaces JavaScript references to the browser's referrer information with the string "Not Your
+ Business!". This compliments the <tt class="LITERAL"><a href=
+ "actions-file.html#HIDE-REFERRER">hide-referrer</a></tt> action on the content level.</p>
</li>
<li>
<p>removes the bindings to the DOM's <a href=
"http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-eventgroupings-htmlevents"
- target="_top">unload event</a> which we feel has no right to
- exist and is responsible for most <span class="QUOTE">"exit
- consoles"</span>, i.e. nasty windows that pop up when you
- close another one.</p>
+ target="_top">unload event</a> which we feel has no right to exist and is responsible for most
+ <span class="QUOTE">"exit consoles"</span>, i.e. nasty windows that pop up when you close another
+ one.</p>
</li>
<li>
- <p>removes code that causes new windows to be opened with
- undesired properties, such as being full-screen,
- non-resizeable, without location, status or menu bar etc.</p>
+ <p>removes code that causes new windows to be opened with undesired properties, such as being
+ full-screen, non-resizeable, without location, status or menu bar etc.</p>
</li>
</ul>
- <p>Use with caution. This is an aggressive filter, and can break
- sites that rely heavily on JavaScript.</p>
+ <p>Use with caution. This is an aggressive filter, and can break sites that rely heavily on JavaScript.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">js-events</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">js-events</i></span></dt>
<dd>
- <p>This is a very radical measure. It removes virtually all
- JavaScript event bindings, which means that scripts can not react
- to user actions such as mouse movements or clicks, window
- resizing etc, anymore. Use with caution!</p>
- <p>We <span class="emphasis"><i class="EMPHASIS">strongly
- discourage</i></span> using this filter as a default since it
- breaks many legitimate scripts. It is meant for use only on
- extra-nasty sites (should you really need to go there).</p>
+ <p>This is a very radical measure. It removes virtually all JavaScript event bindings, which means that
+ scripts can not react to user actions such as mouse movements or clicks, window resizing etc, anymore. Use
+ with caution!</p>
+ <p>We <span class="emphasis"><i class="EMPHASIS">strongly discourage</i></span> using this filter as a
+ default since it breaks many legitimate scripts. It is meant for use only on extra-nasty sites (should you
+ really need to go there).</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">html-annoyances</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">html-annoyances</i></span></dt>
<dd>
- <p>This filter will undo many common instances of HTML based
- abuse.</p>
- <p>The <tt class="LITERAL">BLINK</tt> and <tt class=
- "LITERAL">MARQUEE</tt> tags are neutralized (yeah baby!), and
- browser windows will be created as resizeable (as of course they
- should be!), and will have location, scroll and menu bars -- even
- if specified otherwise.</p>
+ <p>This filter will undo many common instances of HTML based abuse.</p>
+ <p>The <tt class="LITERAL">BLINK</tt> and <tt class="LITERAL">MARQUEE</tt> tags are neutralized (yeah
+ baby!), and browser windows will be created as resizeable (as of course they should be!), and will have
+ location, scroll and menu bars -- even if specified otherwise.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">content-cookies</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">content-cookies</i></span></dt>
<dd>
- <p>Most cookies are set in the HTTP dialog, where they can be
- intercepted by the <tt class="LITERAL"><a href=
- "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt>
- and <tt class="LITERAL"><a href=
- "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>
- actions. But web sites increasingly make use of HTML meta tags
- and JavaScript to sneak cookies to the browser on the content
- level.</p>
- <p>This filter disables most HTML and JavaScript code that reads
- or sets cookies. It cannot detect all clever uses of these types
- of code, so it should not be relied on as an absolute fix. Use it
- wherever you would also use the cookie crunch actions.</p>
+ <p>Most cookies are set in the HTTP dialog, where they can be intercepted by the <tt class=
+ "LITERAL"><a href="actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt> and
+ <tt class="LITERAL"><a href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>
+ actions. But web sites increasingly make use of HTML meta tags and JavaScript to sneak cookies to the
+ browser on the content level.</p>
+ <p>This filter disables most HTML and JavaScript code that reads or sets cookies. It cannot detect all
+ clever uses of these types of code, so it should not be relied on as an absolute fix. Use it wherever you
+ would also use the cookie crunch actions.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">refresh-tags</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">refresh-tags</i></span></dt>
<dd>
- <p>Disable any refresh tags if the interval is greater than nine
- seconds (so that redirections done via refresh tags are not
- destroyed). This is useful for dial-on-demand setups, or for
- those who find this HTML feature annoying.</p>
+ <p>Disable any refresh tags if the interval is greater than nine seconds (so that redirections done via
+ refresh tags are not destroyed). This is useful for dial-on-demand setups, or for those who find this HTML
+ feature annoying.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">unsolicited-popups</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">unsolicited-popups</i></span></dt>
<dd>
- <p>This filter attempts to prevent only <span class=
- "QUOTE">"unsolicited"</span> pop-up windows from opening, yet
- still allow pop-up windows that the user has explicitly chosen to
- open. It was added in version 3.0.1, as an improvement over
- earlier such filters.</p>
- <p>Technical note: The filter works by redefining the window.open
- JavaScript function to a dummy function, <tt class=
- "LITERAL">PrivoxyWindowOpen()</tt>, during the loading and
- rendering phase of each HTML page access, and restoring the
- function afterward.</p>
- <p>This is recommended only for browsers that cannot perform this
- function reliably themselves. And be aware that some sites
- require such windows in order to function normally. Use with
- caution.</p>
+ <p>This filter attempts to prevent only <span class="QUOTE">"unsolicited"</span> pop-up windows from
+ opening, yet still allow pop-up windows that the user has explicitly chosen to open. It was added in
+ version 3.0.1, as an improvement over earlier such filters.</p>
+ <p>Technical note: The filter works by redefining the window.open JavaScript function to a dummy function,
+ <tt class="LITERAL">PrivoxyWindowOpen()</tt>, during the loading and rendering phase of each HTML page
+ access, and restoring the function afterward.</p>
+ <p>This is recommended only for browsers that cannot perform this function reliably themselves. And be
+ aware that some sites require such windows in order to function normally. Use with caution.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">all-popups</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">all-popups</i></span></dt>
<dd>
- <p>Attempt to prevent <span class="emphasis"><i class=
- "EMPHASIS">all</i></span> pop-up windows from opening. Note this
- should be used with even more discretion than the above, since it
- is more likely to break some sites that require pop-ups for
- normal usage. Use with caution.</p>
+ <p>Attempt to prevent <span class="emphasis"><i class="EMPHASIS">all</i></span> pop-up windows from
+ opening. Note this should be used with even more discretion than the above, since it is more likely to
+ break some sites that require pop-ups for normal usage. Use with caution.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">img-reorder</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">img-reorder</i></span></dt>
<dd>
- <p>This is a helper filter that has no value if used alone. It
- makes the <tt class="LITERAL">banners-by-size</tt> and <tt class=
- "LITERAL">banners-by-link</tt> (see below) filters more effective
- and should be enabled together with them.</p>
+ <p>This is a helper filter that has no value if used alone. It makes the <tt class=
+ "LITERAL">banners-by-size</tt> and <tt class="LITERAL">banners-by-link</tt> (see below) filters more
+ effective and should be enabled together with them.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">banners-by-size</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">banners-by-size</i></span></dt>
<dd>
- <p>This filter removes image tags purely based on what size they
- are. Fortunately for us, many ads and banner images tend to
- conform to certain standardized sizes, which makes this filter
- quite effective for ad stripping purposes.</p>
- <p>Occasionally this filter will cause false positives on images
- that are not ads, but just happen to be of one of the standard
- banner sizes.</p>
- <p>Recommended only for those who require extreme ad blocking.
- The default block rules should catch 95+% of all ads <span class=
- "emphasis"><i class="EMPHASIS">without</i></span> this filter
- enabled.</p>
+ <p>This filter removes image tags purely based on what size they are. Fortunately for us, many ads and
+ banner images tend to conform to certain standardized sizes, which makes this filter quite effective for ad
+ stripping purposes.</p>
+ <p>Occasionally this filter will cause false positives on images that are not ads, but just happen to be of
+ one of the standard banner sizes.</p>
+ <p>Recommended only for those who require extreme ad blocking. The default block rules should catch 95+% of
+ all ads <span class="emphasis"><i class="EMPHASIS">without</i></span> this filter enabled.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">banners-by-link</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">banners-by-link</i></span></dt>
<dd>
- <p>This is an experimental filter that attempts to kill any
- banners if their URLs seem to point to known or suspected click
- trackers. It is currently not of much value and is not
- recommended for use by default.</p>
+ <p>This is an experimental filter that attempts to kill any banners if their URLs seem to point to known or
+ suspected click trackers. It is currently not of much value and is not recommended for use by default.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">webbugs</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">webbugs</i></span></dt>
<dd>
- <p>Webbugs are small, invisible images (technically 1X1 GIF
- images), that are used to track users across websites, and
- collect information on them. As an HTML page is loaded by the
- browser, an embedded image tag causes the browser to contact a
- third-party site, disclosing the tracking information through the
- requested URL and/or cookies for that third-party domain, without
- the user ever becoming aware of the interaction with the
- third-party site. HTML-ized spam also uses a similar technique to
- verify email addresses.</p>
- <p>This filter removes the HTML code that loads such <span class=
- "QUOTE">"webbugs"</span>.</p>
+ <p>Webbugs are small, invisible images (technically 1X1 GIF images), that are used to track users across
+ websites, and collect information on them. As an HTML page is loaded by the browser, an embedded image tag
+ causes the browser to contact a third-party site, disclosing the tracking information through the requested
+ URL and/or cookies for that third-party domain, without the user ever becoming aware of the interaction
+ with the third-party site. HTML-ized spam also uses a similar technique to verify email addresses.</p>
+ <p>This filter removes the HTML code that loads such <span class="QUOTE">"webbugs"</span>.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">tiny-textforms</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">tiny-textforms</i></span></dt>
<dd>
- <p>A rather special-purpose filter that can be used to enlarge
- textareas (those multi-line text boxes in web forms) and turn off
- hard word wrap in them. It was written for the sourceforge.net
- tracker system where such boxes are a nuisance, but it can be
- handy on other sites, too.</p>
+ <p>A rather special-purpose filter that can be used to enlarge textareas (those multi-line text boxes in
+ web forms) and turn off hard word wrap in them. It was written for the sourceforge.net tracker system where
+ such boxes are a nuisance, but it can be handy on other sites, too.</p>
<p>It is not recommended to use this filter as a default.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">jumping-windows</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">jumping-windows</i></span></dt>
<dd>
- <p>Many consider windows that move, or resize themselves to be
- abusive. This filter neutralizes the related JavaScript code.
- Note that some sites might not display or behave as intended when
- using this filter. Use with caution.</p>
+ <p>Many consider windows that move, or resize themselves to be abusive. This filter neutralizes the related
+ JavaScript code. Note that some sites might not display or behave as intended when using this filter. Use
+ with caution.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">frameset-borders</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">frameset-borders</i></span></dt>
<dd>
- <p>Some web designers seem to assume that everyone in the world
- will view their web sites using the same browser brand and
- version, screen resolution etc, because only that assumption
- could explain why they'd use static frame sizes, yet prevent
- their frames from being resized by the user, should they be too
- small to show their whole content.</p>
- <p>This filter removes the related HTML code. It should only be
- applied to sites which need it.</p>
+ <p>Some web designers seem to assume that everyone in the world will view their web sites using the same
+ browser brand and version, screen resolution etc, because only that assumption could explain why they'd use
+ static frame sizes, yet prevent their frames from being resized by the user, should they be too small to
+ show their whole content.</p>
+ <p>This filter removes the related HTML code. It should only be applied to sites which need it.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">demoronizer</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">demoronizer</i></span></dt>
<dd>
- <p>Many Microsoft products that generate HTML use non-standard
- extensions (read: violations) of the ISO 8859-1 aka Latin-1
- character set. This can cause those HTML documents to display
- with errors on standard-compliant platforms.</p>
- <p>This filter translates the MS-only characters into Latin-1
- equivalents. It is not necessary when using MS products, and will
- cause corruption of all documents that use 8-bit character sets
- other than Latin-1. It's mostly worthwhile for Europeans on
- non-MS platforms, if weird garbage characters sometimes appear on
- some pages, or user agents that don't correct for this on the
- fly.</p>
+ <p>Many Microsoft products that generate HTML use non-standard extensions (read: violations) of the ISO
+ 8859-1 aka Latin-1 character set. This can cause those HTML documents to display with errors on
+ standard-compliant platforms.</p>
+ <p>This filter translates the MS-only characters into Latin-1 equivalents. It is not necessary when using
+ MS products, and will cause corruption of all documents that use 8-bit character sets other than Latin-1.
+ It's mostly worthwhile for Europeans on non-MS platforms, if weird garbage characters sometimes appear on
+ some pages, or user agents that don't correct for this on the fly.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">shockwave-flash</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">shockwave-flash</i></span></dt>
<dd>
- <p>A filter for shockwave haters. As the name suggests, this
- filter strips code out of web pages that is used to embed
- shockwave flash objects.</p>
+ <p>A filter for shockwave haters. As the name suggests, this filter strips code out of web pages that is
+ used to embed shockwave flash objects.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">quicktime-kioskmode</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">quicktime-kioskmode</i></span></dt>
<dd>
- <p>Change HTML code that embeds Quicktime objects so that
- kioskmode, which prevents saving, is disabled.</p>
+ <p>Change HTML code that embeds Quicktime objects so that kioskmode, which prevents saving, is
+ disabled.</p>
</dd>
<dt><span class="emphasis"><i class="EMPHASIS">fun</i></span></dt>
<dd>
- <p>Text replacements for subversive browsing fun. Make fun of
- your favorite Monopolist or play buzzword bingo.</p>
+ <p>Text replacements for subversive browsing fun. Make fun of your favorite Monopolist or play buzzword
+ bingo.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">crude-parental</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">crude-parental</i></span></dt>
<dd>
- <p>A demonstration-only filter that shows how <span class=
- "APPLICATION">Privoxy</span> can be used to delete web content on
- a keyword basis.</p>
+ <p>A demonstration-only filter that shows how <span class="APPLICATION">Privoxy</span> can be used to
+ delete web content on a keyword basis.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">ie-exploits</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">ie-exploits</i></span></dt>
<dd>
- <p>An experimental collection of text replacements to disable
- malicious HTML and JavaScript code that exploits known security
- holes in Internet Explorer.</p>
- <p>Presently, it only protects against Nimda and a cross-site
- scripting bug, and would need active maintenance to provide more
- substantial protection.</p>
+ <p>An experimental collection of text replacements to disable malicious HTML and JavaScript code that
+ exploits known security holes in Internet Explorer.</p>
+ <p>Presently, it only protects against Nimda and a cross-site scripting bug, and would need active
+ maintenance to provide more substantial protection.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">site-specifics</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">site-specifics</i></span></dt>
<dd>
- <p>Some web sites have very specific problems, the cure for which
- doesn't apply anywhere else, or could even cause damage on other
- sites.</p>
- <p>This is a collection of such site-specific cures which should
- only be applied to the sites they were intended for, which is
- what the supplied <tt class="FILENAME">default.action</tt> file
- does. Users shouldn't need to change anything regarding this
- filter.</p>
+ <p>Some web sites have very specific problems, the cure for which doesn't apply anywhere else, or could
+ even cause damage on other sites.</p>
+ <p>This is a collection of such site-specific cures which should only be applied to the sites they were
+ intended for, which is what the supplied <tt class="FILENAME">default.action</tt> file does. Users
+ shouldn't need to change anything regarding this filter.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">google</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">google</i></span></dt>
<dd>
- <p>A CSS based block for Google text ads. Also removes a width
- limitation and the toolbar advertisement.</p>
+ <p>A CSS based block for Google text ads. Also removes a width limitation and the toolbar
+ advertisement.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">yahoo</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">yahoo</i></span></dt>
<dd>
- <p>Another CSS based block, this time for Yahoo text ads. And
- removes a width limitation as well.</p>
+ <p>Another CSS based block, this time for Yahoo text ads. And removes a width limitation as well.</p>
</dd>
<dt><span class="emphasis"><i class="EMPHASIS">msn</i></span></dt>
<dd>
- <p>Another CSS based block, this time for MSN text ads. And
- removes tracking URLs, as well as a width limitation.</p>
+ <p>Another CSS based block, this time for MSN text ads. And removes tracking URLs, as well as a width
+ limitation.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">blogspot</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">blogspot</i></span></dt>
<dd>
- <p>Cleans up some Blogspot blogs. Read the fine print before
- using this one!</p>
- <p>This filter also intentionally removes some navigation stuff
- and sets the page width to 100%. As a result, some rounded
- <span class="QUOTE">"corners"</span> would appear to early or not
- at all and as fixing this would require a browser that
- understands background-size (CSS3), they are removed instead.</p>
+ <p>Cleans up some Blogspot blogs. Read the fine print before using this one!</p>
+ <p>This filter also intentionally removes some navigation stuff and sets the page width to 100%. As a
+ result, some rounded <span class="QUOTE">"corners"</span> would appear to early or not at all and as fixing
+ this would require a browser that understands background-size (CSS3), they are removed instead.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">xml-to-html</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">xml-to-html</i></span></dt>
<dd>
- <p>Server-header filter to change the Content-Type from xml to
- html.</p>
+ <p>Server-header filter to change the Content-Type from xml to html.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">html-to-xml</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">html-to-xml</i></span></dt>
<dd>
- <p>Server-header filter to change the Content-Type from html to
- xml.</p>
+ <p>Server-header filter to change the Content-Type from html to xml.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">no-ping</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">no-ping</i></span></dt>
<dd>
- <p>Removes the non-standard <tt class="LITERAL">ping</tt>
- attribute from anchor and area HTML tags.</p>
+ <p>Removes the non-standard <tt class="LITERAL">ping</tt> attribute from anchor and area HTML tags.</p>
</dd>
- <dt><span class="emphasis"><i class=
- "EMPHASIS">hide-tor-exit-notation</i></span></dt>
+ <dt><span class="emphasis"><i class="EMPHASIS">hide-tor-exit-notation</i></span></dt>
<dd>
- <p>Client-header filter to remove the <b class="COMMAND">Tor</b>
- exit node notation found in Host and Referer headers.</p>
- <p>If <span class="APPLICATION">Privoxy</span> and <b class=
- "COMMAND">Tor</b> are chained and <span class=
- "APPLICATION">Privoxy</span> is configured to use socks4a, one
- can use <span class=
- "QUOTE">"http://www.example.org.foobar.exit/"</span> to access
- the host <span class="QUOTE">"www.example.org"</span> through the
- <b class="COMMAND">Tor</b> exit node <span class=
+ <p>Client-header filter to remove the <b class="COMMAND">Tor</b> exit node notation found in Host and
+ Referer headers.</p>
+ <p>If <span class="APPLICATION">Privoxy</span> and <b class="COMMAND">Tor</b> are chained and <span class=
+ "APPLICATION">Privoxy</span> is configured to use socks4a, one can use <span class=
+ "QUOTE">"http://www.example.org.foobar.exit/"</span> to access the host <span class=
+ "QUOTE">"www.example.org"</span> through the <b class="COMMAND">Tor</b> exit node <span class=
"QUOTE">"foobar"</span>.</p>
- <p>As the HTTP client isn't aware of this notation, it treats the
- whole string <span class=
- "QUOTE">"www.example.org.foobar.exit"</span> as host and uses it
- for the <span class="QUOTE">"Host"</span> and <span class=
- "QUOTE">"Referer"</span> headers. From the server's point of view
- the resulting headers are invalid and can cause problems.</p>
- <p>An invalid <span class="QUOTE">"Referer"</span> header can
- trigger <span class="QUOTE">"hot-linking"</span> protections, an
- invalid <span class="QUOTE">"Host"</span> header will make it
- impossible for the server to find the right vhost (several
- domains hosted on the same IP address).</p>
- <p>This client-header filter removes the <span class=
- "QUOTE">"foo.exit"</span> part in those headers to prevent the
- mentioned problems. Note that it only modifies the HTTP headers,
- it doesn't make it impossible for the server to detect your
- <b class="COMMAND">Tor</b> exit node based on the IP address the
- request is coming from.</p>
+ <p>As the HTTP client isn't aware of this notation, it treats the whole string <span class=
+ "QUOTE">"www.example.org.foobar.exit"</span> as host and uses it for the <span class="QUOTE">"Host"</span>
+ and <span class="QUOTE">"Referer"</span> headers. From the server's point of view the resulting headers are
+ invalid and can cause problems.</p>
+ <p>An invalid <span class="QUOTE">"Referer"</span> header can trigger <span class=
+ "QUOTE">"hot-linking"</span> protections, an invalid <span class="QUOTE">"Host"</span> header will make it
+ impossible for the server to find the right vhost (several domains hosted on the same IP address).</p>
+ <p>This client-header filter removes the <span class="QUOTE">"foo.exit"</span> part in those headers to
+ prevent the mentioned problems. Note that it only modifies the HTTP headers, it doesn't make it impossible
+ for the server to detect your <b class="COMMAND">Tor</b> exit node based on the IP address the request is
+ coming from.</p>
</dd>
</dl>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="EXTERNAL-FILTER-SYNTAX" id=
- "EXTERNAL-FILTER-SYNTAX">9.3. External filter syntax</a></h2>
- <p>External filters are scripts or programs that can modify the content
- in case common <tt class="LITERAL"><a href=
- "actions-file.html#FILTER">filters</a></tt> aren't powerful enough.</p>
- <p>External filters can be written in any language the platform
- <span class="APPLICATION">Privoxy</span> runs on supports.</p>
+ <h2 class="SECT2"><a name="EXTERNAL-FILTER-SYNTAX" id="EXTERNAL-FILTER-SYNTAX">9.3. External filter
+ syntax</a></h2>
+ <p>External filters are scripts or programs that can modify the content in case common <tt class=
+ "LITERAL"><a href="actions-file.html#FILTER">filters</a></tt> aren't powerful enough.</p>
+ <p>External filters can be written in any language the platform <span class="APPLICATION">Privoxy</span> runs on
+ supports.</p>
<p>They are controlled with the <tt class="LITERAL"><a href=
- "actions-file.html#EXTERNAL-FILTER">external-filter</a></tt> action and
- have to be defined in the <tt class="LITERAL"><a href=
- "config.html#FILTERFILE">filterfile</a></tt> first.</p>
- <p>The header looks like any other filter, but instead of pcrs jobs,
- external filters contain a single job which can be a program or a shell
- script (which may call other scripts or programs).</p>
- <p>External filters read the content from STDIN and write the rewritten
- content to STDOUT. The environment variables PRIVOXY_URL, PRIVOXY_PATH,
- PRIVOXY_HOST, PRIVOXY_ORIGIN, PRIVOXY_LISTEN_ADDRESS can be used to get
- some details about the client request.</p>
- <p><span class="APPLICATION">Privoxy</span> will temporary store the
- content to filter in the <tt class="LITERAL"><a href=
- "config.html#TEMPORARY-DIRECTORY">temporary-directory</a></tt>.</p>
+ "actions-file.html#EXTERNAL-FILTER">external-filter</a></tt> action and have to be defined in the <tt class=
+ "LITERAL"><a href="config.html#FILTERFILE">filterfile</a></tt> first.</p>
+ <p>The header looks like any other filter, but instead of pcrs jobs, external filters contain a single job which
+ can be a program or a shell script (which may call other scripts or programs).</p>
+ <p>External filters read the content from STDIN and write the rewritten content to STDOUT. The environment
+ variables PRIVOXY_URL, PRIVOXY_PATH, PRIVOXY_HOST, PRIVOXY_ORIGIN, PRIVOXY_LISTEN_ADDRESS can be used to get some
+ details about the client request.</p>
+ <p><span class="APPLICATION">Privoxy</span> will temporary store the content to filter in the <tt class=
+ "LITERAL"><a href="config.html#TEMPORARY-DIRECTORY">temporary-directory</a></tt>.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- EXTERNAL-FILTER: cat Pointless example filter that doesn't actually modify the content
+ <pre class="SCREEN">EXTERNAL-FILTER: cat Pointless example filter that doesn't actually modify the content
/bin/cat
# Incorrect reimplementation of the filter above in POSIX shell.
</tr>
<tr>
<td align="left">
- <p>Currently external filters are executed with <span class=
- "APPLICATION">Privoxy</span>'s privileges! Only use external
- filters you understand and trust.</p>
+ <p>Currently external filters are executed with <span class="APPLICATION">Privoxy</span>'s privileges!
+ Only use external filters you understand and trust.</p>
</td>
</tr>
</table>
</div>
- <p>External filters are experimental and the syntax may change in the
- future.</p>
+ <p>External filters are experimental and the syntax may change in the future.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="actions-file.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="templates.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="actions-file.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="templates.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Actions Files</td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top">Privoxy's Template
- Files</td>
+ <td width="33%" align="right" valign="top">Privoxy's Template Files</td>
</tr>
</table>
</div>
<html>
<head>
<title>Privoxy 3.0.27 User Manual</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="NEXT" title="Introduction" href="introduction.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="ARTICLE" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="ARTICLE">
<div class="TITLEPAGE">
- <h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy 3.0.27 User
- Manual</a></h1>
- <p class="PUBDATE"><sub><a href="copyright.html">Copyright</a> �
- 2001-2017 by <a href="https://www.privoxy.org/" target="_top">Privoxy
- Developers</a></sub><br></p>
- <p class="PUBDATE">$Id: user-manual.sgml,v 2.222 2017/05/20 09:28:11
- fabiankeil Exp $<br></p>
+ <h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy 3.0.27 User Manual</a></h1>
+ <p class="PUBDATE"><sub><a href="copyright.html">Copyright</a> � 2001-2017 by <a href="https://www.privoxy.org/"
+ target="_top">Privoxy Developers</a></sub><br></p>
+ <p class="PUBDATE">$Id: user-manual.sgml,v 2.221 2017/05/20 09:27:54 fabiankeil Exp $<br></p>
<div>
<div class="ABSTRACT">
<a name="AEN9" id="AEN9"></a>
- <p>The <i class="CITETITLE">Privoxy User Manual</i> gives users
- information on how to install, configure and use <a href=
- "https://www.privoxy.org/" target="_top">Privoxy</a>.</p>
- <p>Privoxy is a non-caching web proxy with advanced filtering
- capabilities for enhancing privacy, modifying web page data and
- HTTP headers, controlling access, and removing ads and other
- obnoxious Internet junk. Privoxy has a flexible configuration and
- can be customized to suit individual needs and tastes. It has
- application for both stand-alone systems and multi-user
- networks.</p>
+ <p>The <i class="CITETITLE">Privoxy User Manual</i> gives users information on how to install, configure and
+ use <a href="https://www.privoxy.org/" target="_top">Privoxy</a>.</p>
+ <p>Privoxy is a non-caching web proxy with advanced filtering capabilities for enhancing privacy, modifying
+ web page data and HTTP headers, controlling access, and removing ads and other obnoxious Internet junk.
+ Privoxy has a flexible configuration and can be customized to suit individual needs and tastes. It has
+ application for both stand-alone systems and multi-user networks.</p>
<p>Privoxy is Free Software and licensed under the GNU GPLv2.</p>
- <p>Privoxy is an associated project of Software in the Public
- Interest (SPI).</p>
+ <p>Privoxy is an associated project of Software in the Public Interest (SPI).</p>
<p>Helping hands and donations are welcome:</p>
<ul>
<li>
- <p><a href=
- "https://www.privoxy.org/faq/general.html#PARTICIPATE" target=
+ <p><a href="https://www.privoxy.org/faq/general.html#PARTICIPATE" target=
"_top">https://www.privoxy.org/faq/general.html#PARTICIPATE</a></p>
</li>
<li>
- <p><a href="https://www.privoxy.org/faq/general.html#DONATE"
- target=
+ <p><a href="https://www.privoxy.org/faq/general.html#DONATE" target=
"_top">https://www.privoxy.org/faq/general.html#DONATE</a></p>
</li>
</ul>
- <p>You can find the latest version of the <i class=
- "CITETITLE">Privoxy User Manual</i> at <a href=
- "https://www.privoxy.org/user-manual/" target=
- "_top">https://www.privoxy.org/user-manual/</a>. Please see the
- <a href="contact.html">Contact section</a> on how to contact the
- developers.</p>
+ <p>You can find the latest version of the <i class="CITETITLE">Privoxy User Manual</i> at <a href=
+ "https://www.privoxy.org/user-manual/" target="_top">https://www.privoxy.org/user-manual/</a>. Please see the
+ <a href="contact.html">Contact section</a> on how to contact the developers.</p>
</div>
</div>
<hr>
<dt>2. <a href="installation.html">Installation</a></dt>
<dd>
<dl>
- <dt>2.1. <a href="installation.html#INSTALLATION-PACKAGES">Binary
- Packages</a></dt>
+ <dt>2.1. <a href="installation.html#INSTALLATION-PACKAGES">Binary Packages</a></dt>
<dd>
<dl>
- <dt>2.1.1. <a href=
- "installation.html#INSTALLATION-DEB">Debian and
- Ubuntu</a></dt>
- <dt>2.1.2. <a href=
- "installation.html#INSTALLATION-PACK-WIN">Windows</a></dt>
- <dt>2.1.3. <a href=
- "installation.html#INSTALLATION-OS2">OS/2</a></dt>
- <dt>2.1.4. <a href="installation.html#INSTALLATION-MAC">Mac
- OS X</a></dt>
- <dt>2.1.5. <a href=
- "installation.html#OS-X-INSTALL-FROM-PACKAGE">Installation
- from ready-built package</a></dt>
- <dt>2.1.6. <a href=
- "installation.html#OS-X-INSTALL-FROM-SOURCE">Installation
- from source</a></dt>
- <dt>2.1.7. <a href=
- "installation.html#INSTALLATION-FREEBSD">FreeBSD</a></dt>
+ <dt>2.1.1. <a href="installation.html#INSTALLATION-DEB">Debian and Ubuntu</a></dt>
+ <dt>2.1.2. <a href="installation.html#INSTALLATION-PACK-WIN">Windows</a></dt>
+ <dt>2.1.3. <a href="installation.html#INSTALLATION-OS2">OS/2</a></dt>
+ <dt>2.1.4. <a href="installation.html#INSTALLATION-MAC">Mac OS X</a></dt>
+ <dt>2.1.5. <a href="installation.html#OS-X-INSTALL-FROM-PACKAGE">Installation from ready-built
+ package</a></dt>
+ <dt>2.1.6. <a href="installation.html#OS-X-INSTALL-FROM-SOURCE">Installation from source</a></dt>
+ <dt>2.1.7. <a href="installation.html#INSTALLATION-FREEBSD">FreeBSD</a></dt>
</dl>
</dd>
- <dt>2.2. <a href="installation.html#INSTALLATION-SOURCE">Building
- from Source</a></dt>
- <dt>2.3. <a href=
- "installation.html#INSTALLATION-KEEPUPDATED">Keeping your
- Installation Up-to-Date</a></dt>
+ <dt>2.2. <a href="installation.html#INSTALLATION-SOURCE">Building from Source</a></dt>
+ <dt>2.3. <a href="installation.html#INSTALLATION-KEEPUPDATED">Keeping your Installation Up-to-Date</a></dt>
</dl>
</dd>
<dt>3. <a href="whatsnew.html">What's New in this Release</a></dt>
<dd>
<dl>
- <dt>3.1. <a href="whatsnew.html#UPGRADERSNOTE">Note to
- Upgraders</a></dt>
+ <dt>3.1. <a href="whatsnew.html#UPGRADERSNOTE">Note to Upgraders</a></dt>
</dl>
</dd>
<dt>4. <a href="quickstart.html">Quickstart to Using Privoxy</a></dt>
<dd>
<dl>
- <dt>4.1. <a href=
- "quickstart.html#QUICKSTART-AD-BLOCKING">Quickstart to Ad
- Blocking</a></dt>
+ <dt>4.1. <a href="quickstart.html#QUICKSTART-AD-BLOCKING">Quickstart to Ad Blocking</a></dt>
</dl>
</dd>
<dt>5. <a href="startup.html">Starting Privoxy</a></dt>
<dd>
<dl>
<dt>5.1. <a href="startup.html#START-DEBIAN">Debian</a></dt>
- <dt>5.2. <a href="startup.html#START-FREEBSD">FreeBSD and
- ElectroBSD</a></dt>
+ <dt>5.2. <a href="startup.html#START-FREEBSD">FreeBSD and ElectroBSD</a></dt>
<dt>5.3. <a href="startup.html#START-WINDOWS">Windows</a></dt>
- <dt>5.4. <a href="startup.html#START-UNICES">Generic instructions
- for Unix derivates (Solaris, NetBSD, HP-UX etc.)</a></dt>
+ <dt>5.4. <a href="startup.html#START-UNICES">Generic instructions for Unix derivates (Solaris, NetBSD,
+ HP-UX etc.)</a></dt>
<dt>5.5. <a href="startup.html#START-OS2">OS/2</a></dt>
<dt>5.6. <a href="startup.html#START-MACOSX">Mac OS X</a></dt>
- <dt>5.7. <a href="startup.html#CMDOPTIONS">Command Line
- Options</a></dt>
+ <dt>5.7. <a href="startup.html#CMDOPTIONS">Command Line Options</a></dt>
</dl>
</dd>
<dt>6. <a href="configuration.html">Privoxy Configuration</a></dt>
<dd>
<dl>
- <dt>6.1. <a href=
- "configuration.html#CONTROL-WITH-WEBBROWSER">Controlling Privoxy
- with Your Web Browser</a></dt>
- <dt>6.2. <a href="configuration.html#CONFOVERVIEW">Configuration
- Files Overview</a></dt>
+ <dt>6.1. <a href="configuration.html#CONTROL-WITH-WEBBROWSER">Controlling Privoxy with Your Web
+ Browser</a></dt>
+ <dt>6.2. <a href="configuration.html#CONFOVERVIEW">Configuration Files Overview</a></dt>
</dl>
</dd>
<dt>7. <a href="config.html">The Main Configuration File</a></dt>
<dd>
<dl>
- <dt>7.1. <a href="config.html#LOCAL-SET-UP">Local Set-up
- Documentation</a></dt>
+ <dt>7.1. <a href="config.html#LOCAL-SET-UP">Local Set-up Documentation</a></dt>
<dd>
<dl>
- <dt>7.1.1. <a href=
- "config.html#USER-MANUAL">user-manual</a></dt>
- <dt>7.1.2. <a href=
- "config.html#TRUST-INFO-URL">trust-info-url</a></dt>
- <dt>7.1.3. <a href=
- "config.html#ADMIN-ADDRESS">admin-address</a></dt>
- <dt>7.1.4. <a href=
- "config.html#PROXY-INFO-URL">proxy-info-url</a></dt>
+ <dt>7.1.1. <a href="config.html#USER-MANUAL">user-manual</a></dt>
+ <dt>7.1.2. <a href="config.html#TRUST-INFO-URL">trust-info-url</a></dt>
+ <dt>7.1.3. <a href="config.html#ADMIN-ADDRESS">admin-address</a></dt>
+ <dt>7.1.4. <a href="config.html#PROXY-INFO-URL">proxy-info-url</a></dt>
</dl>
</dd>
- <dt>7.2. <a href="config.html#CONF-LOG-LOC">Configuration and Log
- File Locations</a></dt>
+ <dt>7.2. <a href="config.html#CONF-LOG-LOC">Configuration and Log File Locations</a></dt>
<dd>
<dl>
<dt>7.2.1. <a href="config.html#CONFDIR">confdir</a></dt>
<dt>7.2.2. <a href="config.html#TEMPLDIR">templdir</a></dt>
- <dt>7.2.3. <a href=
- "config.html#TEMPORARY-DIRECTORY">temporary-directory</a></dt>
+ <dt>7.2.3. <a href="config.html#TEMPORARY-DIRECTORY">temporary-directory</a></dt>
<dt>7.2.4. <a href="config.html#LOGDIR">logdir</a></dt>
- <dt>7.2.5. <a href=
- "config.html#ACTIONSFILE">actionsfile</a></dt>
- <dt>7.2.6. <a href=
- "config.html#FILTERFILE">filterfile</a></dt>
+ <dt>7.2.5. <a href="config.html#ACTIONSFILE">actionsfile</a></dt>
+ <dt>7.2.6. <a href="config.html#FILTERFILE">filterfile</a></dt>
<dt>7.2.7. <a href="config.html#LOGFILE">logfile</a></dt>
<dt>7.2.8. <a href="config.html#TRUSTFILE">trustfile</a></dt>
</dl>
<dd>
<dl>
<dt>7.3.1. <a href="config.html#DEBUG">debug</a></dt>
- <dt>7.3.2. <a href=
- "config.html#SINGLE-THREADED">single-threaded</a></dt>
+ <dt>7.3.2. <a href="config.html#SINGLE-THREADED">single-threaded</a></dt>
<dt>7.3.3. <a href="config.html#HOSTNAME">hostname</a></dt>
</dl>
</dd>
- <dt>7.4. <a href="config.html#ACCESS-CONTROL">Access Control and
- Security</a></dt>
+ <dt>7.4. <a href="config.html#ACCESS-CONTROL">Access Control and Security</a></dt>
<dd>
<dl>
- <dt>7.4.1. <a href=
- "config.html#LISTEN-ADDRESS">listen-address</a></dt>
+ <dt>7.4.1. <a href="config.html#LISTEN-ADDRESS">listen-address</a></dt>
<dt>7.4.2. <a href="config.html#TOGGLE">toggle</a></dt>
- <dt>7.4.3. <a href=
- "config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle</a></dt>
- <dt>7.4.4. <a href=
- "config.html#ENABLE-REMOTE-HTTP-TOGGLE">enable-remote-http-toggle</a></dt>
- <dt>7.4.5. <a href=
- "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a></dt>
- <dt>7.4.6. <a href=
- "config.html#ENFORCE-BLOCKS">enforce-blocks</a></dt>
- <dt>7.4.7. <a href="config.html#ACLS">ACLs: permit-access and
- deny-access</a></dt>
- <dt>7.4.8. <a href=
- "config.html#BUFFER-LIMIT">buffer-limit</a></dt>
+ <dt>7.4.3. <a href="config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle</a></dt>
+ <dt>7.4.4. <a href="config.html#ENABLE-REMOTE-HTTP-TOGGLE">enable-remote-http-toggle</a></dt>
+ <dt>7.4.5. <a href="config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a></dt>
+ <dt>7.4.6. <a href="config.html#ENFORCE-BLOCKS">enforce-blocks</a></dt>
+ <dt>7.4.7. <a href="config.html#ACLS">ACLs: permit-access and deny-access</a></dt>
+ <dt>7.4.8. <a href="config.html#BUFFER-LIMIT">buffer-limit</a></dt>
<dt>7.4.9. <a href=
"config.html#ENABLE-PROXY-AUTHENTICATION-FORWARDING">enable-proxy-authentication-forwarding</a></dt>
- <dt>7.4.10. <a href=
- "config.html#TRUSTED-CGI-REFERER">trusted-cgi-referer</a></dt>
+ <dt>7.4.10. <a href="config.html#TRUSTED-CGI-REFERER">trusted-cgi-referer</a></dt>
</dl>
</dd>
<dt>7.5. <a href="config.html#FORWARDING">Forwarding</a></dt>
<dd>
<dl>
<dt>7.5.1. <a href="config.html#FORWARD">forward</a></dt>
- <dt>7.5.2. <a href="config.html#SOCKS">forward-socks4,
- forward-socks4a, forward-socks5 and forward-socks5t</a></dt>
- <dt>7.5.3. <a href=
- "config.html#ADVANCED-FORWARDING-EXAMPLES">Advanced
- Forwarding Examples</a></dt>
- <dt>7.5.4. <a href=
- "config.html#FORWARDED-CONNECT-RETRIES">forwarded-connect-retries</a></dt>
+ <dt>7.5.2. <a href="config.html#SOCKS">forward-socks4, forward-socks4a, forward-socks5 and
+ forward-socks5t</a></dt>
+ <dt>7.5.3. <a href="config.html#ADVANCED-FORWARDING-EXAMPLES">Advanced Forwarding Examples</a></dt>
+ <dt>7.5.4. <a href="config.html#FORWARDED-CONNECT-RETRIES">forwarded-connect-retries</a></dt>
</dl>
</dd>
<dt>7.6. <a href="config.html#MISC">Miscellaneous</a></dt>
<dd>
<dl>
- <dt>7.6.1. <a href=
- "config.html#ACCEPT-INTERCEPTED-REQUESTS">accept-intercepted-requests</a></dt>
- <dt>7.6.2. <a href=
- "config.html#ALLOW-CGI-REQUEST-CRUNCHING">allow-cgi-request-crunching</a></dt>
- <dt>7.6.3. <a href=
- "config.html#SPLIT-LARGE-FORMS">split-large-forms</a></dt>
- <dt>7.6.4. <a href=
- "config.html#KEEP-ALIVE-TIMEOUT">keep-alive-timeout</a></dt>
- <dt>7.6.5. <a href=
- "config.html#TOLERATE-PIPELINING">tolerate-pipelining</a></dt>
- <dt>7.6.6. <a href=
- "config.html#DEFAULT-SERVER-TIMEOUT">default-server-timeout</a></dt>
- <dt>7.6.7. <a href=
- "config.html#CONNECTION-SHARING">connection-sharing</a></dt>
- <dt>7.6.8. <a href=
- "config.html#SOCKET-TIMEOUT">socket-timeout</a></dt>
- <dt>7.6.9. <a href=
- "config.html#MAX-CLIENT-CONNECTIONS">max-client-connections</a></dt>
- <dt>7.6.10. <a href=
- "config.html#LISTEN-BACKLOG">listen-backlog</a></dt>
- <dt>7.6.11. <a href=
- "config.html#ENABLE-ACCEPT-FILTER">enable-accept-filter</a></dt>
+ <dt>7.6.1. <a href="config.html#ACCEPT-INTERCEPTED-REQUESTS">accept-intercepted-requests</a></dt>
+ <dt>7.6.2. <a href="config.html#ALLOW-CGI-REQUEST-CRUNCHING">allow-cgi-request-crunching</a></dt>
+ <dt>7.6.3. <a href="config.html#SPLIT-LARGE-FORMS">split-large-forms</a></dt>
+ <dt>7.6.4. <a href="config.html#KEEP-ALIVE-TIMEOUT">keep-alive-timeout</a></dt>
+ <dt>7.6.5. <a href="config.html#TOLERATE-PIPELINING">tolerate-pipelining</a></dt>
+ <dt>7.6.6. <a href="config.html#DEFAULT-SERVER-TIMEOUT">default-server-timeout</a></dt>
+ <dt>7.6.7. <a href="config.html#CONNECTION-SHARING">connection-sharing</a></dt>
+ <dt>7.6.8. <a href="config.html#SOCKET-TIMEOUT">socket-timeout</a></dt>
+ <dt>7.6.9. <a href="config.html#MAX-CLIENT-CONNECTIONS">max-client-connections</a></dt>
+ <dt>7.6.10. <a href="config.html#LISTEN-BACKLOG">listen-backlog</a></dt>
+ <dt>7.6.11. <a href="config.html#ENABLE-ACCEPT-FILTER">enable-accept-filter</a></dt>
<dt>7.6.12. <a href=
"config.html#HANDLE-AS-EMPTY-DOC-RETURNS-OK">handle-as-empty-doc-returns-ok</a></dt>
- <dt>7.6.13. <a href=
- "config.html#ENABLE-COMPRESSION">enable-compression</a></dt>
- <dt>7.6.14. <a href=
- "config.html#COMPRESSION-LEVEL">compression-level</a></dt>
- <dt>7.6.15. <a href=
- "config.html#CLIENT-HEADER-ORDER">client-header-order</a></dt>
- <dt>7.6.16. <a href=
- "config.html#CLIENT-SPECIFIC-TAG">client-specific-tag</a></dt>
- <dt>7.6.17. <a href=
- "config.html#CLIENT-TAG-LIFETIME">client-tag-lifetime</a></dt>
- <dt>7.6.18. <a href=
- "config.html#TRUST-X-FORWARDED-FOR">trust-x-forwarded-for</a></dt>
- <dt>7.6.19. <a href=
- "config.html#RECEIVE-BUFFER-SIZE">receive-buffer-size</a></dt>
+ <dt>7.6.13. <a href="config.html#ENABLE-COMPRESSION">enable-compression</a></dt>
+ <dt>7.6.14. <a href="config.html#COMPRESSION-LEVEL">compression-level</a></dt>
+ <dt>7.6.15. <a href="config.html#CLIENT-HEADER-ORDER">client-header-order</a></dt>
+ <dt>7.6.16. <a href="config.html#CLIENT-SPECIFIC-TAG">client-specific-tag</a></dt>
+ <dt>7.6.17. <a href="config.html#CLIENT-TAG-LIFETIME">client-tag-lifetime</a></dt>
+ <dt>7.6.18. <a href="config.html#TRUST-X-FORWARDED-FOR">trust-x-forwarded-for</a></dt>
+ <dt>7.6.19. <a href="config.html#RECEIVE-BUFFER-SIZE">receive-buffer-size</a></dt>
</dl>
</dd>
- <dt>7.7. <a href="config.html#WINDOWS-GUI">Windows GUI
- Options</a></dt>
+ <dt>7.7. <a href="config.html#WINDOWS-GUI">Windows GUI Options</a></dt>
</dl>
</dd>
<dt>8. <a href="actions-file.html">Actions Files</a></dt>
<dd>
<dl>
- <dt>8.1. <a href="actions-file.html#RIGHT-MIX">Finding the Right
- Mix</a></dt>
- <dt>8.2. <a href="actions-file.html#HOW-TO-EDIT">How to
- Edit</a></dt>
- <dt>8.3. <a href="actions-file.html#ACTIONS-APPLY">How Actions
- are Applied to Requests</a></dt>
- <dt>8.4. <a href=
- "actions-file.html#AF-PATTERNS">Patterns</a></dt>
+ <dt>8.1. <a href="actions-file.html#RIGHT-MIX">Finding the Right Mix</a></dt>
+ <dt>8.2. <a href="actions-file.html#HOW-TO-EDIT">How to Edit</a></dt>
+ <dt>8.3. <a href="actions-file.html#ACTIONS-APPLY">How Actions are Applied to Requests</a></dt>
+ <dt>8.4. <a href="actions-file.html#AF-PATTERNS">Patterns</a></dt>
<dd>
<dl>
- <dt>8.4.1. <a href="actions-file.html#HOST-PATTERN">The Host
- Pattern</a></dt>
- <dt>8.4.2. <a href="actions-file.html#PATH-PATTERN">The Path
- Pattern</a></dt>
- <dt>8.4.3. <a href="actions-file.html#TAG-PATTERN">The
- Request Tag Pattern</a></dt>
- <dt>8.4.4. <a href=
- "actions-file.html#NEGATIVE-TAG-PATTERNS">The Negative
- Request Tag Patterns</a></dt>
- <dt>8.4.5. <a href="actions-file.html#CLIENT-TAG-PATTERN">The
- Client Tag Pattern</a></dt>
+ <dt>8.4.1. <a href="actions-file.html#HOST-PATTERN">The Host Pattern</a></dt>
+ <dt>8.4.2. <a href="actions-file.html#PATH-PATTERN">The Path Pattern</a></dt>
+ <dt>8.4.3. <a href="actions-file.html#TAG-PATTERN">The Request Tag Pattern</a></dt>
+ <dt>8.4.4. <a href="actions-file.html#NEGATIVE-TAG-PATTERNS">The Negative Request Tag Patterns</a></dt>
+ <dt>8.4.5. <a href="actions-file.html#CLIENT-TAG-PATTERN">The Client Tag Pattern</a></dt>
</dl>
</dd>
<dt>8.5. <a href="actions-file.html#ACTIONS">Actions</a></dt>
<dd>
<dl>
- <dt>8.5.1. <a href=
- "actions-file.html#ADD-HEADER">add-header</a></dt>
+ <dt>8.5.1. <a href="actions-file.html#ADD-HEADER">add-header</a></dt>
<dt>8.5.2. <a href="actions-file.html#BLOCK">block</a></dt>
- <dt>8.5.3. <a href=
- "actions-file.html#CHANGE-X-FORWARDED-FOR">change-x-forwarded-for</a></dt>
- <dt>8.5.4. <a href=
- "actions-file.html#CLIENT-HEADER-FILTER">client-header-filter</a></dt>
- <dt>8.5.5. <a href=
- "actions-file.html#CLIENT-HEADER-TAGGER">client-header-tagger</a></dt>
- <dt>8.5.6. <a href=
- "actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite</a></dt>
- <dt>8.5.7. <a href=
- "actions-file.html#CRUNCH-CLIENT-HEADER">crunch-client-header</a></dt>
- <dt>8.5.8. <a href=
- "actions-file.html#CRUNCH-IF-NONE-MATCH">crunch-if-none-match</a></dt>
- <dt>8.5.9. <a href=
- "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></dt>
- <dt>8.5.10. <a href=
- "actions-file.html#CRUNCH-SERVER-HEADER">crunch-server-header</a></dt>
- <dt>8.5.11. <a href=
- "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></dt>
- <dt>8.5.12. <a href=
- "actions-file.html#DEANIMATE-GIFS">deanimate-gifs</a></dt>
- <dt>8.5.13. <a href=
- "actions-file.html#DOWNGRADE-HTTP-VERSION">downgrade-http-version</a></dt>
- <dt>8.5.14. <a href=
- "actions-file.html#EXTERNAL-FILTER">external-filter</a></dt>
- <dt>8.5.15. <a href=
- "actions-file.html#FAST-REDIRECTS">fast-redirects</a></dt>
- <dt>8.5.16. <a href=
- "actions-file.html#FILTER">filter</a></dt>
- <dt>8.5.17. <a href=
- "actions-file.html#FORCE-TEXT-MODE">force-text-mode</a></dt>
- <dt>8.5.18. <a href=
- "actions-file.html#FORWARD-OVERRIDE">forward-override</a></dt>
- <dt>8.5.19. <a href=
- "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></dt>
- <dt>8.5.20. <a href=
- "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></dt>
- <dt>8.5.21. <a href=
- "actions-file.html#HIDE-ACCEPT-LANGUAGE">hide-accept-language</a></dt>
- <dt>8.5.22. <a href=
- "actions-file.html#HIDE-CONTENT-DISPOSITION">hide-content-disposition</a></dt>
- <dt>8.5.23. <a href=
- "actions-file.html#HIDE-IF-MODIFIED-SINCE">hide-if-modified-since</a></dt>
- <dt>8.5.24. <a href=
- "actions-file.html#HIDE-FROM-HEADER">hide-from-header</a></dt>
- <dt>8.5.25. <a href=
- "actions-file.html#HIDE-REFERRER">hide-referrer</a></dt>
- <dt>8.5.26. <a href=
- "actions-file.html#HIDE-USER-AGENT">hide-user-agent</a></dt>
- <dt>8.5.27. <a href=
- "actions-file.html#LIMIT-CONNECT">limit-connect</a></dt>
- <dt>8.5.28. <a href=
- "actions-file.html#LIMIT-COOKIE-LIFETIME">limit-cookie-lifetime</a></dt>
- <dt>8.5.29. <a href=
- "actions-file.html#PREVENT-COMPRESSION">prevent-compression</a></dt>
- <dt>8.5.30. <a href=
- "actions-file.html#OVERWRITE-LAST-MODIFIED">overwrite-last-modified</a></dt>
- <dt>8.5.31. <a href=
- "actions-file.html#REDIRECT">redirect</a></dt>
- <dt>8.5.32. <a href=
- "actions-file.html#SERVER-HEADER-FILTER">server-header-filter</a></dt>
- <dt>8.5.33. <a href=
- "actions-file.html#SERVER-HEADER-TAGGER">server-header-tagger</a></dt>
- <dt>8.5.34. <a href=
- "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></dt>
- <dt>8.5.35. <a href=
- "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></dt>
- <dt>8.5.36. <a href=
- "actions-file.html#SUMMARY">Summary</a></dt>
+ <dt>8.5.3. <a href="actions-file.html#CHANGE-X-FORWARDED-FOR">change-x-forwarded-for</a></dt>
+ <dt>8.5.4. <a href="actions-file.html#CLIENT-HEADER-FILTER">client-header-filter</a></dt>
+ <dt>8.5.5. <a href="actions-file.html#CLIENT-HEADER-TAGGER">client-header-tagger</a></dt>
+ <dt>8.5.6. <a href="actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite</a></dt>
+ <dt>8.5.7. <a href="actions-file.html#CRUNCH-CLIENT-HEADER">crunch-client-header</a></dt>
+ <dt>8.5.8. <a href="actions-file.html#CRUNCH-IF-NONE-MATCH">crunch-if-none-match</a></dt>
+ <dt>8.5.9. <a href="actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></dt>
+ <dt>8.5.10. <a href="actions-file.html#CRUNCH-SERVER-HEADER">crunch-server-header</a></dt>
+ <dt>8.5.11. <a href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></dt>
+ <dt>8.5.12. <a href="actions-file.html#DEANIMATE-GIFS">deanimate-gifs</a></dt>
+ <dt>8.5.13. <a href="actions-file.html#DOWNGRADE-HTTP-VERSION">downgrade-http-version</a></dt>
+ <dt>8.5.14. <a href="actions-file.html#EXTERNAL-FILTER">external-filter</a></dt>
+ <dt>8.5.15. <a href="actions-file.html#FAST-REDIRECTS">fast-redirects</a></dt>
+ <dt>8.5.16. <a href="actions-file.html#FILTER">filter</a></dt>
+ <dt>8.5.17. <a href="actions-file.html#FORCE-TEXT-MODE">force-text-mode</a></dt>
+ <dt>8.5.18. <a href="actions-file.html#FORWARD-OVERRIDE">forward-override</a></dt>
+ <dt>8.5.19. <a href="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></dt>
+ <dt>8.5.20. <a href="actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></dt>
+ <dt>8.5.21. <a href="actions-file.html#HIDE-ACCEPT-LANGUAGE">hide-accept-language</a></dt>
+ <dt>8.5.22. <a href="actions-file.html#HIDE-CONTENT-DISPOSITION">hide-content-disposition</a></dt>
+ <dt>8.5.23. <a href="actions-file.html#HIDE-IF-MODIFIED-SINCE">hide-if-modified-since</a></dt>
+ <dt>8.5.24. <a href="actions-file.html#HIDE-FROM-HEADER">hide-from-header</a></dt>
+ <dt>8.5.25. <a href="actions-file.html#HIDE-REFERRER">hide-referrer</a></dt>
+ <dt>8.5.26. <a href="actions-file.html#HIDE-USER-AGENT">hide-user-agent</a></dt>
+ <dt>8.5.27. <a href="actions-file.html#LIMIT-CONNECT">limit-connect</a></dt>
+ <dt>8.5.28. <a href="actions-file.html#LIMIT-COOKIE-LIFETIME">limit-cookie-lifetime</a></dt>
+ <dt>8.5.29. <a href="actions-file.html#PREVENT-COMPRESSION">prevent-compression</a></dt>
+ <dt>8.5.30. <a href="actions-file.html#OVERWRITE-LAST-MODIFIED">overwrite-last-modified</a></dt>
+ <dt>8.5.31. <a href="actions-file.html#REDIRECT">redirect</a></dt>
+ <dt>8.5.32. <a href="actions-file.html#SERVER-HEADER-FILTER">server-header-filter</a></dt>
+ <dt>8.5.33. <a href="actions-file.html#SERVER-HEADER-TAGGER">server-header-tagger</a></dt>
+ <dt>8.5.34. <a href="actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></dt>
+ <dt>8.5.35. <a href="actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></dt>
+ <dt>8.5.36. <a href="actions-file.html#SUMMARY">Summary</a></dt>
</dl>
</dd>
<dt>8.6. <a href="actions-file.html#ALIASES">Aliases</a></dt>
- <dt>8.7. <a href="actions-file.html#ACT-EXAMPLES">Actions Files
- Tutorial</a></dt>
+ <dt>8.7. <a href="actions-file.html#ACT-EXAMPLES">Actions Files Tutorial</a></dt>
<dd>
<dl>
- <dt>8.7.1. <a href=
- "actions-file.html#MATCH-ALL">match-all.action</a></dt>
- <dt>8.7.2. <a href=
- "actions-file.html#DEFAULT-ACTION">default.action</a></dt>
- <dt>8.7.3. <a href=
- "actions-file.html#USER-ACTION">user.action</a></dt>
+ <dt>8.7.1. <a href="actions-file.html#MATCH-ALL">match-all.action</a></dt>
+ <dt>8.7.2. <a href="actions-file.html#DEFAULT-ACTION">default.action</a></dt>
+ <dt>8.7.3. <a href="actions-file.html#USER-ACTION">user.action</a></dt>
</dl>
</dd>
</dl>
<dt>9. <a href="filter-file.html">Filter Files</a></dt>
<dd>
<dl>
- <dt>9.1. <a href="filter-file.html#FILTER-FILE-TUT">Filter File
- Tutorial</a></dt>
- <dt>9.2. <a href="filter-file.html#PREDEFINED-FILTERS">The
- Pre-defined Filters</a></dt>
- <dt>9.3. <a href=
- "filter-file.html#EXTERNAL-FILTER-SYNTAX">External filter
- syntax</a></dt>
+ <dt>9.1. <a href="filter-file.html#FILTER-FILE-TUT">Filter File Tutorial</a></dt>
+ <dt>9.2. <a href="filter-file.html#PREDEFINED-FILTERS">The Pre-defined Filters</a></dt>
+ <dt>9.3. <a href="filter-file.html#EXTERNAL-FILTER-SYNTAX">External filter syntax</a></dt>
</dl>
</dd>
<dt>10. <a href="templates.html">Privoxy's Template Files</a></dt>
- <dt>11. <a href="contact.html">Contacting the Developers, Bug
- Reporting and Feature Requests</a></dt>
+ <dt>11. <a href="contact.html">Contacting the Developers, Bug Reporting and Feature Requests</a></dt>
<dd>
<dl>
- <dt>11.1. <a href="contact.html#SUFFICIENT-INFORMATION">Please
- provide sufficient information</a></dt>
- <dt>11.2. <a href="contact.html#CONTACT-SUPPORT">Get
- Support</a></dt>
- <dt>11.3. <a href="contact.html#REPORTING">Reporting
- Problems</a></dt>
+ <dt>11.1. <a href="contact.html#SUFFICIENT-INFORMATION">Please provide sufficient information</a></dt>
+ <dt>11.2. <a href="contact.html#CONTACT-SUPPORT">Get Support</a></dt>
+ <dt>11.3. <a href="contact.html#REPORTING">Reporting Problems</a></dt>
<dd>
<dl>
- <dt>11.3.1. <a href="contact.html#CONTACT-ADS">Reporting Ads
- or Other Configuration Problems</a></dt>
- <dt>11.3.2. <a href="contact.html#CONTACT-BUGS">Reporting
- Bugs</a></dt>
+ <dt>11.3.1. <a href="contact.html#CONTACT-ADS">Reporting Ads or Other Configuration Problems</a></dt>
+ <dt>11.3.2. <a href="contact.html#CONTACT-BUGS">Reporting Bugs</a></dt>
</dl>
</dd>
- <dt>11.4. <a href="contact.html#SECURITY-CONTACT">Reporting
- security problems</a></dt>
- <dt>11.5. <a href="contact.html#MAILING-LISTS">Mailing
- Lists</a></dt>
- <dt>11.6. <a href="contact.html#SF-TRACKERS">SourceForge support
- trackers</a></dt>
+ <dt>11.4. <a href="contact.html#SECURITY-CONTACT">Reporting security problems</a></dt>
+ <dt>11.5. <a href="contact.html#MAILING-LISTS">Mailing Lists</a></dt>
+ <dt>11.6. <a href="contact.html#SF-TRACKERS">SourceForge support trackers</a></dt>
</dl>
</dd>
- <dt>12. <a href="copyright.html">Privoxy Copyright, License and
- History</a></dt>
+ <dt>12. <a href="copyright.html">Privoxy Copyright, License and History</a></dt>
<dd>
<dl>
<dt>12.1. <a href="copyright.html#LICENSE">License</a></dt>
<dt>14. <a href="appendix.html">Appendix</a></dt>
<dd>
<dl>
- <dt>14.1. <a href="appendix.html#REGEX">Regular
- Expressions</a></dt>
- <dt>14.2. <a href="appendix.html#INTERNAL-PAGES">Privoxy's
- Internal Pages</a></dt>
+ <dt>14.1. <a href="appendix.html#REGEX">Regular Expressions</a></dt>
+ <dt>14.2. <a href="appendix.html#INTERNAL-PAGES">Privoxy's Internal Pages</a></dt>
<dt>14.3. <a href="appendix.html#CHAIN">Chain of Events</a></dt>
- <dt>14.4. <a href="appendix.html#ACTIONSANAT">Troubleshooting:
- Anatomy of an Action</a></dt>
+ <dt>14.4. <a href="appendix.html#ACTIONSANAT">Troubleshooting: Anatomy of an Action</a></dt>
</dl>
</dd>
</dl>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="33%" align="left" valign="top"> </td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top"><a href=
- "introduction.html" accesskey="N">Next</a></td>
+ <td width="33%" align="right" valign="top"><a href="introduction.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top"> </td>
<html>
<head>
<title>Installation</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
<link rel="PREVIOUS" title="Introduction" href="introduction.html">
<link rel="NEXT" title="What's New in this Release" href="whatsnew.html">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "introduction.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="introduction.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="whatsnew.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="whatsnew.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="INSTALLATION" id="INSTALLATION">2.
- Installation</a></h1>
- <p><span class="APPLICATION">Privoxy</span> is available both in
- convenient pre-compiled packages for a wide range of operating systems,
- and as raw source code. For most users, we recommend using the packages,
- which can be downloaded from our <a href=
- "https://sourceforge.net/projects/ijbswa/" target="_top">Privoxy Project
- Page</a>.</p>
- <p>Note: On some platforms, the installer may remove previously installed
- versions, if found. (See below for your platform). In any case
- <span class="emphasis"><i class="EMPHASIS">be sure to backup your old
- configuration if it is valuable to you.</i></span> See the <a href=
- "whatsnew.html#UPGRADERSNOTE">note to upgraders</a> section below.</p>
+ <h1 class="SECT1"><a name="INSTALLATION" id="INSTALLATION">2. Installation</a></h1>
+ <p><span class="APPLICATION">Privoxy</span> is available both in convenient pre-compiled packages for a wide range
+ of operating systems, and as raw source code. For most users, we recommend using the packages, which can be
+ downloaded from our <a href="https://sourceforge.net/projects/ijbswa/" target="_top">Privoxy Project Page</a>.</p>
+ <p>Note: On some platforms, the installer may remove previously installed versions, if found. (See below for your
+ platform). In any case <span class="emphasis"><i class="EMPHASIS">be sure to backup your old configuration if it is
+ valuable to you.</i></span> See the <a href="whatsnew.html#UPGRADERSNOTE">note to upgraders</a> section below.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="INSTALLATION-PACKAGES" id=
- "INSTALLATION-PACKAGES">2.1. Binary Packages</a></h2>
- <p>How to install the binary packages depends on your operating
- system:</p>
+ <h2 class="SECT2"><a name="INSTALLATION-PACKAGES" id="INSTALLATION-PACKAGES">2.1. Binary Packages</a></h2>
+ <p>How to install the binary packages depends on your operating system:</p>
<div class="SECT3">
- <h3 class="SECT3"><a name="INSTALLATION-DEB" id=
- "INSTALLATION-DEB">2.1.1. Debian and Ubuntu</a></h3>
- <p>DEBs can be installed with <tt class="LITERAL">apt-get install
- privoxy</tt>, and will use <tt class="FILENAME">/etc/privoxy</tt> for
- the location of configuration files.</p>
+ <h3 class="SECT3"><a name="INSTALLATION-DEB" id="INSTALLATION-DEB">2.1.1. Debian and Ubuntu</a></h3>
+ <p>DEBs can be installed with <tt class="LITERAL">apt-get install privoxy</tt>, and will use <tt class=
+ "FILENAME">/etc/privoxy</tt> for the location of configuration files.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="INSTALLATION-PACK-WIN" id=
- "INSTALLATION-PACK-WIN">2.1.2. Windows</a></h3>
- <p>Just double-click the installer, which will guide you through the
- installation process. You will find the configuration files in the
- same directory as you installed <span class=
- "APPLICATION">Privoxy</span> in.</p>
- <p>Version 3.0.5 beta introduced full <span class=
- "APPLICATION">Windows</span> service functionality. On Windows only,
- the <span class="APPLICATION">Privoxy</span> program has two new
- command line arguments to install and uninstall <span class=
- "APPLICATION">Privoxy</span> as a <span class="emphasis"><i class=
+ <h3 class="SECT3"><a name="INSTALLATION-PACK-WIN" id="INSTALLATION-PACK-WIN">2.1.2. Windows</a></h3>
+ <p>Just double-click the installer, which will guide you through the installation process. You will find the
+ configuration files in the same directory as you installed <span class="APPLICATION">Privoxy</span> in.</p>
+ <p>Version 3.0.5 beta introduced full <span class="APPLICATION">Windows</span> service functionality. On
+ Windows only, the <span class="APPLICATION">Privoxy</span> program has two new command line arguments to
+ install and uninstall <span class="APPLICATION">Privoxy</span> as a <span class="emphasis"><i class=
"EMPHASIS">service</i></span>.</p>
<div class="VARIABLELIST">
<dl>
<dt>Arguments:</dt>
<dd>
- <p><tt class="REPLACEABLE"><i>--install</i></tt>[:<tt class=
- "REPLACEABLE"><i>service_name</i></tt>]</p>
- <p><tt class="REPLACEABLE"><i>--uninstall</i></tt>[:<tt class=
- "REPLACEABLE"><i>service_name</i></tt>]</p>
+ <p><tt class="REPLACEABLE"><i>--install</i></tt>[:<tt class="REPLACEABLE"><i>service_name</i></tt>]</p>
+ <p><tt class="REPLACEABLE"><i>--uninstall</i></tt>[:<tt class="REPLACEABLE"><i>service_name</i></tt>]</p>
</dd>
</dl>
</div>
- <p>After invoking <span class="APPLICATION">Privoxy</span> with
- <b class="COMMAND">--install</b>, you will need to bring up the
- <span class="APPLICATION">Windows</span> service console to assign
- the user you want <span class="APPLICATION">Privoxy</span> to run
- under, and whether or not you want it to run whenever the system
- starts. You can start the <span class="APPLICATION">Windows</span>
- services console with the following command: <b class=
- "COMMAND">services.msc</b>. If you do not take the manual step of
- modifying <span class="APPLICATION">Privoxy's</span> service
- settings, it will not start. Note too that you will need to give
- Privoxy a user account that actually exists, or it will not be
- permitted to write to its log and configuration files.</p>
+ <p>After invoking <span class="APPLICATION">Privoxy</span> with <b class="COMMAND">--install</b>, you will need
+ to bring up the <span class="APPLICATION">Windows</span> service console to assign the user you want
+ <span class="APPLICATION">Privoxy</span> to run under, and whether or not you want it to run whenever the
+ system starts. You can start the <span class="APPLICATION">Windows</span> services console with the following
+ command: <b class="COMMAND">services.msc</b>. If you do not take the manual step of modifying <span class=
+ "APPLICATION">Privoxy's</span> service settings, it will not start. Note too that you will need to give Privoxy
+ a user account that actually exists, or it will not be permitted to write to its log and configuration
+ files.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="INSTALLATION-OS2" id=
- "INSTALLATION-OS2">2.1.3. OS/2</a></h3>
- <p>First, make sure that no previous installations of <span class=
- "APPLICATION">Junkbuster</span> and / or <span class=
- "APPLICATION">Privoxy</span> are left on your system. Check that no
- <span class="APPLICATION">Junkbuster</span> or <span class=
- "APPLICATION">Privoxy</span> objects are in your startup folder.</p>
- <p>Then, just double-click the WarpIN self-installing archive, which
- will guide you through the installation process. A shadow of the
- <span class="APPLICATION">Privoxy</span> executable will be placed in
- your startup folder so it will start automatically whenever OS/2
- starts.</p>
- <p>The directory you choose to install <span class=
- "APPLICATION">Privoxy</span> into will contain all of the
+ <h3 class="SECT3"><a name="INSTALLATION-OS2" id="INSTALLATION-OS2">2.1.3. OS/2</a></h3>
+ <p>First, make sure that no previous installations of <span class="APPLICATION">Junkbuster</span> and / or
+ <span class="APPLICATION">Privoxy</span> are left on your system. Check that no <span class=
+ "APPLICATION">Junkbuster</span> or <span class="APPLICATION">Privoxy</span> objects are in your startup
+ folder.</p>
+ <p>Then, just double-click the WarpIN self-installing archive, which will guide you through the installation
+ process. A shadow of the <span class="APPLICATION">Privoxy</span> executable will be placed in your startup
+ folder so it will start automatically whenever OS/2 starts.</p>
+ <p>The directory you choose to install <span class="APPLICATION">Privoxy</span> into will contain all of the
configuration files.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="INSTALLATION-MAC" id=
- "INSTALLATION-MAC">2.1.4. Mac OS X</a></h3>
- <p>Installation instructions for the OS X platform depend upon
- whether you downloaded a ready-built installation package (.pkg or
- .mpkg) or have downloaded the source code.</p>
+ <h3 class="SECT3"><a name="INSTALLATION-MAC" id="INSTALLATION-MAC">2.1.4. Mac OS X</a></h3>
+ <p>Installation instructions for the OS X platform depend upon whether you downloaded a ready-built
+ installation package (.pkg or .mpkg) or have downloaded the source code.</p>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="OS-X-INSTALL-FROM-PACKAGE" id=
- "OS-X-INSTALL-FROM-PACKAGE">2.1.5. Installation from ready-built
- package</a></h4>
- <p>The downloaded file will either be a .pkg (for OS X 10.5 upwards)
- or a bzipped .mpkg file (for OS X 10.4). The former can be
- double-clicked as is and the installation will start; double-clicking
- the latter will unzip the .mpkg file which can then be double-clicked
- to commence the installation.</p>
- <p>The privoxy service will automatically start after a successful
- installation (and thereafter every time your computer starts up)
- however you will need to configure your web browser(s) to use it. To
- do so, configure them to use a proxy for HTTP and HTTPS at the
- address 127.0.0.1:8118.</p>
- <p>To prevent the privoxy service from automatically starting when
- your computer starts up, remove or rename the file <tt class=
- "LITERAL">/Library/LaunchDaemons/org.ijbswa.privoxy.plist</tt> (on OS
- X 10.5 and higher) or the folder named <tt class=
- "LITERAL">/Library/StartupItems/Privoxy</tt> (on OS X 10.4
- 'Tiger').</p>
- <p>To manually start or stop the privoxy service, use the scripts
- startPrivoxy.sh and stopPrivoxy.sh supplied in /Applications/Privoxy.
- They must be run from an administrator account, using sudo.</p>
- <p>To uninstall, run /Applications/Privoxy/uninstall.command as sudo
- from an administrator account.</p>
+ <h4 class="SECT3"><a name="OS-X-INSTALL-FROM-PACKAGE" id="OS-X-INSTALL-FROM-PACKAGE">2.1.5. Installation from
+ ready-built package</a></h4>
+ <p>The downloaded file will either be a .pkg (for OS X 10.5 upwards) or a bzipped .mpkg file (for OS X 10.4).
+ The former can be double-clicked as is and the installation will start; double-clicking the latter will unzip
+ the .mpkg file which can then be double-clicked to commence the installation.</p>
+ <p>The privoxy service will automatically start after a successful installation (and thereafter every time your
+ computer starts up) however you will need to configure your web browser(s) to use it. To do so, configure them
+ to use a proxy for HTTP and HTTPS at the address 127.0.0.1:8118.</p>
+ <p>To prevent the privoxy service from automatically starting when your computer starts up, remove or rename
+ the file <tt class="LITERAL">/Library/LaunchDaemons/org.ijbswa.privoxy.plist</tt> (on OS X 10.5 and higher) or
+ the folder named <tt class="LITERAL">/Library/StartupItems/Privoxy</tt> (on OS X 10.4 'Tiger').</p>
+ <p>To manually start or stop the privoxy service, use the scripts startPrivoxy.sh and stopPrivoxy.sh supplied
+ in /Applications/Privoxy. They must be run from an administrator account, using sudo.</p>
+ <p>To uninstall, run /Applications/Privoxy/uninstall.command as sudo from an administrator account.</p>
</div>
<div class="SECT3">
- <h4 class="SECT3"><a name="OS-X-INSTALL-FROM-SOURCE" id=
- "OS-X-INSTALL-FROM-SOURCE">2.1.6. Installation from source</a></h4>
- <p>To build and install the Privoxy source code on OS X you will need
- to obtain the macsetup module from the Privoxy Sourceforge CVS
- repository (refer to Sourceforge help for details of how to set up a
- CVS client to have read-only access to the repository). This module
- contains scripts that leverage the usual open-source tools (available
- as part of Apple's free of charge Xcode distribution or via the usual
- open-source software package managers for OS X (MacPorts, Homebrew,
- Fink etc.) to build and then install the privoxy binary and
- associated files. The macsetup module's README file contains complete
- instructions for its use.</p>
- <p>The privoxy service will automatically start after a successful
- installation (and thereafter every time your computer starts up)
- however you will need to configure your web browser(s) to use it. To
- do so, configure them to use a proxy for HTTP and HTTPS at the
- address 127.0.0.1:8118.</p>
- <p>To prevent the privoxy service from automatically starting when
- your computer starts up, remove or rename the file <tt class=
- "LITERAL">/Library/LaunchDaemons/org.ijbswa.privoxy.plist</tt> (on OS
- X 10.5 and higher) or the folder named <tt class=
- "LITERAL">/Library/StartupItems/Privoxy</tt> (on OS X 10.4
- 'Tiger').</p>
- <p>To manually start or stop the privoxy service, use the Privoxy
- Utility for Mac OS X (also part of the macsetup module). This
- application can start and stop the privoxy service and display its
- log and configuration files.</p>
- <p>To uninstall, run the macsetup module's uninstall.sh as sudo from
- an administrator account.</p>
+ <h4 class="SECT3"><a name="OS-X-INSTALL-FROM-SOURCE" id="OS-X-INSTALL-FROM-SOURCE">2.1.6. Installation from
+ source</a></h4>
+ <p>To build and install the Privoxy source code on OS X you will need to obtain the macsetup module from the
+ Privoxy Sourceforge CVS repository (refer to Sourceforge help for details of how to set up a CVS client to have
+ read-only access to the repository). This module contains scripts that leverage the usual open-source tools
+ (available as part of Apple's free of charge Xcode distribution or via the usual open-source software package
+ managers for OS X (MacPorts, Homebrew, Fink etc.) to build and then install the privoxy binary and associated
+ files. The macsetup module's README file contains complete instructions for its use.</p>
+ <p>The privoxy service will automatically start after a successful installation (and thereafter every time your
+ computer starts up) however you will need to configure your web browser(s) to use it. To do so, configure them
+ to use a proxy for HTTP and HTTPS at the address 127.0.0.1:8118.</p>
+ <p>To prevent the privoxy service from automatically starting when your computer starts up, remove or rename
+ the file <tt class="LITERAL">/Library/LaunchDaemons/org.ijbswa.privoxy.plist</tt> (on OS X 10.5 and higher) or
+ the folder named <tt class="LITERAL">/Library/StartupItems/Privoxy</tt> (on OS X 10.4 'Tiger').</p>
+ <p>To manually start or stop the privoxy service, use the Privoxy Utility for Mac OS X (also part of the
+ macsetup module). This application can start and stop the privoxy service and display its log and configuration
+ files.</p>
+ <p>To uninstall, run the macsetup module's uninstall.sh as sudo from an administrator account.</p>
</div>
<div class="SECT3">
- <h3 class="SECT3"><a name="INSTALLATION-FREEBSD" id=
- "INSTALLATION-FREEBSD">2.1.7. FreeBSD</a></h3>
- <p>Privoxy is part of FreeBSD's Ports Collection, you can build and
- install it with <tt class="LITERAL">cd /usr/ports/www/privoxy; make
- install clean</tt>.</p>
+ <h3 class="SECT3"><a name="INSTALLATION-FREEBSD" id="INSTALLATION-FREEBSD">2.1.7. FreeBSD</a></h3>
+ <p>Privoxy is part of FreeBSD's Ports Collection, you can build and install it with <tt class="LITERAL">cd
+ /usr/ports/www/privoxy; make install clean</tt>.</p>
</div>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="INSTALLATION-SOURCE" id=
- "INSTALLATION-SOURCE">2.2. Building from Source</a></h2>
- <p>The most convenient way to obtain the <span class=
- "APPLICATION">Privoxy</span> sources is to download the source tarball
- from our <a href=
- "https://sourceforge.net/projects/ijbswa/files/Sources/" target=
- "_top">project download page</a>.</p>
- <p>If you like to live on the bleeding edge and are not afraid of using
- possibly unstable development versions, you can check out the
- up-to-the-minute version directly from <a href=
- "https://sourceforge.net/p/ijbswa/code/?source=navbar" target=
- "_top">the CVS repository</a>.</p>
- <p>To build <span class="APPLICATION">Privoxy</span> from source,
- <a href="http://www.gnu.org/software/autoconf/autoconf.html" target=
- "_top">autoconf</a>, <a href=
- "http://www.gnu.org/software/make/make.html" target="_top">GNU make
- (gmake)</a>, and, of course, a C compiler like <a href=
- "http://www.gnu.org/software/gcc/gcc.html" target="_top">gcc</a> are
- required.</p>
+ <h2 class="SECT2"><a name="INSTALLATION-SOURCE" id="INSTALLATION-SOURCE">2.2. Building from Source</a></h2>
+ <p>The most convenient way to obtain the <span class="APPLICATION">Privoxy</span> sources is to download the
+ source tarball from our <a href="https://sourceforge.net/projects/ijbswa/files/Sources/" target="_top">project
+ download page</a>.</p>
+ <p>If you like to live on the bleeding edge and are not afraid of using possibly unstable development versions,
+ you can check out the up-to-the-minute version directly from <a href=
+ "https://sourceforge.net/p/ijbswa/code/?source=navbar" target="_top">the CVS repository</a>.</p>
+ <p>To build <span class="APPLICATION">Privoxy</span> from source, <a href=
+ "http://www.gnu.org/software/autoconf/autoconf.html" target="_top">autoconf</a>, <a href=
+ "http://www.gnu.org/software/make/make.html" target="_top">GNU make (gmake)</a>, and, of course, a C compiler
+ like <a href="http://www.gnu.org/software/gcc/gcc.html" target="_top">gcc</a> are required.</p>
<p>When building from a source tarball, first unpack the source:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>For retrieving the current CVS sources, you'll need a CVS client
- installed. Note that sources from CVS are typically development
- quality, and may not be stable, or well tested. To download CVS source,
- check the Sourceforge documentation, which might give commands
- like:</p>
+ <p>For retrieving the current CVS sources, you'll need a CVS client installed. Note that sources from CVS are
+ typically development quality, and may not be stable, or well tested. To download CVS source, check the
+ Sourceforge documentation, which might give commands like:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login
+ <pre class="SCREEN"> cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login
cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co current
cd current</pre>
</td>
</tr>
</table>
- <p>This will create a directory named <tt class=
- "FILENAME">current/</tt>, which will contain the source tree.</p>
- <p>You can also check out any <span class="APPLICATION">Privoxy</span>
- <span class="QUOTE">"branch"</span>, just exchange the <span class=
- "APPLICATION">current</span> name with the wanted branch name (Example:
- v_3_0_branch for the 3.0 cvs tree).</p>
- <p>It is also strongly recommended to not run <span class=
- "APPLICATION">Privoxy</span> as root. You should configure/install/run
- <span class="APPLICATION">Privoxy</span> as an unprivileged user,
- preferably by creating a <span class="QUOTE">"privoxy"</span> user and
- group just for this purpose. See your local documentation for the
- correct command line to do add new users and groups (something like
- <b class="COMMAND">adduser</b>, but the command syntax may vary from
- platform to platform).</p>
+ <p>This will create a directory named <tt class="FILENAME">current/</tt>, which will contain the source tree.</p>
+ <p>You can also check out any <span class="APPLICATION">Privoxy</span> <span class="QUOTE">"branch"</span>, just
+ exchange the <span class="APPLICATION">current</span> name with the wanted branch name (Example: v_3_0_branch for
+ the 3.0 cvs tree).</p>
+ <p>It is also strongly recommended to not run <span class="APPLICATION">Privoxy</span> as root. You should
+ configure/install/run <span class="APPLICATION">Privoxy</span> as an unprivileged user, preferably by creating a
+ <span class="QUOTE">"privoxy"</span> user and group just for this purpose. See your local documentation for the
+ correct command line to do add new users and groups (something like <b class="COMMAND">adduser</b>, but the
+ command syntax may vary from platform to platform).</p>
<p><tt class="FILENAME">/etc/passwd</tt> might then look like:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- privoxy:*:7777:7777:privoxy proxy:/no/home:/no/shell</pre>
+ <pre class="SCREEN"> privoxy:*:7777:7777:privoxy proxy:/no/home:/no/shell</pre>
</td>
</tr>
</table>
</td>
</tr>
</table>
- <p>Using GNU <b class="COMMAND">make</b>, you can have the first four
- steps automatically done for you by just typing:</p>
+ <p>Using GNU <b class="COMMAND">make</b>, you can have the first four steps automatically done for you by just
+ typing:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</tr>
</table>
<p>in the freshly downloaded or unpacked source directory.</p>
- <p>To build an executable with security enhanced features so that users
- cannot easily bypass the proxy (e.g. <span class="QUOTE">"Go There
- Anyway"</span>), or alter their own configurations, <b class=
+ <p>To build an executable with security enhanced features so that users cannot easily bypass the proxy (e.g.
+ <span class="QUOTE">"Go There Anyway"</span>), or alter their own configurations, <b class=
"COMMAND">configure</b> like this:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- ./configure --disable-toggle --disable-editor --disable-force</pre>
+ <pre class="SCREEN"> ./configure --disable-toggle --disable-editor --disable-force</pre>
</td>
</tr>
</table>
- <p>Note that all of these options can also be disabled through the
- configuration file.</p>
- <p><span class="emphasis"><i class="EMPHASIS">WARNING:</i></span> If
- installing as root, the install will fail unless a non-root user or
- group is specified, or a <tt class="LITERAL">privoxy</tt> user and
- group already exist on the system. If a non-root user is specified, and
- no group, then the installation will try to also use a group of the
- same name as <span class="QUOTE">"user"</span>. If a group is specified
- (and no user), then the support files will be installed as writable by
- that group, and owned by the user running the installation.</p>
- <p><b class="COMMAND">configure</b> accepts <tt class=
- "LITERAL">--with-user</tt> and <tt class="LITERAL">--with-group</tt>
- options for setting user and group ownership of the configuration files
- (which need to be writable by the daemon). The specified <span class=
- "emphasis"><i class="EMPHASIS">user must already exist</i></span>. When
- starting <span class="APPLICATION">Privoxy</span>, it must be run as
- this same user to insure write access to configuration and log
- files!</p>
- <p>Alternately, you can specify <tt class="LITERAL">user</tt> and
- <tt class="LITERAL">group</tt> on the <b class="COMMAND">make</b>
- command line, but be sure both already exist:</p>
+ <p>Note that all of these options can also be disabled through the configuration file.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">WARNING:</i></span> If installing as root, the install will fail
+ unless a non-root user or group is specified, or a <tt class="LITERAL">privoxy</tt> user and group already exist
+ on the system. If a non-root user is specified, and no group, then the installation will try to also use a group
+ of the same name as <span class="QUOTE">"user"</span>. If a group is specified (and no user), then the support
+ files will be installed as writable by that group, and owned by the user running the installation.</p>
+ <p><b class="COMMAND">configure</b> accepts <tt class="LITERAL">--with-user</tt> and <tt class=
+ "LITERAL">--with-group</tt> options for setting user and group ownership of the configuration files (which need
+ to be writable by the daemon). The specified <span class="emphasis"><i class="EMPHASIS">user must already
+ exist</i></span>. When starting <span class="APPLICATION">Privoxy</span>, it must be run as this same user to
+ insure write access to configuration and log files!</p>
+ <p>Alternately, you can specify <tt class="LITERAL">user</tt> and <tt class="LITERAL">group</tt> on the <b class=
+ "COMMAND">make</b> command line, but be sure both already exist:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- make -s install USER=privoxy GROUP=privoxy</pre>
+ <pre class="SCREEN"> make -s install USER=privoxy GROUP=privoxy</pre>
</td>
</tr>
</table>
- <p>The default installation path for <b class="COMMAND">make
- install</b> is <tt class="FILENAME">/usr/local</tt>. This may of course
- be customized with the various <b class="COMMAND">./configure</b> path
- options. If you are doing an install to anywhere besides <tt class=
- "FILENAME">/usr/local</tt>, be sure to set the appropriate paths with
- the correct configure options (<b class="COMMAND">./configure
- --help</b>). Non-privileged users must of course have write access
- permissions to wherever the target installation is going.</p>
- <p>If you do install to <tt class="FILENAME">/usr/local</tt>, the
- install will use <tt class=
- "LITERAL">sysconfdir=$prefix/etc/privoxy</tt> by default. All other
- destinations, and the direct usage of <tt class=
- "LITERAL">--sysconfdir</tt> flag behave like normal, i.e. will not add
- the extra <tt class="FILENAME">privoxy</tt> directory. This is for a
- safer install, as there may already exist another program that uses a
- file with the <span class="QUOTE">"config"</span> name, and thus makes
- <tt class="FILENAME">/usr/local/etc</tt> cleaner.</p>
- <p>If installing to <tt class="FILENAME">/usr/local</tt>, the
- documentation will go by default to <tt class=
- "FILENAME">$prefix/share/doc</tt>. But if this directory doesn't exist,
- it will then try <tt class="FILENAME">$prefix/doc</tt> and install
- there before creating a new <tt class="FILENAME">$prefix/share/doc</tt>
+ <p>The default installation path for <b class="COMMAND">make install</b> is <tt class="FILENAME">/usr/local</tt>.
+ This may of course be customized with the various <b class="COMMAND">./configure</b> path options. If you are
+ doing an install to anywhere besides <tt class="FILENAME">/usr/local</tt>, be sure to set the appropriate paths
+ with the correct configure options (<b class="COMMAND">./configure --help</b>). Non-privileged users must of
+ course have write access permissions to wherever the target installation is going.</p>
+ <p>If you do install to <tt class="FILENAME">/usr/local</tt>, the install will use <tt class=
+ "LITERAL">sysconfdir=$prefix/etc/privoxy</tt> by default. All other destinations, and the direct usage of
+ <tt class="LITERAL">--sysconfdir</tt> flag behave like normal, i.e. will not add the extra <tt class=
+ "FILENAME">privoxy</tt> directory. This is for a safer install, as there may already exist another program that
+ uses a file with the <span class="QUOTE">"config"</span> name, and thus makes <tt class=
+ "FILENAME">/usr/local/etc</tt> cleaner.</p>
+ <p>If installing to <tt class="FILENAME">/usr/local</tt>, the documentation will go by default to <tt class=
+ "FILENAME">$prefix/share/doc</tt>. But if this directory doesn't exist, it will then try <tt class=
+ "FILENAME">$prefix/doc</tt> and install there before creating a new <tt class="FILENAME">$prefix/share/doc</tt>
just for <span class="APPLICATION">Privoxy</span>.</p>
- <p>Again, if the installs goes to <tt class="FILENAME">/usr/local</tt>,
- the <tt class="LITERAL">localstatedir</tt> (ie: <tt class=
- "FILENAME">var/</tt>) will default to <tt class="FILENAME">/var</tt>
- instead of <tt class="LITERAL">$prefix/var</tt> so the logs will go to
- <tt class="FILENAME">/var/log/privoxy/</tt>, and the pid file will be
- created in <tt class="FILENAME">/var/run/privoxy.pid</tt>.</p>
- <p><b class="COMMAND">make install</b> will attempt to set the correct
- values in <tt class="FILENAME">config</tt> (main configuration file).
- You should check this to make sure all values are correct. If
- appropriate, an init script will be installed, but it is up to the user
- to determine how and where to start <span class=
- "APPLICATION">Privoxy</span>. The init script should be checked for
- correct paths and values, if anything other than a default install is
- done.</p>
- <p>If install finds previous versions of local configuration files,
- most of these will not be overwritten, and the new ones will be
- installed with a <span class="QUOTE">"new"</span> extension.
- default.action and default.filter <span class="emphasis"><i class=
- "EMPHASIS">will be overwritten</i></span>. You will then need to
- manually update the other installed configuration files as needed. The
- default template files <span class="emphasis"><i class=
- "EMPHASIS">will</i></span> be overwritten. If you have customized,
- local templates, these should be stored safely in a separate directory
- and defined in <tt class="FILENAME">config</tt> by the <span class=
- "QUOTE">"templdir"</span> directive. It is of course wise to always
- back-up any important configuration files <span class="QUOTE">"just in
- case"</span>. If a previous version of <span class=
- "APPLICATION">Privoxy</span> is already running, you will have to
- restart it manually.</p>
- <p>For more detailed instructions on how to build Redhat RPMs, Windows
- self-extracting installers, building on platforms with special
- requirements etc, please consult the <a href=
- "https://www.privoxy.org/developer-manual/newrelease.html" target=
- "_top">developer manual</a>.</p>
+ <p>Again, if the installs goes to <tt class="FILENAME">/usr/local</tt>, the <tt class=
+ "LITERAL">localstatedir</tt> (ie: <tt class="FILENAME">var/</tt>) will default to <tt class="FILENAME">/var</tt>
+ instead of <tt class="LITERAL">$prefix/var</tt> so the logs will go to <tt class=
+ "FILENAME">/var/log/privoxy/</tt>, and the pid file will be created in <tt class=
+ "FILENAME">/var/run/privoxy.pid</tt>.</p>
+ <p><b class="COMMAND">make install</b> will attempt to set the correct values in <tt class="FILENAME">config</tt>
+ (main configuration file). You should check this to make sure all values are correct. If appropriate, an init
+ script will be installed, but it is up to the user to determine how and where to start <span class=
+ "APPLICATION">Privoxy</span>. The init script should be checked for correct paths and values, if anything other
+ than a default install is done.</p>
+ <p>If install finds previous versions of local configuration files, most of these will not be overwritten, and
+ the new ones will be installed with a <span class="QUOTE">"new"</span> extension. default.action and
+ default.filter <span class="emphasis"><i class="EMPHASIS">will be overwritten</i></span>. You will then need to
+ manually update the other installed configuration files as needed. The default template files <span class=
+ "emphasis"><i class="EMPHASIS">will</i></span> be overwritten. If you have customized, local templates, these
+ should be stored safely in a separate directory and defined in <tt class="FILENAME">config</tt> by the
+ <span class="QUOTE">"templdir"</span> directive. It is of course wise to always back-up any important
+ configuration files <span class="QUOTE">"just in case"</span>. If a previous version of <span class=
+ "APPLICATION">Privoxy</span> is already running, you will have to restart it manually.</p>
+ <p>For more detailed instructions on how to build Redhat RPMs, Windows self-extracting installers, building on
+ platforms with special requirements etc, please consult the <a href=
+ "https://www.privoxy.org/developer-manual/newrelease.html" target="_top">developer manual</a>.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="INSTALLATION-KEEPUPDATED" id=
- "INSTALLATION-KEEPUPDATED">2.3. Keeping your Installation
+ <h2 class="SECT2"><a name="INSTALLATION-KEEPUPDATED" id="INSTALLATION-KEEPUPDATED">2.3. Keeping your Installation
Up-to-Date</a></h2>
- <p>If you wish to receive an email notification whenever we release
- updates of <span class="APPLICATION">Privoxy</span> or the actions
- file, <a href=
- "https://lists.privoxy.org/mailman/listinfo/privoxy-announce" target=
- "_top">subscribe to our announce mailing list</a>,
- privoxy-announce@lists.privoxy.org.</p>
- <p>In order not to lose your personal changes and adjustments when
- updating to the latest <tt class="LITERAL">default.action</tt> file we
- <span class="emphasis"><i class="EMPHASIS">strongly
- recommend</i></span> that you use <tt class="LITERAL">user.action</tt>
- and <tt class="LITERAL">user.filter</tt> for your local customizations
- of <span class="APPLICATION">Privoxy</span>. See the <a href=
- "actions-file.html">Chapter on actions files</a> for details.</p>
+ <p>If you wish to receive an email notification whenever we release updates of <span class=
+ "APPLICATION">Privoxy</span> or the actions file, <a href=
+ "https://lists.privoxy.org/mailman/listinfo/privoxy-announce" target="_top">subscribe to our announce mailing
+ list</a>, privoxy-announce@lists.privoxy.org.</p>
+ <p>In order not to lose your personal changes and adjustments when updating to the latest <tt class=
+ "LITERAL">default.action</tt> file we <span class="emphasis"><i class="EMPHASIS">strongly recommend</i></span>
+ that you use <tt class="LITERAL">user.action</tt> and <tt class="LITERAL">user.filter</tt> for your local
+ customizations of <span class="APPLICATION">Privoxy</span>. See the <a href="actions-file.html">Chapter on
+ actions files</a> for details.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="introduction.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="whatsnew.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="introduction.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="whatsnew.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Introduction</td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top">What's New in this
- Release</td>
+ <td width="33%" align="right" valign="top">What's New in this Release</td>
</tr>
</table>
</div>
<html>
<head>
<title>Introduction</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
<link rel="PREVIOUS" title="Privoxy 3.0.27 User Manual" href="index.html">
<link rel="NEXT" title="Installation" href="installation.html">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="index.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="index.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "installation.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="installation.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="INTRODUCTION" id="INTRODUCTION">1.
- Introduction</a></h1>
- <p>This documentation is included with the current UNRELEASED version of
- <span class="APPLICATION">Privoxy</span>, 3.0.27, and is mostly complete
- at this point. The most up to date reference for the time being is still
- the comments in the source files and in the individual configuration
- files. Development of a new version is currently nearing completion, and
- includes significant changes and enhancements over earlier versions.</p>
- <p>Since this is a UNRELEASED version, not all new features are well
- tested. This documentation may be slightly out of sync as a result
- (especially with CVS sources). And there <span class="emphasis"><i class=
- "EMPHASIS">may be</i></span> bugs, though hopefully not many!</p>
+ <h1 class="SECT1"><a name="INTRODUCTION" id="INTRODUCTION">1. Introduction</a></h1>
+ <p>This documentation is included with the current UNRELEASED version of <span class="APPLICATION">Privoxy</span>,
+ 3.0.27, and is mostly complete at this point. The most up to date reference for the time being is still the
+ comments in the source files and in the individual configuration files. Development of a new version is currently
+ nearing completion, and includes significant changes and enhancements over earlier versions.</p>
+ <p>Since this is a UNRELEASED version, not all new features are well tested. This documentation may be slightly out
+ of sync as a result (especially with CVS sources). And there <span class="emphasis"><i class="EMPHASIS">may
+ be</i></span> bugs, though hopefully not many!</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="FEATURES" id="FEATURES">1.1.
- Features</a></h2>
- <p>In addition to the core features of ad blocking and <a href=
- "http://en.wikipedia.org/wiki/Browser_cookie" target="_top">cookie</a>
- management, <span class="APPLICATION">Privoxy</span> provides many
- supplemental features, some of them currently under development, that
- give the end-user more control, more privacy and more freedom:</p>
+ <h2 class="SECT2"><a name="FEATURES" id="FEATURES">1.1. Features</a></h2>
+ <p>In addition to the core features of ad blocking and <a href="http://en.wikipedia.org/wiki/Browser_cookie"
+ target="_top">cookie</a> management, <span class="APPLICATION">Privoxy</span> provides many supplemental
+ features, some of them currently under development, that give the end-user more control, more privacy and more
+ freedom:</p>
<ul>
<li>
- <p>Supports "Connection: keep-alive". Outgoing connections can be
- kept alive independently from the client.</p>
+ <p>Supports "Connection: keep-alive". Outgoing connections can be kept alive independently from the
+ client.</p>
</li>
<li>
- <p>Supports IPv6, provided the operating system does so too, and
- the configure script detects it.</p>
+ <p>Supports IPv6, provided the operating system does so too, and the configure script detects it.</p>
</li>
<li>
- <p>Supports tagging which allows to change the behaviour based on
- client and server headers.</p>
+ <p>Supports tagging which allows to change the behaviour based on client and server headers.</p>
</li>
<li>
- <p>Can be run as an "intercepting" proxy, which obviates the need
- to configure browsers individually.</p>
+ <p>Can be run as an "intercepting" proxy, which obviates the need to configure browsers individually.</p>
</li>
<li>
- <p>Sophisticated actions and filters for manipulating both server
- and client headers.</p>
+ <p>Sophisticated actions and filters for manipulating both server and client headers.</p>
</li>
<li>
<p>Can be chained with other proxies.</p>
</li>
<li>
- <p>Integrated browser-based configuration and control utility at
- <a href="http://config.privoxy.org/" target=
- "_top">http://config.privoxy.org/</a> (shortcut: <a href=
- "http://p.p/" target="_top">http://p.p/</a>). Browser-based tracing
- of rule and filter effects. Remote toggling.</p>
+ <p>Integrated browser-based configuration and control utility at <a href="http://config.privoxy.org/" target=
+ "_top">http://config.privoxy.org/</a> (shortcut: <a href="http://p.p/" target="_top">http://p.p/</a>).
+ Browser-based tracing of rule and filter effects. Remote toggling.</p>
</li>
<li>
- <p>Web page filtering (text replacements, removes banners based on
- size, invisible <span class="QUOTE">"web-bugs"</span> and HTML
- annoyances, etc.)</p>
+ <p>Web page filtering (text replacements, removes banners based on size, invisible <span class=
+ "QUOTE">"web-bugs"</span> and HTML annoyances, etc.)</p>
</li>
<li>
- <p>Modularized configuration that allows for standard settings and
- user settings to reside in separate files, so that installing
- updated actions files won't overwrite individual user settings.</p>
+ <p>Modularized configuration that allows for standard settings and user settings to reside in separate files,
+ so that installing updated actions files won't overwrite individual user settings.</p>
</li>
<li>
- <p>Support for Perl Compatible Regular Expressions in the
- configuration files, and a more sophisticated and flexible
- configuration syntax.</p>
+ <p>Support for Perl Compatible Regular Expressions in the configuration files, and a more sophisticated and
+ flexible configuration syntax.</p>
</li>
<li>
<p>GIF de-animation.</p>
</li>
<li>
- <p>Bypass many click-tracking scripts (avoids script
- redirection).</p>
+ <p>Bypass many click-tracking scripts (avoids script redirection).</p>
</li>
<li>
- <p>User-customizable HTML templates for most proxy-generated pages
- (e.g. "blocked" page).</p>
+ <p>User-customizable HTML templates for most proxy-generated pages (e.g. "blocked" page).</p>
</li>
<li>
<p>Auto-detection and re-reading of config file changes.</p>
</li>
<li>
- <p>Most features are controllable on a per-site or per-location
- basis.</p>
+ <p>Most features are controllable on a per-site or per-location basis.</p>
</li>
<li>
- <p>Many smaller new features added, limitations and bugs
- removed.</p>
+ <p>Many smaller new features added, limitations and bugs removed.</p>
</li>
</ul>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="index.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href=
- "installation.html" accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="index.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="installation.html" accesskey="N">Next</a></td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">Privoxy 3.0.27 User
- Manual</td>
+ <td width="33%" align="left" valign="top">Privoxy 3.0.27 User Manual</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">Installation</td>
</tr>
<html>
<head>
<title>Quickstart to Using Privoxy</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
- <link rel="PREVIOUS" title="What's New in this Release" href=
- "whatsnew.html">
+ <link rel="PREVIOUS" title="What's New in this Release" href="whatsnew.html">
<link rel="NEXT" title="Starting Privoxy" href="startup.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="whatsnew.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="whatsnew.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="startup.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="startup.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="QUICKSTART" id="QUICKSTART">4. Quickstart to
- Using Privoxy</a></h1>
+ <h1 class="SECT1"><a name="QUICKSTART" id="QUICKSTART">4. Quickstart to Using Privoxy</a></h1>
<ul>
<li>
- <p>Install <span class="APPLICATION">Privoxy</span>. See the <a href=
- "installation.html">Installation Section</a> below for platform
- specific information.</p>
+ <p>Install <span class="APPLICATION">Privoxy</span>. See the <a href="installation.html">Installation
+ Section</a> below for platform specific information.</p>
</li>
<li>
- <p>Advanced users and those who want to offer <span class=
- "APPLICATION">Privoxy</span> service to more than just their local
- machine should check the <a href="config.html">main config file</a>,
- especially the <a href=
- "config.html#ACCESS-CONTROL">security-relevant</a> options. These are
- off by default.</p>
+ <p>Advanced users and those who want to offer <span class="APPLICATION">Privoxy</span> service to more than
+ just their local machine should check the <a href="config.html">main config file</a>, especially the <a href=
+ "config.html#ACCESS-CONTROL">security-relevant</a> options. These are off by default.</p>
</li>
<li>
- <p>Start <span class="APPLICATION">Privoxy</span>, if the
- installation program has not done this already (may vary according to
- platform). See the section <a href="startup.html">Starting
- <span class="APPLICATION">Privoxy</span></a>.</p>
+ <p>Start <span class="APPLICATION">Privoxy</span>, if the installation program has not done this already (may
+ vary according to platform). See the section <a href="startup.html">Starting <span class=
+ "APPLICATION">Privoxy</span></a>.</p>
</li>
<li>
- <p>Set your browser to use <span class="APPLICATION">Privoxy</span>
- as HTTP and HTTPS (SSL) <a href=
- "http://en.wikipedia.org/wiki/Proxy_server" target="_top">proxy</a>
- by setting the proxy configuration for address of <tt class=
- "LITERAL">127.0.0.1</tt> and port <tt class="LITERAL">8118</tt>.
- <span class="emphasis"><i class="EMPHASIS">DO NOT</i></span> activate
- proxying for <tt class="LITERAL">FTP</tt> or any protocols besides
- HTTP and HTTPS (SSL) unless you intend to prevent your browser from
- using these protocols.</p>
+ <p>Set your browser to use <span class="APPLICATION">Privoxy</span> as HTTP and HTTPS (SSL) <a href=
+ "http://en.wikipedia.org/wiki/Proxy_server" target="_top">proxy</a> by setting the proxy configuration for
+ address of <tt class="LITERAL">127.0.0.1</tt> and port <tt class="LITERAL">8118</tt>. <span class=
+ "emphasis"><i class="EMPHASIS">DO NOT</i></span> activate proxying for <tt class="LITERAL">FTP</tt> or any
+ protocols besides HTTP and HTTPS (SSL) unless you intend to prevent your browser from using these
+ protocols.</p>
</li>
<li>
- <p>Flush your browser's disk and memory caches, to remove any cached
- ad images. If using <span class="APPLICATION">Privoxy</span> to
- manage <a href="http://en.wikipedia.org/wiki/Browser_cookie" target=
- "_top">cookies</a>, you should remove any currently stored cookies
- too.</p>
+ <p>Flush your browser's disk and memory caches, to remove any cached ad images. If using <span class=
+ "APPLICATION">Privoxy</span> to manage <a href="http://en.wikipedia.org/wiki/Browser_cookie" target=
+ "_top">cookies</a>, you should remove any currently stored cookies too.</p>
</li>
<li>
- <p>A default installation should provide a reasonable starting point
- for most. There will undoubtedly be occasions where you will want to
- adjust the configuration, but that can be dealt with as the need
- arises. Little to no initial configuration is required in most cases,
- you may want to enable the <a href="config.html#ENABLE-EDIT-ACTIONS"
- target="_top">web-based action editor</a> though. Be sure to read the
+ <p>A default installation should provide a reasonable starting point for most. There will undoubtedly be
+ occasions where you will want to adjust the configuration, but that can be dealt with as the need arises.
+ Little to no initial configuration is required in most cases, you may want to enable the <a href=
+ "config.html#ENABLE-EDIT-ACTIONS" target="_top">web-based action editor</a> though. Be sure to read the
warnings first.</p>
- <p>See the <a href="configuration.html">Configuration section</a> for
- more configuration options, and how to customize your installation.
- You might also want to look at the <a href=
- "quickstart.html#QUICKSTART-AD-BLOCKING">next section</a> for a quick
- introduction to how <span class="APPLICATION">Privoxy</span> blocks
- ads and banners.</p>
+ <p>See the <a href="configuration.html">Configuration section</a> for more configuration options, and how to
+ customize your installation. You might also want to look at the <a href=
+ "quickstart.html#QUICKSTART-AD-BLOCKING">next section</a> for a quick introduction to how <span class=
+ "APPLICATION">Privoxy</span> blocks ads and banners.</p>
</li>
<li>
- <p>If you experience ads that slip through, innocent images that are
- blocked, or otherwise feel the need to fine-tune <span class=
- "APPLICATION">Privoxy's</span> behavior, take a look at the <a href=
- "actions-file.html">actions files</a>. As a quick start, you might
- find the <a href="actions-file.html#ACT-EXAMPLES">richly commented
- examples</a> helpful. You can also view and edit the actions files
- through the <a href="http://config.privoxy.org" target=
- "_top">web-based user interface</a>. The Appendix <span class=
- "QUOTE">"<a href="appendix.html#ACTIONSANAT">Troubleshooting: Anatomy
- of an Action</a>"</span> has hints on how to understand and debug
- actions that <span class="QUOTE">"misbehave"</span>.</p>
+ <p>If you experience ads that slip through, innocent images that are blocked, or otherwise feel the need to
+ fine-tune <span class="APPLICATION">Privoxy's</span> behavior, take a look at the <a href=
+ "actions-file.html">actions files</a>. As a quick start, you might find the <a href=
+ "actions-file.html#ACT-EXAMPLES">richly commented examples</a> helpful. You can also view and edit the actions
+ files through the <a href="http://config.privoxy.org" target="_top">web-based user interface</a>. The Appendix
+ <span class="QUOTE">"<a href="appendix.html#ACTIONSANAT">Troubleshooting: Anatomy of an Action</a>"</span> has
+ hints on how to understand and debug actions that <span class="QUOTE">"misbehave"</span>.</p>
</li>
<li>
- <p>Please see the section <a href="contact.html">Contacting the
- Developers</a> on how to report bugs, problems with websites or to
- get help.</p>
+ <p>Please see the section <a href="contact.html">Contacting the Developers</a> on how to report bugs, problems
+ with websites or to get help.</p>
</li>
<li>
<p>Now enjoy surfing with enhanced control, comfort and privacy!</p>
</li>
</ul>
<div class="SECT2">
- <h2 class="SECT2"><a name="QUICKSTART-AD-BLOCKING" id=
- "QUICKSTART-AD-BLOCKING">4.1. Quickstart to Ad Blocking</a></h2>
- <p>Ad blocking is but one of <span class="APPLICATION">Privoxy's</span>
- array of features. Many of these features are for the technically
- minded advanced user. But, ad and banner blocking is surely common
- ground for everybody.</p>
- <p>This section will provide a quick summary of ad blocking so you can
- get up to speed quickly without having to read the more extensive
- information provided below, though this is highly recommended.</p>
- <p>First a bit of a warning ... blocking ads is much like blocking
- SPAM: the more aggressive you are about it, the more likely you are to
- block things that were not intended. And the more likely that some
- things may not work as intended. So there is a trade off here. If you
- want extreme ad free browsing, be prepared to deal with more
- <span class="QUOTE">"problem"</span> sites, and to spend more time
- adjusting the configuration to solve these unintended consequences. In
- short, there is not an easy way to eliminate <span class=
- "emphasis"><i class="EMPHASIS">all</i></span> ads. Either take the easy
- way and settle for <span class="emphasis"><i class=
- "EMPHASIS">most</i></span> ads blocked with the default configuration,
- or jump in and tweak it for your personal surfing habits and
- preferences.</p>
- <p>Secondly, a brief explanation of <span class=
- "APPLICATION">Privoxy's</span> <span class="QUOTE">"actions"</span>.
- <span class="QUOTE">"Actions"</span> in this context, are the
- directives we use to tell <span class="APPLICATION">Privoxy</span> to
- perform some task relating to HTTP transactions (i.e. web browsing). We
- tell <span class="APPLICATION">Privoxy</span> to take some <span class=
- "QUOTE">"action"</span>. Each action has a unique name and function.
- While there are many potential <span class="APPLICATION">actions</span>
- in <span class="APPLICATION">Privoxy's</span> arsenal, only a few are
- used for ad blocking. <a href="actions-file.html#ACTIONS">Actions</a>,
- and <a href="actions-file.html">action configuration files</a>, are
+ <h2 class="SECT2"><a name="QUICKSTART-AD-BLOCKING" id="QUICKSTART-AD-BLOCKING">4.1. Quickstart to Ad
+ Blocking</a></h2>
+ <p>Ad blocking is but one of <span class="APPLICATION">Privoxy's</span> array of features. Many of these features
+ are for the technically minded advanced user. But, ad and banner blocking is surely common ground for
+ everybody.</p>
+ <p>This section will provide a quick summary of ad blocking so you can get up to speed quickly without having to
+ read the more extensive information provided below, though this is highly recommended.</p>
+ <p>First a bit of a warning ... blocking ads is much like blocking SPAM: the more aggressive you are about it,
+ the more likely you are to block things that were not intended. And the more likely that some things may not work
+ as intended. So there is a trade off here. If you want extreme ad free browsing, be prepared to deal with more
+ <span class="QUOTE">"problem"</span> sites, and to spend more time adjusting the configuration to solve these
+ unintended consequences. In short, there is not an easy way to eliminate <span class="emphasis"><i class=
+ "EMPHASIS">all</i></span> ads. Either take the easy way and settle for <span class="emphasis"><i class=
+ "EMPHASIS">most</i></span> ads blocked with the default configuration, or jump in and tweak it for your personal
+ surfing habits and preferences.</p>
+ <p>Secondly, a brief explanation of <span class="APPLICATION">Privoxy's</span> <span class=
+ "QUOTE">"actions"</span>. <span class="QUOTE">"Actions"</span> in this context, are the directives we use to tell
+ <span class="APPLICATION">Privoxy</span> to perform some task relating to HTTP transactions (i.e. web browsing).
+ We tell <span class="APPLICATION">Privoxy</span> to take some <span class="QUOTE">"action"</span>. Each action
+ has a unique name and function. While there are many potential <span class="APPLICATION">actions</span> in
+ <span class="APPLICATION">Privoxy's</span> arsenal, only a few are used for ad blocking. <a href=
+ "actions-file.html#ACTIONS">Actions</a>, and <a href="actions-file.html">action configuration files</a>, are
explained in depth below.</p>
- <p>Actions are specified in <span class="APPLICATION">Privoxy's</span>
- configuration, followed by one or more URLs to which the action should
- apply. URLs can actually be URL type <a href=
- "actions-file.html#AF-PATTERNS">patterns</a> that use wildcards so they
- can apply potentially to a range of similar URLs. The actions, together
- with the URL patterns are called a section.</p>
- <p>When you connect to a website, the full URL will either match one or
- more of the sections as defined in <span class=
- "APPLICATION">Privoxy's</span> configuration, or not. If so, then
- <span class="APPLICATION">Privoxy</span> will perform the respective
- actions. If not, then nothing special happens. Furthermore, web pages
- may contain embedded, secondary URLs that your web browser will use to
- load additional components of the page, as it parses the original
- page's HTML content. An ad image for instance, is just an URL embedded
- in the page somewhere. The image itself may be on the same server, or a
- server somewhere else on the Internet. Complex web pages will have many
- such embedded URLs. <span class="APPLICATION">Privoxy</span> can deal
- with each URL individually, so, for instance, the main page text is not
- touched, but images from such-and-such server are blocked.</p>
- <p>The most important actions for basic ad blocking are: <tt class=
- "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt>, <tt class=
- "LITERAL"><a href=
- "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>,
- <tt class="LITERAL"><a href=
- "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></tt>,and
- <tt class="LITERAL"><a href=
+ <p>Actions are specified in <span class="APPLICATION">Privoxy's</span> configuration, followed by one or more
+ URLs to which the action should apply. URLs can actually be URL type <a href=
+ "actions-file.html#AF-PATTERNS">patterns</a> that use wildcards so they can apply potentially to a range of
+ similar URLs. The actions, together with the URL patterns are called a section.</p>
+ <p>When you connect to a website, the full URL will either match one or more of the sections as defined in
+ <span class="APPLICATION">Privoxy's</span> configuration, or not. If so, then <span class=
+ "APPLICATION">Privoxy</span> will perform the respective actions. If not, then nothing special happens.
+ Furthermore, web pages may contain embedded, secondary URLs that your web browser will use to load additional
+ components of the page, as it parses the original page's HTML content. An ad image for instance, is just an URL
+ embedded in the page somewhere. The image itself may be on the same server, or a server somewhere else on the
+ Internet. Complex web pages will have many such embedded URLs. <span class="APPLICATION">Privoxy</span> can deal
+ with each URL individually, so, for instance, the main page text is not touched, but images from such-and-such
+ server are blocked.</p>
+ <p>The most important actions for basic ad blocking are: <tt class="LITERAL"><a href=
+ "actions-file.html#BLOCK">block</a></tt>, <tt class="LITERAL"><a href=
+ "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>, <tt class="LITERAL"><a href=
+ "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></tt>,and <tt class="LITERAL"><a href=
"actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt>:</p>
<ul>
<li>
- <p><tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> - this is perhaps the
- single most used action, and is particularly important for ad
- blocking. This action stops any contact between your browser and
- any URL patterns that match this action's configuration. It can be
- used for blocking ads, but also anything that is determined to be
- unwanted. By itself, it simply stops any communication with the
- remote server and sends <span class="APPLICATION">Privoxy</span>'s
- own built-in BLOCKED page instead to let you now what has happened
- (with some exceptions, see below).</p>
+ <p><tt class="LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> - this is perhaps the single most
+ used action, and is particularly important for ad blocking. This action stops any contact between your
+ browser and any URL patterns that match this action's configuration. It can be used for blocking ads, but
+ also anything that is determined to be unwanted. By itself, it simply stops any communication with the remote
+ server and sends <span class="APPLICATION">Privoxy</span>'s own built-in BLOCKED page instead to let you now
+ what has happened (with some exceptions, see below).</p>
</li>
<li>
- <p><tt class="LITERAL"><a href=
- "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> -
- tells <span class="APPLICATION">Privoxy</span> to treat this URL as
- an image. <span class="APPLICATION">Privoxy</span>'s default
- configuration already does this for all common image types (e.g.
- GIF), but there are many situations where this is not so easy to
- determine. So we'll force it in these cases. This is particularly
- important for ad blocking, since only if we know that it's an image
- of some kind, can we replace it with an image of our choosing,
- instead of the <span class="APPLICATION">Privoxy</span> BLOCKED
- page (which would only result in a <span class="QUOTE">"broken
- image"</span> icon). There are some limitations to this though. For
- instance, you can't just brute-force an image substitution for an
- entire HTML page in most situations.</p>
+ <p><tt class="LITERAL"><a href="actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> - tells
+ <span class="APPLICATION">Privoxy</span> to treat this URL as an image. <span class=
+ "APPLICATION">Privoxy</span>'s default configuration already does this for all common image types (e.g. GIF),
+ but there are many situations where this is not so easy to determine. So we'll force it in these cases. This
+ is particularly important for ad blocking, since only if we know that it's an image of some kind, can we
+ replace it with an image of our choosing, instead of the <span class="APPLICATION">Privoxy</span> BLOCKED
+ page (which would only result in a <span class="QUOTE">"broken image"</span> icon). There are some
+ limitations to this though. For instance, you can't just brute-force an image substitution for an entire HTML
+ page in most situations.</p>
</li>
<li>
- <p><tt class="LITERAL"><a href=
- "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></tt>
- - sends an empty document instead of <span class=
- "APPLICATION">Privoxy's</span> normal BLOCKED HTML page. This is
- useful for file types that are neither HTML nor images, such as
- blocking JavaScript files.</p>
+ <p><tt class="LITERAL"><a href="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></tt>
+ - sends an empty document instead of <span class="APPLICATION">Privoxy's</span> normal BLOCKED HTML page.
+ This is useful for file types that are neither HTML nor images, such as blocking JavaScript files.</p>
</li>
<li>
- <p><tt class="LITERAL"><a href=
- "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt> -
- tells <span class="APPLICATION">Privoxy</span> what to display in
- place of an ad image that has hit a block rule. For this to come
- into play, the URL must match a <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> action somewhere in the
- configuration, <span class="emphasis"><i class=
- "EMPHASIS">and</i></span>, it must also match an <tt class=
- "LITERAL"><a href=
- "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>
- action.</p>
- <p>The configuration options on what to display instead of the ad
- are:</p>
+ <p><tt class="LITERAL"><a href="actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt> - tells
+ <span class="APPLICATION">Privoxy</span> what to display in place of an ad image that has hit a block rule.
+ For this to come into play, the URL must match a <tt class="LITERAL"><a href=
+ "actions-file.html#BLOCK">block</a></tt> action somewhere in the configuration, <span class=
+ "emphasis"><i class="EMPHASIS">and</i></span>, it must also match an <tt class="LITERAL"><a href=
+ "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> action.</p>
+ <p>The configuration options on what to display instead of the ad are:</p>
<table border="0">
<tbody>
<tr>
- <td>���<span class="emphasis"><i class=
- "EMPHASIS">pattern</i></span> - a checkerboard pattern, so
- that an ad replacement is obvious. This is the default.</td>
+ <td>���<span class="emphasis"><i class="EMPHASIS">pattern</i></span> - a checkerboard pattern, so that
+ an ad replacement is obvious. This is the default.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td>���<span class="emphasis"><i class=
- "EMPHASIS">blank</i></span> - A very small empty GIF image is
- displayed. This is the so-called <span class=
- "QUOTE">"invisible"</span> configuration option.</td>
+ <td>���<span class="emphasis"><i class="EMPHASIS">blank</i></span> - A very small empty GIF image is
+ displayed. This is the so-called <span class="QUOTE">"invisible"</span> configuration option.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td>���<span class="emphasis"><i class=
- "EMPHASIS">http://<URL></i></span> - A redirect to any
+ <td>���<span class="emphasis"><i class="EMPHASIS">http://<URL></i></span> - A redirect to any
image anywhere of the user's choosing (advanced usage).</td>
</tr>
</tbody>
</table>
</li>
</ul>
- <p>Advanced users will eventually want to explore <span class=
- "APPLICATION">Privoxy</span> <tt class="LITERAL"><a href=
- "actions-file.html#FILTER">filters</a></tt> as well. Filters are very
- different from <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">blocks</a></tt>. A <span class=
- "QUOTE">"block"</span> blocks a site, page, or unwanted contented.
- Filters are a way of filtering or modifying what is actually on the
- page. An example filter usage: a text replacement of <span class=
- "QUOTE">"no-no"</span> for <span class="QUOTE">"nasty-word"</span>.
- That is a very simple example. This process can be used for ad
- blocking, but it is more in the realm of advanced usage and has some
- pitfalls to be wary off.</p>
- <p>The quickest way to adjust any of these settings is with your
- browser through the special <span class="APPLICATION">Privoxy</span>
- editor at <a href="http://config.privoxy.org/show-status" target=
- "_top">http://config.privoxy.org/show-status</a> (shortcut: <a href=
- "http://p.p/" target="_top">http://p.p/show-status</a>). This is an
- internal page, and does not require Internet access.</p>
- <p>Note that as of <span class="APPLICATION">Privoxy</span> 3.0.7 beta
- the action editor is disabled by default. Check the <a href=
- "config.html#ENABLE-EDIT-ACTIONS" target="_top">enable-edit-actions
- section in the configuration file</a> to learn why and in which cases
- it's safe to enable again.</p>
- <p>If you decided to enable the action editor, select the appropriate
- <span class="QUOTE">"actions"</span> file, and click <span class=
- "QUOTE">"<span class="GUIBUTTON">Edit</span>"</span>. It is best to put
- personal or local preferences in <tt class="FILENAME">user.action</tt>
- since this is not meant to be overwritten during upgrades, and will
- over-ride the settings in other files. Here you can insert new
- <span class="QUOTE">"actions"</span>, and URLs for ad blocking or other
- purposes, and make other adjustments to the configuration. <span class=
- "APPLICATION">Privoxy</span> will detect these changes
- automatically.</p>
+ <p>Advanced users will eventually want to explore <span class="APPLICATION">Privoxy</span> <tt class=
+ "LITERAL"><a href="actions-file.html#FILTER">filters</a></tt> as well. Filters are very different from <tt class=
+ "LITERAL"><a href="actions-file.html#BLOCK">blocks</a></tt>. A <span class="QUOTE">"block"</span> blocks a site,
+ page, or unwanted contented. Filters are a way of filtering or modifying what is actually on the page. An example
+ filter usage: a text replacement of <span class="QUOTE">"no-no"</span> for <span class=
+ "QUOTE">"nasty-word"</span>. That is a very simple example. This process can be used for ad blocking, but it is
+ more in the realm of advanced usage and has some pitfalls to be wary off.</p>
+ <p>The quickest way to adjust any of these settings is with your browser through the special <span class=
+ "APPLICATION">Privoxy</span> editor at <a href="http://config.privoxy.org/show-status" target=
+ "_top">http://config.privoxy.org/show-status</a> (shortcut: <a href="http://p.p/" target=
+ "_top">http://p.p/show-status</a>). This is an internal page, and does not require Internet access.</p>
+ <p>Note that as of <span class="APPLICATION">Privoxy</span> 3.0.7 beta the action editor is disabled by default.
+ Check the <a href="config.html#ENABLE-EDIT-ACTIONS" target="_top">enable-edit-actions section in the
+ configuration file</a> to learn why and in which cases it's safe to enable again.</p>
+ <p>If you decided to enable the action editor, select the appropriate <span class="QUOTE">"actions"</span> file,
+ and click <span class="QUOTE">"<span class="GUIBUTTON">Edit</span>"</span>. It is best to put personal or local
+ preferences in <tt class="FILENAME">user.action</tt> since this is not meant to be overwritten during upgrades,
+ and will over-ride the settings in other files. Here you can insert new <span class="QUOTE">"actions"</span>, and
+ URLs for ad blocking or other purposes, and make other adjustments to the configuration. <span class=
+ "APPLICATION">Privoxy</span> will detect these changes automatically.</p>
<p>A quick and simple step by step example:</p>
<ul>
<li>
- <p>Right click on the ad image to be blocked, then select
- <span class="QUOTE">"<span class="GUIMENUITEM">Copy Link
- Location</span>"</span> from the pop-up menu.</p>
+ <p>Right click on the ad image to be blocked, then select <span class="QUOTE">"<span class="GUIMENUITEM">Copy
+ Link Location</span>"</span> from the pop-up menu.</p>
</li>
<li>
- <p>Set your browser to <a href=
- "http://config.privoxy.org/show-status" target=
+ <p>Set your browser to <a href="http://config.privoxy.org/show-status" target=
"_top">http://config.privoxy.org/show-status</a></p>
</li>
<li>
- <p>Find <tt class="FILENAME">user.action</tt> in the top section,
- and click on <span class="QUOTE">"<span class=
- "GUIBUTTON">Edit</span>"</span>:</p>
+ <p>Find <tt class="FILENAME">user.action</tt> in the top section, and click on <span class=
+ "QUOTE">"<span class="GUIBUTTON">Edit</span>"</span>:</p>
<div class="FIGURE">
<a name="AEN657" id="AEN657"></a>
<p><b>Figure 1. Actions Files in Use</b></p>
</div>
</li>
<li>
- <p>You should have a section with only <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> listed under <span class=
- "QUOTE">"Actions:"</span>. If not, click a <span class=
- "QUOTE">"<span class="GUIBUTTON">Insert new section
- below</span>"</span> button, and in the new section that just
- appeared, click the <span class="GUIBUTTON">Edit</span> button
- right under the word <span class="QUOTE">"Actions:"</span>. This
- will bring up a list of all actions. Find <tt class=
- "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> near the
- top, and click in the <span class="QUOTE">"Enabled"</span> column,
- then <span class="QUOTE">"<span class=
- "GUIBUTTON">Submit</span>"</span> just below the list.</p>
+ <p>You should have a section with only <tt class="LITERAL"><a href="actions-file.html#BLOCK">block</a></tt>
+ listed under <span class="QUOTE">"Actions:"</span>. If not, click a <span class="QUOTE">"<span class=
+ "GUIBUTTON">Insert new section below</span>"</span> button, and in the new section that just appeared, click
+ the <span class="GUIBUTTON">Edit</span> button right under the word <span class="QUOTE">"Actions:"</span>.
+ This will bring up a list of all actions. Find <tt class="LITERAL"><a href=
+ "actions-file.html#BLOCK">block</a></tt> near the top, and click in the <span class="QUOTE">"Enabled"</span>
+ column, then <span class="QUOTE">"<span class="GUIBUTTON">Submit</span>"</span> just below the list.</p>
</li>
<li>
- <p>Now, in the <tt class="LITERAL"><a href=
- "actions-file.html#BLOCK">block</a></tt> actions section, click the
- <span class="QUOTE">"<span class="GUIBUTTON">Add</span>"</span>
- button, and paste the URL the browser got from <span class=
- "QUOTE">"<span class="GUIMENUITEM">Copy Link
- Location</span>"</span>. Remove the <tt class=
- "LITERAL">http://</tt> at the beginning of the URL. Then, click
- <span class="QUOTE">"<span class="GUIBUTTON">Submit</span>"</span>
- (or <span class="QUOTE">"<span class="GUIBUTTON">OK</span>"</span>
- if in a pop-up window).</p>
+ <p>Now, in the <tt class="LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> actions section, click
+ the <span class="QUOTE">"<span class="GUIBUTTON">Add</span>"</span> button, and paste the URL the browser got
+ from <span class="QUOTE">"<span class="GUIMENUITEM">Copy Link Location</span>"</span>. Remove the <tt class=
+ "LITERAL">http://</tt> at the beginning of the URL. Then, click <span class="QUOTE">"<span class=
+ "GUIBUTTON">Submit</span>"</span> (or <span class="QUOTE">"<span class="GUIBUTTON">OK</span>"</span> if in a
+ pop-up window).</p>
</li>
<li>
- <p>Now go back to the original page, and press <b class=
- "KEYCAP">SHIFT-Reload</b> (or flush all browser caches). The image
- should be gone now.</p>
+ <p>Now go back to the original page, and press <b class="KEYCAP">SHIFT-Reload</b> (or flush all browser
+ caches). The image should be gone now.</p>
</li>
</ul>
- <p>This is a very crude and simple example. There might be good reasons
- to use a wildcard pattern match to include potentially similar images
- from the same site. For a more extensive explanation of <span class=
- "QUOTE">"patterns"</span>, and the entire actions concept, see <a href=
- "actions-file.html">the Actions section</a>.</p>
- <p>For advanced users who want to hand edit their config files, you
- might want to now go to the <a href=
- "actions-file.html#ACT-EXAMPLES">Actions Files Tutorial</a>. The ideas
- explained therein also apply to the web-based editor.</p>
- <p>There are also various <a href=
- "actions-file.html#FILTER">filters</a> that can be used for ad blocking
- (filters are a special subset of actions). These fall into the
- <span class="QUOTE">"advanced"</span> usage category, and are explained
- in depth in later sections.</p>
+ <p>This is a very crude and simple example. There might be good reasons to use a wildcard pattern match to
+ include potentially similar images from the same site. For a more extensive explanation of <span class=
+ "QUOTE">"patterns"</span>, and the entire actions concept, see <a href="actions-file.html">the Actions
+ section</a>.</p>
+ <p>For advanced users who want to hand edit their config files, you might want to now go to the <a href=
+ "actions-file.html#ACT-EXAMPLES">Actions Files Tutorial</a>. The ideas explained therein also apply to the
+ web-based editor.</p>
+ <p>There are also various <a href="actions-file.html#FILTER">filters</a> that can be used for ad blocking
+ (filters are a special subset of actions). These fall into the <span class="QUOTE">"advanced"</span> usage
+ category, and are explained in depth in later sections.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="whatsnew.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="startup.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="whatsnew.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="startup.html" accesskey="N">Next</a></td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">What's New in this
- Release</td>
+ <td width="33%" align="left" valign="top">What's New in this Release</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">Starting Privoxy</td>
</tr>
<html>
<head>
<title>See Also</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
- <link rel="PREVIOUS" title="Privoxy Copyright, License and History" href=
- "copyright.html">
+ <link rel="PREVIOUS" title="Privoxy Copyright, License and History" href="copyright.html">
<link rel="NEXT" title="Appendix" href="appendix.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href="copyright.html"
- accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="copyright.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="appendix.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="appendix.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
<h1 class="SECT1"><a name="SEEALSO" id="SEEALSO">13. See Also</a></h1>
- <p>Other references and sites of interest to <span class=
- "APPLICATION">Privoxy</span> users:</p>
+ <p>Other references and sites of interest to <span class="APPLICATION">Privoxy</span> users:</p>
<table border="0">
<tbody>
<tr>
- <td><a href="https://www.privoxy.org/" target=
- "_top">https://www.privoxy.org/</a>, the <span class=
+ <td><a href="https://www.privoxy.org/" target="_top">https://www.privoxy.org/</a>, the <span class=
"APPLICATION">Privoxy</span> Home page.</td>
</tr>
</tbody>
<table border="0">
<tbody>
<tr>
- <td><a href="https://www.privoxy.org/faq/" target=
- "_top">https://www.privoxy.org/faq/</a>, the <span class=
+ <td><a href="https://www.privoxy.org/faq/" target="_top">https://www.privoxy.org/faq/</a>, the <span class=
"APPLICATION">Privoxy</span> FAQ.</td>
</tr>
</tbody>
<tbody>
<tr>
<td><a href="https://www.privoxy.org/developer-manual/" target=
- "_top">https://www.privoxy.org/developer-manual/</a>, the
- <span class="APPLICATION">Privoxy</span> developer manual.</td>
+ "_top">https://www.privoxy.org/developer-manual/</a>, the <span class="APPLICATION">Privoxy</span> developer
+ manual.</td>
</tr>
</tbody>
</table>
<tbody>
<tr>
<td><a href="https://sourceforge.net/projects/ijbswa/" target=
- "_top">https://sourceforge.net/projects/ijbswa/</a>, the Project
- Page for <span class="APPLICATION">Privoxy</span> on <a href=
- "http://sourceforge.net" target="_top">SourceForge</a>.</td>
+ "_top">https://sourceforge.net/projects/ijbswa/</a>, the Project Page for <span class=
+ "APPLICATION">Privoxy</span> on <a href="http://sourceforge.net" target="_top">SourceForge</a>.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><a href="http://config.privoxy.org/" target=
- "_top">http://config.privoxy.org/</a>, the web-based user
- interface. <span class="APPLICATION">Privoxy</span> must be running
- for this to work. Shortcut: <a href="http://p.p/" target=
- "_top">http://p.p/</a></td>
+ <td><a href="http://config.privoxy.org/" target="_top">http://config.privoxy.org/</a>, the web-based user
+ interface. <span class="APPLICATION">Privoxy</span> must be running for this to work. Shortcut: <a href=
+ "http://p.p/" target="_top">http://p.p/</a></td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><a href=
- "https://sourceforge.net/tracker/?group_id=11118&atid=460288"
- target=
- "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>,
- to submit <span class="QUOTE">"misses"</span> and other
- configuration related suggestions to the developers.</td>
+ <td><a href="https://sourceforge.net/tracker/?group_id=11118&atid=460288" target=
+ "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>, to submit <span class=
+ "QUOTE">"misses"</span> and other configuration related suggestions to the developers.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><a href="http://www.squid-cache.org/" target=
- "_top">http://www.squid-cache.org/</a>, a popular caching proxy,
- which is often used together with <span class=
- "APPLICATION">Privoxy</span>.</td>
+ <td><a href="http://www.squid-cache.org/" target="_top">http://www.squid-cache.org/</a>, a popular caching
+ proxy, which is often used together with <span class="APPLICATION">Privoxy</span>.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><a href=
- "http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/"
- target="_top">http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/</a>,
- <span class="APPLICATION">Polipo</span> is a caching proxy with
- advanced features like pipelining, multiplexing and caching of
- partial instances. In many setups it can be used as <span class=
- "APPLICATION">Squid</span> replacement.</td>
+ <td><a href="http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/" target=
+ "_top">http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/</a>, <span class=
+ "APPLICATION">Polipo</span> is a caching proxy with advanced features like pipelining, multiplexing and
+ caching of partial instances. In many setups it can be used as <span class="APPLICATION">Squid</span>
+ replacement.</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
- <td><a href="https://www.torproject.org/" target=
- "_top">https://www.torproject.org/</a>, <span class=
- "APPLICATION">Tor</span> can help anonymize web browsing, web
- publishing, instant messaging, IRC, SSH, and other
- applications.</td>
+ <td><a href="https://www.torproject.org/" target="_top">https://www.torproject.org/</a>, <span class=
+ "APPLICATION">Tor</span> can help anonymize web browsing, web publishing, instant messaging, IRC, SSH, and
+ other applications.</td>
</tr>
</tbody>
</table>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="copyright.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="appendix.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="copyright.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="appendix.html" accesskey="N">Next</a></td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">Privoxy Copyright, License
- and History</td>
+ <td width="33%" align="left" valign="top">Privoxy Copyright, License and History</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">Appendix</td>
</tr>
<html>
<head>
<title>Starting Privoxy</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
- <link rel="PREVIOUS" title="Quickstart to Using Privoxy" href=
- "quickstart.html">
+ <link rel="PREVIOUS" title="Quickstart to Using Privoxy" href="quickstart.html">
<link rel="NEXT" title="Privoxy Configuration" href="configuration.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "quickstart.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="quickstart.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "configuration.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="configuration.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="STARTUP" id="STARTUP">5. Starting
- Privoxy</a></h1>
- <p>Before launching <span class="APPLICATION">Privoxy</span> for the
- first time, you will want to configure your browser(s) to use
- <span class="APPLICATION">Privoxy</span> as a HTTP and HTTPS (SSL)
- <a href="http://en.wikipedia.org/wiki/Proxy_server" target=
- "_top">proxy</a>. The default is 127.0.0.1 (or localhost) for the proxy
- address, and port 8118 (earlier versions used port 8000). This is the one
- configuration step <span class="emphasis"><i class="EMPHASIS">that must
- be done</i></span>!</p>
- <p>Please note that <span class="APPLICATION">Privoxy</span> can only
- proxy HTTP and HTTPS traffic. It will not work with FTP or other
- protocols.</p>
+ <h1 class="SECT1"><a name="STARTUP" id="STARTUP">5. Starting Privoxy</a></h1>
+ <p>Before launching <span class="APPLICATION">Privoxy</span> for the first time, you will want to configure your
+ browser(s) to use <span class="APPLICATION">Privoxy</span> as a HTTP and HTTPS (SSL) <a href=
+ "http://en.wikipedia.org/wiki/Proxy_server" target="_top">proxy</a>. The default is 127.0.0.1 (or localhost) for
+ the proxy address, and port 8118 (earlier versions used port 8000). This is the one configuration step <span class=
+ "emphasis"><i class="EMPHASIS">that must be done</i></span>!</p>
+ <p>Please note that <span class="APPLICATION">Privoxy</span> can only proxy HTTP and HTTPS traffic. It will not
+ work with FTP or other protocols.</p>
<div class="FIGURE">
<a name="AEN712" id="AEN712"></a>
- <p><b>Figure 2. Proxy Configuration Showing Mozilla/Netscape HTTP and
- HTTPS (SSL) Settings</b></p>
+ <p><b>Figure 2. Proxy Configuration Showing Mozilla/Netscape HTTP and HTTPS (SSL) Settings</b></p>
<div class="MEDIAOBJECT">
<p><img src="proxy_setup.jpg"></p>
</div>
</div>
- <p>With <span class="APPLICATION">Firefox</span>, this is typically set
- under:</p>
- <p class="LITERALLAYOUT"> <span class=
- "GUIBUTTON">Tools</span> -> <span class=
+ <p>With <span class="APPLICATION">Firefox</span>, this is typically set under:</p>
+ <p class="LITERALLAYOUT"> <span class="GUIBUTTON">Tools</span> -> <span class=
"GUIBUTTON">Options</span> -> <span class=
- "GUIBUTTON">Advanced</span> -> <span class=
- "GUIBUTTON">Network</span> -><span class=
- "GUIBUTTON">Connection</span> -> <span class=
- "GUIBUTTON">Settings</span><br></p>
+ "GUIBUTTON">Advanced</span> -> <span class="GUIBUTTON">Network</span> -><span class=
+ "GUIBUTTON">Connection</span> -> <span class="GUIBUTTON">Settings</span><br></p>
<p>Or optionally on some platforms:</p>
- <p class="LITERALLAYOUT"> <span class=
- "GUIBUTTON">Edit</span> -> <span class=
- "GUIBUTTON">Preferences</span> -> <span class=
- "GUIBUTTON">General</span> -> <span class=
- "GUIBUTTON">Connection Settings</span> -> <span class=
- "GUIBUTTON">Manual Proxy Configuration</span><br></p>
- <p>With <span class="APPLICATION">Netscape</span> (and <span class=
- "APPLICATION">Mozilla</span>), this can be set under:</p>
- <p class="LITERALLAYOUT"> <span class=
- "GUIBUTTON">Edit</span> -> <span class=
- "GUIBUTTON">Preferences</span> -> <span class=
- "GUIBUTTON">Advanced</span> -> <span class=
- "GUIBUTTON">Proxies</span> -> <span class="GUIBUTTON">HTTP
- Proxy</span><br></p>
+ <p class="LITERALLAYOUT"> <span class="GUIBUTTON">Edit</span> -> <span class=
+ "GUIBUTTON">Preferences</span> -> <span class="GUIBUTTON">General</span> -> <span class=
+ "GUIBUTTON">Connection Settings</span> -> <span class="GUIBUTTON">Manual Proxy
+ Configuration</span><br></p>
+ <p>With <span class="APPLICATION">Netscape</span> (and <span class="APPLICATION">Mozilla</span>), this can be set
+ under:</p>
+ <p class="LITERALLAYOUT"> <span class="GUIBUTTON">Edit</span> -> <span class=
+ "GUIBUTTON">Preferences</span> -> <span class="GUIBUTTON">Advanced</span> -> <span class=
+ "GUIBUTTON">Proxies</span> -> <span class="GUIBUTTON">HTTP Proxy</span><br></p>
<p>For <span class="APPLICATION">Internet Explorer v.5-7</span>:</p>
- <p class="LITERALLAYOUT"> <span class=
- "GUIBUTTON">Tools</span> -> <span class="GUIBUTTON">Internet
- Options</span> -> <span class=
- "GUIBUTTON">Connections</span> -> <span class=
- "GUIBUTTON">LAN Settings</span></p>
- <p>Then, check <span class="QUOTE">"Use Proxy"</span> and fill in the
- appropriate info (Address: 127.0.0.1, Port: 8118). Include HTTPS (SSL),
- if you want HTTPS proxy support too (sometimes labeled <span class=
- "QUOTE">"Secure"</span>). Make sure any checkboxes like <span class=
- "QUOTE">"Use the same proxy server for all protocols"</span> is
- <span class="emphasis"><i class="EMPHASIS">UNCHECKED</i></span>. You want
- only HTTP and HTTPS (SSL)!</p>
+ <p class="LITERALLAYOUT"> <span class="GUIBUTTON">Tools</span> -> <span class=
+ "GUIBUTTON">Internet Options</span> -> <span class=
+ "GUIBUTTON">Connections</span> -> <span class="GUIBUTTON">LAN Settings</span></p>
+ <p>Then, check <span class="QUOTE">"Use Proxy"</span> and fill in the appropriate info (Address: 127.0.0.1, Port:
+ 8118). Include HTTPS (SSL), if you want HTTPS proxy support too (sometimes labeled <span class=
+ "QUOTE">"Secure"</span>). Make sure any checkboxes like <span class="QUOTE">"Use the same proxy server for all
+ protocols"</span> is <span class="emphasis"><i class="EMPHASIS">UNCHECKED</i></span>. You want only HTTP and HTTPS
+ (SSL)!</p>
<div class="FIGURE">
<a name="AEN757" id="AEN757"></a>
- <p><b>Figure 3. Proxy Configuration Showing Internet Explorer HTTP and
- HTTPS (Secure) Settings</b></p>
+ <p><b>Figure 3. Proxy Configuration Showing Internet Explorer HTTP and HTTPS (Secure) Settings</b></p>
<div class="MEDIAOBJECT">
<p><img src="proxy2.jpg"></p>
</div>
</div>
- <p>After doing this, flush your browser's disk and memory caches to force
- a re-reading of all pages and to get rid of any ads that may be cached.
- Remove any <a href="http://en.wikipedia.org/wiki/Browser_cookie" target=
- "_top">cookies</a>, if you want <span class="APPLICATION">Privoxy</span>
- to manage that. You are now ready to start enjoying the benefits of using
- <span class="APPLICATION">Privoxy</span>!</p>
- <p><span class="APPLICATION">Privoxy</span> itself is typically started
- by specifying the main configuration file to be used on the command line.
- If no configuration file is specified on the command line, <span class=
- "APPLICATION">Privoxy</span> will look for a file named <tt class=
- "FILENAME">config</tt> in the current directory. Except on Win32 where it
- will try <tt class="FILENAME">config.txt</tt>.</p>
+ <p>After doing this, flush your browser's disk and memory caches to force a re-reading of all pages and to get rid
+ of any ads that may be cached. Remove any <a href="http://en.wikipedia.org/wiki/Browser_cookie" target=
+ "_top">cookies</a>, if you want <span class="APPLICATION">Privoxy</span> to manage that. You are now ready to start
+ enjoying the benefits of using <span class="APPLICATION">Privoxy</span>!</p>
+ <p><span class="APPLICATION">Privoxy</span> itself is typically started by specifying the main configuration file
+ to be used on the command line. If no configuration file is specified on the command line, <span class=
+ "APPLICATION">Privoxy</span> will look for a file named <tt class="FILENAME">config</tt> in the current directory.
+ Except on Win32 where it will try <tt class="FILENAME">config.txt</tt>.</p>
<div class="SECT2">
- <h2 class="SECT2"><a name="START-DEBIAN" id="START-DEBIAN">5.1.
- Debian</a></h2>
- <p>We use a script. Note that Debian typically starts <span class=
- "APPLICATION">Privoxy</span> upon booting per default. It will use the
- file <tt class="FILENAME">/etc/privoxy/config</tt> as its main
- configuration file.</p>
+ <h2 class="SECT2"><a name="START-DEBIAN" id="START-DEBIAN">5.1. Debian</a></h2>
+ <p>We use a script. Note that Debian typically starts <span class="APPLICATION">Privoxy</span> upon booting per
+ default. It will use the file <tt class="FILENAME">/etc/privoxy/config</tt> as its main configuration file.</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</table>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="START-FREEBSD" id="START-FREEBSD">5.2.
- FreeBSD and ElectroBSD</a></h2>
- <p>To start <span class="APPLICATION">Privoxy</span> upon booting, add
- "privoxy_enable='YES'" to <tt class="FILENAME">/etc/rc.conf</tt>.
- <span class="APPLICATION">Privoxy</span> will use <tt class=
- "FILENAME">/usr/local/etc/privoxy/config</tt> as its main configuration
- file.</p>
- <p>If you installed <span class="APPLICATION">Privoxy</span> into a
- jail, the paths above are relative to the jail root.</p>
+ <h2 class="SECT2"><a name="START-FREEBSD" id="START-FREEBSD">5.2. FreeBSD and ElectroBSD</a></h2>
+ <p>To start <span class="APPLICATION">Privoxy</span> upon booting, add "privoxy_enable='YES'" to <tt class=
+ "FILENAME">/etc/rc.conf</tt>. <span class="APPLICATION">Privoxy</span> will use <tt class=
+ "FILENAME">/usr/local/etc/privoxy/config</tt> as its main configuration file.</p>
+ <p>If you installed <span class="APPLICATION">Privoxy</span> into a jail, the paths above are relative to the
+ jail root.</p>
<p>To start <span class="APPLICATION">Privoxy</span> manually, run:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</table>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="START-WINDOWS" id="START-WINDOWS">5.3.
- Windows</a></h2>
- <p>Click on the <span class="APPLICATION">Privoxy</span> Icon to start
- <span class="APPLICATION">Privoxy</span>. If no configuration file is
- specified on the command line, <span class="APPLICATION">Privoxy</span>
- will look for a file named <tt class="FILENAME">config.txt</tt>. Note
- that Windows will automatically start <span class=
- "APPLICATION">Privoxy</span> when the system starts if you chose that
- option when installing.</p>
- <p><span class="APPLICATION">Privoxy</span> can run with full Windows
- service functionality. On Windows only, the <span class=
- "APPLICATION">Privoxy</span> program has two new command line arguments
- to install and uninstall <span class="APPLICATION">Privoxy</span> as a
- service. See the <a href=
- "installation.html#INSTALLATION-PACK-WIN">Windows Installation
- instructions</a> for details.</p>
+ <h2 class="SECT2"><a name="START-WINDOWS" id="START-WINDOWS">5.3. Windows</a></h2>
+ <p>Click on the <span class="APPLICATION">Privoxy</span> Icon to start <span class="APPLICATION">Privoxy</span>.
+ If no configuration file is specified on the command line, <span class="APPLICATION">Privoxy</span> will look for
+ a file named <tt class="FILENAME">config.txt</tt>. Note that Windows will automatically start <span class=
+ "APPLICATION">Privoxy</span> when the system starts if you chose that option when installing.</p>
+ <p><span class="APPLICATION">Privoxy</span> can run with full Windows service functionality. On Windows only, the
+ <span class="APPLICATION">Privoxy</span> program has two new command line arguments to install and uninstall
+ <span class="APPLICATION">Privoxy</span> as a service. See the <a href=
+ "installation.html#INSTALLATION-PACK-WIN">Windows Installation instructions</a> for details.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="START-UNICES" id="START-UNICES">5.4. Generic
- instructions for Unix derivates (Solaris, NetBSD, HP-UX etc.)</a></h2>
+ <h2 class="SECT2"><a name="START-UNICES" id="START-UNICES">5.4. Generic instructions for Unix derivates (Solaris,
+ NetBSD, HP-UX etc.)</a></h2>
<p>Example Unix startup command:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN">
- # /usr/sbin/privoxy --user privoxy /etc/privoxy/config</pre>
+ <pre class="SCREEN"> # /usr/sbin/privoxy --user privoxy /etc/privoxy/config</pre>
</td>
</tr>
</table>
- <p>Note that if you installed <span class="APPLICATION">Privoxy</span>
- through a package manager, the package will probably contain a
- platform-specific script or configuration file to start <span class=
+ <p>Note that if you installed <span class="APPLICATION">Privoxy</span> through a package manager, the package
+ will probably contain a platform-specific script or configuration file to start <span class=
"APPLICATION">Privoxy</span> upon boot.</p>
</div>
<div class="SECT2">
<h2 class="SECT2"><a name="START-OS2" id="START-OS2">5.5. OS/2</a></h2>
- <p>During installation, <span class="APPLICATION">Privoxy</span> is
- configured to start automatically when the system restarts. You can
- start it manually by double-clicking on the <span class=
- "APPLICATION">Privoxy</span> icon in the <span class=
- "APPLICATION">Privoxy</span> folder.</p>
+ <p>During installation, <span class="APPLICATION">Privoxy</span> is configured to start automatically when the
+ system restarts. You can start it manually by double-clicking on the <span class="APPLICATION">Privoxy</span>
+ icon in the <span class="APPLICATION">Privoxy</span> folder.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="START-MACOSX" id="START-MACOSX">5.6. Mac OS
- X</a></h2>
- <p>The privoxy service will automatically start after a successful
- installation (and thereafter every time your computer starts up)
- however you will need to configure your web browser(s) to use it. To do
- so, configure them to use a proxy for HTTP and HTTPS at the address
- 127.0.0.1:8118.</p>
- <p>To prevent the privoxy service from automatically starting when your
- computer starts up, remove or rename the file <tt class=
- "LITERAL">/Library/LaunchDaemons/org.ijbswa.privoxy.plist</tt> (on OS X
- 10.5 and higher) or the folder named <tt class=
- "LITERAL">/Library/StartupItems/Privoxy</tt> (on OS X 10.4
- 'Tiger').</p>
- <p>To manually start or stop the privoxy service, use the scripts
- startPrivoxy.sh and stopPrivoxy.sh supplied in /Applications/Privoxy.
- They must be run from an administrator account, using sudo.</p>
+ <h2 class="SECT2"><a name="START-MACOSX" id="START-MACOSX">5.6. Mac OS X</a></h2>
+ <p>The privoxy service will automatically start after a successful installation (and thereafter every time your
+ computer starts up) however you will need to configure your web browser(s) to use it. To do so, configure them to
+ use a proxy for HTTP and HTTPS at the address 127.0.0.1:8118.</p>
+ <p>To prevent the privoxy service from automatically starting when your computer starts up, remove or rename the
+ file <tt class="LITERAL">/Library/LaunchDaemons/org.ijbswa.privoxy.plist</tt> (on OS X 10.5 and higher) or the
+ folder named <tt class="LITERAL">/Library/StartupItems/Privoxy</tt> (on OS X 10.4 'Tiger').</p>
+ <p>To manually start or stop the privoxy service, use the scripts startPrivoxy.sh and stopPrivoxy.sh supplied in
+ /Applications/Privoxy. They must be run from an administrator account, using sudo.</p>
</div>
<div class="SECT2">
- <h2 class="SECT2"><a name="CMDOPTIONS" id="CMDOPTIONS">5.7. Command
- Line Options</a></h2>
- <p><span class="APPLICATION">Privoxy</span> may be invoked with the
- following command-line options:</p>
+ <h2 class="SECT2"><a name="CMDOPTIONS" id="CMDOPTIONS">5.7. Command Line Options</a></h2>
+ <p><span class="APPLICATION">Privoxy</span> may be invoked with the following command-line options:</p>
<ul>
<li>
- <p><span class="emphasis"><i class=
- "EMPHASIS">--config-test</i></span></p>
- <p>Exit after loading the configuration files before binding to the
- listen address. The exit code signals whether or not the
- configuration files have been successfully loaded.</p>
- <p>If the exit code is 1, at least one of the configuration files
- is invalid, if it is 0, all the configuration files have been
- successfully loaded (but may still contain errors that can
- currently only be detected at run time).</p>
- <p>This option doesn't affect the log setting, combination with
- <span class="emphasis"><i class="EMPHASIS">--no-daemon</i></span>
- is recommended if a configured log file shouldn't be used.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">--config-test</i></span></p>
+ <p>Exit after loading the configuration files before binding to the listen address. The exit code signals
+ whether or not the configuration files have been successfully loaded.</p>
+ <p>If the exit code is 1, at least one of the configuration files is invalid, if it is 0, all the
+ configuration files have been successfully loaded (but may still contain errors that can currently only be
+ detected at run time).</p>
+ <p>This option doesn't affect the log setting, combination with <span class="emphasis"><i class=
+ "EMPHASIS">--no-daemon</i></span> is recommended if a configured log file shouldn't be used.</p>
</li>
<li>
- <p><span class="emphasis"><i class=
- "EMPHASIS">--version</i></span></p>
+ <p><span class="emphasis"><i class="EMPHASIS">--version</i></span></p>
<p>Print version info and exit. Unix only.</p>
</li>
<li>
<p>Print short usage info and exit. Unix only.</p>
</li>
<li>
- <p><span class="emphasis"><i class=
- "EMPHASIS">--no-daemon</i></span></p>
- <p>Don't become a daemon, i.e. don't fork and become process group
- leader, and don't detach from controlling tty. Unix only.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">--no-daemon</i></span></p>
+ <p>Don't become a daemon, i.e. don't fork and become process group leader, and don't detach from controlling
+ tty. Unix only.</p>
</li>
<li>
- <p><span class="emphasis"><i class="EMPHASIS">--pidfile
- FILE</i></span></p>
- <p>On startup, write the process ID to <span class=
- "emphasis"><i class="EMPHASIS">FILE</i></span>. Delete the
- <span class="emphasis"><i class="EMPHASIS">FILE</i></span> on exit.
- Failure to create or delete the <span class="emphasis"><i class=
- "EMPHASIS">FILE</i></span> is non-fatal. If no <span class=
- "emphasis"><i class="EMPHASIS">FILE</i></span> option is given, no
- PID file will be used. Unix only.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">--pidfile FILE</i></span></p>
+ <p>On startup, write the process ID to <span class="emphasis"><i class="EMPHASIS">FILE</i></span>. Delete the
+ <span class="emphasis"><i class="EMPHASIS">FILE</i></span> on exit. Failure to create or delete the
+ <span class="emphasis"><i class="EMPHASIS">FILE</i></span> is non-fatal. If no <span class=
+ "emphasis"><i class="EMPHASIS">FILE</i></span> option is given, no PID file will be used. Unix only.</p>
</li>
<li>
- <p><span class="emphasis"><i class="EMPHASIS">--user
- USER[.GROUP]</i></span></p>
- <p>After (optionally) writing the PID file, assume the user ID of
- <span class="emphasis"><i class="EMPHASIS">USER</i></span>, and if
- included the GID of GROUP. Exit if the privileges are not
- sufficient to do so. Unix only.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">--user USER[.GROUP]</i></span></p>
+ <p>After (optionally) writing the PID file, assume the user ID of <span class="emphasis"><i class=
+ "EMPHASIS">USER</i></span>, and if included the GID of GROUP. Exit if the privileges are not sufficient to do
+ so. Unix only.</p>
</li>
<li>
- <p><span class="emphasis"><i class=
- "EMPHASIS">--chroot</i></span></p>
- <p>Before changing to the user ID given in the <span class=
- "emphasis"><i class="EMPHASIS">--user</i></span> option, chroot to
- that user's home directory, i.e. make the kernel pretend to the
- <span class="APPLICATION">Privoxy</span> process that the directory
- tree starts there. If set up carefully, this can limit the impact
- of possible vulnerabilities in <span class=
- "APPLICATION">Privoxy</span> to the files contained in that
- hierarchy. Unix only.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">--chroot</i></span></p>
+ <p>Before changing to the user ID given in the <span class="emphasis"><i class="EMPHASIS">--user</i></span>
+ option, chroot to that user's home directory, i.e. make the kernel pretend to the <span class=
+ "APPLICATION">Privoxy</span> process that the directory tree starts there. If set up carefully, this can
+ limit the impact of possible vulnerabilities in <span class="APPLICATION">Privoxy</span> to the files
+ contained in that hierarchy. Unix only.</p>
</li>
<li>
- <p><span class="emphasis"><i class="EMPHASIS">--pre-chroot-nslookup
- hostname</i></span></p>
- <p>Specifies a hostname (for example www.privoxy.org) to look up
- before doing a chroot. On some systems, initializing the resolver
- library involves reading config files from /etc and/or loading
- additional shared libraries from /lib. On these systems, doing a
- hostname lookup before the chroot reduces the number of files that
- must be copied into the chroot tree.</p>
- <p>For fastest startup speed, a good value is a hostname that is
- not in /etc/hosts but that your local name server (listed in
- /etc/resolv.conf) can resolve without recursion (that is, without
- having to ask any other name servers). The hostname need not exist,
- but if it doesn't, an error message (which can be ignored) will be
- output.</p>
+ <p><span class="emphasis"><i class="EMPHASIS">--pre-chroot-nslookup hostname</i></span></p>
+ <p>Specifies a hostname (for example www.privoxy.org) to look up before doing a chroot. On some systems,
+ initializing the resolver library involves reading config files from /etc and/or loading additional shared
+ libraries from /lib. On these systems, doing a hostname lookup before the chroot reduces the number of files
+ that must be copied into the chroot tree.</p>
+ <p>For fastest startup speed, a good value is a hostname that is not in /etc/hosts but that your local name
+ server (listed in /etc/resolv.conf) can resolve without recursion (that is, without having to ask any other
+ name servers). The hostname need not exist, but if it doesn't, an error message (which can be ignored) will
+ be output.</p>
</li>
<li>
- <p><span class="emphasis"><i class=
- "EMPHASIS">configfile</i></span></p>
- <p>If no <span class="emphasis"><i class=
- "EMPHASIS">configfile</i></span> is included on the command line,
- <span class="APPLICATION">Privoxy</span> will look for a file named
- <span class="QUOTE">"config"</span> in the current directory
- (except on Win32 where it will look for <span class=
- "QUOTE">"config.txt"</span> instead). Specify full path to avoid
- confusion. If no config file is found, <span class=
+ <p><span class="emphasis"><i class="EMPHASIS">configfile</i></span></p>
+ <p>If no <span class="emphasis"><i class="EMPHASIS">configfile</i></span> is included on the command line,
+ <span class="APPLICATION">Privoxy</span> will look for a file named <span class="QUOTE">"config"</span> in
+ the current directory (except on Win32 where it will look for <span class="QUOTE">"config.txt"</span>
+ instead). Specify full path to avoid confusion. If no config file is found, <span class=
"APPLICATION">Privoxy</span> will fail to start.</p>
</li>
</ul>
- <p>On <span class="APPLICATION">MS Windows</span> only there are two
- additional command-line options to allow <span class=
- "APPLICATION">Privoxy</span> to install and run as a <span class=
- "emphasis"><i class="EMPHASIS">service</i></span>. See the <a href=
- "installation.html#INSTALLATION-PACK-WIN">Window Installation
+ <p>On <span class="APPLICATION">MS Windows</span> only there are two additional command-line options to allow
+ <span class="APPLICATION">Privoxy</span> to install and run as a <span class="emphasis"><i class=
+ "EMPHASIS">service</i></span>. See the <a href="installation.html#INSTALLATION-PACK-WIN">Window Installation
section</a> for details.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="quickstart.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href=
- "configuration.html" accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="quickstart.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="configuration.html" accesskey="N">Next</a></td>
</tr>
<tr>
- <td width="33%" align="left" valign="top">Quickstart to Using
- Privoxy</td>
+ <td width="33%" align="left" valign="top">Quickstart to Using Privoxy</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">Privoxy Configuration</td>
</tr>
<html>
<head>
<title>Privoxy's Template Files</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
<link rel="PREVIOUS" title="Filter Files" href="filter-file.html">
- <link rel="NEXT" title=
- "Contacting the Developers, Bug Reporting and Feature Requests" href=
- "contact.html">
+ <link rel="NEXT" title="Contacting the Developers, Bug Reporting and Feature Requests" href="contact.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "filter-file.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="filter-file.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href="contact.html"
- accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="contact.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="TEMPLATES" id="TEMPLATES">10. Privoxy's
- Template Files</a></h1>
- <p>All <span class="APPLICATION">Privoxy</span> built-in pages, i.e.
- error pages such as the <a href="http://show-the-404-error.page" target=
- "_top"><span class="QUOTE">"404 - No Such Domain"</span> error page</a>,
- the <a href="http://ads.bannerserver.example.com/nasty-ads/sponsor.html"
- target="_top"><span class="QUOTE">"BLOCKED"</span> page</a> and all pages
- of its <a href="http://config.privoxy.org/" target="_top">web-based user
- interface</a>, are generated from <span class="emphasis"><i class=
- "EMPHASIS">templates</i></span>. (<span class=
- "APPLICATION">Privoxy</span> must be running for the above links to work
- as intended.)</p>
- <p>These templates are stored in a subdirectory of the <a href=
- "config.html#CONFDIR">configuration directory</a> called <tt class=
- "FILENAME">templates</tt>. On Unixish platforms, this is typically
- <a href="file:///etc/privoxy/templates/" target="_top"><tt class=
- "FILENAME">/etc/privoxy/templates/</tt></a>.</p>
- <p>The templates are basically normal HTML files, but with place-holders
- (called symbols or exports), which <span class=
- "APPLICATION">Privoxy</span> fills at run time. It is possible to edit
- the templates with a normal text editor, should you want to customize
- them. (<span class="emphasis"><i class="EMPHASIS">Not recommended for the
- casual user</i></span>). Should you create your own custom templates, you
- should use the <tt class="FILENAME">config</tt> setting <a href=
- "config.html#TEMPLDIR">templdir</a> to specify an alternate location, so
+ <h1 class="SECT1"><a name="TEMPLATES" id="TEMPLATES">10. Privoxy's Template Files</a></h1>
+ <p>All <span class="APPLICATION">Privoxy</span> built-in pages, i.e. error pages such as the <a href=
+ "http://show-the-404-error.page" target="_top"><span class="QUOTE">"404 - No Such Domain"</span> error page</a>,
+ the <a href="http://ads.bannerserver.example.com/nasty-ads/sponsor.html" target="_top"><span class=
+ "QUOTE">"BLOCKED"</span> page</a> and all pages of its <a href="http://config.privoxy.org/" target="_top">web-based
+ user interface</a>, are generated from <span class="emphasis"><i class="EMPHASIS">templates</i></span>.
+ (<span class="APPLICATION">Privoxy</span> must be running for the above links to work as intended.)</p>
+ <p>These templates are stored in a subdirectory of the <a href="config.html#CONFDIR">configuration directory</a>
+ called <tt class="FILENAME">templates</tt>. On Unixish platforms, this is typically <a href=
+ "file:///etc/privoxy/templates/" target="_top"><tt class="FILENAME">/etc/privoxy/templates/</tt></a>.</p>
+ <p>The templates are basically normal HTML files, but with place-holders (called symbols or exports), which
+ <span class="APPLICATION">Privoxy</span> fills at run time. It is possible to edit the templates with a normal text
+ editor, should you want to customize them. (<span class="emphasis"><i class="EMPHASIS">Not recommended for the
+ casual user</i></span>). Should you create your own custom templates, you should use the <tt class=
+ "FILENAME">config</tt> setting <a href="config.html#TEMPLDIR">templdir</a> to specify an alternate location, so
your templates do not get overwritten during upgrades.</p>
- <p>Note that just like in configuration files, lines starting with
- <tt class="LITERAL">#</tt> are ignored when the templates are filled
- in.</p>
- <p>The place-holders are of the form <tt class="LITERAL">@name@</tt>, and
- you will find a list of available symbols, which vary from template to
- template, in the comments at the start of each file. Note that these
- comments are not always accurate, and that it's probably best to look at
- the existing HTML code to find out which symbols are supported and what
- they are filled in with.</p>
- <p>A special application of this substitution mechanism is to make whole
- blocks of HTML code disappear when a specific symbol is set. We use this
- for many purposes, one of them being to include the beta warning in all
- our user interface (CGI) pages when <span class=
- "APPLICATION">Privoxy</span> is in an alpha or beta development
+ <p>Note that just like in configuration files, lines starting with <tt class="LITERAL">#</tt> are ignored when the
+ templates are filled in.</p>
+ <p>The place-holders are of the form <tt class="LITERAL">@name@</tt>, and you will find a list of available
+ symbols, which vary from template to template, in the comments at the start of each file. Note that these comments
+ are not always accurate, and that it's probably best to look at the existing HTML code to find out which symbols
+ are supported and what they are filled in with.</p>
+ <p>A special application of this substitution mechanism is to make whole blocks of HTML code disappear when a
+ specific symbol is set. We use this for many purposes, one of them being to include the beta warning in all our
+ user interface (CGI) pages when <span class="APPLICATION">Privoxy</span> is in an alpha or beta development
stage:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>If the "unstable" symbol is set, everything in between and including
- <tt class="LITERAL">@if-unstable-start</tt> and <tt class=
- "LITERAL">if-unstable-end@</tt> will disappear, leaving nothing but an
- empty comment:</p>
+ <p>If the "unstable" symbol is set, everything in between and including <tt class="LITERAL">@if-unstable-start</tt>
+ and <tt class="LITERAL">if-unstable-end@</tt> will disappear, leaving nothing but an empty comment:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
</td>
</tr>
</table>
- <p>There's also an if-then-else construct and an <tt class=
- "LITERAL">#include</tt> mechanism, but you'll sure find out if you are
- inclined to edit the templates ;-)</p>
- <p>All templates refer to a style located at <a href=
- "http://config.privoxy.org/send-stylesheet" target="_top"><tt class=
- "LITERAL">http://config.privoxy.org/send-stylesheet</tt></a>. This is, of
- course, locally served by <span class="APPLICATION">Privoxy</span> and
- the source for it can be found and edited in the <tt class=
+ <p>There's also an if-then-else construct and an <tt class="LITERAL">#include</tt> mechanism, but you'll sure find
+ out if you are inclined to edit the templates ;-)</p>
+ <p>All templates refer to a style located at <a href="http://config.privoxy.org/send-stylesheet" target=
+ "_top"><tt class="LITERAL">http://config.privoxy.org/send-stylesheet</tt></a>. This is, of course, locally served
+ by <span class="APPLICATION">Privoxy</span> and the source for it can be found and edited in the <tt class=
"FILENAME">cgi-style.css</tt> template.</p>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="filter-file.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="contact.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="filter-file.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="contact.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Filter Files</td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top">Contacting the Developers,
- Bug Reporting and Feature Requests</td>
+ <td width="33%" align="right" valign="top">Contacting the Developers, Bug Reporting and Feature Requests</td>
</tr>
</table>
</div>
<html>
<head>
<title>What's New in this Release</title>
- <meta name="GENERATOR" content=
- "Modular DocBook HTML Stylesheet Version 1.79">
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="HOME" title="Privoxy 3.0.27 User Manual" href="index.html">
<link rel="PREVIOUS" title="Installation" href="installation.html">
- <link rel="NEXT" title="Quickstart to Using Privoxy" href=
- "quickstart.html">
+ <link rel="NEXT" title="Quickstart to Using Privoxy" href="quickstart.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="STYLESHEET" type="text/css" href="p_doc.css">
</head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
- <table summary="Header navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">Privoxy 3.0.27 User Manual</th>
</tr>
<tr>
- <td width="10%" align="left" valign="bottom"><a href=
- "installation.html" accesskey="P">Prev</a></td>
+ <td width="10%" align="left" valign="bottom"><a href="installation.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
- <td width="10%" align="right" valign="bottom"><a href=
- "quickstart.html" accesskey="N">Next</a></td>
+ <td width="10%" align="right" valign="bottom"><a href="quickstart.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="left" width="100%">
</div>
<div class="SECT1">
- <h1 class="SECT1"><a name="WHATSNEW" id="WHATSNEW">3. What's New in this
- Release</a></h1>
- <p><span class="APPLICATION">Privoxy 3.0.26</span> stable is a bug-fix
- release for the previously released 3.0.25 beta which introduced
- client-specific tags and included a couple of minor improvements.</p>
+ <h1 class="SECT1"><a name="WHATSNEW" id="WHATSNEW">3. What's New in this Release</a></h1>
+ <p><span class="APPLICATION">Privoxy 3.0.26</span> stable is a bug-fix release for the previously released 3.0.25
+ beta which introduced client-specific tags and included a couple of minor improvements.</p>
<ul>
<li>
<p>Bug fixes:</p>
<ul>
<li>
- <p>Fixed crashes with "listen-addr :8118" (SF Bug #902). The
- regression was introduced in 3.0.25 beta and reported by Marvin
- Renich in Debian bug #834941.</p>
+ <p>Fixed crashes with "listen-addr :8118" (SF Bug #902). The regression was introduced in 3.0.25 beta and
+ reported by Marvin Renich in Debian bug #834941.</p>
</li>
</ul>
</li>
<p>Log when privoxy is toggled on or off via cgi interface.</p>
</li>
<li>
- <p>Highlight the "Info: Now toggled " on/off log message in the
- Windows log viewer.</p>
+ <p>Highlight the "Info: Now toggled " on/off log message in the Windows log viewer.</p>
</li>
<li>
- <p>Highlight the loading actions/filter file log message in the
- Windows log viewer.</p>
+ <p>Highlight the loading actions/filter file log message in the Windows log viewer.</p>
</li>
<li>
- <p>Mention client-specific tags on the toggle page as a
- potentionally more appropriate alternative.</p>
+ <p>Mention client-specific tags on the toggle page as a potentionally more appropriate alternative.</p>
</li>
</ul>
</li>
<p>Documentation improvements:</p>
<ul>
<li>
- <p>Update download section on the homepage. The downloads are
- available from the website now.</p>
+ <p>Update download section on the homepage. The downloads are available from the website now.</p>
</li>
<li>
<p>Add sponsor FAQ.</p>
</li>
<li>
- <p>Remove obsolete reference to mailing lists hosted at
- SourceForge.</p>
+ <p>Remove obsolete reference to mailing lists hosted at SourceForge.</p>
</li>
<li>
- <p>Update the "Before the Release" section of the developer
- manual.</p>
+ <p>Update the "Before the Release" section of the developer manual.</p>
</li>
</ul>
</li>
<p>Infrastructure improvements:</p>
<ul>
<li>
- <p>Add perl script to generate an RSS feed for the packages
- Submitted by "Unknown".</p>
+ <p>Add perl script to generate an RSS feed for the packages Submitted by "Unknown".</p>
</li>
</ul>
</li>
<p>configure.in: Check for Docbook goo on the BSDs as well.</p>
</li>
<li>
- <p>GNUMakefile.in: Let the dok-user target remove temporary
- files.</p>
+ <p>GNUMakefile.in: Let the dok-user target remove temporary files.</p>
</li>
</ul>
</li>
</ul>
- <p>Changes between <span class="APPLICATION">Privoxy 3.0.25 beta</span>
- and the previous release:</p>
+ <p>Changes between <span class="APPLICATION">Privoxy 3.0.25 beta</span> and the previous release:</p>
<ul>
<li>
<p>Bug fixes:</p>
<ul>
<li>
- <p>Always use the current toggle state for new requests.
- Previously new requests on reused connections inherited the
- toggle state from the previous request even though the toggle
- state could have changed. Reported by Robert Klemme.</p>
+ <p>Always use the current toggle state for new requests. Previously new requests on reused connections
+ inherited the toggle state from the previous request even though the toggle state could have changed.
+ Reported by Robert Klemme.</p>
</li>
<li>
- <p>Fixed two buffer-overflows in the (deprecated) static pcre
- code. These bugs are not considered security issues as the input
- is trusted. Found with afl-fuzz and ASAN.</p>
+ <p>Fixed two buffer-overflows in the (deprecated) static pcre code. These bugs are not considered security
+ issues as the input is trusted. Found with afl-fuzz and ASAN.</p>
</li>
</ul>
</li>
<p>General improvements:</p>
<ul>
<li>
- <p>Added support for client-specific tags which allow Privoxy
- admins to pre-define tags that are set for all requests from
- clients that previously opted in through the CGI interface. They
- are useful in multi-user setups where admins may want to allow
- users to disable certain actions and filters for themselves
- without affecting others. In single-user setups they are useful
- to allow more fine-grained toggling. For example to disable
- request blocking while still crunching cookies, or to disable
- experimental filters only. This is an experimental feature, the
- syntax and behaviour may change in future versions. Sponsored by
- Robert Klemme.</p>
+ <p>Added support for client-specific tags which allow Privoxy admins to pre-define tags that are set for
+ all requests from clients that previously opted in through the CGI interface. They are useful in multi-user
+ setups where admins may want to allow users to disable certain actions and filters for themselves without
+ affecting others. In single-user setups they are useful to allow more fine-grained toggling. For example to
+ disable request blocking while still crunching cookies, or to disable experimental filters only. This is an
+ experimental feature, the syntax and behaviour may change in future versions. Sponsored by Robert
+ Klemme.</p>
</li>
<li>
- <p>Dynamic filters and taggers now support a $listen-address
- variable which contains the address the request came in on. For
- external filters the variable is called $PRIVOXY_LISTEN_ADDRESS.
- Original patch contributed by pursievro.</p>
+ <p>Dynamic filters and taggers now support a $listen-address variable which contains the address the
+ request came in on. For external filters the variable is called $PRIVOXY_LISTEN_ADDRESS. Original patch
+ contributed by pursievro.</p>
</li>
<li>
<p>Add client-header-tagger 'listen-address'.</p>
</li>
<li>
- <p>Include the listen-address in the log message when logging new
- requests. Patch contributed by pursievro.</p>
+ <p>Include the listen-address in the log message when logging new requests. Patch contributed by
+ pursievro.</p>
</li>
<li>
- <p>Turn invalid max-client-connections values into fatal
- errors.</p>
+ <p>Turn invalid max-client-connections values into fatal errors.</p>
</li>
<li>
- <p>The show-status page now shows whether or not dates before
- 1970 and after 2038 are expected to be handled properly. This is
- mainly useful for Privoxy-Regression-Test but could also come
- handy when dealing with time-related support requests.</p>
+ <p>The show-status page now shows whether or not dates before 1970 and after 2038 are expected to be
+ handled properly. This is mainly useful for Privoxy-Regression-Test but could also come handy when dealing
+ with time-related support requests.</p>
</li>
<li>
- <p>On Mac OS X the thread id in log messages are more likely to
- be unique now.</p>
+ <p>On Mac OS X the thread id in log messages are more likely to be unique now.</p>
</li>
<li>
- <p>When complaining about missing filters, the filter type is
- logged as well.</p>
+ <p>When complaining about missing filters, the filter type is logged as well.</p>
</li>
<li>
- <p>A couple of harmless coverity warnings were silenced (CID
- #161202, CID #161203, CID #161211).</p>
+ <p>A couple of harmless coverity warnings were silenced (CID #161202, CID #161203, CID #161211).</p>
</li>
</ul>
</li>
<p>Action file improvements:</p>
<ul>
<li>
- <p>Filtering is disabled for Range requests to let download
- resumption and Windows updates work with the default
- configuration.</p>
+ <p>Filtering is disabled for Range requests to let download resumption and Windows updates work with the
+ default configuration.</p>
</li>
<li>
<p>Unblock ".ardmediathek.de/". Reported by ThTomate in #932.</p>
<p>Remove obsolete FAQ entry about a bug in PHP 4.2.3.</p>
</li>
<li>
- <p>Mention the new mailing lists were appropriate. As the
- archives have not been migrated, continue to mention the archives
- at SF in the contacting section for now.</p>
+ <p>Mention the new mailing lists were appropriate. As the archives have not been migrated, continue to
+ mention the archives at SF in the contacting section for now.</p>
</li>
<li>
- <p>Note that the templates should be adjusted if Privoxy is
- running as intercepting proxy without getting all requests.</p>
+ <p>Note that the templates should be adjusted if Privoxy is running as intercepting proxy without getting
+ all requests.</p>
</li>
<li>
<p>A bunch of links were converted to https://.</p>
</li>
<li>
- <p>Rephrase onion service paragraph to make it more obvious that
- Tor is involved and that the whole website (and not just the
- homepage) is available as onion service.</p>
+ <p>Rephrase onion service paragraph to make it more obvious that Tor is involved and that the whole website
+ (and not just the homepage) is available as onion service.</p>
</li>
<li>
- <p>Streamline the "More information" section on the homepage
- further by additionally ditching the link to the 'See also'
- section of the user manual. The section contains mostly links
- that are directly reachable from the homepage already and the
- rest is not significant enough to get a link from the
- homepage.</p>
+ <p>Streamline the "More information" section on the homepage further by additionally ditching the link to
+ the 'See also' section of the user manual. The section contains mostly links that are directly reachable
+ from the homepage already and the rest is not significant enough to get a link from the homepage.</p>
</li>
<li>
- <p>Change the add-header{} example to set the DNT header and use
- a complete section to make copy and pasting more convenient. Add
- a comment to make it obvious that adding the header is not
- recommended for obvious reasons. Using the DNT header as example
- was suggested by Leo Wzukw.</p>
+ <p>Change the add-header{} example to set the DNT header and use a complete section to make copy and
+ pasting more convenient. Add a comment to make it obvious that adding the header is not recommended for
+ obvious reasons. Using the DNT header as example was suggested by Leo Wzukw.</p>
</li>
<li>
- <p>Streamline the support-and-service template Instead of linking
- to the various support trackers (whose URLs hopefully change
- soon), link to the contact section of the user manual to increase
- the chances that users actually read it.</p>
+ <p>Streamline the support-and-service template Instead of linking to the various support trackers (whose
+ URLs hopefully change soon), link to the contact section of the user manual to increase the chances that
+ users actually read it.</p>
</li>
<li>
<p>Add a FAQ entry for tainted sockets.</p>
<p>More sections in the documentation have stable URLs now.</p>
</li>
<li>
- <p>FAQ: Explain why 'ping config.privoxy.org' is not expected to
- reach a local Privoxy installation.</p>
+ <p>FAQ: Explain why 'ping config.privoxy.org' is not expected to reach a local Privoxy installation.</p>
</li>
<li>
- <p>Note that donations done through Zwiebelfreunde e.V. currently
- can't be checked automatically.</p>
+ <p>Note that donations done through Zwiebelfreunde e.V. currently can't be checked automatically.</p>
</li>
<li>
<p>Updated section regarding starting Privoxy under OS X.</p>
</li>
<li>
- <p>Use dedicated start instructions for FreeBSD and
- ElectroBSD.</p>
+ <p>Use dedicated start instructions for FreeBSD and ElectroBSD.</p>
</li>
<li>
- <p>Removed release instructions for AIX. They haven't been
- working for years and unsurprisingly nobody seems to care.</p>
+ <p>Removed release instructions for AIX. They haven't been working for years and unsurprisingly nobody
+ seems to care.</p>
</li>
<li>
<p>Removed obsolete reference to the solaris-dist target.</p>
<p>Updated the release instructions for FreeBSD.</p>
</li>
<li>
- <p>Removed unfinished release instructions for Amiga OS and HP-UX
- 11.</p>
+ <p>Removed unfinished release instructions for Amiga OS and HP-UX 11.</p>
</li>
<li>
- <p>Added a pointer to the Cygwin Time Machine for getting the
- last release of Cygwin version 1.5 to use for building Privoxy on
- Windows.</p>
+ <p>Added a pointer to the Cygwin Time Machine for getting the last release of Cygwin version 1.5 to use for
+ building Privoxy on Windows.</p>
</li>
<li>
<p>Various typos have been fixed.</p>
<p>Infrastructure improvements:</p>
<ul>
<li>
- <p>The website is no longer hosted at SourceForge and can be
- reached through https now.</p>
+ <p>The website is no longer hosted at SourceForge and can be reached through https now.</p>
</li>
<li>
- <p>The mailing lists at SourceForge have been deprecated, you can
- subscribe to the new ones at: https://lists.privoxy.org/</p>
+ <p>The mailing lists at SourceForge have been deprecated, you can subscribe to the new ones at:
+ https://lists.privoxy.org/</p>
</li>
<li>
- <p>Migrating the remaining services from SourceForge is work in
- progress (TODO list item #53).</p>
+ <p>Migrating the remaining services from SourceForge is work in progress (TODO list item #53).</p>
</li>
</ul>
</li>
<p>Build system improvements:</p>
<ul>
<li>
- <p>Add configure argument to optimistically redefine FD_SETSIZE
- with the intent to change the maximum number of client
- connections Privoxy can handle. Only works with some libcs.
- Sponsored by Robert Klemme.</p>
+ <p>Add configure argument to optimistically redefine FD_SETSIZE with the intent to change the maximum
+ number of client connections Privoxy can handle. Only works with some libcs. Sponsored by Robert
+ Klemme.</p>
</li>
<li>
<p>Let the tarball-dist target skip files in ".git".</p>
</li>
<li>
- <p>Let the tarball-dist target work in cwds other than
- current.</p>
+ <p>Let the tarball-dist target work in cwds other than current.</p>
</li>
<li>
- <p>Make the 'clean' target faster when run from a git
- repository.</p>
+ <p>Make the 'clean' target faster when run from a git repository.</p>
</li>
<li>
<p>Include tools in the generic distribution.</p>
<p>Let the gen-dist target work in cwds other than current.</p>
</li>
<li>
- <p>Sort find output that is used for distribution tarballs to get
- reproducible results.</p>
+ <p>Sort find output that is used for distribution tarballs to get reproducible results.</p>
</li>
<li>
- <p>Don't add '-src' to the name of the tar ball generated by the
- gen-dist target. The package isn't a source distribution but a
- binary package. While at it, use a variable for the name to
- reduce the chances that the various references get out of sync
- and fix the gen-upload target which was looking in the wrong
+ <p>Don't add '-src' to the name of the tar ball generated by the gen-dist target. The package isn't a
+ source distribution but a binary package. While at it, use a variable for the name to reduce the chances
+ that the various references get out of sync and fix the gen-upload target which was looking in the wrong
directory.</p>
</li>
<li>
- <p>Add regression-tests.action to the files that are
- distributed.</p>
+ <p>Add regression-tests.action to the files that are distributed.</p>
</li>
<li>
- <p>The gen-dist target which was broken since 2002 (r1.92) has
- been fixed.</p>
+ <p>The gen-dist target which was broken since 2002 (r1.92) has been fixed.</p>
</li>
<li>
<p>Remove genclspec.sh which has been obsolete since 2009.</p>
<p>Remove obsolete reference to Redhat spec file.</p>
</li>
<li>
- <p>Remove the obsolete announce target which has been commented
- out years ago.</p>
+ <p>Remove the obsolete announce target which has been commented out years ago.</p>
</li>
<li>
<p>Let rsync skip files if the checksums match.</p>
<p>Privoxy-Regression-Test:</p>
<ul>
<li>
- <p>Add a "Default level offset" directive which can be used to
- change the default level by a given value. This directive affects
- all tests located after it until the end of the file or a another
- "Default level offset" directive is reached. The purpose of this
- directive is to make it more convenient to skip similar tests in
- a given file without having to remove or disable the tests
- completely.</p>
+ <p>Add a "Default level offset" directive which can be used to change the default level by a given value.
+ This directive affects all tests located after it until the end of the file or a another "Default level
+ offset" directive is reached. The purpose of this directive is to make it more convenient to skip similar
+ tests in a given file without having to remove or disable the tests completely.</p>
</li>
<li>
- <p>Let test level 17 depend on FEATURE_64_BIT_TIME_T instead of
- FEATURE_PTHREAD which has no direct connection to the time_t
- size.</p>
+ <p>Let test level 17 depend on FEATURE_64_BIT_TIME_T instead of FEATURE_PTHREAD which has no direct
+ connection to the time_t size.</p>
</li>
<li>
<p>Fix indentation in perldoc examples.</p>
</li>
<li>
- <p>Don't overlook directives in the first line of the action
- file.</p>
+ <p>Don't overlook directives in the first line of the action file.</p>
</li>
<li>
<p>Bump version to 0.7.</p>
</li>
<li>
- <p>Fix detection of the Privoxy version now that https:// is used
- for the website.</p>
+ <p>Fix detection of the Privoxy version now that https:// is used for the website.</p>
</li>
</ul>
</li>
</ul>
<div class="SECT2">
- <h2 class="SECT2"><a name="UPGRADERSNOTE" id="UPGRADERSNOTE">3.1. Note
- to Upgraders</a></h2>
- <p>A quick list of things to be aware of before upgrading from earlier
- versions of <span class="APPLICATION">Privoxy</span>:</p>
+ <h2 class="SECT2"><a name="UPGRADERSNOTE" id="UPGRADERSNOTE">3.1. Note to Upgraders</a></h2>
+ <p>A quick list of things to be aware of before upgrading from earlier versions of <span class=
+ "APPLICATION">Privoxy</span>:</p>
<ul>
<li>
- <p>The recommended way to upgrade <span class=
- "APPLICATION">Privoxy</span> is to backup your old configuration
- files, install the new ones, verify that <span class=
- "APPLICATION">Privoxy</span> is working correctly and finally merge
- back your changes using <span class="APPLICATION">diff</span> and
- maybe <span class="APPLICATION">patch</span>.</p>
- <p>There are a number of new features in each <span class=
- "APPLICATION">Privoxy</span> release and most of them have to be
- explicitly enabled in the configuration files. Old configuration
- files obviously don't do that and due to syntax changes using old
- configuration files with a new <span class=
+ <p>The recommended way to upgrade <span class="APPLICATION">Privoxy</span> is to backup your old
+ configuration files, install the new ones, verify that <span class="APPLICATION">Privoxy</span> is working
+ correctly and finally merge back your changes using <span class="APPLICATION">diff</span> and maybe
+ <span class="APPLICATION">patch</span>.</p>
+ <p>There are a number of new features in each <span class="APPLICATION">Privoxy</span> release and most of
+ them have to be explicitly enabled in the configuration files. Old configuration files obviously don't do
+ that and due to syntax changes using old configuration files with a new <span class=
"APPLICATION">Privoxy</span> isn't always possible anyway.</p>
</li>
<li>
- <p>Note that some installers remove earlier versions completely,
- including configuration files, therefore you should really save any
- important configuration files!</p>
+ <p>Note that some installers remove earlier versions completely, including configuration files, therefore you
+ should really save any important configuration files!</p>
</li>
<li>
- <p>On the other hand, other installers don't overwrite existing
- configuration files, thinking you will want to do that
- yourself.</p>
+ <p>On the other hand, other installers don't overwrite existing configuration files, thinking you will want
+ to do that yourself.</p>
</li>
<li>
- <p>In the default configuration only fatal errors are logged now.
- You can change that in the <a href="config.html#DEBUG">debug
- section</a> of the configuration file. You may also want to enable
- more verbose logging until you verified that the new <span class=
- "APPLICATION">Privoxy</span> version is working as expected.</p>
+ <p>In the default configuration only fatal errors are logged now. You can change that in the <a href=
+ "config.html#DEBUG">debug section</a> of the configuration file. You may also want to enable more verbose
+ logging until you verified that the new <span class="APPLICATION">Privoxy</span> version is working as
+ expected.</p>
</li>
<li>
- <p>Three other config file settings are now off by default:
- <a href="config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle</a>,
- <a href=
- "config.html#ENABLE-REMOTE-HTTP-TOGGLE">enable-remote-http-toggle</a>,
- and <a href=
- "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a>. If you
- use or want these, you will need to explicitly enable them, and be
- aware of the security issues involved.</p>
+ <p>Three other config file settings are now off by default: <a href=
+ "config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle</a>, <a href=
+ "config.html#ENABLE-REMOTE-HTTP-TOGGLE">enable-remote-http-toggle</a>, and <a href=
+ "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a>. If you use or want these, you will need to
+ explicitly enable them, and be aware of the security issues involved.</p>
</li>
</ul>
</div>
</div>
<div class="NAVFOOTER">
<hr align="left" width="100%">
- <table summary="Footer navigation table" width="100%" border="0"
- cellpadding="0" cellspacing="0">
+ <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <td width="33%" align="left" valign="top"><a href="installation.html"
- accesskey="P">Prev</a></td>
- <td width="34%" align="center" valign="top"><a href="index.html"
- accesskey="H">Home</a></td>
- <td width="33%" align="right" valign="top"><a href="quickstart.html"
- accesskey="N">Next</a></td>
+ <td width="33%" align="left" valign="top"><a href="installation.html" accesskey="P">Prev</a></td>
+ <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+ <td width="33%" align="right" valign="top"><a href="quickstart.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Installation</td>
<td width="34%" align="center" valign="top"> </td>
- <td width="33%" align="right" valign="top">Quickstart to Using
- Privoxy</td>
+ <td width="33%" align="right" valign="top">Quickstart to Using Privoxy</td>
</tr>
</table>
</div>