Post on 29-Nov-2014
description
transcript
Inside HTTP:Webdebugging mit Fiddler
Max Nowack - 05.12.2013 .Net Usergroup Göttingen
Agenda
Was ist Fiddler?
Was ist HTTP?
Wie funktioniert HTTP?
Wie funktioniert Fiddler?
Features im Detail
Was ist Fiddler?
Wird entwickelt von Eric Lawrence seit 2003
2012 von Telerik übernommen
HTTP-Proxy
Kostenlos!
HTTP
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)
Wie funktioniert HTTP?
HTTP-Client(Browser,
etc.)HTTP-Server
Response
Request
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>...
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
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
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
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
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>...
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
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
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
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
Wie funktioniert Fiddler?
HTTP-Client(Browser,
etc.)
HTTP-Proxy (Fiddler)
HTTP-Server
RequestInspection/Modification
ResponseInspection/Modification
Wie funktioniert Fiddler?
Features von Fiddler
Inspectors
Filter
Composer
Comparing
Breakpoints
Autoresponder
Extensions! FiddlerScript
Fiddler API für .NET
Inspectors
Anschauen von HTTP Requests/Responses
Verschiedene Anzeige Möglichkeiten (XML, JSON, Bilder, WebView, etc.)
Meistens der Einstiegspunkt für Analysen
Filter
Filtern der HTTP Requests und Responses Hosts
Client Process
Headers
Status code
Content Type
Breakpoints unterstützt
Composer
Manuelles Absenden von HTTP-Requests
Bearbeiten und erneutes Absenden von vorherigen Sessions
Comparing
Vergleichen von verschiedenen Requests/Responses
Zeitleiste
WinDiff, etc.
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
Autoresponder
Automatisches Senden von Responses bei Requests auf bestimmte URL‘s
Reguläre Ausdrücke
Redirects
Delays
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)
Vielen Dank!
Max Nowack
Mail: max@unsou.de
Web: http://max.unsou.de
Twitter: @maxnowack
Mehr Informationen:
http://fiddler2.com/
http://fiddlerspdsettings.codeplex.com/