開発環境 Microsoft Visual Studio Express 2013 for Windows Desktop
実行環境 Microsoft Windows 8.1 (64bit)
プロジェクトの種類 Visual C#/コンソール アプリケーション
プロジェクト名 FiddlerMH1

Program.cs
/*
 * プロジェクト/参照
 * ・FiddlerCore4.dll
 */
 
using Fiddler;
using System;
using System.IO;
using System.Threading;
 
namespace FiddlerMH1
{
    class Program
    {
        static string logdir;
 
        static void Main(string[] args)
        {
            logdir = DateTime.Now.ToString("yyyyMMdd_HHmmss");
            Directory.CreateDirectory(logdir);
 
            FiddlerApplication.AfterSessionComplete += FiddlerApplication_AfterSessionComplete;
            Console.CancelKeyPress += Console_CancelKeyPress;
            Disp("Starting {0}...", FiddlerApplication.GetVersionString());
            FiddlerApplication.Startup(0, true, true);
            Disp("Hit CTRL+C to end session.");
 
            bool bDone = false;
            do
            {
                ConsoleKeyInfo cki = Console.ReadKey();
                Console.WriteLine();
                switch (cki.KeyChar)
                {
                    case 'q':
                        bDone = true;
                        break;
                }
            } while (!bDone);
 
            DoQuit();
        }
 
        static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
        {
            DoQuit();
        }
 
        private static void DoQuit()
        {
            DispColor(ConsoleColor.Yellow, "Shutting down...");
            FiddlerApplication.Shutdown();
            Thread.Sleep(500);
        }
 
        private static void Disp(string format, params object[] arg)
        {
            DispColor(ConsoleColor.Gray, format, arg);
        }
 
        private static void DispColor(ConsoleColor color, string format, params object[] arg)
        {
            Console.ForegroundColor = color;
            Console.WriteLine(format, arg);
            Console.ResetColor();
        }
 
        static void FiddlerApplication_AfterSessionComplete(Session oSession)
        {
            Console.WriteLine("{0}:[{1}] [{2}]", oSession.id, oSession.oResponse.MIMEType, oSession.fullUrl);
 
            string[] url = oSession.fullUrl.Split('/');
            if (5 <= url.Length && url[4] == "makeRequest")
            {
                if (oSession.oResponse.MIMEType == "application/json")
                {
                    string req = oSession.GetRequestBodyAsString();
                    string res = oSession.GetResponseBodyAsString();
 
                    string path = string.Format(@"{0}\{1:d8}.log", logdir, oSession.id);
                    using (StreamWriter sw = new StreamWriter(path, false)) // 上書き
                    {
                        sw.WriteLine(oSession.id + "\t" + oSession.fullUrl + "\t" + req + "\t" + res);
                    }
                }
            }
        }
    }
}
 
最終更新:2015年04月09日 09:11