Vous êtes sur la page 1sur 3

?import System; import System.Windows.

Forms; import Fiddler; // GLOBALIZATION NO


TE: // Be sure to save this file with UTF-8 Encoding if using any non-ASCII char
acte rs // in strings, etc. // // JScript Reference // http://www.fiddler2.com/r
edir/?id=msdnjsnet // // FiddlerScript Reference // http://www.fiddler2.com/redi
r/?id=fiddlerscriptcookbook // // FiddlerScript Editor: // http://www.fiddler2.c
om/redir/?id=fiddlerscripteditor class Handlers { // The following snippet demon
strates a custom-bound column for the web sessions list. // See http://www.fiddl
er2.com/fiddler/help/configurecolumns.asp for mor e info //public static BindUIC
olumn("Method", 60) //function FillMethodColumn(oS: Session){ // if ((oS.oReques
t != null) && (oS.oRequest.headers != null)) // return oS.oRequest.headers.HTTPM
ethod; else return String.Empty; //} public static RulesOption("Hide 304s") var
m_Hide304s: boolean = false; // Cause Fiddler to override the Accept-Language he
ader with one of the defined values public static RulesOption("Request &Japanese
Content") var m_Japanese: boolean = false; // Cause Fiddler to override the Use
r-Agent header with one of the defin ed values RulesString("&User-Agents", true)
RulesStringValue(0,"Netscape &3", "Mozilla/3.0 (Win95; I)") RulesStringValue(1,
"WinMobile7", "Mozilla/4.0 (compatible; MSIE 7.0; Win dows Phone OS 7.0; Trident
/3.1; IEMobile/7.0) Microsoft;FuturePhone") RulesStringValue(2,"&Safari5 (Win7)"
, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.16 (KHTML, li
ke Gecko) Version/5.0 Safari/533.16" ) RulesStringValue(3,"IPAD", "Mozilla/5.0 (
iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, l
ike Gecko) Version/4.0.4 Mobile /7B314 Safari/531.21.10") RulesStringValue(4,"IE
&6 (XPSP2)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)")RulesStr
ingValue(5,"IE &7 (Vista)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;
SLCC1)") RulesStringValue(6,"IE 8 (Win2k3 x64)", "Mozilla/4.0 (compatible; MSIE
8 .0; Windows NT 5.2; WOW64; Trident/4.0)") RulesStringValue(7,"IE &8 (Win7)", "
Mozilla/4.0 (compatible; MSIE 8.0; W indows NT 6.1; Trident/4.0)") RulesStringVa
lue(8,"IE 8 (IE7 CompatMode)", "Mozilla/4.0 (compatible; MS IE 7.0; Windows NT 5
.1; Trident/4.0)")RulesStringValue(9,"IE 9 (Win7)", "Mozilla/5.0 (compatible; MS
IE 9.0; Wi ndows NT 6.1; Trident/5.0)") RulesStringValue(10,"&Opera", "Opera/9.8
0 (Windows NT 6.1; U; en) Presto /2.5.28/2.5.23 Version/10.60") RulesStringValue
(11,"&Firefox 2", "Mozilla/5.0 (Windows; U; Windows NT 5 .1; en-US; rv:1.8.1.10)
Gecko/20071115 Firefox/2.0.0.10") RulesStringValue(12,"&Firefox 3.6", "Mozilla/
5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.7) Gecko/20100625 Firefox/3.6.7
") RulesStringValue(13,"&Firefox 4Beta", "Mozilla/5.0 (Windows NT 6.1; WOW6 4; r
v:2.0b5) Gecko/20100101 Firefox/4.0b5") RulesStringValue(14,"&Firefox (Mac)", "M
ozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.3) Gecko/20090824
Firefox/3.5.3") RulesStringValue(15,"Chrome", "Mozilla/5.0 (Windows; U; Windows
NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/5
33.4") RulesStringValue(16,"GoogleBot Crawler", "Mozilla/5.0 (compatible; Googl
ebot/2.1; +http://www.google.com/bot.html)") RulesStringValue(17,"&Custom...", "
%CUSTOM%") public static var sUA: String = null; // Cause Fiddler to delay HTTP
traffic to simulate typical 56k modem con ditions public static RulesOption("Sim
ulate &Modem speeds", "Per&formance") var m_SimulateModem: boolean = false; // R
emoves HTTP-caching related headers and specifies "no-cache" on requ ests and re
sponses public static RulesOption("&Disable Caching", "Per&formance") var m_Disa
bleCaching: boolean = false; // Show the duration between the start of Request.S
end and Response.Comp leted in Milliseconds public static RulesOption("&Show Tim
e-to-Last-Byte", "Per&formance") var m_ShowTTLB: boolean = false; // Show the ti
me of response completion public static RulesOption("Show Response &Timestamp",
"Per&formance") var m_ShowTimestamp: boolean = false; // Force a manual reload o
f the script file.Resets all // RulesOption variables to their defaults. public
static ToolsAction("Reset Script") function DoManualReload(){ FiddlerObject.Relo
adScript(); } public static ContextAction("Decode Selected Sessions") function D
oRemoveEncoding(oSessions: Session[]){ for (var x = 0; x < oSessions.Length; x++
){ oSessions[x].utilDecodeRequest(); oSessions[x].utilDecodeResponse();} } stati
c function OnBoot(){ // MessageBox.Show("Fiddler has finished booting"); // Syst
em.Diagnostics.Process.Start("iexplore.exe"); // FiddlerObject.UI.ActivateReques
tInspector("HEADERS"); // FiddlerObject.UI.ActivateResponseInspector("HEADERS");
}
static function OnShutdown(){ // MessageBox.Show("Fiddler has shutdown"); } stat
ic function OnAttach(){ // MessageBox.Show("Fiddler is now the system proxy"); /
/ System.Diagnostics.Process.Start("proxycfg.exe", "-u"); // Notif y WinHTTP of
proxy change} static function OnDetach(){ // MessageBox.Show("Fiddler is no long
er the system proxy"); // System.Diagnostics.Process.Start("proxycfg.exe", "-u")
; // Notif y WinHTTP of proxy change } static function OnBeforeRequest(oSession:
Session) { // Sample Rule: Color ASPX requests in RED // if (oSession.uriContai
ns(".aspx")) { oSession["ui-color"] = " red"; } // Sample Rule: Flag POSTs to fi
ddler2.com in italics // if (oSession.HostnameIs("www.fiddler2.com") && oSession
.HTTPMeth odIs("POST")) { oSession["ui-italic"] = "yup";} // Sample Rule: Break
requests for URLs containing "/sandbox/" // if (oSession.uriContains("/sandbox/"
)){ // oSession.oFlags["x-breakrequest"] = "yup"; // Exist ence of the x-breakre
quest flag creates a breakpoint; the "yup" value is unimpor tant. // } if ((null
!= gs_ReplaceToken) && (oSession.url.indexOf(gs_Replac eToken)>-1)){ // Case se
nsitive oSession.url = oSession.url.Replace(gs_ReplaceToken, gs_ ReplaceTokenWit
h); } if ((null != gs_OverridenHost) && (oSession.host.toLowerCase() = = gs_Over
ridenHost)){ oSession["x-overridehost"] = gs_OverrideHostWith; } if ((null!=bpRe
questURI) && oSession.uriContains(bpRequestURI)){ oSession["x-breakrequest"]="ur
i"; } if ((null!=bpMethod) && (oSession.HTTPMethodIs(bpMethod))){ oSession["x-br
eakrequest"]="method"; } if ((null!=uiBoldURI) && oSession.uriContains(uiBoldURI
)){ oSession["ui-bold"]="QuickExec"; } if (m_SimulateModem){ // Delay sends by 3
00ms per KB uploaded. oSession["request-trickle-delay"] = "300"; // Delay receiv
es by 150ms per KB downloaded.oSession["response-trickle-delay"] = "150"; } if (
m_DisableCaching){ oSession.oRequest.headers.Remove("If-None-Match"); oSession.o
Request.headers.Remove("If-Modified-Since"); oSession.oRequest["Pragma"] = "no-c
ache"; } // User-Agent Overrides if (null != sUA){ oSession.oRequest["User-Agent
"] = sUA; } if (m_Japanese){ oSession.oRequest["Accept-Language"] = "ja"; } } //
// If a given session has response streaming enabled, then the OnBeforeR espons
e function // is actually called AFTER the response was returned to the client.
// // In contrast, this OnPeekAtResponseHeaders method is called before the resp
onse headers are // sent to the client (and before the body is read from the ser
ver).He nce this is an opportune time // to disable streaming (oSession.bBufferR
esponse = true) if there is so mething in the response headers // which suggests
that tampering with the response body is necessary. // // Note: oSession.respon
seBodyBytes is not available within this functio n! // static function OnPeekAtR
esponseHeaders(oSession: Session) { //FiddlerApplication.Log.LogFormat("Session
{0}: Response header peek shows status is {1}", oSession.id, oSession.responseCo
de); if (m_DisableCaching) { oSession.oResponse.headers.Remove("Expires"); oSess
ion.oResponse["Cache-Control"] = "no-cache"; } } static function OnBeforeRespons
e(oSession: Session) { if (m_ShowTimestamp){ oSession["ui-customcolumn"] = DateT
ime.Now.ToString("H:m m:ss.ffff") + " " + oSession["ui-customcolumn"];} if (m_Sh
owTTLB){ oSession["ui-customcolumn"] = oSession.oResponse.iTTLB + "ms " + oSessi
on["ui-customcolumn"]; } if (m_Hide304s && oSession.responseCode == 304){ oSessi
on["ui-hide"] = "true"; }
if ((bpStatus>0) && (oSession.responseCode == bpStatus)){ oSession["x-breakrespo
nse"]="status"; } if ((null!=bpResponseURI) && oSession.uriContains(bpResponseUR
I) ){ oSession["x-breakresponse"]="uri"; } } static function Main() { var today:
Date = new Date(); FiddlerObject.StatusText = " CustomRules.js was loaded at: "
+ t oday; // Uncomment to add a "Server" column containing the response "S erve
r" header, if present // FiddlerObject.UI.lvSessions.AddBoundColumn("Server", 50
, "@re sponse.server"); } // These static variables are used for simple breakpoi
nting & other QuickExec rulesstatic var bpRequestURI:String = null; static var b
pResponseURI:String = null; static var bpStatus:int = -1; static var bpMethod: S
tring = null; static var uiBoldURI: String = null; static var gs_ReplaceToken: S
tring = null; static var gs_ReplaceTokenWith: String = null; static var gs_Overr
idenHost: String = null; static var gs_OverrideHostWith: String = null; // The O
nExecAction function is called by either the QuickExec box in th e Fiddler windo
w, // or by the ExecAction.exe command line utility. static function OnExecActio
n(sParams: String[]){ FiddlerObject.StatusText = "ExecAction: " + sParams[0]; va
r sAction = sParams[0].toLowerCase(); switch (sAction){ case "bold": if (sParams
.Length<2) {uiBoldURI=null; FiddlerObject.StatusText= "Bolding cleared"; return;
} uiBoldURI = sParams[1]; FiddlerObject.StatusText="Bolding reques ts for " + ui
BoldURI; break; case "bp": FiddlerObject.alert("bpu = breakpoint request for uri
\nbpm = bre akpoint request method\nbps=breakpoint response status\nbpafter = br
eakpoint res ponse for URI");break; case "bps": if (sParams.Length<2) {bpStatus=
-1; FiddlerObject.StatusText="Re sponse Status breakpoint cleared"; return;} bpS
tatus = parseInt(sParams[1]); FiddlerObject.StatusText="Respo nse status breakpo
int for " + sParams[1]; break; case "bpv":case "bpm": if (sParams.Length<2) {bpM
ethod=null; FiddlerObject.StatusText=" Request Method breakpoint cleared"; retur
n;} bpMethod = sParams[1].toUpperCase(); FiddlerObject.StatusText="R equest Meth
od breakpoint for " + bpMethod; break; case "bpu": if (sParams.Length<2) {bpRequ
estURI=null; FiddlerObject.StatusTe xt="RequestURI breakpoint cleared"; return;}
bpRequestURI = sParams[1]; FiddlerObject.StatusText="RequestURI breakpoint for
"+sParams[1] ; break; case "bpafter": if (sParams.Length<2) {bpResponseURI=null;
FiddlerObject.StatusT ext="ResponseURI breakpoint cleared"; return;} bpResponse
URI = sParams[1]; FiddlerObject.StatusText="ResponseURI breakpoint for "+sParams
[1 ]; break; case "overridehost": if (sParams.Length<3) {gs_OverridenHost=null;
FiddlerObject.Stat usText="Host Override cleared"; return;} gs_OverridenHost = s
Params[1].toLowerCase(); gs_OverrideHostWith = sParams[2]; FiddlerObject.StatusT
ext="Connecting to [" + gs_OverrideHostWith + "] for requests to [" + gs_Overrid
enHost + "]"; break; case "urlreplace": if (sParams.Length<3) {gs_ReplaceToken=n
ull; FiddlerObject.Statu sText="URL Replacement cleared"; return;} gs_ReplaceTok
en = sParams[1]; gs_ReplaceTokenWith = sParams[2].Replace(" ", "%20");// Simple
helper FiddlerObject.StatusText="Replacing [" + gs_ReplaceToken + "] in URIs wit
h [" + gs_ReplaceTokenWith + "]"; break; case "select": if (sParams.Length<2) {
FiddlerObject.StatusText="Please specify Content-Type to select."; return;} Fidd
lerObject.UI.actSelectSessionsWithResponseHeaderValue("Conte nt-Type", sParams[1
]); FiddlerObject.StatusText="Selected sessions returning Content-Ty pe: " + sPa
rams[1] + "."; if (FiddlerObject.UI.lvSessions.SelectedItems.Count > 0){ Fiddler
Object.UI.lvSessions.Focus(); } break; case "allbut": case "keeponly": if (sPara
ms.Length<2) { FiddlerObject.StatusText="Please specify Content-Type to retain d
uring wipe."; return;}FiddlerObject.UI.actSelectSessionsWithResponseHeaderValue(
"Conte nt-Type", sParams[1]); FiddlerObject.UI.actRemoveUnselectedSessions(); Fi
ddlerObject.UI.lvSessions.SelectedItems.Clear(); FiddlerObject.StatusText="Remov
ed all but Content-Type: " + sPar ams[1]; break; case "stop":FiddlerObject.UI.ac
tDetachProxy(); break; case "start": FiddlerObject.UI.actAttachProxy(); break; c
ase "cls": case "clear": FiddlerObject.UI.actRemoveAllSessions(); break; case "g
": case "go": FiddlerObject.UI.actResumeAllSessions(); break; case "help": Utili
ties.LaunchHyperlink("http://www.fiddler2.com/redir/?id=qui ckexec"); break; cas
e "hide": FiddlerObject.UI.actMinimizeToTray(); break; case "log": FiddlerApplic
ation.Log.LogString((sParams.Length<2) ? FiddlerApp lication.Log.LogString("User
couldn't think of anything to say...") : sParams[1] ); break; case "nuke": Fidd
lerObject.UI.actClearWinINETCache(); FiddlerObject.UI.actClearWinINETCookies();
break; case "show": FiddlerObject.UI.actRestoreWindow(); break; case "tail": if
(sParams.Length<2) { FiddlerObject.StatusText="Please specify # of sessions to t
rim the session list to."; return;} FiddlerObject.UI.TrimSessionList(int.Parse(s
Params[1])); break; case "quit": FiddlerObject.UI.actExit(); break; case "dump":
FiddlerObject.UI.actSelectAll(); FiddlerObject.UI.actSaveSessionsToZip(CONFIG.G
etPath("Captures") + "dump.saz"); FiddlerObject.UI.actRemoveAllSessions(); Fiddl
erObject.StatusText = "Dumped all sessions to " + CONFIG.Ge tPath("Captures") +
"dump.saz"; break; default: if (sAction.StartsWith("http") ?? sAction.StartsWith
("www")){System.Diagnostics.Process.Start(sAction); } else FiddlerObject.StatusT
ext = "Requested ExecAction: " + sAction + " not found. Type HELP to learn more.
"; } } }

Vous aimerez peut-être aussi