import System; import System.Windows.Forms; import Fiddler; // INTRODUCTION // This is the FiddlerScript Rules file, which creates some of the menu commands and // other features of Fiddler. You can edit this file to modify or add new commands. // // The original version of this file is named SampleRules.js and it is in the // \Program Files\Fiddler\ folder. When Fiddler first starts, it creates a copy named // CustomRules.js inside your \Documents\Fiddler2\Scripts folder. If you make a // mistake in editing this file, simply delete the CustomRules.js file and restart // Fiddler. A fresh copy of the default rules will be created from the original // sample rules file. // GLOBALIZATION NOTE: // Be sure to save this file with UTF-8 Encoding if using any non-ASCII characters // in strings, etc. // JScript Reference // http://fiddler2.com/r/?msdnjsnet // // FiddlerScript Reference // http://fiddler2.com/r/?fiddlerscriptcookbook // // FiddlerScript Editor: // http://fiddler2.com/r/?fiddlerscripteditor class Handlers { //urmatoarele 4 linii introduse de mine: public static RulesOption("Change Google Site") var m_ChangesOnGoogle : boolean = true; public static RulesOption("Use TOR") var m_EnableTOR: boolean = false; public static RulesOption("Use MD") var m_EnableMD: boolean = false; public static RulesOption("Hide CSS") var m_EnableHideCSS: boolean = false; public static RulesOption("Hide JS") var m_EnableHideJS: boolean = false; // The following snippet demonstrates a custom-bound column for the web sessions list. // See http://fiddler2.com/r/?fiddlercolumns for more info // public static BindUIColumn("Method", 60) // function FillMethodColumn(oS: Session): String { // if ((oS.oRequest != null) && (oS.oRequest.headers != null)) // return oS.oRequest.headers.HTTPMethod; else return String.Empty; //} public static RulesOption("Hide 304s") var m_Hide304s: boolean = false; public static RulesOption("Delete Advertising") var m_DeleteAdvertising : boolean = true; // Cause Fiddler to override the Accept-Language header with one of the defined values public static RulesOption("Request &Japanese Content") var m_Japanese: boolean = false; // Automatic Authentication public static RulesOption("&Automatically Authenticate") var m_AutoAuth: boolean = false; // Cause Fiddler to override the User-Agent header with one of the defined values RulesString("&User-Agents", true) RulesStringValue(0,"Netscape &3", "Mozilla/3.0 (Win95; I)") RulesStringValue(1,"WinPhone7", "Mozilla/4.0 (compatible: MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; SGH-i917)") RulesStringValue(2,"WinPhone7.5", "Mozilla/5.0 (compatible: MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)") RulesStringValue(3,"&Safari5 (Win7)", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1") RulesStringValue(4,"Safari6 (Mac)", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8) AppleWebKit/536.25 (KHTML, like Gecko) Version/6.0 Safari/536.25") RulesStringValue(5,"iPad", "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25") RulesStringValue(6,"iPhone6", "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A405 Safari/8536.25") RulesStringValue(7,"IE &6 (XPSP2)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)") RulesStringValue(8,"IE &7 (Vista)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1)") RulesStringValue(9,"IE 8 (Win2k3 x64)", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64; Trident/4.0)") RulesStringValue(10,"IE &8 (Win7)", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)") RulesStringValue(11,"IE 8 (IE7 CompatMode)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)") RulesStringValue(12,"IE 9 (Win7)", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)") RulesStringValue(13,"IE 10 (Win8)", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)") RulesStringValue(14,"IE 11 (Win8.1)", "Mozilla/5.0 (IE 11.0; Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko") RulesStringValue(15,"&Opera", "Opera/9.80 (Windows NT 6.2; WOW64) Presto/2.12.388 Version/12.11") RulesStringValue(16,"&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(17,"&Firefox 21", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0") RulesStringValue(18,"&Firefox Phone", "User-Agent: Mozilla/5.0 (Mobile; rv:18.0) Gecko/18.0 Firefox/18.0") RulesStringValue(19,"&Firefox (Mac)", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0") RulesStringValue(20,"Chrome (Win8)", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36") RulesStringValue(21,"ChromeBook", "Mozilla/5.0 (X11; CrOS armv7l 2913.260.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.99 Safari/537.11") RulesStringValue(22,"GoogleBot Crawler", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)") RulesStringValue(23,"Kindle Fire (Silk)", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.22.79_10013310) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true") RulesStringValue(24,"&Custom...", "%CUSTOM%") // public static var sUA: String = null; //my Default User-Agent: public static var sUA: String = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"; // Cause Fiddler to delay HTTP traffic to simulate typical 56k modem conditions public static RulesOption("Simulate &Modem Speeds", "Per&formance") var m_SimulateModem: boolean = false; // Removes HTTP-caching related headers and specifies "no-cache" on requests and responses public static RulesOption("&Disable Caching", "Per&formance") var m_DisableCaching: boolean = false; public static RulesOption("Cache Always &Fresh", "Per&formance") var m_AlwaysFresh: boolean = false; // Force a manual reload of the script file. Resets all // RulesOption variables to their defaults. public static ToolsAction("Reset Script") function DoManualReload() { FiddlerObject.ReloadScript(); } public static ContextAction("Decode Selected Sessions") function DoRemoveEncoding(oSessions: Session[]) { for (var x:int = 0; x < oSessions.Length; x++){ oSessions[x].utilDecodeRequest(); oSessions[x].utilDecodeResponse(); } FiddlerApplication.UI.actUpdateInspector(true,true); } static function OnBoot() { // MessageBox.Show("Fiddler has finished booting"); // System.Diagnostics.Process.Start("iexplore.exe"); // FiddlerObject.UI.ActivateRequestInspector("HEADERS"); // FiddlerObject.UI.ActivateResponseInspector("HEADERS"); } static function OnShutdown() { // MessageBox.Show("Fiddler has shutdown"); } static function OnAttach() { // MessageBox.Show("Fiddler is now the system proxy"); } static function OnDetach() { // MessageBox.Show("Fiddler is no longer the system proxy"); } static function OnBeforeRequest(oSession: Session) { //urmatoarele 10 linii introduse de mine if (m_EnableTOR) { oSession["X-OverrideGateway"] = "socks=127.0.0.1:9150"; oSession["ui-backcolor"] = "#EFEF9F"; } if (m_EnableMD) { oSession["X-OverrideGateway"] = "socks=127.0.0.1:9090"; oSession["ui-backcolor"] = "#EFEF9F"; } //workaround for buggy sites that don't use SSL correctly // if ( oSession.HTTPMethodIs("CONNECT") && oSession.HostnameIs("BuggySite.com") ) { // oSession["x-OverrideSslProtocols"] = "ssl3"; // FiddlerApplication.Log.LogString("Legacy compat applied for inbound request to BuggySite.com"); // } // Sample Rule: Color ASPX requests in RED // if (oSession.uriContains(".aspx")) { oSession["ui-color"] = "red"; } // Sample Rule: Flag POSTs to fiddler2.com in italics // if (oSession.HostnameIs("www.fiddler2.com") && oSession.HTTPMethodIs("POST")) { oSession["ui-italic"] = "yup"; } // Sample Rule: Break requests for URLs containing "/sandbox/" // if (oSession.uriContains("/sandbox/")) { // oSession.oFlags["x-breakrequest"] = "yup"; // Existence of the x-breakrequest flag creates a breakpoint; the "yup" value is unimportant. // } if ((null != gs_ReplaceToken) && (oSession.url.indexOf(gs_ReplaceToken)>-1)) { // Case sensitive oSession.url = oSession.url.Replace(gs_ReplaceToken, gs_ReplaceTokenWith); } if ((null != gs_OverridenHost) && (oSession.host.toLowerCase() == gs_OverridenHost)) { oSession["x-overridehost"] = gs_OverrideHostWith; } if ((null!=bpRequestURI) && oSession.uriContains(bpRequestURI)) { oSession["x-breakrequest"]="uri"; } if ((null!=bpMethod) && (oSession.HTTPMethodIs(bpMethod))) { oSession["x-breakrequest"]="method"; } if ((null!=uiBoldURI) && oSession.uriContains(uiBoldURI)) { oSession["ui-bold"]="QuickExec"; } if (m_SimulateModem) { // Delay sends by 300ms per KB uploaded. oSession["request-trickle-delay"] = "300"; // Delay receives by 150ms per KB downloaded. oSession["response-trickle-delay"] = "150"; } if (m_DisableCaching) { oSession.oRequest.headers.Remove("If-None-Match"); oSession.oRequest.headers.Remove("If-Modified-Since"); oSession.oRequest["Pragma"] = "no-cache"; } // User-Agent Overrides if (null != sUA) { oSession.oRequest["User-Agent"] = sUA; } if (m_Japanese) { oSession.oRequest["Accept-Language"] = "ja"; } if (m_AutoAuth) { // Automatically respond to any authentication challenges using the // current Fiddler user's credentials. You can change (default) // to a domain\\username:password string if preferred. // // WARNING: This setting poses a security risk if remote // connections are permitted! oSession["X-AutoAuth"] = "(default)"; } if (m_AlwaysFresh && (oSession.oRequest.headers.Exists("If-Modified-Since") || oSession.oRequest.headers.Exists("If-None-Match"))) { oSession.utilCreateResponseAndBypassServer(); oSession.responseCode = 304; oSession["ui-backcolor"] = "Lavender"; } } /* // SAMPLES // You can create a custom menu like so: QuickLinkMenu("&Links") QuickLinkItem("IE GeoLoc TestDrive", "http://ie.microsoft.com/testdrive/HTML5/Geolocation/Default.html") QuickLinkItem("FiddlerCore", "http://fiddler.wikidot.com/fiddlercore") public static function DoLinksMenu(sText: String, sAction: String) { Utilities.LaunchHyperlink(sAction); } // This function is called immediately after a set of request headers has // been read from the client. This is typically too early to do much useful // work, since the body hasn't yet been read, but sometimes it may be useful. // // For instance, see // http://blogs.msdn.com/b/fiddler/archive/2011/11/05/http-expect-continue-delays-transmitting-post-bodies-by-up-to-350-milliseconds.aspx // for one useful thing you can do with this handler. // // Note: oSession.requestBodyBytes is not available within this function! static function OnPeekAtRequestHeaders(oSession: Session) { } */ // // If a given session has response streaming enabled, then the OnBeforeResponse function // is actually called AFTER the response was returned to the client. // // In contrast, this OnPeekAtResponseHeaders function is called before the response headers are // sent to the client (and before the body is read from the server). Hence this is an opportune time // to disable streaming (oSession.bBufferResponse = true) if there is something in the response headers // which suggests that tampering with the response body is necessary. // // Note: oSession.responseBodyBytes is not available within this function! // static function OnPeekAtResponseHeaders(oSession: Session) { //FiddlerApplication.Log.LogFormat("Session {0}: Response header peek shows status is {1}", oSession.id, oSession.responseCode); if (m_DisableCaching) { oSession.oResponse.headers.Remove("Expires"); oSession.oResponse["Cache-Control"] = "no-cache"; } if ((bpStatus>0) && (oSession.responseCode == bpStatus)) { oSession["x-breakresponse"]="status"; oSession.bBufferResponse = true; } if ((null!=bpResponseURI) && oSession.uriContains(bpResponseURI)) { oSession["x-breakresponse"]="uri"; oSession.bBufferResponse = true; } // This block enables streaming for files larger than 5mb if ( oSession.oResponse.headers.Exists("Content-Length") ) { var sLen = oSession.oResponse["Content-Length"]; var iLen: Int32 = 0; if ( !isNaN(sLen) ) { iLen = parseInt(sLen); if ( iLen > 5120000 ) { oSession.bBufferResponse = false; oSession["ui-color"] = "yellow"; oSession["log-drop-response-body"] = "save memory"; } } } } static function repeat( str, num : int ) { return new Array( num + 1 ).join( str); } static function replaceRegexes (body, blocks, regexes) { var nrBlocks = blocks == null ? 0 : blocks.length; var nrRegexes = regexes == null ? 0 : regexes.length; for( var i = 0; i < nrBlocks; i++ ) { var block = blocks[i]; var space = ""; for( var j = 0; j < nrRegexes; j++ ) { if ( block.match( regexes[j] ) ) { space = repeat( " ", block.length ); body = body.replace( block, space ); break; } } } return body; } static function OnBeforeResponse(oSession: Session) { //modifies the page body only for HTML pages if ( oSession.oResponse.headers.ExistsAndContains("Content-Type", "html") ) { //Remove any compression or chunking oSession.utilDecodeResponse(); var oBody = oSession.GetResponseBodyAsString(); //delete advertising: if ( m_DeleteAdvertising ) { //get all