Real Time Log with Fiddler

1 posts, 0 answers
  1. Syd Chino
    Syd Chino avatar
    1 posts
    Member since:
    Oct 2014

    Posted 13 Oct 2017 Link to this post

    My target is to obtain a log file in real time using Fiddler, and extrapolate certain informations contained in the website, in my case, I need the Json when the expression begin with a specifc event or words.

    I found the RTLogger of Eric Lawrence for the real time log, that works, after a little edit I did it on Visual Studio, the log file is created with all the information of the page (request, response, Html Code, etc.), so I need to "filter" or remove this useless information and keep only the JSON.

    My code in CS project is:

    using System;
    using log4net;
    using Fiddler;

    [assembly: log4net.Config.XmlConfigurator(Watch=true)]
    [assembly: Fiddler.RequiredVersion("2.4.5.0")]
    namespace RTLogger
    {
        public class RTLogger: IAutoTamper
        {
            private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            public void AutoTamperRequestAfter(Session oSession) { }
            public void AutoTamperRequestBefore(Session oSession) { }
            public void AutoTamperResponseAfter(Session oSession) { }
            public void AutoTamperResponseBefore(Session oSession)
            {
                log.InfoFormat("#{0}\t{1}\t{2}\t{3}\t{4}",
                   oSession.id,
                   oSession.fullUrl,
                   oSession.responseCode,
                   oSession.oResponse["JSON"],
                   oSession.GetResponseBodyAsString()
                   );
            }


           public void OnBeforeReturningError(Session oSession)
            {
                log.InfoFormat("#{0}\t{1}\t{2}",
                   oSession.id,
                   oSession.fullUrl,
                   oSession.responseCode
                   );
            }


            public void OnBeforeUnload()
            {
                log.Info("RTLogger Unloading");
            }


            public void OnLoad()
            {
                log.Info("RTLogger Loading");
                if (log.IsInfoEnabled) FiddlerApplication.AlertUser("RTLogger", "Logging is enabled");
            }
        }
    }


    It works, but as I told before, I have too many information, I need just the "JSON", in my case, I have:

    2017-10-11 15:43:21,709 #65 http://tedme.cm.local/ted/direct/voice200{"action":"Connect","method":"retrieveDN","type":"rpc","tid":1,"result":{"success":true,"data":{"dnName":"0691387025","tServer":"TEST_ME","tServerHost":"megas01","tServerPort":3020,"bkpTServerHost":"megas02","bkpTServerPort":3020,"defaultQueue":"0691387099","serviceName":"119upout","tServerApplicationName":"SIPServer_TEST_ME_P","placeName":"WLACCW7ENN083","disasterRecoveryStatus":"0","switchDbID":140,"agentLogins":["8562973"],"employeeId":"X0233164","annexes":{"voice.outbound.wrap_up_time":"1000","voice.inbound.wrap_up_time":"10","voice.backoffice.wrap_up_time":"0"},"raoMode":"rao_italia","protocolCreationTimeout":0,"useProtocolCreationTimeout":false,"valid":true}}}

    So in my case I need first of all delete all the HTML CODE and CSS information or keep just the response that starts with "action" or "connect" or other string.

    My problem is that I don't know where I must insert this rules: in the fiddlerscript? in the CS project? In whick kind of way?

    I try the replace in the fiddlerscript, but it gives me the same result with too many information.

    I used:

    // If content-type is HTML, then remove all DIV tags

    if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html")){
    // Remove any compression or chunking
    oSession.utilDecodeResponse();var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
    // Replace all instances of the DIV tag with an empty string
    var oRegEx = /<div[^>]*>(.*?)<\/div>/gi; oBody = oBody.replace(oRegEx, "");
    // Set the response body to the div-less string
    oSession.utilSetResponseBody(oBody);}

    No luck with this code.

    So, since I'm going crazy, do you have any ideas for help me?

Back to Top