5. Troubleshooting

5.1. I cannot connect to any websites. Or, I am getting "connection refused" message with every web page. Why?

There are several possibilities:

5.2. Why am I getting a 503 Error (WSAECONNREFUSED) on every page?

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.

5.3. I just added a new rule, but the steenkin ad is still getting through. How?

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 Privoxy will not be involved. Flush the browser's caches, and then try again.

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 http://config.privoxy.org/show-url-info 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 Privoxy's logs (you may need to enable logging in the main config file if its disabled).

Below is a slightly modified real-life log snippet that originates with one requested URL: www.example.com (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 "page". 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 "good" or "bad", 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. Privoxy has "crunched" (meaning caught and BLOCKED) quite a few items in this example, but perhaps missed a few as well.

  Request: www.example.com/
  Request: www.example.com/favicon.ico
  Request: img.example.com/main.css
  Request: img.example.com/sr.js
  Request: example.betamarker.com/example.html
  Request: www.lik-sang.com/Banners/bestsellers/skyscraper.php?likref=BSellers
  Request: img.example.com/pb.png
  Request: www.google-analytics.com/urchin.js crunch! (Blocked)
  Request: www.advertising-department.com/ats/switch.ps.php?26856 crunch! (Blocked)
  Request: img.example.com/p.gif
  Request: www.popuptraffic.com/assign.php?l=example&mode=behind crunch! (Blocked)
  Request: www.popuptraffic.com/scripts/popup.php?hid=5c3cf&tmpl=PBa.tmpl crunch! (Blocked)
  Request: www.popuptraffic.com/assign.php?l=example crunch! (Blocked)
  Request: www.lik-sang.com/Banners/best_sellers/best_sellers.css
  Request: www.adtrak.net/adx.js crunch! (Blocked)
  Request: img.example.com/hbg.gif
  Request: img.example.com/example.jpg
  Request: img.example.com/mt.png
  Request: img.example.com/mm.png
  Request: img.example.com/mb.png
  Request: www.popuptraffic.com/scripts/popup.php?hid=a71b91fa5&tmpl=Ua.tmp crunch! (Blocked)
  Request: www.example.com/tracker.js
  Request: www.lik-sang.com/Banners/best_sellers/lsi_head.gif
  Request: www.adtrak.net/adjs.php?n=020548130&what=zone:61 crunch! (Blocked)
  Request: www.adtrak.net/adjs.php?n=463594413&what=zone:58&source=Ua crunch! (Blocked)
  Request: www.lik-sang.com/Banners/best_sellers/bottomani.swf
  Request: mmm.elitemediagroup.net/install.php?allowpop=no&popupmincook=0&allowsp2=1 crunch! (Blocked)
  Request: www.example.com/tracker.js?screen=1400x1050&win=962x693
  Request: www.adtrak.net/adlog.php?bannerid=1309&clientid=439&zoneid=61 crunch! (Blocked)
  Request: 66.70.21.80/scripts/click.php?hid=5c3cf599a9efd0320d26&si
  Request: 66.70.21.80/img/pixel.gif
  Request: www.adtrak.net/adlog.php?bannerid=1309&clientid=439&zoneid=58&source=Ua&block=86400 crunch! (Blocked)
  Request: 66.70.21.80/scripts/click.php?hid=a71b9f6504b0c5681fa5&si=Ua

Despite 12 out of 32 requests being blocked, the page looked, and seemed to behave perfectly "normal" (minus some ads, of course).

5.4. One of my favorite sites does not work with Privoxy. What can I do?

First verify that it is indeed a Privoxy problem, by toggling off Privoxy through http://config.privoxy.org/toggle (the toggle feature may need to be enabled in the main config), 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).

If the problem went away, we know we have a configuration related problem. Now go to http://config.privoxy.org/show-url-info 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 required. Now, armed with this information, go to http://config.privoxy.org/show-status and select the appropriate actions files for editing.

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!

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 { fragile } section in user.action, which is an alias that turns off most "dangerous" actions, but is also likely to turn off more actions then needed, and thus lower your privacy and protection more than necessary,

Troubleshooting actions is discussed in more detail in the User Manual appendix, Troubleshooting: the Anatomy of an Action. There is also an actions tutorial with general configuration information and examples.

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.

5.5. After installing Privoxy, I have to log in every time I start IE. What gives?

This is a quirk that affects the installation of Privoxy, 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.

When setting up an NT based Windows system with Privoxy 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.

When setting up Privoxy 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 Privoxy. 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!

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.

[Thanks to Ray Griffith for this submission.]

5.6. I cannot connect to any FTP sites. Privoxy is blocking me.

Privoxy cannot act as a proxy for FTP traffic, so do not configure your browser to use Privoxy as an FTP proxy. The same is true for any protocol other than HTTP or HTTPS (SSL).

Most browsers understand FTP as well as HTTP. If you connect to a site, with a URL like ftp://ftp.example.com, your browser is making an FTP connection, and not a HTTP connection. So while your browser may speak FTP, Privoxy does not, and cannot proxy such traffic.

To complicate matters, some systems may have a generic "proxy" setting, which will enable various protocols, including both HTTP and FTP proxying! So it is possible to accidentally enable FTP proxying in these cases. And of course, if this happens, Privoxy 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.

Will Privoxy ever proxy FTP traffic? Unlikely. There just is not much reason, and the work to make this happen is more than it may seem.

5.7. In Mac OS X, I can't configure Microsoft Internet Explorer to use Privoxy as the HTTP proxy.

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 127.0.0.1 in the entry field. Enter 8118 in the Port field. The next time you start IE, it should reflect these values.

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.

Note: This ONLY applies to privoxy 3.0.6 and earlier.

Just dragging the Privoxy folder to the trash is not enough to delete it. Privoxy supplies an uninstall.command file that takes care of these details. Open the trash, drag the uninstall.command file out of the trash and double-click on it. You will be prompted for confirmation and the administration password.

The trash may still appear full after this command; emptying the trash from the desktop should make it appear empty again.

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 localhost as my browser's proxy setting.

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 127.0.0.1 instead of localhost works around the problem.

5.10. I just upgraded to Mac OS X 10.9 (Mavericks) and now Privoxy has stopped working.

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, Privoxy 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 uninstall.command script (either back up your configuration files or select to not have the uninstaller remove them when it prompts you) and then reinstall Privoxy using the installer package and merge in your configuration.

5.11. My logs show many "Unable to get my own hostname" lines. Why?

Privoxy 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 config file listen-address setting). If the system cannot supply this information, Privoxy logs this condition.

