Exemple #1
0
        public void add_request_info(RequestWillBeSentEvent request)
        {
            if (!requests_id.ContainsKey(request.RequestId))
            {
                requests_id.Add(request.RequestId, request);
            }

            // Metadata files are filtered here.
            if (request.Initiator == null || request.Initiator.Stack == null ||
                request.Initiator.Stack.CallFrames == null || request.Initiator.Stack.CallFrames.Length == 0)
            {
                return;
            }

            if (request.Request.Url == "")
            {
                return;
            }

            if (ignore_js(request.Request.Url))
            {
                return;
            }

            lock (requests)
                requests.Add(request);
            var index = requests.Count - 1;

            var stack = request.Initiator.Stack;

            lock (what_is_near)
            {
                while (stack != null)
                {
                    foreach (var frame in stack.CallFrames)
                    {
                        if (!what_is_near.ContainsKey(frame.Url))
                        {
                            what_is_near.Add(frame.Url, new HashSet <int>());
                        }
                        what_is_near[frame.Url].Add(index);
                    }
                    stack = stack.Parent;
                }
            }
        }
        private void RequestList_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (RequestList.SelectedItems.Count > 0)
            {
                var item = (RequestList.SelectedItems[0] as CustomCrawlerDynamicsRequestDataGridItemViewModel);

                RequestWillBeSentEvent request  = item.Request;
                ResponseReceivedEvent  response = item.Response;

                if (request == null && response == null)
                {
                    if (item.AnonymouseSource.Url != "")
                    {
                        new ScriptViewer(item.AnonymouseSource.Url, (int)item.AnonymouseSource.LineNumber + 1, (int)item.AnonymouseSource.ColumnNumber + 1, true).Show();
                    }
                    if (item.AnonymouseCode != "")
                    {
                        new ScriptViewer(false, item.AnonymouseCode, -1, -1, true).Show();
                    }
                    return;
                }

                if (request == null)
                {
                    lock (parent.requests)
                        if (parent.requests_id.ContainsKey(response.RequestId))
                        {
                            request = parent.requests_id[response.RequestId];
                        }
                }
                else if (response == null)
                {
                    lock (parent.response)
                        if (parent.response.ContainsKey(request.RequestId))
                        {
                            response = parent.response[request.RequestId];
                        }
                }

                if (request != null)
                {
                    new CustomCrawlerDynamicsRequestInfo(request, response).Show();
                }
            }
        }
Exemple #3
0
 private static void RequestWillBeSentEventHandler(RequestWillBeSentEvent requestWillBeSentEvent)
 {
     WriteObject(requestWillBeSentEvent);
 }
Exemple #4
0
        public CustomCrawlerDynamicsRequestInfo(RequestWillBeSentEvent request, ResponseReceivedEvent response)
        {
            InitializeComponent();

            var builder = new StringBuilder();

            builder.Append($"Request Type: {request.Type.ToString()}\r\n");
            builder.Append($"Request Body:\r\n");
            builder.Append(JsonConvert.SerializeObject(request.Request, Formatting.Indented));
            builder.Append($"\r\n");
            builder.Append($"\r\n");
            if (response != null)
            {
                builder.Append($"==============================================================================================================================\r\n");
                builder.Append($"Response Raw:\r\n");

                //var raw = request_imitation(request.Request);
                //
                //try
                //{
                //    raw = JsonConvert.SerializeObject(JToken.Parse(raw), Formatting.Indented);
                //}
                //catch { }
                //
                //builder.Append(raw);

                CommandResponse <GetResponseBodyCommandResponse> result = null;
                ////var t1 = Task.Run(() =>
                ////{
                ////    Thread.Sleep(2000);
                ////    source.Cancel();
                ////});
                ///
                Task.Run(async() =>
                {
                    var source = new CancellationTokenSource();
                    var token  = source.Token;

                    //token.Register(() =>
                    //{
                    //    ;
                    //});
                    //
                    //_ = Task.Run(() => { Thread.Sleep(1000); source.Cancel(); }, token);

                    //source.CancelAfter(2000);

                    token.WaitHandle.WaitOne(TimeSpan.FromSeconds(2));

                    //Thread.Sleep(10000);

                    result = await CustomCrawlerDynamics.ss.SendAsync(new GetResponseBodyCommand {
                        RequestId = request.RequestId
                    }, token);
                }).Wait();

                if (result.Result != null)
                {
                    string body;

                    if (result.Result.Base64Encoded)
                    {
                        result.Result.Body.TryParseBase64(out body);
                    }
                    else
                    {
                        body = result.Result.Body;
                    }

                    try
                    {
                        body = JsonConvert.SerializeObject(JToken.Parse(body), Formatting.Indented);
                    }
                    catch { }

                    builder.Append(body);
                }
                else
                {
                    builder.Append("Internal error! Try again! :(");
                }
                builder.Append($"\r\n");
                builder.Append($"==============================================================================================================================\r\n");
                builder.Append($"Response Body:\r\n");
                builder.Append(JsonConvert.SerializeObject(response.Response, Formatting.Indented));
                builder.Append($"\r\n");
            }
            builder.Append($"==============================================================================================================================\r\n");
            builder.Append($"Request Initiator:\r\n");

            var stack = request.Initiator.Stack;

            while (stack != null)
            {
                if (!string.IsNullOrEmpty(stack.Description))
                {
                    builder.Append("Description: " + stack.Description + "\r\n");
                }

                foreach (var frame in stack.CallFrames)
                {
                    builder.Append($"{frame.Url}:<{frame.FunctionName}>:{frame.LineNumber + 1}:{frame.ColumnNumber + 1}\r\n");
                }

                stack = stack.Parent;
            }

            Info.Text = builder.ToString();
        }