<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Fiddler Web Debugger</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/fiddler/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/fiddler/feed.xml</link>
    <description>Fiddler is a web debugging tool which is owned, developed, and distributed by Eric Lawrence.</description>
    <lastBuildDate>Wed, 05 Aug 2015 11:51:50 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Blog Closed: Fiddler now a part of the Telerik family</title>
      <link>https://docs.microsoft.com/archive/blogs/fiddler/blog-closed-fiddler-now-a-part-of-the-telerik-family</link>
      <pubDate>Mon, 10 Sep 2012 06:20:00 GMT</pubDate>
      <dc:creator><![CDATA[EricLaw [Edge]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fiddler/2012/09/10/blog-closed-fiddler-now-a-part-of-the-telerik-family/</guid>
      <description><![CDATA[Read more here http://ericlawrence.com/fiddler/letterfromeric.asp.Find the new Fiddler blog here:...]]></description>
      <content:encoded><![CDATA[Read more here <a href="http://ericlawrence.com/fiddler/letterfromeric.asp">http://ericlawrence.com/fiddler/letterfromeric.asp</a>.<p>Find the new Fiddler blog here: <a href="http://blogs.telerik.com/fiddler/posts">http://blogs.telerik.com/fiddler/posts</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 2012, IIS Express, and Fiddler</title>
      <link>https://docs.microsoft.com/archive/blogs/fiddler/visual-studio-2012-iis-express-and-fiddler</link>
      <pubDate>Wed, 22 Aug 2012 14:09:00 GMT</pubDate>
      <dc:creator><![CDATA[EricLaw [Edge]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fiddler/2012/08/22/visual-studio-2012-iis-express-and-fiddler/</guid>
      <description><![CDATA[From the mail bag...

Q:When&nbsp;I use IE10 on Windows 8 to visit&nbsp;an IIS Express instance...]]></description>
      <content:encoded><![CDATA[<span style="color: #888888; background-color: #ffffff;">From the mail bag...</span>

<strong>Q:</strong><em>When&nbsp;I use IE10 on Windows 8 to visit&nbsp;an IIS Express instance using the following URL&nbsp;http://ipv4.fiddler:2468/, I get an unexpected error message. </em>

<span style="font-size: small;"><span style="font-family: courier new,courier;">HTTP/1.1 400 Bad Request<br></span><span style="font-family: courier new,courier;">Content-Type: text/html;</span><span style="font-family: courier new,courier;">charset=us-ascii<br></span><span style="font-family: courier new,courier;">Server: Microsoft-HTTPAPI/2.0<br></span><span style="font-family: courier new,courier;">Date: Wed, 22 Aug 2012 </span><span style="font-family: courier new,courier;">19:59:52 GMT<br></span><span style="font-family: courier new,courier;">Connection: close<br></span><span style="font-family: courier new,courier;">Content-Length: 334</span></span>

<span style="font-size: small;"><span style="font-family: courier new,courier;">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"&gt;<br></span><span style="font-family: courier new,courier;">&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Bad Request&lt;/TITLE&gt;<br></span><span style="font-family: courier new,courier;">&lt;META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"&gt;&lt;/HEAD&gt;<br></span><span style="font-family: courier new,courier;">&lt;BODY&gt;&lt;h2&gt;<span style="color: #ff0000;">Bad Request - Invalid Hostname</span>&lt;/h2&gt;<br></span><span style="font-family: courier new,courier;">&lt;hr&gt;&lt;p&gt;HTTP Error </span><span style="font-family: courier new,courier;">400. <span style="color: #ff0000;"><strong>The request hostname is invalid.<span style="color: #000000;">&lt;/</span></strong></span>p&gt;&lt;/BODY&gt;&lt;/HTML&gt;</span></span>

<em>What's up with that?</em>

<strong>A:</strong> First, it's important to understand that you don&rsquo;t need to use any special &ldquo;.fiddler&rdquo; addresses for Fiddler to capture local traffic&nbsp;when using IE (<a href="http://blogs.msdn.com/b/fiddler/archive/2011/02/10/fiddler-is-better-with-internet-explorer-9.aspx">since version 9</a>). You only need to use those when your client is making&nbsp;its HTTP requests using System.Net (e.g. HTTPWebRequest), which&nbsp;unconditionally bypasses the proxy for&nbsp;addresses it deems "local."

Having said that, you'll find that the same request works if you use the address <strong>http://localhost.fiddler:2468/</strong>. The reason that <strong>localhost.fiddler</strong> works is that when Fiddler gets this URL, it sets the request's&nbsp;<strong>Host</strong> header to &ldquo;<strong>localhost</strong>&rdquo; before passing it to the IIS Express server. If you instead use <strong>ipv6.fiddler </strong>as the request URL's hostname, Fiddler sets the <strong>Host</strong> header to &ldquo;<strong>[::1]</strong>&rdquo;. If you use <strong>ipv4.fiddler</strong>, Fiddler sets the <strong>Host </strong>header to &ldquo;<strong>127.0.0.1</strong>&rdquo;.

IIS Express only&nbsp;expects the &ldquo;<strong>localhost</strong>&rdquo; <strong>Host</strong> header value&nbsp;and returns the HTTP/400 for the &ldquo;127.0.0.1&rdquo; Host, saying, in effect &ldquo;<em>I don&rsquo;t have a website with that hostname.</em>&rdquo;

<p>-Eric</p>]]></content:encoded>
    </item>
    <item>
      <title>Update on Fiddler Telemetry</title>
      <link>https://docs.microsoft.com/archive/blogs/fiddler/update-on-fiddler-telemetry</link>
      <pubDate>Sat, 04 Aug 2012 13:35:00 GMT</pubDate>
      <dc:creator><![CDATA[EricLaw [Edge]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fiddler/2012/08/04/update-on-fiddler-telemetry/</guid>
      <description><![CDATA[Back in October of last year, I blogged the results of some surveys and announced that some...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Back in October of last year, I <a href="http://blogs.msdn.com/b/fiddler/archive/2011/10/07/news-on-fiddler-surveys-and-telemetry.aspx">blogged</a> the results of some surveys and announced that some telemetry features would be added to the Fiddler beta builds. Now that 10 months have passed, I&rsquo;ll provide an update on how things are going.</span></p>
<h2><span style="font-family: Calibri; font-size: medium;" size="4" face="Calibri"><span style="font-weight: bold;">SmartAssembly Telemetry</span></span></h2>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Microsoft products use the <a href="https://www.microsoft.com/products/ceip/EN-US/default.mspx">Customer Experience Improvement Program</a> (CEIP, sometimes called <a href="http://msdn.microsoft.com/en-us/library/hh554414(v=prot.10)">SQM</a>) to collect telemetry from customer computers so we can better understand the configuration of those PCs and how the software is being used. Unfortunately, unlike <a href="http://en.wikipedia.org/wiki/Windows_Error_Reporting">Windows Error Reporting</a> (sometimes called Watson) 3rd-party applications like Fiddler can&rsquo;t participate in CEIP. Fortunately, as I </span><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">announced in October, I discovered an alternative. Since then, the <a href="http://www.getfiddler.com/dl/Fiddler2BetaSetup.exe">beta builds</a> of Fiddler have been instrumented using <a href="http://www.red-gate.com/products/dotnet-development/smartassembly/">RedGate&rsquo;s SmartAssembly</a> tool. SmartAssembly contains a bunch of useful features, including obfuscation, automated error reporting, and the one<sup><span style="font-size: x-small;" size="2">1</span></sup> Fiddler uses-- <a href="http://www.red-gate.com/products/dotnet-development/smartassembly/learn-more/walkthroughs/walkthrough-feature-usage-reporting">feature usage reporting</a>. </span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">I elected to instrument only the beta version to keep the amount of data collected to a reasonable size&mdash;while only a small fraction of the overall user-base, the beta audience is large enough to be statistically significant for the entire Fiddler population. There&rsquo;s probably a bit of a bias because Beta users tend to be more &ldquo;Advanced&rdquo; than the average users, but I expect the effect is slight. I probably <em>should </em>change my strategy here to instead use a sampling percentage (e.g. 5% of users) but I haven&rsquo;t found the need to do so thus far.</span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">A total of 31,000 beta users have opted-in to data collection; data collected from the Version Check webservice (described shortly) suggests that this is about 20% of the users of the beta. </span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">With just one call in Fiddler&rsquo;s startup routine:</span></p>
<p><span style="font-family: Courier New; font-size: small;" size="3" face="Courier New">&nbsp; SmartAssembly.ReportUsage.PlatformData.ReportAll();</span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">&hellip;a set of basic information about the user&rsquo;s environment is collected. The results were definitely interesting; more users than I had expected have .NET4 installed, while only a small percentage of users have multiple monitors. XP usage is still common, although Windows Vista and later account for 56 (and growing) percent&nbsp;of the machines running Fiddler.</span></p>
<p align="center"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/5826.image_6648E06F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/5826.image_5F00_6648E06F.png" width="444" height="340" /><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/8168.image_462DD3B2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/8168.image_5F00_462DD3B2.png" width="351" height="315" /></p>
<p align="center"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/7563.image_7825743C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/7563.image_5F00_7825743C.png" width="260" height="259" /><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/2705.image_2A1D14C7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/2705.image_5F00_2A1D14C7.png" width="260" height="259" /><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/1200.image_1EF38A7D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/1200.image_5F00_1EF38A7D.png" width="290" height="161" /></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Despite the fact that Fiddler itself is only available in English, a majority of Fiddler users run Fiddler on machines with a non-English locale (blue and purple are the US and Great Britain; all other colors are non-English):</span></p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/5432.image_50EB2B07.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/5432.image_5F00_50EB2B07.png" width="287" height="304" /></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">This data should prove useful if I ever decide to translate Fiddler into other languages.</span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">While the environment information is useful, the most interesting information comes from feature usage reporting. Basic information, including the count of sessions-per-user-per-day and the Fiddler version, is captured automatically. Adding application-specific metrics is simple. </span><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">SmartAssembly offers two easy methods to instrument your code. First, you can add an attribute to any method and when that method is called, its counter will be incremented:</span></p>
<p><span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #if TELEMETRY <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [SmartAssembly.ReportUsage.ReportUsage] <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #endif <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// Show Fiddler's Options dialog <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [CodeDescription("Show the Fiddler Options dialog")] <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void actShowOptions()</span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">In some cases, you&rsquo;ll want to capture events at a more granular level; in that case, just call the ReportUsage method with a string specifying the feature name:</span></p>
<p><span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #if TELEMETRY <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SmartAssembly.ReportUsage.UsageCounter.ReportUsage("FiddlerBoot"); <br /></span><span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (CONFIG.bIsBeta) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SmartAssembly.ReportUsage.UsageCounter.ReportUsage("IsBeta"); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New">&nbsp;&nbsp;&nbsp; <br /></span><span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #endif</span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Feature usage reporting allows me to quickly see which features in Fiddler are most popular, as well as which features need to have their discoverability improved. For instance, I know which of Fiddler&rsquo;s tabs are used in a session (AutoResponder tab is activated in 7 times as many sessions as the Composer), and which features are getting overlooked (Fiddler&rsquo;s insanely powerful <a href="http://www.fiddler2.com/fiddler/help/quickexec.asp">QuickExec feature</a> gets used in only 1% of Sessions).</span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">By pairing the SmartAssembly telemetry data with surveys and <a href="http://blogs.msdn.com/b/fiddler/archive/2010/05/07/the-fiddler-community.aspx">community</a> feedback, a tiny team (i.e. me) can&nbsp;prioritize improvements to maximize the benefits for&nbsp;the tool's&nbsp;huge user-base.</span></p>
<h2><span style="font-family: Calibri;" face="Calibri"><span style="font-size: medium; font-weight: bold;" size="4">Version Check Analysis</span></span></h2>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Of course, while rich telemetry is the most valuable, I&rsquo;m also interested in getting some basic statistics from the entire userbase. </span><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">By default, when Fiddler starts, it pings a web service to see whether a new version is available. As a part of this request, the current Windows version and Fiddler version are provided so that the web service can check for a compatible upgrade. I picked a random day, August 1st, and analyzed the data. It appears that only about 66% of users are using the latest version of Fiddler, released on <a href="http://www.fiddler2.com/Fiddler/changelog.asp#v2">June 23rd</a>. Nearly a quarter of Fiddler users are using builds from the last two years, and about 4% of users are using truly ancient builds. 6% of the calls didn&rsquo;t provide meaningful version information, either because the calls were fiddled (something that Fiddler is quite good at :-) or the builds were so old that the version information wasn&rsquo;t present.</span></p>
<blockquote>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/4846.image_45C1A0BD.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/4846.image_5F00_45C1A0BD.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/7178.image_thumb_49CBEE8F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/7178.image_5F00_thumb_5F00_49CBEE8F.png" width="304" height="251" /></a></p>
</blockquote>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">It&rsquo;s a little sad to see that so many users aren&rsquo;t getting the maximum benefit out of the many hundreds of hours of investment made in Fiddler over the past two years. (Not to mention the hundreds of bugfixes!) If you&rsquo;re running an older version of Fiddler, <em>please </em>upgrade today. </span></p>
<h2><span style="font-family: Calibri; font-size: medium;" size="4" face="Calibri"><span style="font-weight: bold;">Book Survey</span></span></h2>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">In last fall's survey, just over a thousand Fiddler users indicated that they would buy a printed Fiddler book, and ~600 users indicated that they would purchase an E-Book on the topic. About 900 users said they&rsquo;d read the EBook if it were free.</span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">The Fiddler book was completed in June and is <a href="http://fiddlerbook.com">now available</a> in paperback and DRM-less PDF format ($19 in paperback and $10 in PDF). The book turned out about 33% longer than I expected (it&rsquo;s 330 pages) and has received good reviews. </span><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Sales have been brisk, and while I haven&rsquo;t yet surpassed the goals suggested by the survey, I&rsquo;m pretty happy with the results from the first two months. Additionally, two international publishers have tendered proposals for translated versions (Korean and Chinese) and a third (Japanese) is under consideration but not yet committed. Unfortunately, my plan to make the book available for free borrowing via the Kindle Lending Library hit two snags: first, the book doesn't work well on the non-Fire Kindles (because images and source code don't reformat well in .epub/.mobi), and second, Amazon's terms for books in the lending library prohibit making the book available from <em>any other source </em>in electronic form. That would preclude me offering the book to everyone&nbsp;who prefers the&nbsp;PDF format (which looks great on the iPad and PCs).<br /></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">-Eric <br /></span></p>
<p><span style="font-family: Calibri;" face="Calibri"><span style="font-size: x-small;" size="2"><sup>1 </sup>Fiddler doesn&rsquo;t use the obfuscation feature because most of the classes are chock full of public methods, properties, and fields which must be callable from FiddlerScript and Extensions. Similarly, Fiddler already included a (manual) exception-reporting feature, so I elected not to switch over to the SmartAssembly version.</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Find Proxy Authentication bugs with Fiddler</title>
      <link>https://docs.microsoft.com/archive/blogs/fiddler/find-proxy-authentication-bugs-with-fiddler</link>
      <pubDate>Fri, 03 Aug 2012 11:27:00 GMT</pubDate>
      <dc:creator><![CDATA[EricLaw [Edge]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fiddler/2012/08/03/find-proxy-authentication-bugs-with-fiddler/</guid>
      <description><![CDATA[Over on my other blog, I just posted an article showing how you can use Fiddler to find bugs in...]]></description>
      <content:encoded><![CDATA[Over on my other blog, I <a href="http://blogs.msdn.com/b/ieinternals/archive/2012/08/03/manual-proxy-authentication-requiring-basic-or-digest-breaks-many-applications.aspx">just posted an article</a> showing how you can use Fiddler to find bugs in applications that don't expect authenticating proxies.]]></content:encoded>
    </item>
    <item>
      <title>My book “Debugging with Fiddler”, is now available</title>
      <link>https://docs.microsoft.com/archive/blogs/fiddler/my-book-debugging-with-fiddler-is-now-available</link>
      <pubDate>Sat, 23 Jun 2012 11:50:00 GMT</pubDate>
      <dc:creator><![CDATA[EricLaw [Edge]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fiddler/2012/06/23/my-book-debugging-with-fiddler-is-now-available/</guid>
      <description><![CDATA[I&rsquo;m delighted to announce that my new full-length book on Fiddler is now available. Weighing...]]></description>
      <content:encoded><![CDATA[<p>I&rsquo;m delighted to announce that my new full-length book on Fiddler is now available. Weighing in at 330 pages, it covers every feature in Fiddler, and provides the most comprehensive available documentation of how to develop Fiddler extensions (including Inspectors, Transcoders, and IFiddlerExtensions) and build on the FiddlerCore class library. The book is available in paperback and DRM-free PDF formats.</p>
<p>You can learn more about the book at <a href="http://fiddlerbook.com">http://fiddlerbook.com</a>. The site includes a link to the final <a href="http://fiddler2.com/book/DWF-TOCAndSample.pdf">Table-of-Contents</a>, as well as all of the code samples in the book.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/8461.Isolated_09D16533.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/8461.Isolated_5F00_09D16533.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="Isolated" border="0" alt="Isolated" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/8484.Isolated_thumb_1BADF900.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/8484.Isolated_5F00_thumb_5F00_1BADF900.jpg" width="347" height="484" /></a></p>
<p>Thanks for your interest in Fiddler!</p>
<p>-Eric</p>]]></content:encoded>
    </item>
    <item>
      <title>Sneak Peek at Table of Contents for the Upcoming Fiddler Book</title>
      <link>https://docs.microsoft.com/archive/blogs/fiddler/sneak-peek-at-table-of-contents-for-the-upcoming-fiddler-book</link>
      <pubDate>Thu, 26 Apr 2012 06:45:00 GMT</pubDate>
      <dc:creator><![CDATA[EricLaw [Edge]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fiddler/2012/04/26/sneak-peek-at-table-of-contents-for-the-upcoming-fiddler-book/</guid>
      <description><![CDATA[Table of Contents...]]></description>
      <content:encoded><![CDATA[<div class="WordSection1">  <div>  <h1><b>Table of Contents</b></h1>  </div>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Acknowledgements............................................................................................................................................................ iii</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Table of Contents................................................................................................................................................................ iv</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Origins.................................................................................................................................................................................... 1</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">About this book............................................................................................................................................................... 3</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">A Quick Primer..................................................................................................................................................................... 5</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Basic Concepts................................................................................................................................................................. 5</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler Scenarios............................................................................................................................................................ 6</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Getting Started with Fiddler............................................................................................................................................... 8</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">System Requirements.................................................................................................................................................... 8</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Installing Fiddler.............................................................................................................................................................. 8</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Updating Fiddler.............................................................................................................................................................. 9</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The Fiddler User-Interface............................................................................................................................................... 10</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The Web Sessions List.................................................................................................................................................. 10</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Web Sessions Context Menu...................................................................................................................................... 13</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler&rsquo;s Main Menu......................................................................................................................................................... 17</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler&rsquo;s About Box...................................................................................................................................................... 22</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler&rsquo;s Toolbar................................................................................................................................................................ 24</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler&rsquo;s Status Bar....................................................................................................................................................... 25</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Application Hotkeys.......................................................................................................................................................... 26</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">QuickExec........................................................................................................................................................................... 27</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The Fiddler User-Interface............................................................................................................................................... 32</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Comparing Sessions........................................................................................................................................................... 33</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Debugging with Breakpoints............................................................................................................................................ 35</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Statistics Tab....................................................................................................................................................................... 38</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The Filters tab..................................................................................................................................................................... 40</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Request Headers.......................................................................................................................................................... 41</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The Timeline tab................................................................................................................................................................ 45</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Mode: Timeline............................................................................................................................................................. 45</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Mode: Client Pipe Map................................................................................................................................................ 47</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Mode: Server Pipe Map.............................................................................................................................................. 47</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The AutoResponder tab................................................................................................................................................... 48</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Specifying the Match Condition................................................................................................................................. 49</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Specifying the Action Text.......................................................................................................................................... 50</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Using RegEx Replacements in Action Text................................................................................................................ 51</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Drag-and-Drop support............................................................................................................................................... 52</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">FARX Files....................................................................................................................................................................... 53</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Encoding and Decoding Text with the TextWizard...................................................................................................... 54</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">A Few Words on Character Encodings...................................................................................................................... 55</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The Composer tab............................................................................................................................................................. 56</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The Log tab......................................................................................................................................................................... 60</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The Find Sessions Dialog................................................................................................................................................... 61</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The HOSTS Dialog............................................................................................................................................................... 63</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Retargeting Traffic with Fiddler....................................................................................................................................... 64</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Features to Retarget Requests................................................................................................................................... 66</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Sending Traffic to Fiddler................................................................................................................................................. 67</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Capturing Traffic from Browsers................................................................................................................................ 67</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Capturing Traffic from Other Applications............................................................................................................... 69</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Capturing Traffic from Services.................................................................................................................................. 70</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Capturing Traffic to Loopback.................................................................................................................................... 70</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Running Fiddler on Mac OSX...................................................................................................................................... 73</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Capturing Traffic from Other Computers................................................................................................................. 74</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Capturing Traffic from Devices................................................................................................................................... 75</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Using Fiddler as a Reverse Proxy............................................................................................................................... 76</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Chaining to Upstream Proxy Servers......................................................................................................................... 77</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Chaining to SOCKS / TOR............................................................................................................................................. 77</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">VPNs, Modems, and Tethering................................................................................................................................... 78</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">DirectAccess.................................................................................................................................................................. 78</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Buffering vs. Streaming Traffic........................................................................................................................................ 79</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Request Buffering......................................................................................................................................................... 79</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Response Buffering...................................................................................................................................................... 79</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">COMET............................................................................................................................................................................ 79</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">HTML5 WebSockets.......................................................................................................................................................... 81</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler and HTTPS.............................................................................................................................................................. 82</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Configuring Clients for HTTPS Decryption..................................................................................................................... 85</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Certificate Validation......................................................................................................................................................... 86</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Apple iOS and Android..................................................................................................................................................... 87</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Client Certificates.............................................................................................................................................................. 88</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Client Certificates.............................................................................................................................................................. 89</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler and FTP.................................................................................................................................................................. 90</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Memory Use and Fiddler&rsquo;s Bitness................................................................................................................................. 91</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler and Web Authentication.................................................................................................................................... 93</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">HTTP Authentication.................................................................................................................................................... 93</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Automatic Authentication in Fiddler......................................................................................................................... 94</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Authentication Issues................................................................................................................................................... 95</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">HTTPS Client Certificates............................................................................................................................................. 96</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Inspectors........................................................................................................................................................................... 98</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Auth (Request / Response)............................................................................................................................................ 100</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Caching (Response; ReadOnly)..................................................................................................................................... 102</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Cookies (Request / Response; ReadOnly)................................................................................................................... 103</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Headers (Request/Response; Read/Write)................................................................................................................ 104</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Context Menu............................................................................................................................................................. 105</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Keyboard Shortcuts................................................................................................................................................... 105</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Editing........................................................................................................................................................................... 105</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">HexView (Request / Response; Read/Write)............................................................................................................. 107</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">ImageView (Response; ReadOnly)................................................................................................................................ 109</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">JSON (Request / Response; ReadOnly)........................................................................................................................ 110</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Raw (Request / Response; Read/Write)...................................................................................................................... 111</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">SyntaxView (Request / Response; Read/Write)......................................................................................................... 112</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">TextView (Request / Response; Read/Write)............................................................................................................. 114</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Transformer (Response; Read/Write)......................................................................................................................... 115</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">WebForms (Request; Read/Write).............................................................................................................................. 117</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">WebView (Response; ReadOnly).................................................................................................................................. 118</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">XML (Request / Response; ReadOnly)......................................................................................................................... 119</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler Options................................................................................................................................................................ 120</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">General Options......................................................................................................................................................... 120</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">HTTPS Options............................................................................................................................................................. 121</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Extensions Options..................................................................................................................................................... 122</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Connections Options................................................................................................................................................. 123</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Appearance Options.................................................................................................................................................. 124</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Preferences..................................................................................................................................................................... 125</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Understanding Text Encodings...................................................................................................................................... 126</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler Extensions........................................................................................................................................................... 127</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Gallery............................................................................................................................................................................... 128</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Full-Screen View......................................................................................................................................................... 128</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Content Blocker............................................................................................................................................................... 130</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">FiddlerScript Editors....................................................................................................................................................... 132</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">FiddlerScript Tab........................................................................................................................................................ 132</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">ClassView Sidebar....................................................................................................................................................... 133</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler2 ScriptEditor.................................................................................................................................................. 133</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">SAZ Clipboard................................................................................................................................................................... 135</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Traffic Differ..................................................................................................................................................................... 136</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">AnyWHERE........................................................................................................................................................................ 137</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">JavaScript Formatter....................................................................................................................................................... 138</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Session Archive Zip (SAZ) Files...................................................................................................................................... 139</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Protecting SAZ Files................................................................................................................................................... 139</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Importing and Exporting Sessions................................................................................................................................. 141</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Import Formats........................................................................................................................................................... 141</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Export Formats............................................................................................................................................................ 141</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler&rsquo;s Viewer Mode................................................................................................................................................... 146</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">FiddlerCap........................................................................................................................................................................ 147</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Capture Box................................................................................................................................................................. 147</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Capture Options Box.................................................................................................................................................. 148</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Tools Box...................................................................................................................................................................... 149</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Using Fiddler for Performance Debugging................................................................................................................. 152</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Using Fiddler for Content Collection............................................................................................................................ 153</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Using Fiddler for Security Analysis............................................................................................................................... 154</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Configuration for IT Administrators.............................................................................................................................. 155</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Using Fiddler for Compatibility Diagnosis.................................................................................................................... 156</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Extending Fiddler with FiddlerScript............................................................................................................................ 158</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">About FiddlerScript.................................................................................................................................................... 158</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Editing FiddlerScript................................................................................................................................................... 159</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">FiddlerScript Functions.................................................................................................................................................. 161</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Session Handling Functions...................................................................................................................................... 161</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">General Functions...................................................................................................................................................... 162</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Automating Fiddler......................................................................................................................................................... 164</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Extending Fiddler&rsquo;s UI - Menus..................................................................................................................................... 167</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Extending the Tools Menu........................................................................................................................................ 167</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Extending the Web Sessions Context Menu.......................................................................................................... 168</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Extending the Rules Menu........................................................................................................................................ 168</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Creating New Top-Level Menus............................................................................................................................... 171</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Extending Fiddler&rsquo;s UI - Adding Columns to the Web Sessions List........................................................................ 173</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Binding Columns using Attributes............................................................................................................................ 173</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Binding Columns using AddBoundColumn............................................................................................................. 175</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">FiddlerObject Functions................................................................................................................................................. 177</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Referencing Assemblies................................................................................................................................................. 180</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Interacting with Fiddler.................................................................................................................................................. 181</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Sample Scripts.................................................................................................................................................................. 182</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Extending Fiddler with .NET........................................................................................................................................... 186</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Project Requirements and Settings......................................................................................................................... 187</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Debugging Extensions................................................................................................................................................ 187</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Best Practices for Extensions................................................................................................................................... 187</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Interacting with Fiddler.................................................................................................................................................. 192</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Understanding SessionStates................................................................................................................................... 192</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">SessionFlags................................................................................................................................................................. 192</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Sending Strings to the TextWizard.......................................................................................................................... 193</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Logging Events............................................................................................................................................................ 194</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Interacting with the FiddlerScript Engine............................................................................................................... 194</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Programming with Preferences.................................................................................................................................... 196</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Preference Naming.................................................................................................................................................... 196</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The IFiddlerPreferences Interface.......................................................................................................................... 196</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Storing and Removing Preferences........................................................................................................................ 197</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Retrieving Preferences............................................................................................................................................. 197</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Watching for Preference Changes.......................................................................................................................... 197</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Notifications in Extensions........................................................................................................................................ 197</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Notifications in FiddlerScript.................................................................................................................................... 198</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Building Extension Installers.......................................................................................................................................... 199</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Building Inspectors.......................................................................................................................................................... 202</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Inspecting the Session Object.................................................................................................................................. 205</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Dealing with HTTP Compression and Chunking.......................................................................................................... 208</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Decoding a Copy of the Body................................................................................................................................... 208</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Using the GetRe*BodyAsString Methods............................................................................................................... 209</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Using the utilDecode* Methods.............................................................................................................................. 209</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Inspector Assemblies................................................................................................................................................. 210</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler Extensions........................................................................................................................................................... 211</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Integrating with QuickExec....................................................................................................................................... 212</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Extension Assemblies................................................................................................................................................ 213</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Import and Export Transcoders.................................................................................................................................... 214</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Handling Options........................................................................................................................................................ 216</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Going Beyond Files..................................................................................................................................................... 218</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">FiddlerCore...................................................................................................................................................................... 224</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Legalities...................................................................................................................................................................... 225</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Getting Started with FiddlerCore............................................................................................................................. 225</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Compiling the Sample Application........................................................................................................................... 225</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The FiddlerCoreStartupFlags.................................................................................................................................... 227</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">The FiddlerApplication Class......................................................................................................................................... 229</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">FiddlerApplication Events......................................................................................................................................... 229</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">FiddlerApplication Methods..................................................................................................................................... 230</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">FiddlerApplication Properties and Fields............................................................................................................... 231</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler API................................................................................................................................................................... 231</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Common Tasks with FiddlerCore.................................................................................................................................. 233</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Other resources......................................................................................................................................................... 234</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Appendix A: Troubleshooting....................................................................................................................................... 236</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Missing Traffic............................................................................................................................................................. 236</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Interference from Security Software..................................................................................................................... 237</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Corrupted Proxy Settings.......................................................................................................................................... 238</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Resetting Fiddler........................................................................................................................................................ 238</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Troubleshooting Certificate Problems.................................................................................................................... 239</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Wiping all traces of Fiddler....................................................................................................................................... 240</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler crashes complaining about the "Configuration System"........................................................................ 240</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler randomly stops capturing traffic................................................................................................................ 240</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler stalls streaming RPC-over-HTTPS traffic.................................................................................................... 241</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Appendix B: Command Line Syntax............................................................................................................................. 242</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Option Flags................................................................................................................................................................. 242</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Appendix C: Session Flags.............................................................................................................................................. 243</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Session Display Flags.................................................................................................................................................. 243</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Breakpoint and Editing Flags..................................................................................................................................... 244</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Network Routing Flags............................................................................................................................................... 245</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Performance Simulation Flags.................................................................................................................................. 247</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Client Information Flags............................................................................................................................................. 247</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">HTTPS Flags.................................................................................................................................................................. 248</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Appendix D: Preferences.............................................................................................................................................. 254</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Network Preferences................................................................................................................................................ 254</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">HTTPS Preferences.................................................................................................................................................... 257</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Fiddler UI Preferences.............................................................................................................................................. 259</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Path Configuration..................................................................................................................................................... 265</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Miscellaneous............................................................................................................................................................. 266</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Extension Preferences.............................................................................................................................................. 266</a></span></p>  <p><span style="text-decoration: underline;"><a href="http://blogs.msdn.com#">Index.................................................................................................................................................................................. 270</a></span></p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p>  </div>]]></content:encoded>
    </item>
    <item>
      <title>.NET HTTPS connections timeout on SNI TLS Warning</title>
      <link>https://docs.microsoft.com/archive/blogs/fiddler/net-https-connections-timeout-on-sni-tls-warning</link>
      <pubDate>Wed, 28 Mar 2012 16:54:00 GMT</pubDate>
      <dc:creator><![CDATA[EricLaw [Edge]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fiddler/2012/03/28/net-https-connections-timeout-on-sni-tls-warning/</guid>
      <description><![CDATA[Recently, a handful of folks have emailed me complaining that some HTTPS sites cannot be reached by...]]></description>
      <content:encoded><![CDATA[<p>Recently, a handful of folks have emailed me complaining that some HTTPS sites cannot be reached by their .NET programs or from any program when Fiddler is configured to decrypt traffic. Notably, these users only have problems when running on Windows Vista or later.</p>
<p>So, what&rsquo;s going on?</p>
<p>When I need to troubleshoot issues that occur below Fiddler, <a href="http://fiddler2.com/r/?netmon">NetMon</a> is a good choice. Taking a look at the HTTPS handshake, the problem is immediately apparent:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="Netmon Screenshot showing 01 70 bytes" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/3036.image_3E366031.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/3036.image_5F00_3E366031.png" alt="Netmon Screenshot showing 01 70 bytes" width="1060" height="386" border="0" /></p>
<p>This server is returning a <a href="http://en.wikipedia.org/wiki/Transport_Layer_Security#Alert_protocol">TLS Alert</a> at the beginning of the handshake. The alert severity is 1 meaning <span style="font-family: Courier New;">WARNING</span>, and the code is 112 (0x70) which is the <span style="font-family: Courier New;">unrecognized_name</span> alert. With this alert, the server is indicating that it does not recognize the hostname provided by the server&rsquo;s <a href="http://blogs.msdn.com/b/ieinternals/archive/2009/12/07/certificate-name-mismatch-warnings-and-server-name-indication.aspx">Server Name Indication</a> TLS extension. This warning is only encountered when the client is running on Windows Vista and later because the SChannel HTTPS stack on Windows XP doesn&rsquo;t support SNI and other TLS extensions.</p>
<p>The server&rsquo;s behavior is explicitly not recommended according to the standards:</p>
<blockquote>
<p><span style="font-family: Courier New; font-size: x-small;">If the server understood the ClientHello extension but </span><span style="font-family: Courier New; font-size: x-small;">does not recognize the server name, the server SHOULD take one of two </span><span style="font-family: Courier New; font-size: x-small;">actions: either abort the handshake by sending a fatal-level </span><span style="font-family: Courier New; font-size: x-small;">unrecognized_name(112) alert or continue the handshake. It is NOT RECOMMENDED to send a warning-level unrecognized_name(112) alert, because the client's behavior in response to warning-level alerts is unpredictable. If there is a mismatch between the server name used </span><span style="font-family: Courier New; font-size: x-small;">by the client application and the server name of the credential chosen by the server, this mismatch will become apparent when the client application performs the server endpoint identification, at which point the client application will have to decide whether to proceed with the communication.</span></p>
</blockquote>
<p>The server&rsquo;s behavior is problematic because the .NET Framework&rsquo;s HTTPS implementation is unable to ignore this warning and it is not able to <a href="http://blogs.msdn.com/b/ieinternals/archive/2009/12/08/aes-is-not-a-valid-cipher-for-sslv3.aspx">automatically &ldquo;fail over&rdquo;</a> to an earlier protocol version, leading to a&nbsp; lengthy delay (~80 seconds) before a connection failure in Fiddler or other .NET applications.</p>
<p>To enable Fiddler to workaround sites with this problematic configuration, click <strong>Rules</strong> &gt; <strong>Customize Rules</strong>. Scroll to the <strong>OnBeforeRequest</strong> method and add the following block:</p>
<blockquote>
<p><span style="color: #0000ff; font-family: Courier New; font-size: x-small;">if (oSession.HTTPMethodIs("CONNECT") &amp;&amp; oSession.HostnameIs("BuggySite.com")) <br />{ <br /></span><span style="color: #0000ff; font-family: Courier New; font-size: x-small;">&nbsp; oSession["x-OverrideSslProtocols"] = "ssl3"; <br /></span><span style="color: #0000ff;"><span style="font-family: Courier New; font-size: x-small;">&nbsp; FiddlerApplication.Log.LogString("Legacy compat applied for inbound request to BuggySite.com"); <br /></span><span style="font-family: Courier New; font-size: x-small;">}</span></span></p>
</blockquote>
<p>Save the script and this block will force Fiddler to handshake with the server using only the SSLv3 protocol, which does not send TLS extensions, avoiding the problem.</p>
<p>To apply the same workaround in your .NET application without Fiddler, use the <a href="http://stackoverflow.com/a/169396/126229">same trick</a>: <span style="color: #0000ff; font-family: Courier New; font-size: x-small;">ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;</span></p>
<p>&nbsp;</p>
<p>-Eric</p>]]></content:encoded>
    </item>
    <item>
      <title>Cookie Scanning with Fiddler</title>
      <link>https://docs.microsoft.com/archive/blogs/fiddler/cookie-scanning-with-fiddler</link>
      <pubDate>Tue, 21 Feb 2012 15:23:00 GMT</pubDate>
      <dc:creator><![CDATA[EricLaw [Edge]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fiddler/2012/02/21/cookie-scanning-with-fiddler/</guid>
      <description><![CDATA[With the recent kerfuffle about sites providing misleading P3P statements, I decided to throw...]]></description>
      <content:encoded><![CDATA[<p>With the recent kerfuffle about sites <a href="http://blogs.msdn.com/b/ie/archive/2012/02/20/google-bypassing-user-privacy-settings.aspx">providing misleading P3P statements</a>, I decided to throw together a quick Fiddler add-on that displays privacy information simply in the Fiddler UI.</p>
<p>Install <a href="http://fiddler2.com/dl/fiddlerprivacyscanner.exe"><span style="font-size: medium;" size="4">the new Privacy Scanner add-on</span></a> and Fiddler will gain a new top-level menu named <strong>Privacy. </strong></p>
<blockquote>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/5123.image_thumb_33BD7F6F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/5123.image_5F00_thumb_5F00_33BD7F6F.png" width="240" height="68" /></p>
</blockquote>
<p>The menu has two options. The <strong>Enabled </strong>option controls whether the add-on does anything at all; it&rsquo;s a good practice for Add-ons to offer a simple way to turn them off when they&rsquo;re not wanted.</p>
<p>When the add-on is enabled,&nbsp;it will add a <strong>Privacy Info </strong>column to the session list and&nbsp;will flag HTTP/HTTPS responses which set cookies. Evaluation of&nbsp;any P3P statements that come along with those cookies will change the session's background color:</p>
<blockquote>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/6683.image_13A272B2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/6683.image_5F00_13A272B2.png" width="481" height="279" /></p>
</blockquote>
<p>Sessions that send a satisfactory P3P policy are shown in green. Sessions that set a cookie without a P3P policy are yellow; in the default IE settings, these cookies will not be sent to a 3rd party context. Sessions that send a P3P policy that does <a href="http://msdn.microsoft.com/en-us/library/ie/ms537343(v=vs.85).aspx#unsatisfactory_cookies">not permit use of the cookie in a 3rd party context</a> are rendered in orange. Sessions that send invalid P3P header tokens will have a red background.</p>
<p>When the menu option <strong>Rename P3P header if invalid</strong> is checked, if a session presents a P3P statement that is malformed, that P3P header will be renamed to <strong>Malformed-P3P </strong>to prevent the browser from interpreting it as the P3P 1.0 specification suggested (e.g. ignoring the unknown tokens). You can see the difference when you load this <a href="http://www.enhanceie.com/test/cookie/">test page</a>; the cookies with bogus compact policies will be dropped in a 3rd party context.</p>
<p>For folks looking to build their own Fiddler extension, the code is provided below.</p>
<p>&nbsp;</p>
<p>-Eric</p>
<p>&nbsp;</p>
<div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper">
<div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> System;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> System.Collections;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> System.Globalization;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> System.Collections.Generic;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> System.Windows.Forms;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> System.Text;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> Fiddler;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> System.IO;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> System.Diagnostics;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> Microsoft.Win32;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> System.Reflection;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">using</span> System.Text.RegularExpressions;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">[assembly: Fiddler.RequiredVersion(<span style="color: #006080;">"2.3.9.0"</span>)]</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">[assembly: AssemblyVersion(<span style="color: #006080;">"1.0.1.0"</span>)]</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">[assembly: AssemblyTitle(<span style="color: #006080;">"PrivacyScanner"</span>)]</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">[assembly: AssemblyDescription(<span style="color: #006080;">"Scans for Cookies and P3P"</span>)]</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">[assembly: AssemblyCompany(<span style="color: #006080;">"Eric Lawrence"</span>)]</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">[assembly: AssemblyProduct(<span style="color: #006080;">"PrivacyScanner"</span>)]</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> TagCookies : IAutoTamper2</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">{</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">bool</span> bEnabled = <span style="color: #0000ff;">false</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">bool</span> bEnforceP3PValidity = <span style="color: #0000ff;">false</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">bool</span> bCreatedColumn = <span style="color: #0000ff;">false</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">private</span> System.Windows.Forms.MenuItem miEnabled;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">private</span> System.Windows.Forms.MenuItem miEnforceP3PValidity;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">private</span> System.Windows.Forms.MenuItem mnuCookieTag;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> OnLoad()</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #008000;">/*</span></pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;"> * NB: You might not get called here until ~after~ one of the AutoTamper methods was called.</span></pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;"> * This is okay for us, because we created our mnuContentBlock in the constructor and its simply not</span></pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;"> * visible anywhere until this method is called and we merge it onto the Fiddler Main menu.</span></pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;"> */</span></pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        FiddlerApplication.UI.mnuMain.MenuItems.Add(mnuCookieTag);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> OnBeforeUnload() {  <span style="color: #008000;">/*noop*/</span>   }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> InitializeMenu()</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.miEnabled = <span style="color: #0000ff;">new</span> System.Windows.Forms.MenuItem(<span style="color: #006080;">"&amp;Enabled"</span>);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.miEnforceP3PValidity = <span style="color: #0000ff;">new</span> System.Windows.Forms.MenuItem(<span style="color: #006080;">"&amp;Rename P3P header if invalid"</span>);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.miEnabled.Index = 0;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.miEnforceP3PValidity.Index = 1;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.mnuCookieTag = <span style="color: #0000ff;">new</span> System.Windows.Forms.MenuItem();</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.mnuCookieTag.MenuItems.AddRange(<span style="color: #0000ff;">new</span> System.Windows.Forms.MenuItem[] { <span style="color: #0000ff;">this</span>.miEnabled, <span style="color: #0000ff;">this</span>.miEnforceP3PValidity });</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.mnuCookieTag.Text = <span style="color: #006080;">"Privacy"</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.miEnabled.Click += <span style="color: #0000ff;">new</span> System.EventHandler(<span style="color: #0000ff;">this</span>.miEnabled_Click);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.miEnabled.Checked = bEnabled;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.miEnforceP3PValidity.Click += <span style="color: #0000ff;">new</span> System.EventHandler(<span style="color: #0000ff;">this</span>.miEnforceP3PValidity_Click);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.miEnforceP3PValidity.Checked = bEnforceP3PValidity;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> miEnabled_Click(<span style="color: #0000ff;">object</span> sender, EventArgs e)</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        miEnabled.Checked = !miEnabled.Checked;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        bEnabled = miEnabled.Checked;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.miEnforceP3PValidity.Enabled = bEnabled;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span> (bEnabled) { EnsureColumn(); }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        FiddlerApplication.Prefs.SetBoolPref(<span style="color: #006080;">"extensions.tagcookies.enabled"</span>, bEnabled);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> miEnforceP3PValidity_Click(<span style="color: #0000ff;">object</span> sender, EventArgs e)</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        miEnforceP3PValidity.Checked = !miEnforceP3PValidity.Checked;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        bEnforceP3PValidity = miEnforceP3PValidity.Checked;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        FiddlerApplication.Prefs.SetBoolPref(<span style="color: #006080;">"extensions.tagcookies.EnforceP3PValidity"</span>, bEnforceP3PValidity);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> EnsureColumn()</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span> (bCreatedColumn) <span style="color: #0000ff;">return</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        FiddlerApplication.UI.lvSessions.AddBoundColumn(<span style="color: #006080;">"Privacy Info"</span>, 1, 120, <span style="color: #006080;">"X-Privacy"</span>);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        bCreatedColumn = <span style="color: #0000ff;">true</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> TagCookies()</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.bEnabled = FiddlerApplication.Prefs.GetBoolPref(<span style="color: #006080;">"extensions.tagcookies.enabled"</span>, <span style="color: #0000ff;">false</span>);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">this</span>.bEnforceP3PValidity = FiddlerApplication.Prefs.GetBoolPref(<span style="color: #006080;">"extensions.tagcookies.EnforceP3PValidity"</span>, <span style="color: #0000ff;">true</span>);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        InitializeMenu();</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span> (bEnabled) { EnsureColumn(); } <span style="color: #0000ff;">else</span> { <span style="color: #0000ff;">this</span>.miEnforceP3PValidity.Enabled = <span style="color: #0000ff;">false</span>; }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> SetP3PStateFromHeader(<span style="color: #0000ff;">string</span> sValue, <span style="color: #0000ff;">ref</span> P3PState oP3PState)</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">string</span>.IsNullOrEmpty(sValue))</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">return</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">string</span> sUnsatCat = String.Empty;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">string</span> sUnsatPurpose = String.Empty;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        sValue = sValue.Replace(<span style="color: #006080;">'\''</span>, <span style="color: #006080;">'"'</span>);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">string</span> sCP = <span style="color: #0000ff;">null</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        Regex r = <span style="color: #0000ff;">new</span> Regex(<span style="color: #006080;">"CP\\s?=\\s?[\"]?(?&lt;TokenValue&gt;[^\";]*)"</span>);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        Match m = r.Match(sValue);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span> (m.Success &amp;&amp; (<span style="color: #0000ff;">null</span> != m.Groups[<span style="color: #006080;">"TokenValue"</span>]))</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            sCP = m.Groups[<span style="color: #006080;">"TokenValue"</span>].Value;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span> (String.IsNullOrEmpty(sCP))</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">return</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #008000;">// Okay, we've got a compact policy token.</span></pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        oP3PState = P3PState.P3POk;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">string</span>[] sTokens = sCP.Split(<span style="color: #0000ff;">new</span> <span style="color: #0000ff;">char</span>[] { <span style="color: #006080;">' '</span> }, StringSplitOptions.RemoveEmptyEntries);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">foreach</span> (<span style="color: #0000ff;">string</span> sToken <span style="color: #0000ff;">in</span> sTokens)</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #008000;">// Reject clearly invalid tokens...</span></pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">if</span> ((sToken.Length &lt; 3) || (sToken.Length &gt; 4))</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                oP3PState = P3PState.P3PMalformed;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                <span style="color: #0000ff;">return</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">if</span> (<span style="color: #006080;">",PHY,ONL,GOV,FIN,"</span>.IndexOf(<span style="color: #006080;">","</span> + sToken + <span style="color: #006080;">","</span>, StringComparison.OrdinalIgnoreCase) &gt; -1)</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                sUnsatCat += (sToken + <span style="color: #006080;">" "</span>);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                <span style="color: #0000ff;">continue</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">if</span> (<span style="color: #006080;">",SAM,OTR,UNR,PUB,IVA,IVD,CON,TEL,OTP,"</span>.IndexOf(<span style="color: #006080;">","</span> + sToken + <span style="color: #006080;">","</span>, StringComparison.OrdinalIgnoreCase) &gt; -1)</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                sUnsatPurpose += (sToken + <span style="color: #006080;">" "</span>);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                <span style="color: #0000ff;">continue</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #008000;">// TODO: Look up the token in the complete collection and check validity</span></pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #008000;">// If a cookie contains an unsatisfactory purpose and an unsatisfactory category, mark it</span></pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #008000;">// http://msdn.microsoft.com/en-us/library/ie/ms537343(v=vs.85).aspx#unsatisfactory_cookies</span></pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span> ((sUnsatCat.Length &gt; 0) &amp;&amp; (sUnsatPurpose.Length &gt; 0))</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">if</span> (oP3PState == P3PState.P3POk)</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                oP3PState = P3PState.P3PUnsatisfactory;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">enum</span> P3PState</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        NoCookies,</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        NoP3PAndSetsCookies,</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        P3POk,</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        P3PUnsatisfactory,</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        P3PMalformed</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> OnPeekAtResponseHeaders(Session oSession) </pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span> (!bEnabled) <span style="color: #0000ff;">return</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        P3PState oP3PState = P3PState.NoCookies;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span> (!oSession.oResponse.headers.Exists(<span style="color: #006080;">"Set-Cookie"</span>))</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">return</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        oP3PState = P3PState.NoP3PAndSetsCookies;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">if</span> (oSession.oResponse.headers.Exists(<span style="color: #006080;">"P3P"</span>))</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            SetP3PStateFromHeader(oSession.oResponse.headers[<span style="color: #006080;">"P3P"</span>], <span style="color: #0000ff;">ref</span> oP3PState);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">switch</span> (oP3PState)</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">case</span> P3PState.P3POk:</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                oSession[<span style="color: #006080;">"ui-backcolor"</span>] = <span style="color: #006080;">"#ACDC85"</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                oSession[<span style="color: #006080;">"X-Privacy"</span>] = <span style="color: #006080;">"Sets cookies &amp; P3P"</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                <span style="color: #0000ff;">break</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">case</span> P3PState.NoP3PAndSetsCookies:</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                oSession[<span style="color: #006080;">"ui-backcolor"</span>] = <span style="color: #006080;">"#FAFDA4"</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                oSession[<span style="color: #006080;">"X-Privacy"</span>] = <span style="color: #006080;">"Sets cookies without P3P"</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                <span style="color: #0000ff;">break</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">case</span> P3PState.P3PUnsatisfactory:</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                oSession[<span style="color: #006080;">"ui-backcolor"</span>] = <span style="color: #006080;">"#EC921A"</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                oSession[<span style="color: #006080;">"X-Privacy"</span>] = <span style="color: #006080;">"Sets cookies; P3P unsatisfactory for 3rd-party use"</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                <span style="color: #0000ff;">break</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff;">case</span> P3PState.P3PMalformed:</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                oSession[<span style="color: #006080;">"ui-backcolor"</span>] = <span style="color: #006080;">"#E90A05"</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                <span style="color: #0000ff;">if</span> (bEnforceP3PValidity)</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                {</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                    oSession.oResponse.headers[<span style="color: #006080;">"MALFORMED-P3P"</span>] = oSession.oResponse.headers[<span style="color: #006080;">"P3P"</span>];</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                    oSession[<span style="color: #006080;">"X-Privacy"</span>] = <span style="color: #006080;">"MALFORMED P3P: "</span> + oSession.oResponse.headers[<span style="color: #006080;">"P3P"</span>];</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                    oSession.oResponse.headers.Remove(<span style="color: #006080;">"P3P"</span>);</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                <span style="color: #0000ff;">break</span>;</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> AutoTamperRequestBefore(Session oSession) { }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> AutoTamperRequestAfter(Session oSession){ <span style="color: #008000;">/*noop*/</span> }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> AutoTamperResponseAfter(Session oSession) {<span style="color: #008000;">/*noop*/</span>}</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> AutoTamperResponseBefore(Session oSession) { <span style="color: #008000;">/*noop*/</span> }</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> OnBeforeReturningError(Session oSession) {<span style="color: #008000;">/*noop*/</span>}</pre>
<!--CRLF-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">}</pre>
<!--CRLF--></div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>New Tricks in Fiddler 2.3.8.2</title>
      <link>https://docs.microsoft.com/archive/blogs/fiddler/new-tricks-in-fiddler-2-3-8-2</link>
      <pubDate>Mon, 09 Jan 2012 12:44:00 GMT</pubDate>
      <dc:creator><![CDATA[EricLaw [Edge]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fiddler/2012/01/09/new-tricks-in-fiddler-2-3-8-2/</guid>
      <description><![CDATA[The new Fiddler Beta has a few useful tricks. First, you can copy a DataURI to your clipboard (from...]]></description>
      <content:encoded><![CDATA[<p>The <a href="http://fiddler2.com/r/?GetFiddler2Beta">new Fiddler Beta</a> has a few useful tricks. First, you can copy a <a href="http://en.wikipedia.org/wiki/Data_URI_scheme">DataURI</a> to your clipboard (from Fiddler itself, or anywhere else):</p>
<blockquote>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/6215.image_58B677F6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/6215.image_5F00_58B677F6.png" width="480" height="64" /></p>
</blockquote>
<p>and use the new<strong> Edit &gt; Paste Files as Sessions</strong> command:</p>
<blockquote>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/4152.image_038EDC09.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/4152.image_5F00_038EDC09.png" width="242" height="123" /></p>
</blockquote>
<p>&hellip; to instruct Fiddler to parse the DataURI and create a new Session for it. You can then use Fiddler&rsquo;s inspectors to examine the resulting object:</p>
<blockquote>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/3175.image_6373CF4B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/3175.image_5F00_6373CF4B.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/7360.image_thumb_0A41E58C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/7360.image_5F00_thumb_5F00_0A41E58C.png" width="697" height="236" /></a></p>
</blockquote>
<p>Next, the WebView Inspector has been enhanced to render previews of WOFF font, MP3 audio, and H264 video responses, if you have IE9+ installed:</p>
<blockquote>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/7382.image_18142B87.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/7382.image_5F00_18142B87.png" width="519" height="316" /></p>
</blockquote>
<blockquote>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/5238.image_10F4EF0F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/5238.image_5F00_10F4EF0F.png" width="521" height="101" /></p>
</blockquote>
<blockquote>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/8546.image_70D9E251.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/8546.image_5F00_70D9E251.png" width="520" height="237" /></p>
</blockquote>
<p>Lastly, Fiddler&rsquo;s AutoResponder now permits you to use Regular Expression Group Replacements to map one URL to another. For instance, this rule:</p>
<blockquote>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/2273.image_1088BC1A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/2273.image_5F00_1088BC1A.png" width="463" height="270" /></p>
</blockquote>
<p>&hellip;will convert <span style="font-size: x-small;" size="2"><span style="color: #0000ff; font-family: Lucida Console;" face="Lucida Console" color="#0000ff">http://somesite.com/assets/Test1.gif</span> </span>to <span style="color: #0000ff; font-family: Lucida Console; font-size: x-small;" face="Lucida Console" size="2" color="#0000ff">http://www.example.com/mockup/Test1.gif</span>. This capability makes it even easier to replace content using Fiddler&rsquo;s AutoResponder.</p>
<p>&nbsp;</p>
<p>This new build of Fiddler has a ton of other fixes and performance improvements. I hope you enjoy it!</p>
<p>&nbsp;</p>
<p>-Eric</p>]]></content:encoded>
    </item>
    <item>
      <title>ThinkPad Scrolling and Fiddler</title>
      <link>https://docs.microsoft.com/archive/blogs/fiddler/thinkpad-scrolling-and-fiddler</link>
      <pubDate>Thu, 29 Dec 2011 11:18:00 GMT</pubDate>
      <dc:creator><![CDATA[EricLaw [Edge]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fiddler/2011/12/29/thinkpad-scrolling-and-fiddler/</guid>
      <description><![CDATA[I&rsquo;m a long-time ThinkPad fan and owner&mdash;the keyboards are sublime, and I love the...]]></description>
      <content:encoded><![CDATA[<p>I&rsquo;m a long-time ThinkPad fan and owner&mdash;the keyboards are sublime, and I <em>love</em> the TrackPoint interface. What I <em>don&rsquo;t </em>love is the ThinkPad driver software, which doesn&rsquo;t send the standard WM_MOUSEWHEEL messages to the system. That bug means that many .NET controls don&rsquo;t scroll properly. Over the years, I&rsquo;ve fixed many of the controls in Fiddler to workaround the problem, but not all of them. For instance, ThinkPad users will notice that when they try to middle-click-scroll the HexView controls, they get the scroll-cursor, but no scrolling as they move the cursor:</p>
<blockquote>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="HexView scrolling in ThinkPad" border="0" alt="Screenshot of HexView tab" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/37/50/metablogapi/0804.image_19E40DE1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-37-50-metablogapi/0804.image_5F00_19E40DE1.png" width="240" height="110" /></p>
</blockquote>
<p>Over on his blog, <a href="http://blogs.msdn.com/b/markrideout/archive/2006/01/12/datagridview-mouse-scrolling-button-with-ibm-ultranav-driver.aspx">Mark Rideout explains the root cause of Lenovo&rsquo;s scrolling problem</a> and explains how .NET developers can workaround the bug by adding hidden scrollbar controls to trick the driver software. I&rsquo;ll be looking at using this trick in a future version of Fiddler. For now, a <a href="http://stackoverflow.com/a/7372196/126229">cumbersome but effective configuration</a> tweak to the Lenovo driver settings allows end-users to get scrolling working properly in Fiddler and most other applications.</p>
<p>Start <strong>Notepad</strong> using the <strong>Run As Administrator </strong>option. Open the file <span style="font-family: Lucida Console;" face="Lucida Console">C:\program files\lenovo\trackpoint\tp4table.dat </span>(note that the tp4table.dat file may be in another path on your computer). Add the lines in blue under the existing lines in grey.</p>
<blockquote>
<p><span style="font-family: Courier New;" face="Courier New"><span style="color: #a5a5a5;" color="#a5a5a5">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <br />; Pass 1 rules (These rules run last) <br />; <br />; If no scrolling method was found with the builtin logic, then <br />; these rules are checked. <br />; <br />;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</span> <br /><span style="color: #0000ff;" color="#0000ff">; Fiddler <br />*,*,Fiddler.exe,*,*,*,WheelStd,1,9</span></span></p>
</blockquote>
<p>Restart your system to force the driver software to reload its settings, and you should find that middle-click-scrolling works properly in Fiddler.</p>
<p>Until next time&hellip;</p>
<p>-Eric</p>]]></content:encoded>
    </item>
  </channel>
</rss>