Typically, this would be considered a minor system configuration error. It is not a fatal error to Privoxy however, but may result in a much slower response from Privoxy on some platforms due to DNS timeouts.

This can be caused by a problem with the local hosts 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.

You should also be able to work around the problem with the hostname option.

5.12. When I try to launch Privoxy, I get an error message "port 8118 is already in use" (or similar wording). Why?

Port 8118 is Privoxy's default TCP "listening" port. Typically this message would mean that there is already one instance of Privoxy running, and your system is actually trying to start a second Privoxy 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.

5.13. Pages with UTF-8 fonts are garbled.

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 "demoronizer" filter, please try temporarily disabling it.

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.

Once the problem-causing filter is known, it can be fixed or disabled.

Upgrading Privoxy, or going to the most recent default.action file available from git might be worth a try, too.

5.14. Why are binary files (such as images) corrupted when Privoxy is used?

This may also be caused by an (overly aggressive filter in conjunction with a web server that is misreporting the content type. By default binary files are exempted from Privoxy's filtering (unless the web server by mistake says the file is something else).

5.15. What is the "demoronizer" and why is it there?

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. Privoxy borrowed from this script, introducing a filter based on the original demoronizer, which in turn could correct these errors on the fly.

But this is only needed in some situations, and will cause serious problems in some other situations.

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 should not be on.

On the other hand, if you use non-Microsoft products, and you occasionally notice weird characters on pages, you might want to try it.

5.16. Why do I keep seeing "PrivoxyWindowOpen()" in raw source code?

Privoxy is attempting to disable malicious Javascript in this case, with the unsolicited-popups filter. Privoxy cannot tell very well "good" code snippets from "bad" code snippets.

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.

5.17. I am getting too many DNS errors like "404 No Such Domain". Why can't Privoxy do this better?

There are potentially several factors here. First of all, the DNS resolution is done by the underlying operating system -- not Privoxy itself. Privoxy 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 "www." to the URL).

