protected override void OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength) { try { Uri.TryCreate(request.Url, UriKind.Absolute, out var url); var extension = url?.ToString()?.ToLower(); Debug.WriteLine($@"URL加载完成:{request.Url}"); Debug.WriteLine($@"URL加载完成#2:{request.Headers}"); MemoryStreamResponseFilter filter; if (responseDictionary.TryGetValue(request.Identifier, out filter)) { Debug.WriteLine("------------------------------------------------------------------------"); Debug.WriteLine(extension); string postData = ""; if (request.PostData?.Elements?.Count > 0) { foreach (var item in request.PostData.Elements) { Debug.WriteLine(Encoding.UTF8.GetString(item.Bytes)); postData += Encoding.UTF8.GetString(item.Bytes); } } Debug.WriteLine("responseDictionary.Count:" + responseDictionary.Count); var data = filter.Data; var dataLength = filter.Data.Length; var dataAsUtf8String = Encoding.UTF8.GetString(data); Debug.WriteLine(dataAsUtf8String); //数据到达 HttpPacketHookManager.PacketRoute(url.PathAndQuery.Replace("/", "_"), dataAsUtf8String, postData, "", ""); } } catch (System.Exception ex) { } finally { if (responseDictionary.ContainsKey(request.Identifier)) { responseDictionary.Remove(request.Identifier); // 释放 Debug.WriteLine($"数据包缓存量:{responseDictionary.Count}"); } base.OnResourceLoadComplete(browserControl, browser, frame, request, response, status, receivedContentLength); } }
protected override IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { try { if (HttpPacketHookManager.HookThisRequest(request)) { var dataFilter = new MemoryStreamResponseFilter();//新建成数据 处理器 responseDictionary.Add(request.Identifier, dataFilter); return(dataFilter); } } catch (System.Exception ex) { } finally { } return(base.GetResourceResponseFilter(browserControl, browser, frame, request, response)); }