Пример #1
0
        private void FiddlerApplication_AfterSessionComplete(Session session)
        {
            // Ignore HTTPS connect requests
            if (session.RequestMethod == "CONNECT")
            {
                return;
            }

            if (session == null || session.oRequest == null || session.oRequest.headers == null)
            {
                return;
            }

            var full_url = session.fullUrl;

            Console.WriteLine("URL: " + full_url);

            HTTPRequestHeaders  request_headers  = session.RequestHeaders;
            HTTPResponseHeaders response_headers = session.ResponseHeaders;
            int http_response_code = response_headers.HTTPResponseCode;

            Console.WriteLine("HTTP Response: " + http_response_code.ToString());

            string referer = null;
            Dictionary <String, HTTPHeaderItem> request_headers_dictionary = request_headers.ToDictionary(p => p.Name);

            if (request_headers_dictionary.ContainsKey("Referer"))
            {
                referer = request_headers_dictionary["Referer"].Value;
            }

            //foreach (HTTPHeaderItem header_item in response_headers)
            //{
            //    Console.Error.WriteLine(header_item.Name + " " + header_item.Value);
            //}

            //foreach (HTTPHeaderItem header_item in request_headers)
            //{
            //    Console.Error.WriteLine(header_item.Name + " " + header_item.Value);
            //}
            Console.Error.WriteLine("Referer: " + referer);

            var timers   = session.Timers;
            var duration = (TimeSpan)(timers.ClientDoneResponse - timers.ClientBeginRequest);

            Console.Error.WriteLine(String.Format("Duration: {0:F10}", duration.Milliseconds));
            var dic = new Dictionary <string, object>()
            {
                { "url", full_url }, { "status", http_response_code },
                { "duration", duration.Milliseconds },
                { "referer", referer }
            };

            insert(dic);

            // https://groups.google.com/forum/#!msg/httpfiddler/RuFf5VzKCg0/wcgq-WeUnCoJ
            // the following code does not work as intended: request body is always blank
            //string request_body = session.GetRequestBodyAsString();

            //if (!string.IsNullOrEmpty(request_body))
            //{
            //    // TODO: UrlDecode
            //    Console.Error.WriteLine(string.Join(Environment.NewLine, request_body.Split(new char[] { '&' })));
            //}
        }