In other cases, if Privoxy is being chained with another proxy, this could complicate the issue, and cause undue delays and timeouts. In the case of a "socks4a" proxy, the socks server handles all the DNS. Privoxy would just be the "messenger" which is reporting whatever problem occurred downstream, and not the root cause of the error.

In any case, versions newer than 3.0.3 include various improvements to help Privoxy better handle these cases.

5.18. At one site Privoxy just hangs, and starts taking all CPU. Why is this?

This is probably a manifestation of the "100% cpu" 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 Privoxy's page filtering mechanism is trying to match against absurdly long strings and this becomes very CPU-intensive, taking a long, long time to complete.

Until a better solution comes along, disable filtering on these pages, particularly the js-annoyances and unsolicited-popups filters. If you run into this problem with a recent Privoxy version, please send a problem report.

5.19. I just installed Privoxy, and all my browsing has slowed to a crawl. What gives?

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 Privoxy version, please report the problem.

5.20. Why do my filters work on some sites but not on others?

It's probably due to compression. It is a common practice for web servers to send their content "compressed" in order to speed things up, and then let the browser "uncompress" them. When compiled with zlib support Privoxy can decompress content before filtering, otherwise you may want to enable prevent-compression.

As of Privoxy 3.0.9, zlib support is enabled in the default builds.

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?

Probably the browser is requesting ads through HTTPS and Privoxy 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.

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.

To do that, enable logging to figure out which requests get blocked by Privoxy and add the hosts (no path patterns) to a section like this:

  {+redirect{http://127.0.0.1:0/} -block -limit-connect}
  .ivwbox.de:443/

Additionally you have to configure your browser to contact "127.0.0.1:0" directly (instead of through Privoxy).

To add a proxy exception in Mozilla Firefox open the "Preferences", click the "Settings" button located on the "Network" tab in the "Advanced" section, and add "127.0.0.1:0" in the "No Proxy for:" field.

You can also prevent the problem by enabling https-inspection in which case Privoxy's error messages are delivered encrypted.

5.22. I get selinux error messages. How can I fix this?

Please report the problem to the creator of your selinux policies.

The problem is that some selinux policy writers aren't familiar with the application they are trying to "secure" and thus create policies that make no sense.

In Privoxy's 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 Privoxy's default configuration doesn't block these requests.

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.

5.23. I compiled Privoxy with Gentoo's portage and it appears to be very slow. Why?

Probably you unintentionally compiled Privoxy without threading support in which case requests have to be serialized and only one can be served at the same time.

Check your "USE" flags and make sure they include "threads". If they don't, add the flag and rebuild Privoxy.

If you compiled Privoxy with threading support (on POSIX-based systems), the "Conditional #defines" section on http://config.privoxy.org/show-status will list "FEATURE_PTHREAD" as "enabled".

5.24. What are tainted sockets and how do I prevent them?

Privoxy 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).

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 Privoxy. Technically Privoxy 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).

Server sockets are also marked tainted when a client requests a resource, but closes the connection before Privoxy has completely received (and forwarded) the resource to the client. In this case the server would (probably) accept additional requests, but Privoxy could not get the response without completely reading the leftovers from the previous response.

These are just two examples, there are currently a bit more than 25 scenarios in which a socket is considered tainted.

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.

5.25. After adding my custom filters, Privoxy crashes when visitting certain websites

This can happen if your custom filters require more memory than Privoxy is allowed to use. Usually the problem is that the operating system enforces a stack size limit that isn't sufficient.

Unless the problem occurs with the filters available in the default configuration, this is not considered a Privoxy bug.

To prevent the crashes you can rewrite your filter to use less resources, increase the relevant memory limit or recompile pcre to use less stack space. For details please see the pcrestack man page and the documentation of your operating system.

5.26. What to do if editing the config file of privoxy is access denied?

Your userid probably isn't allowed to edit the file. On Windows you can use the windows equivalent of sudo:

  runas /user:administrator "notepad \privoxy\config.txt"

or fix the file permissions:

  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>

or try to point-n-click your way through adjusting the file permissions in windows explorer.