+ <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>
+ </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>
+ </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>
+ </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>
+ </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>
+ </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>
+ </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>
+ 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=
+ "_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>
+ </div>
+ <div class="SECT2">
+ <h2 class="SECT2">
+ <a name="AEN5636">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>
+ <p>
+ </p>
+ <ul>
+ <li>
+ <p>
+ Privoxy main page:
+ </p>
+ <a name="AEN5650"></a>
+ <blockquote class="BLOCKQUOTE">
+ <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=
+ "APPLICATION">Privoxy</span>)
+ </p>
+ </li>
+ <li>
+ <p>
+ Show information about the current configuration, including
+ viewing and editing of actions files:
+ </p>
+ <a name="AEN5658"></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="AEN5663"></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="AEN5668"></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="AEN5673"></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="AEN5681"></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="AEN5685"></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="AEN5688"></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>
+ </blockquote>
+ </li>
+ </ul>
+
+ <p>
+ These may be bookmarked for quick reference. See next.
+ </p>
+ <div class="SECT3">
+ <h3 class="SECT3">
+ <a name="BOOKMARKLETS">14.2.1. Bookmarklets</a>
+ </h3>
+ <p>
+ Below are some <span class="QUOTE">"bookmarklets"</span> to allow
+ you to easily access a <span class="QUOTE">"mini"</span> version
+ of some of <span class="APPLICATION">Privoxy's</span> special
+ pages. They are designed for MS Internet Explorer, but should
+ work equally well in Netscape, Mozilla, and other browsers which
+ support JavaScript. They are designed to run directly from your
+ bookmarks - not by clicking the links below (although that should
+ work for testing).
+ </p>
+ <p>
+ To save them, right-click the link and choose <span class=
+ "QUOTE">"Add to Favorites"</span> (IE) or <span class=
+ "QUOTE">"Add Bookmark"</span> (Netscape). You will get a warning
+ that the bookmark <span class="QUOTE">"may not be safe"</span> -
+ just click OK. Then you can run the Bookmarklet directly from
+ your favorites/bookmarks. For even faster access, you can put
+ them on the <span class="QUOTE">"Links"</span> bar (IE) or the
+ <span class="QUOTE">"Personal Toolbar"</span> (Netscape), and run
+ them with a single click.
+ </p>
+ <p>
+ </p>
+ <ul>
+ <li>
+ <p>
+ <a href=
+ "javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=enabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
+ target="_top">Privoxy - Enable</a>
+ </p>
+ </li>
+ <li>
+ <p>
+ <a href=
+ "javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=disabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
+ target="_top">Privoxy - Disable</a>
+ </p>
+ </li>
+ <li>
+ <p>
+ <a href=
+ "javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=toggle','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
+ target="_top">Privoxy - Toggle Privoxy</a> (Toggles between
+ enabled and disabled)
+ </p>
+ </li>
+ <li>
+ <p>
+ <a href=
+ "javascript:void(window.open('http://config.privoxy.org/toggle?mini=y','ijbstatus','width=250,height=2,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());"
+ target="_top">Privoxy- View Status</a>
+ </p>
+ </li>
+ <li>
+ <p>
+ <a href=
+ "javascript:void(window.open('http://config.privoxy.org/show-url-info?url='+escape(location.href),'Why').focus());"
+ target="_top">Privoxy - Why?</a>
+ </p>
+ </li>
+ </ul>
+
+ <p>
+ Credit: The site which gave us the general idea for these
+ bookmarklets is <a href="http://www.bookmarklets.com/" target=
+ "_top">www.bookmarklets.com</a>. They have more information about
+ bookmarklets.
+ </p>
+ </div>
+ </div>
+ <div class="SECT2">
+ <h2 class="SECT2">
+ <a name="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>
+ <p>
+ </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>
+ </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>
+ </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>
+ </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>
+ </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>
+ </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>
+ </li>
+ <li>
+ <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>
+ </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>
+ </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>
+ </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>
+ </div>
+ <div class="SECT2">
+ <h2 class="SECT2">
+ <a name="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. See <a href=
+ "appendix.html#BOOKMARKLETS">the Bookmarklets</a> section on a
+ quick and easy way to do this (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>
+ </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>
+
+ {+change-x-forwarded-for{block}
+ +deanimate-gifs {last}