-
-
Notifications
You must be signed in to change notification settings - Fork 94
Debugging with Fiddler
Fiddler is a proxy program that helps debug HTTP and HTTPS traffic. Fiddler intercepts HTTP and HTTPS traffic by setting up a local proxy and inspecting all web traffic that flows through the local proxy. Fiddler keeps a log of all web traffic and makes web traffic available for inspection.
The following instructions demonstrate how to set up a local Fiddler Proxy to debug a .NET Application using HTTP or HTTPS.
- Download Telerik Fiddler here.
The following configures Fiddler to decrypt HTTPS traffic by installing and trusting a self-signed trusted "root certificate" in the local computer's "root certificate" store.
- Go to
Tools > Fiddler Options...
. Click on theHTTPS
tab.- Enable
Capture HTTPS CONNECTs
. - Enable
Decrypt HTTPS traffic ...from all processes
. - Follow all prompts to install the Root Certificate.
- Click Ok to save settings.
- Enable
💡 Note: If you did not receive a prompt to install a Root Certificate, click the Actions > Trust Root Certificate
button.
The following configures Fiddler to listen on a local port for proxy traffic.
- Go to
Tools > Fiddler Options...
. Click on theConnections
tab.- Set
Fiddler listens on port: 8888
. - Enable
Allow remote computers to connect
. - Click Ok to save settings.
- Set
Reboot the computer.
💡 Reduce Noise: By default, Fiddler starts capturing traffic from all applications at startup. Since we are only interested in debugging local traffic from a single .NET Application, you can reduce noise by disabling capturing of live traffic and clearing the traffic traces:
- Press F12 or uncheck
File > Capture Traffic
. - Clear the requests list:
Keep Fiddler running in the background. Fiddler continues to capture traffic that passes through the localhost
proxy even though Capture Traffic
is disabled.
Next, instruct your .NET Application to use the local Fiddler proxy for HTTP and HTTPS requests.
For the Coinbase Client library, use the EnableFiddlerDebugProxy
helper setup method that configures the underlying HttpClient
to use the localhost
proxy, as shown below:
var cfg = new Coinbase.ApiKeyConfig
{
ApiKey = "fff",
ApiSecret = "ggg"
};
var c = new Coinbase.CoinbaseClient(cfg);
c.EnableFiddlerDebugProxy("http://localhost.:8888");
var price = await c.Data.GetBuyPriceAsync("BTC-USD");
price.Data.Dump();
💡 Note: Be sure to include the .
period at the end of the localhost.
in the proxy URL. The period is not a typo.
Next, compile and run the .NET Application and invoke any methods that would cause the .NET Application to send a web request.
Finally, check the Fiddler window to inspect HTTP and HTTPS traffic, as shown below:
- Select the HTTP request.
- Click the Inspectors tab.
- Click the TextView or other response tabs to inspect the response.
Inspecting traffic captured by Fiddler should allow you to diagnose your issue. Copy, paste, and screenshot output from Fiddler and provide it to a third-party to help debug any issues you might be having.
In general cases, it may be desirable to configure raw a HttpClient
to use the localhost
Fiddler proxy. The following code example shows how to set up an HttpClient
to use the localhost
proxy:
var handler = new HttpClientHandler()
{
Proxy = new WebProxy("http://localhost.:8888", BypassOnLocal: false),
UseProxy = true
};
var client = new HttpClient(handler);
var r = await client.GetAsync("https://www.google.com");
A MITM (man-in-the-middle) technique is required to debug HTTP and HTTPS traffic from remote clients and systems. See the following blog post for more information: