inside http: webdebugging mit fiddler

27
Inside HTTP: Webdebugging mit Fiddler Max Nowack - 05.12.2013 .Net Usergroup Göttingen

Upload: max-nowack

Post on 29-Nov-2014

281 views

Category:

Documents


0 download

DESCRIPTION

Slides meines Vortrags am 05.12.2013 bei der .NET Usergroup Göttingen http://dotnetgoettingen.de/?p=584

TRANSCRIPT

Page 1: Inside HTTP: Webdebugging mit FIddler

Inside HTTP:Webdebugging mit Fiddler

Max Nowack - 05.12.2013 .Net Usergroup Göttingen

Page 2: Inside HTTP: Webdebugging mit FIddler

Agenda

Was ist Fiddler?

Was ist HTTP?

Wie funktioniert HTTP?

Wie funktioniert Fiddler?

Features im Detail

Page 3: Inside HTTP: Webdebugging mit FIddler

Was ist Fiddler?

Wird entwickelt von Eric Lawrence seit 2003

2012 von Telerik übernommen

HTTP-Proxy

Kostenlos!

Page 4: Inside HTTP: Webdebugging mit FIddler

HTTP

Page 5: Inside HTTP: Webdebugging mit FIddler

Was ist HTTP?

Protokoll für Kommunikation im WWW

Jeder Browser „spricht“ HTTP

Versionsgeschichte 1991: 0.9

1996: 1.0

1999: 1.1

2012: Erster Entwurf für 2.0 (SPDY & HTTP Speed+Mobility)

Page 6: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

HTTP-Client(Browser,

etc.)HTTP-Server

Response

Request

Page 7: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

GET /index.php HTTP/1.1Host: dotnetgoettingen.deConnection: keep-alive

HTTP/1.1 200 OKDate: Thu, 5 Dec 2013 18:17:54 GMTServer: Apache/2.2.25 (Unix)X-Powered-By: PHP/5.3.27X-Pingback: http://dotnetgoettingen.de/xmlrpc.phpKeep-Alive: timeout=3, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8

<!DOCTYPE html>...

Page 8: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

GET /index.php HTTP/1.1Host: dotnetgoettingen.deConnection: keep-alive

HTTP/1.1 200 OKDate: Thu, 5 Dec 2013 18:17:54 GMTServer: Apache/2.2.25 (Unix)X-Powered-By: PHP/5.3.27X-Pingback: http://dotnetgoettingen.de/xmlrpc.phpKeep-Alive: timeout=3, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8

<!DOCTYPE html>...

Methode

Page 9: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

GET /index.php HTTP/1.1Host: dotnetgoettingen.deConnection: keep-alive

HTTP/1.1 200 OKDate: Thu, 5 Dec 2013 18:17:54 GMTServer: Apache/2.2.25 (Unix)X-Powered-By: PHP/5.3.27X-Pingback: http://dotnetgoettingen.de/xmlrpc.phpKeep-Alive: timeout=3, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8

<!DOCTYPE html>...

URL Pfad

Page 10: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

GET /index.php HTTP/1.1Host: dotnetgoettingen.deConnection: keep-alive

HTTP/1.1 200 OKDate: Thu, 5 Dec 2013 18:17:54 GMTServer: Apache/2.2.25 (Unix)X-Powered-By: PHP/5.3.27X-Pingback: http://dotnetgoettingen.de/xmlrpc.phpKeep-Alive: timeout=3, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8

<!DOCTYPE html>...

Version

Page 11: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

GET /index.php HTTP/1.1Host: dotnetgoettingen.deConnection: keep-alive

HTTP/1.1 200 OKDate: Thu, 5 Dec 2013 18:17:54 GMTServer: Apache/2.2.25 (Unix)X-Powered-By: PHP/5.3.27X-Pingback: http://dotnetgoettingen.de/xmlrpc.phpKeep-Alive: timeout=3, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8

<!DOCTYPE html>...

Request Header

Page 12: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

GET /index.php HTTP/1.1Host: dotnetgoettingen.deConnection: keep-alive

HTTP/1.1 200 OKDate: Thu, 5 Dec 2013 18:17:54 GMTServer: Apache/2.2.25 (Unix)X-Powered-By: PHP/5.3.27X-Pingback: http://dotnetgoettingen.de/xmlrpc.phpKeep-Alive: timeout=3, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8

<!DOCTYPE html>...

Page 13: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

GET /index.php HTTP/1.1Host: dotnetgoettingen.deConnection: keep-alive

