예제 #1
0
        public override object BeforeResponse(BaseHttpClient client, RequestEntity request, ResponseEntity response, MetaModel meta)
        {
            if (request.Url.ToString().Contains("11315.com"))
            {
                string content = response.GetHtml();
                if (content.Contains("系统检测到您的请求存在异常"))
                {
                    string capthaUrl  = "http://www.11315.com/authCode.jpg?t=" + DateHelper.GetTimestamp(DateTime.Now);
                    var    newRequest = request;
                    newRequest.Url = new Uri(capthaUrl);
                    var _task = client.SendAsync(newRequest);
                    _task.Wait();
                    var result = _task.Result;

                    #region 验证码解析
                    string code             = "";
                    System.IO.FileStream fs = new System.IO.FileStream("capthca.jpg", System.IO.FileMode.OpenOrCreate);
                    fs.Write(result.HtmlContent);
                    fs.Close();
                    Console.WriteLine("验证码图片已储存,请输入验证码:");
                    code = Console.ReadLine();
                    #endregion

                    var    document = parser.ParseDocument(content);
                    string url      = "http://www.11315.com/validateAccess";
                    Dictionary <string, string> param = new Dictionary <string, string>();
                    param.Add("ip", document.QuerySelector("input[name='ip']").GetAttribute("value"));
                    param.Add("last_url", document.QuerySelector("input[name='last_url']").GetAttribute("value"));
                    param.Add("random", code);
                    return(this.http.CreatePostRequest(url, UrlHelper.ConvertUrlParams(param), "application/x-www-form-urlencoded"));
                }
            }
            return(response);
        }