Exemple #1
0
        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);
            }
        }
Exemple #2
0
 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));
 }