HTTP/1.1 200 OKDate: Thu, 5 Dec 2013 18:17:54 GMTServer: Apache/2.2.25 (Unix)X-Powered-By: PHP/5.3.27X-Pingback: http://dotnetgoettingen.de/xmlrpc.phpKeep-Alive: timeout=3, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8

<!DOCTYPE html>...

Version

Page 14: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

GET /index.php HTTP/1.1Host: dotnetgoettingen.deConnection: keep-alive

HTTP/1.1 200 OKDate: Thu, 5 Dec 2013 18:17:54 GMTServer: Apache/2.2.25 (Unix)X-Powered-By: PHP/5.3.27X-Pingback: http://dotnetgoettingen.de/xmlrpc.phpKeep-Alive: timeout=3, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8

<!DOCTYPE html>...

Status1xx

Information2xx Erfolgreiche Operation

3xx Umleitung

4xx Client Fehler

5xx Server Fehler

Page 15: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

GET /index.php HTTP/1.1Host: dotnetgoettingen.deConnection: keep-alive

HTTP/1.1 200 OKDate: Thu, 5 Dec 2013 18:17:54 GMTServer: Apache/2.2.25 (Unix)X-Powered-By: PHP/5.3.27X-Pingback: http://dotnetgoettingen.de/xmlrpc.phpKeep-Alive: timeout=3, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8

<!DOCTYPE html>...

Response Header

Page 16: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert HTTP?

GET /index.php HTTP/1.1Host: dotnetgoettingen.deConnection: keep-alive

HTTP/1.1 200 OKDate: Thu, 5 Dec 2013 18:17:54 GMTServer: Apache/2.2.25 (Unix)X-Powered-By: PHP/5.3.27X-Pingback: http://dotnetgoettingen.de/xmlrpc.phpKeep-Alive: timeout=3, max=100Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8

<!DOCTYPE html>...

Inhalt

Page 17: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert Fiddler?

HTTP-Client(Browser,

etc.)

HTTP-Proxy (Fiddler)

HTTP-Server

RequestInspection/Modification

ResponseInspection/Modification

Page 18: Inside HTTP: Webdebugging mit FIddler

Wie funktioniert Fiddler?

Page 19: Inside HTTP: Webdebugging mit FIddler

Features von Fiddler

Inspectors

Filter

Composer

Comparing

Breakpoints

Autoresponder

Extensions! FiddlerScript

Fiddler API für .NET

Page 20: Inside HTTP: Webdebugging mit FIddler

Inspectors

Anschauen von HTTP Requests/Responses

Verschiedene Anzeige Möglichkeiten (XML, JSON, Bilder, WebView, etc.)

Meistens der Einstiegspunkt für Analysen

Page 21: Inside HTTP: Webdebugging mit FIddler

Filter

Filtern der HTTP Requests und Responses Hosts

Client Process

Headers

Status code

Content Type

Breakpoints unterstützt

Page 22: Inside HTTP: Webdebugging mit FIddler

Composer

Manuelles Absenden von HTTP-Requests

Bearbeiten und erneutes Absenden von vorherigen Sessions

Page 23: Inside HTTP: Webdebugging mit FIddler

Comparing

Vergleichen von verschiedenen Requests/Responses

Zeitleiste

WinDiff, etc.

Page 24: Inside HTTP: Webdebugging mit FIddler

Breakpoints

Request bearbeiten, bevor es an Server gesendet wird

Response bearbeiten, bevor es an Client gesendet wird

Automatik mit Autoresponder oder FiddlerScript/API

Schnelle Reaktion notwendig, da sonst Timeout auftritt

Page 25: Inside HTTP: Webdebugging mit FIddler

Autoresponder

Automatisches Senden von Responses bei Requests auf bestimmte URL‘s

Reguläre Ausdrücke

Redirects

Delays

Page 26: Inside HTTP: Webdebugging mit FIddler

Extensions!

FiddlerScript Basiert auf Jscript.NET

Bearbeitung zur Laufzeit

Fiddler API Fiddler Extensions (UI Anpassungen möglich)

Nutzen der Fiddler-Funktionalität in eigenen Programmen (FiddlerCore)

Page 27: Inside HTTP: Webdebugging mit FIddler

Vielen Dank!

Max Nowack

Mail: [email protected]

Web: http://max.unsou.de

Twitter: @maxnowack

Mehr Informationen:

http://fiddler2.com/

http://fiddlerspdsettings.codeplex.com/