예제 #1
0
 protected override void OnExit(ExitEventArgs e)
 {
     base.OnExit(e);
     SystemHelper.RemoveIcon();
     FiddlerHelper.Stop();
     WebSocketHelper.Stop();
 }
예제 #2
0
 private void Window_Loaded(object sender, RoutedEventArgs e)
 {
     FiddlerHelper.RefreshIESettings("localhost:" + FiddlerWindow.FIDDLER_PORT);
     webBrowser.Navigated     += webBrowser_Navigated;
     webBrowser.Navigating    += webBrowser_Navigating;
     webBrowser.LoadCompleted += webBrowser_LoadCompleted;
 }
예제 #3
0
        public void Bind(mshtml.HTMLDocument dom)
        {
            Clean();
            var sess = Enumerable.First <FiddlerSessionHolder>(FiddlerHelper.GetSessionsStack());

            //TODO: diff
            SessionDocument = sess.BrowsingResponse.ResponseContent.AsFixedXML();
            String domDocStr = ("" + (dom as dynamic).documentElement.OuterHtml + "");

            DomDocument = domDocStr.AsFixedXML();
        }
예제 #4
0
        void webBrowser_Navigating(object sender, NavigatingCancelEventArgs e)
        {
            if (LastRequest == e.Uri)
            {
                return;
            }

            LastRequest = e.Uri;
            FiddlerHelper.StartNewSessionsStack();
            (DataContext as FiddlerWindowVm).Output.StartStep(e.Uri.ToString());
        }
        public override void Bind(mshtml.HTMLDocument dom, string content)
        {
            Clean();
            var sess = Enumerable.First <FiddlerSessionHolder>(FiddlerHelper.GetSessionsStack());

            //TODO: diff
            SessionDocument = new HtmlNodeHierarchy(sess.BrowsingResponse.ResponseContent.AsHtmlDocument().DocumentNode);
            String domDocStr = ("" + (dom as dynamic).documentElement.OuterHtml + "");

            DomDocument = new HtmlNodeHierarchy(domDocStr.AsHtmlDocument().DocumentNode);
        }
예제 #6
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);
        }
예제 #7
0
        public FiddlerWindow()
        {
            if (Instance != null)
            {
                throw new Exception("Can be only one FiddlerWindow instance");
            }
            Instance = this;

            FiddlerHelper.ClearCache();
            FiddlerHelper.StartListening(FIDDLER_PORT);
            this.Closing += (s, e) =>
            {
                FiddlerHelper.StopListening();
                Instance = null;
            };

            InitializeComponent();
        }
        public void Bind(HTMLDocument dom)
        {
            var sess = Enumerable.First <FiddlerSessionHolder>(FiddlerHelper.GetSessionsStack());

            html = sess.BrowsingResponse.ResponseContent.AsHtmlDocument();

            GeneratedCode.Clear();
            GeneratedCode.Add(GetRequestCode(sess, html));
            foreach (var codeGeneration in GetFormsCode(sess, html))
            {
                GeneratedCode.Add(codeGeneration);
            }
            foreach (var codeGeneration in GetAllSelectCode(sess, html))
            {
                GeneratedCode.Add(codeGeneration);
            }
            GeneratedCode.Add(GetAllInputCode(sess, html));
            NotifyPropertyChanged("GeneratedCode");
        }
        public void CICS_1749UpdateForgottenPasswordLinkTest()
        {
            var application = new ATProDebugApp();

            application.StartApp();
            var    loginWindow = new LoginWindow(application);
            string URL         = "https://trade-ppe.loginandtrade.com/forgottenpassword/resetpassword.aspx";
            string URLLIVE     = "https://trade.loginandtrade.com/forgottenpassword/resetpassword.aspx";

            loginWindow.ExecuteActionForeachLanguage(() =>
            {
                FiddlerHelper.ListenByFiddler(() =>
                {
                    loginWindow.ForgottenPasswordLink.Click();
                    var forgottenPasswordWindow = new ChromiumWebBrowserWindow(application);
                    forgottenPasswordWindow.Close();
                });

                var address = $"{URL}?cu={GetCurrentShortCulture()}&theme=ci";
                FiddlerHelper.CheckRequestSent(address);
                FiddlerHelper.RequestsList.Clear();
            });

            application.SetENGLanguageInConfigFile();

            loginWindow.EnvironmentComboBox.SelectItem("Live");

            loginWindow.ExecuteActionForeachLanguage(() =>
            {
                FiddlerHelper.ListenByFiddler(() =>
                {
                    loginWindow.ForgottenPasswordLink.Click();
                    var forgottenPasswordWindow = new ChromiumWebBrowserWindow(application);
                    forgottenPasswordWindow.Close();
                });

                var address = $"{URLLIVE}?cu={GetCurrentShortCulture()}&theme=ci";
                FiddlerHelper.CheckRequestSent(address);
                FiddlerHelper.RequestsList.Clear();
            });
        }
예제 #10
0
        public static void SendSessionStateHandler(string id, EventName eventName, IWebSocketConnection socket, Session session)
        {
            if (session.port == WebSocketHelper.WebSocketPort)
            {
                return;
            }
            var message = new MessageInfo
            {
                ID   = id,
                Type = MessageMode.Event,
                Body = new InstanceResponse
                {
                    Result = GenerateSessionInfo(session)
                }
            };

            socket.Send(JsonConvert.SerializeObject(message, Common.TimeFormat));
            if (FiddlerHelper.IsPauseSession() && eventName != EventName.AfterSessionComplete)
            {
                session.Pause();
            }
        }
예제 #11
0
        protected override void OnStartup(StartupEventArgs e)
        {
            var isReStart = false;

            if (e.Args.CanBeCount())
            {
                e.Args.ForEachOfUnNone(arg =>
                {
                    if (arg.StartsWith("restart"))
                    {
                        isReStart = true;
                    }
                    if (arg.StartsWith("kill"))
                    {
                        var opt = arg.Split(':');
                        int id;
                        if (opt.Length == 2 && int.TryParse(opt[1], out id))
                        {
                            var processes = Process.GetProcesses();
                            if (processes.Any(process => process.Id == id))
                            {
                                Process.GetProcessById(id).Kill();
                            }
                        }
                    }
                    if (arg.StartsWith("del"))
                    {
                        var opt = arg.Split(':');
                        if (opt.Length == 2)
                        {
                            DirectoryHelper.DeleteRecursive(opt[1]);
                        }
                    }
                });
            }
            #region 判断是否重复运行(重启模式不再判断)

            if (!isReStart)
            {
                var currentProcess = Process.GetCurrentProcess();
                var location       = Assembly.GetExecutingAssembly().Location;
                foreach (var process in Process.GetProcessesByName(currentProcess.ProcessName))
                {
                    if (process.Id != currentProcess.Id && location == currentProcess.MainModule.FileName)
                    {
                        MessageBox.Show("Program is running.");
                        SystemHelper.Exit();
                        return;
                    }
                }
            }

            #endregion

            base.OnStartup(e);
            SystemHelper.InitIcon(this, Calibur.Properties.Resources.calibur);
            FiddlerHelper.Start();
            WebSocketHelper.Start();
            CaliburService.InitialEntry();
            if (!isReStart)
            {
                Utilities.RunExecutable("Chrome", StorageHelper.AchiveValue("pageloading", "http://hellerz.github.io/hellerz/"));
            }
        }
        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]
                    });
                }
            }
        }