56
Become a Web Debugging Virtuoso with Fiddler Eric Lawrence Program Manager Microsoft Corporation CL25 Note: Session includes demos and code samples. For optimal viewing, please sit near

Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Embed Size (px)

Citation preview

Page 1: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Become a Web Debugging Virtuoso with Fiddler

Eric LawrenceProgram ManagerMicrosoft Corporation

CL25

Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Page 2: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Fiddler: Origins

Page 3: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Once upon a time…

Page 4: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Oh no! What happened?!?

Page 5: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

There must be a better way…

Page 6: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Fiddler: Origins

ApplicationsNetwork

APIsProxy Website

Page 7: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Fiddler: Origins

Page 8: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Fiddler: Origins

Page 9: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Fiddler: Origins

+

Page 10: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Fiddler: version 1

> The first Fiddler build was released in October 2003.

Page 11: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Fiddler: Evolution

Six years,~17k lines of C#,

51+ release builds,and 700+ cans of Diet Mountain Dew

later…

Page 12: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Fiddler: Today

Page 13: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Understanding Extensibility

Fiddler 2

Fiddler ScriptEngine

Inspector2

Inspector2IFiddlerExtens

ion IFiddlerExtens

ion

Fiddler Proxy

Exe

cAct

ion.e

xe

Your FiddlerScript

Xceed*.dll Makecert.exe

You

r A

uto

mati

on

Page 14: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Getting to know Fiddler

A quick tour of the Fiddler UI

Demo

Page 15: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Scenario

Browsers, applications, and devices

Traffic Monitoring

Page 16: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Typical Architecture

Internet Explorer

WinINET

Office

CryptoAPI WinHTTP

Fiddler

Firefox

Upstream Proxy

example.com

Firewall

Page 17: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

FiddlerHook for Firefox

Page 18: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Debug Across Machines

Fiddler

Mac

Internet

Lin

ux

Pock

etP

CPC

Page 19: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Tips & Tricks

> YourApp.exe.config<configuration>  <system.net>    <defaultProxy>      <proxy bypassonlocal="false" usesystemdefault="true" />    </defaultProxy>  </system.net></configuration>

> or, use http://ipv4.fiddler

Page 20: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Fiddler as a Reverse Proxy

Internet Explorer

WinINET

Office

CryptoAPI WinHTTP

Fiddler(Port 80)

Firefox

Upstream Proxy

IIS or Apache(Port 81)

Firewall

Page 21: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

HTTPS Traffic DecryptionFiddler dynamically generates interception certificates chained to a self-signed root.

Page 22: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Scenario

Store Requests and Responses

Traffic Archiving

Page 23: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Fiddler has many output options

> Copy sessions to the clipboard> Store as a plaintext file> Extract binary response bodies> Archive to a database> Export a Visual Studio .WebTest file> Write your own…

Page 24: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

The SAZ file format

Session Archive Zip files contain:

> Request and response bytes> Timing and other metadata> HTML index file

For security, SAZ files may be encrypted

Page 25: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

FiddlerCap – Lightweight capture tool

http://www.fiddlercap.com

Page 26: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Scenario

Examine Requests and Responses

Traffic Analysis

Page 27: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Filtering Traffic

> Ignore Images & CONNECTs> Application Type Filter> Process Filter> Using QuickExec> Using Find

Page 28: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Spying on IE 8 Accelerators

Demo

Page 29: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Spying on IE8’s Visual Search Suggestions

Demo

Page 30: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Traffic Comparison

Use WinDiff to compare HTTP requests and responses.

Page 31: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Automated (Passive) Analysis

http://websecuritytool.codeplex.com/

Page 32: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Scenario

Change the bytes

Traffic Manipulation

Page 33: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Automated Rewrites

> Simple Built-in Rules> The HOSTS extension

Page 34: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Breakpoint Debugging

Use Fiddler inspectors to

modify requests and responses….

Page 35: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Simple Filters

Flag, modify or remove headers from all requests and

responses.

Page 36: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Request Builder

Create hand-built HTTP requests, or

modify and reissue a request previously captured.

Page 37: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

AutoResponder

Replay previously captured or generated traffic.

Page 38: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

FiddlerScript

Page 39: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

FiddlerScript – Request Modification

static function OnBeforeRequest(oS: Session){

if (oS.uriContains(".aspx")) { oS["ui-color"] = "red";}

if (m_DisableCaching){ oS.oRequest.headers.Remove("If-None-Match"); oS.oRequest.headers.Remove("If-Modified-Since"); oS.oRequest["Pragma"] = "no-cache"; }}

Page 40: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

FiddlerScript – Response Modification

static function OnBeforeResponse(oS: Session) {

oS.utilDecodeResponse(); oS.utilPrependToResponseBody("Injected Content!");

}

Page 41: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Scenario

Optimizing Performance with Fiddler

Performance

Page 42: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Build faster websites and services

> Reduce request & response size> Reduce roundtrips> Optimize Compression> Optimize Caching> Simulate Slower Speeds

Page 43: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Expert Analysis with neXpert

Page 44: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Beware the Observer Effect

> Use Fiddler to improve performance> Be careful when using Fiddler to

measure performance

Page 45: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Streaming Mode

Timeline view of Buffering Mode

Timeline view of Streaming Mode

Page 46: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

NetMon + VRTA

To minimize Observer Effect when taking low-level timing measurements, prefer packet-sniffer tools.

Page 47: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Scenario

Integrating Fiddler into your tools

Test Integration

Page 48: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

ExecAction.exe

> Calls into OnExecAction in script or extensions

> Alternatively, invoke directly by sending a Windows Message:

oCDS.dwData = 61180; // Magic CookieoCDS.cbData = strlen(sData);oCDS.lpData = sData;

SendMessage( FindWindow(NULL, "Fiddler - HTTP Debugging Proxy"),WM_COPYDATA,NULL,(LPARAM) &oCDS);

Page 49: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

>>FUTURE

Fiddler 2

Fiddler ScriptEngine

Inspector2

Inspector2IFiddlerExtens

ion IFiddlerExtens

ion

FiddlerCore

Exe

cAct

ion.e

xe

YourApp.exe

FiddlerCore

Fiddler application with extensions

Your application hosting FiddlerCore

Your FiddlerScript

Xceed*.dll

Makecert.exe

Makecert.exe

Page 50: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Programming with FiddlerCore

// Call Startup to tell FiddlerCore to begin // listening on the specified port, register as // the system proxy and decrypt HTTPS traffic.Fiddler.FiddlerApplication.Startup(8877, true, true);

Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS) { Console.WriteLine("{0}:HTTP {1} for {2}", oS.id, oS.responseCode, oS.fullUrl); }; // Call Shutdown to tell FiddlerCore to stop// listening and unregister as the system proxyFiddler.FiddlerApplication.Shutdown();

Page 51: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

>>FUTURE

Fiddler Futures

> VS2010 & .NET 4.0> You tell me!

Page 52: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

www.fiddler2.com/pdc/

Questions?

Page 53: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

YOUR FEEDBACK IS IMPORTANT TO US!

Please fill out session evaluation

forms online atMicrosoftPDC.com

Page 54: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

Learn More On Channel 9

> Expand your PDC experience through Channel 9

> Explore videos, hands-on labs, sample code and demos through the new Channel 9 training courses

channel9.msdn.com/learnBuilt by Developers for Developers….

Page 55: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Page 56: Note: Session includes demos and code samples. For optimal viewing, please sit near the front!