Devin Bayer
Havard Berland
David Binderman
+ Ingo Blechschmidt
David Bo
Gergely Bor
Francois Botha
Andrew J. Caines
Clifford Caoile
Edward Carrel
+ Laurent Caumont
Celejar
Chakib Benziane
Pak Chan
Markus Elfring
Ryan Farmer
Matthew Fischer
+ Fabrice Fontaine
T Ford
Dean Gaudet
Stephen Gildea
Zeno Kugy
David Laight
Bert van Leeuwen
+ Aaron Li
Don Libes
Paul Lieverse
Adele Lime
Mark Seward
Franz Schwartau
Chung-chieh Shan
+ Gagan Sidhu
Johan Sintorn
Benjamin C. Wiley Sittler
+ Juliusz Sosinowicz
DRS David Soft
Simon South
Dan Stahlke
David Wagner
Glenn Washburn
Song Weijia
+ Florian Weimer
Jörg Weinmann
Darren Wiebe
Anduin Withers
When building from a source tarball, first unpack the source:
- tar xzvf privoxy-3.0.35-beta-src.tar.gz
- cd privoxy-3.0.35-beta
+ tar xzvf privoxy-4.0.0-stable-src.tar.gz
+ cd privoxy-4.0.0-stable
To build the development version, you can get the source code by doing:
*
*********************************************************************/
-This README is included with the development version of Privoxy 3.0.35. See
-https://www.privoxy.org/ for more information. The current code maturity level
-is "UNRELEASED", but seems stable to us :).
+This README is included with Privoxy 4.0.0. See https://www.privoxy.org/ for
+more information. The current code maturity level is "stable".
-------------------------------------------------------------------------------
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, 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.
+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.
-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.
+The source and configuration files are all well commented. The main
+configuration files are: 'config', 'default.action', and 'default.filter'.
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,
<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.35"</span>.</td>
+ "APPLICATION">Privoxy</span> version string, e.g. <span class="QUOTE">"4.0.0"</span>.</td>
</tr>
<tr>
<td><span class="emphasis"><i class="EMPHASIS">p-status</i></span>: the project status, either
<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-2023 by <a href="https://www.privoxy.org/" target="_top">Privoxy Developers</a></sub><br></p>
+ © 2001-2025 by <a href="https://www.privoxy.org/" target="_top">Privoxy Developers</a></sub><br></p>
<div>
<div class="ABSTRACT">
<a name="AEN8" id="AEN8"></a>
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.35. You can find the latest version of the this manual at <a href=
+ version 4.0.0. 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>
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 is the first stable <span class=
- "APPLICATION">Privoxy</span> release.</p>
+ <p>X, the version major, is rarely ever changed. Majors 1 and 2 were <span class=
+ "APPLICATION">Junkbuster</span>, and 3 is 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, is increased for every release except for pure bug fix releases in which case only
+ Z, the point or sub version, is increased.</p>
</li>
<li>
- <p>Z, the point or sub version, represents a release of the software within a branch. It is therefore
- incremented immediately after each software release. 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>The point version is reset to zero when the minor changes.</p>
</li>
</ul>
- <p>In summary, the main Git 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 Git. 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</a></h2>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING"> dch -v 3.0.35-1</pre>
+ <pre class="PROGRAMLISTING"> dch -v 4.0.0-1</pre>
</td>
</tr>
</table>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING"> lintian -iI ../build-area/privoxy_3.0.35-1_amd64.changes</pre>
+ <pre class="PROGRAMLISTING"> lintian -iI ../build-area/privoxy_4.0.0-1_amd64.changes</pre>
</td>
</tr>
</table>
<tr>
<td>
<pre class=
- "PROGRAMLISTING"> sudo cowbuilder --build --basepath /var/cache/pbuilder/base.cow ../build-area/privoxy_3.0.35-1.dsc</pre>
+ "PROGRAMLISTING"> sudo cowbuilder --build --basepath /var/cache/pbuilder/base.cow ../build-area/privoxy_4.0.0-1.dsc</pre>
</td>
</tr>
</table>
<tr>
<td>
<pre class=
- "PROGRAMLISTING"> autopkgtest /var/cache/pbuilder/result/privoxy_3.0.35-1_amd64.changes -s -- schroot sid</pre>
+ "PROGRAMLISTING"> autopkgtest /var/cache/pbuilder/result/privoxy_4.0.0-1_amd64.changes -s -- schroot sid</pre>
</td>
</tr>
</table>
<p>Or just push the changes to salsa.debian.org, where a CI pipeline is defined for the package, that builds
and tests it.</p>
<p>If everything is okay, run cowbuilder with i386 and amd64 environments for current Debian stable release and
- build privoxy_3.0.35-1_i386.deb and privoxy_3.0.35-1_amd64.deb. Then sign both files:</p>
+ build privoxy_4.0.0-1_i386.deb and privoxy_4.0.0-1_amd64.deb. Then sign both files:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="PROGRAMLISTING"> gpg --detach-sign --armor privoxy_3.0.35-1_i386.deb
- gpg --detach-sign --armor privoxy_3.0.35-1_amd64.deb</pre>
+ <pre class="PROGRAMLISTING"> gpg --detach-sign --armor privoxy_4.0.0-1_i386.deb
+ gpg --detach-sign --armor privoxy_4.0.0-1_amd64.deb</pre>
</td>
</tr>
</table>
</div>
<div class="SECT1">
<h1 class="SECT1"><a name="COPYRIGHT" id="COPYRIGHT">7. Privoxy Copyright, License and History</a></h1>
- <p>Copyright © 2001-2023 by Privoxy Developers <code class="EMAIL"><<a href=
+ <p>Copyright © 2001-2025 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.</p>
<p>Portions of this document are <span class="QUOTE">"borrowed"</span> from the original <span class=
<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>If you want to support Fabian directly, you can also buy a <a href=
+ "https://www.fabiankeil.de/gehacktes/privoxy-moral-license/" target="_top">Privoxy Moral License</a>.</p>
</div>
</div>
<div class="SECT2">
</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.35. You can find the latest version of the document at <a href="https://www.privoxy.org/faq/"
+ version 4.0.0. 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>
issues. <span class="emphasis"><i class="EMPHASIS">It is preferable to build the latest code to target earlier OS
releases than use an earlier Privoxy release</i></span>:</p>
<div class="TABLE">
- <a name="AEN296" id="AEN296"></a>
+ <a name="AEN298" id="AEN298"></a>
<p><b>Table 1. Operating system support for binaries provided by Privoxy team members</b></p>
<table border="1" frame="border" rules="all" class="CALSTABLE">
<col>
<p><a href="https://www.privoxy.org/donate" target="_top">https://www.privoxy.org/donate</a></p>
</li>
</ul>
- <p>The most recent release is <a href="announce.txt" target="_top">3.0.34 (stable)</a>.</p>
+ <p>The most recent release is <a href="announce.txt" target="_top">4.0.0 (stable)</a>.</p>
</div>
</div>
<hr>
<p style="text-align: center"><sub>The Privoxy website is also available as <a href=
"http://l3tczdiiwoo63iwxty4lhs6p7eaxop5micbn7vbliydgv63x5zrrrfyd.onion/" target="_top">Tor onion
service</a>.</sub></p>
- <p style="text-align: center"><sub>Copyright © 2001-2023 by Privoxy Developers</sub></p>
+ <p style="text-align: center"><sub>Copyright © 2001-2025 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="https://www.lalal.ai/"><img src="images/sponsors/lalal.ai_logo.png"
align="middle" alt="Vocal Remover by Lalal.ai"></a></sub></p>
<div class="ARTICLE">
<div class="TITLEPAGE">
<h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy - The Privacy Enhancing Proxy</a></h1>
- <h2 class="SUBTITLE">Project Index Page v3.0.35</h2>
+ <h2 class="SUBTITLE">Project Index Page v4.0.0</h2>
<div>
<div class="ABSTRACT">
<a name="AEN5" id="AEN5"></a>
<div class="SECT1">
<hr>
<h2 class="SECT1"><a name="AEN62" id="AEN62"></a></h2>
- <p><sub>Copyright © 2001-2023 by Privoxy Developers</sub></p>
+ <p><sub>Copyright © 2001-2025 by Privoxy Developers</sub></p>
</div>
</div>
</body>
<head>
<title>Actions Files</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 User Manual" href="index.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">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="config.html" accesskey="P">Prev</a></td>
<head>
<title>Appendix</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 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=iso-8859-1">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="seealso.html" accesskey="P">Prev</a></td>
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="AEN6567" id="AEN6567"></a>
+ <p>Privoxy main page:</p><a name="AEN6569" id="AEN6569"></a>
<blockquote class="BLOCKQUOTE">
<p><a href="http://config.privoxy.org/" target="_top">http://config.privoxy.org/</a></p>
</blockquote>
"APPLICATION">Privoxy</span>)</p>
</li>
<li>
- <p>View and toggle client tags:</p><a name="AEN6575" id="AEN6575"></a>
+ <p>View and toggle client tags:</p><a name="AEN6577" id="AEN6577"></a>
<blockquote class="BLOCKQUOTE">
<p><a href="http://config.privoxy.org/client-tags" target=
"_top">http://config.privoxy.org/client-tags</a></p>
</li>
<li>
<p>Show information about the current configuration, including viewing and editing of actions
- files:</p><a name="AEN6580" id="AEN6580"></a>
+ files:</p><a name="AEN6582" id="AEN6582"></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 browser's request headers:</p><a name="AEN6585" id="AEN6585"></a>
+ <p>Show the browser's request headers:</p><a name="AEN6587" id="AEN6587"></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="AEN6590" id="AEN6590"></a>
+ <p>Show which actions apply to a URL and why:</p><a name="AEN6592" id="AEN6592"></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>
<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="AEN6598" id="AEN6598"></a>
+ but only as a pass-through proxy, with no actions taking place:</p><a name="AEN6600" id="AEN6600"></a>
<blockquote class="BLOCKQUOTE">
<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="AEN6602" id="AEN6602"></a>
+ <p>Short cuts. Turn off, then on:</p><a name="AEN6604" id="AEN6604"></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>
- </blockquote><a name="AEN6605" id="AEN6605"></a>
+ </blockquote><a name="AEN6607" id="AEN6607"></a>
<blockquote class="BLOCKQUOTE">
<p><a href="http://config.privoxy.org/toggle?set=enable" target=
"_top">http://config.privoxy.org/toggle?set=enable</a></p>
<head>
<title>The Main Configuration File</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 User Manual" href="index.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">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="configuration.html" accesskey="P">Prev</a></td>
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>
+ <p>Also specified here are SOCKS proxies. <span class="APPLICATION">Privoxy</span> supports the SOCKS 4, SOCKS 4A
+ and SOCKS 5 protocols.</p>
<div class="SECT3">
<h4 class="SECT3"><a name="FORWARD" id="FORWARD">7.5.1. forward</a></h4>
<div class="VARIABLELIST">
<head>
<title>Privoxy Configuration</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 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">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="startup.html" accesskey="P">Prev</a></td>
<tr>
<td>
<pre class="SCREEN"> </pre>
- <h2 class="BRIDGEHEAD"><a name="AEN874"></a> Privoxy Menu</h2>
+ <h2 class="BRIDGEHEAD"><a name="AEN878"></a> Privoxy Menu</h2>
<pre><br></pre>
<table border="0">
<tbody>
</tr>
<tr>
<td> ▪ <a href=
- "https://www.privoxy.org/3.0.35/user-manual/" target="_top">Documentation</a></td>
+ "https://www.privoxy.org/4.0.0/user-manual/" target="_top">Documentation</a></td>
</tr>
</tbody>
</table>
<h2 class="SECT2"><a name="CONFOVERVIEW">6.2. Configuration Files Overview</a></h2>
<p>For Unix, *BSD and GNU/Linux, all configuration files are located in <tt class="FILENAME">/etc/privoxy/</tt>
by default. For MS Windows 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>
+ executable.</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>
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>
</div>
</div>
<div class="NAVFOOTER">
<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 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 User Manual" href="index.html">
<link rel="PREVIOUS" title="HOWTOs" href="howto.html">
<link rel="NEXT" title="Privoxy Copyright, License and History" href="copyright.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="howto.html" accesskey="P">Prev</a></td>
<head>
<title>Privoxy Copyright, License and History</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 User Manual" href="index.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">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="contact.html" accesskey="P">Prev</a></td>
</div>
<div class="SECT1">
<h1 class="SECT1"><a name="COPYRIGHT">13. Privoxy Copyright, License and History</a></h1>
- <p>Copyright © 2001-2023 by Privoxy Developers <code class="EMAIL"><<a href=
+ <p>Copyright © 2001-2025 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.</p>
<p><span class="APPLICATION">Privoxy</span> is free software; you can redistribute and/or modify its source code
<p>When compiled with FEATURE_BROTLI (optional), Privoxy depends on <a href="https://www.brotli.org/" target=
"_top">brotli</a>.</p>
<p>When compiled with FEATURE_HTTPS_INSPECTION (optional), Privoxy depends on a TLS library. The supported
- libraries are <a href="https://www.openssl.org/" target="_top">LibreSSL</a>, <a href=
+ libraries are <a href="https://www.libressl.org/" target="_top">LibreSSL</a>, <a href=
"https://github.com/Mbed-TLS/mbedtls/tags" target="_top">mbed TLS 2.28.x</a> and <a href=
"https://www.openssl.org/" target="_top">OpenSSL</a> and <a href="https://www.wolfssl.com/" target=
"_top">wolfSSL</a>.</p>
<head>
<title>Filter Files</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 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">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="actions-file.html" accesskey="P">Prev</a></td>
<head>
<title>HOWTOs</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 User Manual" href="index.html">
<link rel="PREVIOUS" title="Privoxy's Template Files" href="templates.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">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="templates.html" accesskey="P">Prev</a></td>
<p>In our example, we use this for the following two use cases:</p>
<ul>
<li>
- <p>Enable TOR anonymous proxy</p>
+ <p>Enable Tor anonymous proxy</p>
</li>
<li>
<p>Enable https-inspection</p>
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
- <title>Privoxy 3.0.35 User Manual</title>
+ <title>Privoxy 4.0.0 User Manual</title>
<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">
<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.35 User Manual</a></h1>
- <p class="PUBDATE"><sub><a href="copyright.html">Copyright</a> © 2001-2023 by <a href=
+ <h1 class="TITLE"><a name="AEN2" id="AEN2">Privoxy 4.0.0 User Manual</a></h1>
+ <p class="PUBDATE"><sub><a href="copyright.html">Copyright</a> © 2001-2025 by <a href=
"https://www.privoxy.org/" target="_top">Privoxy Developers</a></sub><br></p>
<div>
<div class="ABSTRACT">
<head>
<title>Installation</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 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">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="introduction.html" accesskey="P">Prev</a></td>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
- <pre class="SCREEN"> tar xzvf privoxy-3.0.35-beta-src.tar.gz
- cd privoxy-3.0.35-beta</pre>
+ <pre class="SCREEN"> tar xzvf privoxy-4.0.0-stable-src.tar.gz
+ cd privoxy-4.0.0-stable</pre>
</td>
</tr>
</table>
</td>
</tr>
</table>
- <p>Get the source code (.zip or .tar.gz) for tidy from <a href="https://github.com/htacg/tidy-html5/releases"
- target="_top">https://github.com/htacg/tidy-html5/releases</a>, unzip into <root-dir> and build the
+ <p>If you want to build the documentation, get the source code (tar.gz) for tidy from <a href=
+ "https://github.com/htacg/tidy-html5/releases" target=
+ "_top">https://github.com/htacg/tidy-html5/releases</a>, unzip into <root-dir> and build the
software:</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
</td>
</tr>
</table>
- <p>Get the latest 8.x PCRE code from <a href="https://sourceforge.net/projects/pcre/files/pcre/" target=
- "_top">PCRE https://sourceforge.net/projects/pcre/files/pcre/</a> and build the static PCRE libraries
- with</p>
+ <p>Get the latest 10.x PCRE code from <a href="https://github.com/PCRE2Project/pcre2/releases" target=
+ "_top">https://github.com/PCRE2Project/pcre2/releases</a> and build the static PCRE libraries with</p>
<table border="0" bgcolor="#E0E0E0" width="100%">
<tr>
<td>
<pre class="SCREEN"> export CFLAGS="-O2 -fstack-protector-strong -D_FORTIFY_SOURCE=2"
export LDFLAGS="-fstack-protector-strong"
- export CPPFLAGS="-DPCRE_STATIC"
+ export CPPFLAGS="-DPCRE2_STATIC"
./configure --host=i686-w64-mingw32 \
--prefix=/usr/local/i686-w64-mingw32 \
- --enable-utf --enable-unicode-properties \
--enable-jit \
--enable-newline-is-anycrlf \
- --enable-pcre16 \
- --enable-pcre32 \
- --disable-pcregrep-libbz2 \
- --disable-pcregrep-libz \
- --disable-pcretest-libreadline \
- --disable-stack-for-recursion \
+ --with-gnu-ld \
--enable-static --disable-shared \
&& make</pre>
</td>
<head>
<title>Introduction</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
- <link rel="PREVIOUS" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 User Manual" href="index.html">
+ <link rel="PREVIOUS" title="Privoxy 4.0.0 User Manual" 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=iso-8859-1">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="index.html" accesskey="P">Prev</a></td>
</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.35, 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 <a href="https://www.privoxy.org/gitweb/?p=privoxy.git;a=summary" target=
- "_top">git sources</a>). And there <span class="emphasis"><i class="EMPHASIS">may be</i></span> bugs, though
- hopefully not many!</p>
+ <p>This documentation is included with the current stable version of <span class="APPLICATION">Privoxy</span>,
+ 4.0.0.</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="https://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>
+ features, 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
<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.35 User Manual</td>
+ <td width="33%" align="left" valign="top">Privoxy 4.0.0 User Manual</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">Installation</td>
</tr>
<head>
<title>Quickstart to Using Privoxy</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 User Manual" href="index.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">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="whatsnew.html" accesskey="P">Prev</a></td>
<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="AEN641" id="AEN641"></a>
+ <a name="AEN645" id="AEN645"></a>
<p><b>Figure 1. Actions Files in Use</b></p>
<div class="MEDIAOBJECT">
<p><img src="files-in-use.jpg"></p>
<head>
<title>See Also</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 User Manual" href="index.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">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="copyright.html" accesskey="P">Prev</a></td>
<head>
<title>Starting Privoxy</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 User Manual" href="index.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">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="quickstart.html" accesskey="P">Prev</a></td>
<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="AEN695" id="AEN695"></a>
+ <a name="AEN699" id="AEN699"></a>
<p><b>Figure 2. Proxy Configuration Showing Mozilla Firefox HTTP and HTTPS (SSL) Settings</b></p>
<div class="MEDIAOBJECT">
<p><img src="proxy_setup.jpg"></p>
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="AEN737" id="AEN737"></a>
+ <a name="AEN741" id="AEN741"></a>
<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>
<head>
<title>Privoxy's Template Files</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 User Manual" href="index.html">
<link rel="PREVIOUS" title="Filter Files" href="filter-file.html">
<link rel="NEXT" title="HOWTOs" href="howto.html">
<link rel="STYLESHEET" type="text/css" href="../p_doc.css">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="filter-file.html" accesskey="P">Prev</a></td>
<head>
<title>What's New in this Release</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
- <link rel="HOME" title="Privoxy 3.0.35 User Manual" href="index.html">
+ <link rel="HOME" title="Privoxy 4.0.0 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="STYLESHEET" type="text/css" href="../p_doc.css">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
- <th colspan="3" align="center">Privoxy 3.0.35 User Manual</th>
+ <th colspan="3" align="center">Privoxy 4.0.0 User Manual</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href="installation.html" accesskey="P">Prev</a></td>
</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.34</span> fixes a few minor bugs and comes with a couple of general
- improvements and new features.</p>
- <p>Changes in <span class="APPLICATION">Privoxy 3.0.34</span> stable:</p>
+ <p><span class="APPLICATION">Privoxy 4.0.0</span> fixes a few minor bugs and comes with a couple of general
+ improvements and new features. HTTPS inspection is no longer considered experimental.</p>
+ <p>Two new features have been funded by donations. If you can, please consider <a href=
+ "https://www.privoxy.org/donate" target="_top">making a donation</a> to support future improvements.</p>
+ <p>Changes in <span class="APPLICATION">Privoxy 4.0.0</span> stable:</p>
<ul>
<li>
<p>Bug fixes:</p>
<ul>
<li>
- <p>Improve the handling of chunk-encoded responses by buffering the data even if filters are disabled and
- properly keeping track of where the various chunks are supposed to start and end. Previously Privoxy would
- merely check the last bytes received to see if they looked like the last-chunk. This failed to work if the
- last-chunk wasn't received in one read and could also result in actual data being misdetected as
- last-chunk. Should fix: SF support request #1739. Reported by: withoutname.</p>
+ <p>Add missing client-body-tagger data to the action_type_info[] struct so lookups based on the action
+ index work correctly again. Prevents assertion failures or segfaults when trying to edit an action file
+ with the CGI editor. The type of failure depended on whether or not assertions were enabled and on whether
+ or not Privoxy had been compiled with FEATURE_EXTERNAL_FILTERS. Regression introduced in Privoxy 3.0.34.
+ Patch submitted by Aaron Li in #940.</p>
</li>
<li>
- <p>remove_chunked_transfer_coding(): Refuse to de-chunk invalid data Previously the data could get
- corrupted even further. Now we simply pass the unmodified data to the client.</p>
+ <p>Bump MAX_FILTER_TYPES which should have been done in d128e6aa4 when introducing the client-body-tagger{}
+ action. Prevents an assertion in cgi_edit_actions_for_url() from triggering after e32d03e0 when using the
+ CGI editor with assertions enabled.</p>
</li>
<li>
- <p>gif_deanimate(): Tolerate multiple image extensions in a row. This allows to deanimate all the gifs on:
- https://commons.wikimedia.org/wiki/Category:Animated_smilies Fixes SF bug #795 reported by Celejar.</p>
+ <p>is_untrusted_url(): Search the encrypted headers for the Referer when the client is using https and
+ https inspection is enabled. Fixes the trust mechanism for https requests. Reported by Laurent Caumont in
+ #1767.</p>
</li>
<li>
- <p>OpenSSL generate_host_certificate(): Use X509_get_subject_name() instead of X509_get_issuer_name() to
- get the issuer for generated website certificates so there are no warnings in the browser when using an
- intermediate CA certificate instead of a self-signed root certificate. Problem reported and patch submitted
- by Chakib Benziane.</p>
+ <p>GNUMakefile.in: Let the install target work if no group is specified.</p>
</li>
<li>
- <p>can_filter_request_body(): Fix a log message that contained a spurious u.</p>
+ <p>GNUMakefile.in: Set GROUP_T when installing configuration files as root and there is no privoxy user
+ available so the install target doesn't fail. Patch by Fabrice Fontaine.</p>
</li>
<li>
- <p>handle_established_connection(): Check for pending TLS data from the client before checking if data is
- available on the connection. The TLS library may have already consumed all the data from the client
- response in which case poll() and select() will not detect that data is available to be read. Sponsored by:
- Robert Klemme.</p>
+ <p>GNUmakefile.in: Don't exit if configuration files are installed as root as this can be considered
+ acceptable when cross-compiling Privoxy inside an autobuilder with only a root user. Patch by Fabrice
+ Fontaine.</p>
</li>
<li>
- <p>ssl_send_certificate_error(): Don't crash if there's no certificate information available. This is only
- relevant when Privoxy is built with wolfSSL 5.0.0 or later (code not yet published). Earlier wolfSSL
- versions or the other TLS backends don't seem to trigger the crash.</p>
+ <p>configure.in: Fix argument types in gmtime_r() and localtime_r() probes. Otherwise these probes always
+ fail with stricter compilers even if there is C library support for these functions. Patch submitted by
+ Florian Weimer in SF#149.</p>
</li>
<li>
- <p>socks5_connect(): Add support for target hosts specified as IPv4 address Previously the IP address was
- sent as domain.</p>
+ <p>Fix socks4 and socks4a support under glibc's source fortification. With glibc's source fortification,
+ gcc offers the compilation warning resulting in a runtime abort() when using a socks4 or socks4a upstream
+ proxy. Despite the warning, the strlcpy() call in question is fine: gcc misidentifies the size of the
+ destination buffer, estimating to hold only a single char while in fact the buffer stretches beyond the end
+ of the struct socks_op. The issue was originally reported in the NixOS issue tracker at
+ https://github.com/NixOS/nixpkgs/issues/265654 prompted by an upgrade of glibc from 2.37-39 to 2.38-0.
+ Patch submitted by Ingo Blechschmid, joint work with @esclear and @richi235.</p>
</li>
</ul>
</li>
<p>General improvements:</p>
<ul>
<li>
- <p>Add a client-body-tagger action which creates tags based on the content of the request body. Sponsored
- by: Robert Klemme.</p>
+ <p>Allow to use wolfSSL for https inspection. wolfSSL supports TLS 1.3 and can be significantly faster than
+ mbedTLS. Mainly tested on ElectroBSD amd64 where it can <a href=
+ "https://www.fabiankeil.de/gehacktes/privoxy-tls-benchmarks/" target="_top">compete with OpenSSL and
+ LibreSSL</a> To enable the support, install wolfSSL and run ./configure with the --with-wolfssl option.
+ Sponsored by Privoxy project funds collected at SPI.</p>
</li>
<li>
- <p>When client-body filters are enabled, buffer the whole request before opening a connection to the
- server. Makes it less likely that the server connection times out and we don't open a connection if the
- buffering fails anyway. Sponsored by: Robert Klemme.</p>
+ <p>Add an test framework that leverages the curl test suite. Sponsored by Privoxy project funds collected
+ at SPI.</p>
</li>
<li>
- <p>Add periods to a couple of log messages.</p>
+ <p>Add pcre2 support. Closes bug #935. Initial patch submitted by Gagan Sidhu.</p>
</li>
<li>
- <p>accept_connection(): Add missing space to a log message.</p>
+ <p>Use SHA256 as hash algorithm for the certificate and key file names instead of MD5. The known MD5
+ vulnerabilities shouldn't matter for Privoxy's use case but it doesn't hurt to use a hash algorithm that
+ isn't deprecated. Sponsored by: Robert Klemme</p>
</li>
<li>
- <p>Initialize ca-related defaults with strdup_or_die() so errors aren't silently ignored.</p>
+ <p>Add support for mbedTLS 3.x. This removes a sanity check (whether issuer key and issuer certificate
+ match) that seems overly cautious and fails to compile with mbedTLS 3.x as the struct members are private.
+ We don't have an equivalent check in the OpenSSL or wolfSSL code either.</p>
</li>
<li>
- <p>make_path: Use malloc_or_die() in cases where allocation errors were already fatal anyway.</p>
+ <p>Factor out newer_privoxy_version_required() and improve the logic Previously 3.0.11 was considered newer
+ than 4.0.0.</p>
</li>
<li>
- <p>handle_established_connection(): Improve an error message slightly.</p>
+ <p>init_error_log(): Include the reason for failures to open the log file.</p>
</li>
<li>
- <p>receive_client_request(): Reject https URLs without CONNECT request.</p>
+ <p>create_client_ssl_connection(): Don't keep the certificate lock longer than necessary.</p>
</li>
<li>
- <p>Include all requests in the statistics if mutexes are available. Previously in case of reused
- connections only the last request got counted. The statistics still aren't perfect but it's an
- improvement.</p>
+ <p>Add periods to a bunch of log messages.</p>
</li>
<li>
- <p>Add read_socks_reply() and start using it in socks5_connect() to apply the socket timeout more
- consistently.</p>
+ <p>normalize_lws(): Only log the 'Reducing whitespace ...' message once per header</p>
</li>
<li>
- <p>socks5_connect(): Deal with domain names in the socks reply</p>
+ <p>log_error() Win32: Only call LogShowActivity() for debug level LOG_LEVEL_REQUEST. As of b94bbe62a950,
+ which was part of Privoxy 3.0.29, LOG_LEVEL_REQUEST is used for all requests including crunched ones.
+ Previously LogShowActivity() was called twice for crunched requests, (presumably) resulting in an aborted
+ animation.</p>
</li>
<li>
- <p>Add a filter for bundeswehr.de that hides the cookie and privacy info banner.</p>
+ <p>Remove ./ prefix from tarball-dist files.</p>
</li>
- </ul>
- </li>
- <li>
- <p>Action file improvements:</p>
- <ul>
<li>
- <p>Disable filter{banners-by-size} for .freiheitsfoo.de/.</p>
+ <p>create_client_ssl_connection(): Make it more obvious from an error message that a function failed.</p>
</li>
<li>
- <p>Disable filter{banners-by-size} for freebsdfoundation.org/.</p>
+ <p>Use stringify() instead of section_target() and remove section_target(). Like the XXX comment suggested
+ this could be done my moving the hash into the templates which seems preferable anyway.</p>
</li>
<li>
- <p>Disable fast-redirects for consent.youtube.com/.</p>
+ <p>Prevent some compiler warnings.</p>
</li>
<li>
- <p>Block requests to ups.xplosion.de/.</p>
+ <p>parse_numeric_value(): Expect a base-ten number.</p>
</li>
<li>
- <p>Block requests for elsa.memoinsights.com/t.</p>
+ <p>windows/MYconfigure: Have gcc diagnostics in color.</p>
</li>
+ </ul>
+ </li>
+ <li>
+ <p>Action file improvements:</p>
+ <ul>
<li>
- <p>Fix a typo in a test.</p>
+ <p>Block requests for .amazon-adsystem.com/</p>
</li>
<li>
- <p>Disable fast-redirects for launchpad.net/.</p>
+ <p>Block requests to track.venatusmedia.com/</p>
</li>
<li>
- <p>Unblock .eff.org/.</p>
+ <p>Block requests to i.clean.gg/</p>
</li>
<li>
- <p>Stop unblocking .org/.*(image|banner) which appears to be too generous The example URL
- http://www.gnu.org/graphics/gnu-head-banner.png is already unblocked due to .gnu.org being unblocked.</p>
+ <p>Block requests to s.cpx.to/</p>
</li>
<li>
- <p>Unblock adfd.org/.</p>
+ <p>Block requests to secure-eu.nmrodam.com/</p>
</li>
<li>
- <p>Disable filter{banners-by-link} for .eff.org/.</p>
+ <p>Block requests to o2.mouseflow.com/</p>
</li>
<li>
- <p>Block requests to odb.outbrain.com/.</p>
+ <p>Disable fast-redirects for services.akteneinsichtsportal.de/</p>
</li>
<li>
- <p>Disable fast-redirects for .gandi.net/.</p>
+ <p>Disable fast-redirects for /wp-content/plugins/pdf-viewer-for-elementor</p>
</li>
<li>
- <p>Disable fast-redirects{} for .onion/.*/status/.</p>
+ <p>Disable fast-redirects for syndication.twitter.com/</p>
</li>
<li>
- <p>Disable fast-redirects{} for twitter.com/.*/status/.</p>
+ <p>Disable fast-redirects for archive.softwareheritage.org/</p>
</li>
<li>
- <p>Unblock pinkstinks.de/.</p>
+ <p>Disable fast-redirects to duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/</p>
</li>
<li>
- <p>Disable fast-redirects for .hagalil.com/.</p>
+ <p>Disable fast-redirects for .creator-spring.com/_next/image</p>
+ </li>
+ <li>
+ <p>Disable fast redirects for accounts.bahn.de/</p>
</li>
- </ul>
- </li>
- <li>
- <p>Privoxy-Log-Parser:</p>
- <ul>
<li>
- <p>Bump version to 0.9.5.</p>
+ <p>Unblock .datenschmutz.de/</p>
</li>
<li>
- <p>Highlight more log messages.</p>
+ <p>Unblock requests for 'adventur*.'</p>
</li>
<li>
- <p>Highlight the Crunch reason only once. Previously the "crunch reason" could also be highlighted when the
- URL contained a matching string. The real crunch reason only occurs once per line, so there's no need to
- continue looking for it after it has been found once. While at it, add a comment with an example log
- line.</p>
+ <p>Unblock adl.windows.com/ as it is apparently required to update from Windows 10 to 11. Reported by Sam
+ Varshavchik.</p>
</li>
</ul>
</li>
<li>
- <p>uagen:</p>
+ <p>Privoxy-Log-Parser:</p>
<ul>
<li>
- <p>Bump version to 1.2.4.</p>
+ <p>Highlight 'Couldn't deliver the error message for [...]'.</p>
</li>
<li>
- <p>Update BROWSER_VERSION and BROWSER_REVISION to 102.0 to match the User-Agent of the current Firefox
- ESR.</p>
+ <p>Highlight 'Failed to accept() incoming connection: Software caused connection abort'.</p>
</li>
<li>
- <p>Explicitly document that changing the 'Gecko token' is suspicious.</p>
+ <p>Highlight 'Keeping chunk offset at 0 despite flushing 31 bytes.'.</p>
</li>
<li>
- <p>Consistently use a lower-case 'c' as copyright symbol.</p>
+ <p>Highlight 'Not shutting down client connection on socket 8. The socket is no longer alive.'.</p>
</li>
<li>
- <p>Bump copyright.</p>
+ <p>Bump version to 0.9.6.</p>
</li>
+ </ul>
+ </li>
+ <li>
+ <p>Privoxy-Regression-Test.pl:</p>
+ <ul>
<li>
- <p>Add 'aarch64' as Linux architecture.</p>
+ <p>Let the --min-level option increase the --max-level if the latter is smaller than the former.</p>
</li>
<li>
- <p>Add OpenBSD architecture 'arm64'.</p>
+ <p>Add --curl option to use a non-default curl binary.</p>
</li>
<li>
- <p>Stop using sparc64 as FreeBSD architecture. It hasn't been supported for a while now.</p>
+ <p>Bump version to 0.7.5.</p>
</li>
</ul>
</li>
<li>
- <p>Build system:</p>
+ <p>uagen:</p>
<ul>
<li>
- <p>Makefile: Add a 'dok' target that depends on the 'error' target to show the "You are not using GNU make
- or did nor run configure" message.</p>
+ <p>Bump BROWSER_VERSION and BROWSER_REVISION to match Firefox ESR 128.</p>
</li>
<li>
- <p>configure: Fix --with-msan option. Also (probably) reported by Andrew Savchenko.</p>
+ <p>Bump version to 1.2.6.</p>
</li>
</ul>
</li>
<li>
- <p>macOS build system:</p>
+ <p>Documentation:</p>
<ul>
<li>
- <p>Enable HTTPS inspection when building the macOS binary (using OpenSSL as TLS library).</p>
+ <p>Add HOWTOs for https inspection and client-tags to user-manual.</p>
+ </li>
+ <li>
+ <p>Suggest to use the force-text-mode action when filtering binary content with external filters.</p>
+ </li>
+ <li>
+ <p>Declare https-inspection non-experimental.</p>
</li>
- </ul>
- </li>
- <li>
- <p>Documentation:</p>
- <ul>
<li>
- <p>Add OpenSSL to the list of libraries that may be licensed under the Apache 2.0 license in which case the
- linked Privoxy binary has to be distributed under the GPLv3 or later.</p>
+ <p>FAQ: Mention that <a href="https://www.fabiankeil.de/gehacktes/privoxy-moral-license/" target=
+ "_top">Privoxy Moral Licenses</a> are available as well.</p>
</li>
<li>
- <p>config: Fix the documented ca-directory default value. Reported by avoidr.</p>
+ <p>Fix LibreSSL URL.</p>
</li>
<li>
- <p>Rebuild developer-manual and tidy with 'HTML Tidy for FreeBSD version 5.8.0'.</p>
+ <p>Update perlre perldoc URL.</p>
</li>
<li>
- <p>Update developer manual with new macOS packaging instructions.</p>
+ <p>config: Add SOCKS 5 to the list of supported protocols.</p>
</li>
<li>
- <p>Note that the FreeBSD installation instructions work for ElectroBSD as well.</p>
+ <p>In the Windows build section, note that one only needs tidy to build the docs. If you're not building
+ the docbook stuff you don't need tidy.</p>
</li>
<li>
- <p>Note that FreeBSD/ElectroBSD users can try to install Privoxy as binary package using 'pkg'.</p>
+ <p>trust: Use the words 'allowlists' and 'blocklists' instead of "whitelists" and "blacklists" which some
+ people consider to be less inclusive.</p>
</li>
</ul>
</li>