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(); } } }
private static void RequestWillBeSentEventHandler(RequestWillBeSentEvent requestWillBeSentEvent) { WriteObject(requestWillBeSentEvent); }
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(); }