Ejemplo n.º 1
0
        void webBrowser_LoadCompleted(object sender, NavigationEventArgs e)
        {
            new Action(() =>
            {
                Thread.Sleep(500);
                FiddlerHelper.WaitForSessionStackComplete();
                FiddlerHelper.Log("all done");

                App.CurrentApp.InRenderAction((_) =>
                {
                    HTMLDocument dom = (HTMLDocument)webBrowser.Document;
                    Analyse(dom);
                }, null, true);
            }).BeginInvoke(null, null);
        }
        public void Bind(HTMLDocument dom)
        {
            Clean();
            var pageInfo = this;

            //input fields
            foreach (dynamic item in dom.all)
            {
                if (item.tagName == "INPUT")
                {
                    pageInfo.InputTags.Add(new InputTagInfo
                    {
                        TagName = item.tagName,
                        Name    = item.name,
                        Value   = item.value,
                        Type    = item.type
                    });
                    //FiddlerHelper.Log(String.Format("input '{2}' {0}={1}", item.name, item.value, item.type));
                }
                else if (item.tagName == "BUTTON")
                {
                    FiddlerHelper.Log("BUTTON:" + item);
                }
            }
            //headers
            var sess = FiddlerHelper.GetSessionsStack().First();

            foreach (HTTPHeaderItem h in sess.FiddlerSession.oResponse.headers)
            {
                pageInfo.ResponseHeaders.Add(new NameValueItem {
                    Name = h.Name, Value = h.Value
                });
            }
            foreach (HTTPHeaderItem h in sess.FiddlerSession.oRequest.headers)
            {
                pageInfo.RequestHeaders.Add(new NameValueItem {
                    Name = h.Name, Value = h.Value
                });
            }
            pageInfo.RequestType = sess.FiddlerSession.oRequest.headers.HTTPMethod;

            pageInfo.RequestUrl = sess.BrowsingResponse.ResponseUrl.ToString();


            //query string
            string query = "";

            switch (pageInfo.RequestType)
            {
            case "GET":
                var q = sess.FiddlerSession.oRequest.headers.RequestPath;
                var queryStringIndex = q.IndexOf("?");
                if (queryStringIndex >= 0)
                {
                    query = q.Substring(queryStringIndex + 1);
                }
                break;

            case "POST":
                query = sess.FiddlerSession.GetRequestBodyAsString();
                break;
            }
            var qarr = query.Split('&');

            foreach (string qq in qarr)
            {
                var q = qq.Split('=');
                if (q[0].Length > 0)
                {
                    pageInfo.QueryParams.Add(new NameValueItem {
                        Name = q[0], Value = q[1]
                    });
                }
            }
        }