Fiddler2 – una tecnica di troubleshooting
Fiddler2 è un utilissimo tool per Internet Explorer che mi è stato più volte utile. La particolarità di Fiddler è che funziona come proxy lato client, cioè si pone come strato intermedio tra il browser e le chiamate fatte al server. Questa particolarità può spesso essere utile perchè si è in grado di intercettare le chiamate http uscenti dal browser prima che arrivino ad un server e, dall’altro lato, intercettare le risposte dal server al browser.
Questo consente non solo di vedere ad esempio gli header della chiamata http dal client verso il server, ma anche di modificarli prima che arrivino a quest’ultimo. Posso anche aggiungere e rimuovere header. Questa particolarità mi è stata spesso utile in passato nello sviluppo di filtri ISAPI.
Avendo accesso all’intera richiesta http prima di essere inviata al server e alla risposta prima che possa essere restituita al browser è possibile fare anche di più.
Di recente mi è capitato di avere un client che faceva una richiesta http ad un file su un server, che aveva un nome completamente differente da quello realmente presente: ok lasciamo stare il perchè, quello che mi è capitato è che non avevo acesso al codice del client e tanto meno al codice del server: sì la vita è strana a volte.
Vediamo come usare Fiddler2, che va preventivamente installato, per intercettare e modificare queste chiamate.
Ho cercato di semplificare lo scenario in cui mi trovato per illustrare i passi da seguire.
Attivare Fiddler
Dal menù Tool di IE , troverete Fiddler2.
Test di un sito in locale
Se la pagina che chiamate inizia con localhost, Fiddler non è in grado di intercettare la richiesta, la tecnica che uso di solito è, una volta attivato fiddler, scrivere al posto di localhost ipv4.fiddler, come vedete in figura:
Bloccare la richiesta in uscita prima che arrivi al server o viceversa:
Se andate sotto Rules, quindi Automatic Breakpoints, quindi potete selezionare di intercettare la richiesta uscente: “Before Requests”.
Potete anche cliccare nella barra in basso, per attivare la funzionalità più rapidamente, come vedete in figura:
Facciamo una richiesta
Ora se facciamo una richiesta dal browser, vedremo che Fiddler la blocca, dandoci appunto la possibilità di lavorare sugli header http:
In figura vedete che la richiesta #1 è stata bloccata, nella finestra degli header della richiesta, vedete che un menù contestuale mi permette di fare diverse operazioni sugli header.
Una segnalazione in rosso, mi dice che la richiesta uscente è stata bloccata, posso, premendo il tasto giallo, farla proseguire al server e bloccare a questo punto la risposta che ritorna, oppure , dopo aver fatto le modifiche del caso, premere il tasto verde e semplicemente completare la chiamata senza più interruzioni.
Nel mio caso voglio modificare la chiamata GET alla pagina pippo.htm, che viene eseguita all’interno di un’applicazione Silverlight. Facendo doppio click sulla chiamata GET posso modificarne il contenuto, come segue:
Quindi come potete vedere ho modificato il nome del file che viene richiesto dall’applicazione e che so essere presente sul server.
Premendo ora il tasto giallo, la richiesta prosegue, viene elaborata dal server, ma prima di arrivare al client viene, se possibile, bloccata. La risposta deve avere un dominio intercettabile da fiddler. Quindi non deve avere localhost come nome di dominio, ma nel mio caso reale non era un problema perchè la risposta arrivava da un server su internet a cui non avevo accesso.
Conclusione
Fiddler è sicuramente un tool che trovo utilissimo in scenari in cui una semplice developer toolbar difficilemente arriva. Lo svantaggio è che spesso la configurazione soprattutto se si usa in locale (localhost +porta) non è velocissima. Ma in altri casi in cui volgio ispezionare l?HTML o i CSS una developer toolbar è più immediata. Quindi l’accoppiata IE8 Developer Toolbar + Fiddler penso sia una buona accoppiata per chi sviluppa applicazioni web.
Comments
Anonymous
February 16, 2009
PingBack from http://www.anith.com/?p=10524Anonymous
February 18, 2009
Per intercettare le chiamate al localhost basta farlo seguire da un punto tipo http://localhost./miosito etc etc. Suggerisco inoltre di aggiungere neXpert (http://www.microsoft.com/downloads/details.aspx?FamilyId=5975DA52-8CE6-48BD-9B3C-756A625024BB&displaylang=en) che è veramente utilissimo.Anonymous
February 18, 2009
Assolutamente bello neXpert, non lo conoscevo, ottimo consiglio, grazie Gian MariaAnonymous
October 15, 2009
e se io non volessi più usare fiddler? l'ho installato ma non lo voglio più. il punto è che ora senza aprire fiddler non funzionano internet explorer, google chrome e windows live messenger...neanche se disinstallo fiddler! come posso risolvere?Anonymous
October 15, 2009
Una volta che chiudi la finiestra di fiddler2 tutto funziona come prima. Fiddler si configura in automatico come proxy sul browser. Se hai instalalto una delle ultime versioni lo fa in automatico. Nel caso qualcosa sia andato storto troverai la configurazione se vai su Internet options->Lan settings->advanced ->quindi dovresti vedere la configurazione di fiddeler 127.0.0.1 porta 8888. Rimuovila manualmente