Beispiel #1
0
        /// <summary>
        /// 获取验证码2019年9月版本
        /// </summary>
        /// <returns></returns>
        public Image GetValidateCode_201909()
        {
            Image img = null;

            try
            {
                var            num      = TimeHelp.GetTimeStamp(DateTime.Now);
                var            callback = $"jQuery{RandomHelp.GetRandomNumByLength(20)}_{TimeHelp.GetTimeStamp(DateTime.Now)}";
                RequestPackage request  = new RequestPackage("/passport/captcha/captcha-image64");
                request.Params.Add("login_site", "E");
                request.Params.Add("module", "login");
                request.Params.Add("rand", "sjrand");
                request.Params.Add(num, "");
                request.Params.Add("callback", callback);
                request.Params.Add("_", num);
                ArrayList list = TrainHttpContext.GetHtmlData(request);
                if (list.Count == 3)
                {
                    var resStr     = list[1].ToString().CallBackJson();
                    var streamJson = JsonConvert.DeserializeObject <ResCodeImgMsg>(resStr);
                    if (streamJson.result_code.Equals("0"))
                    {
                        img = Base64ToImgHelp.CetFromBase64String(streamJson.image);
                    }
                }
                else
                {
                    Log.Write(LogLevel.Info, "请求/otn/login/init失败");
                }
            }
            catch (Exception ex)
            {
                Log.Write(LogLevel.Error, ex.Message, ex);
            }
            return(img);
        }
        /// <summary>
        /// 获取验证码
        /// </summary>
        public Tuple <int, string> GetValidateCode(string url)
        {
            var    code = 888;
            string path = string.Empty;

            try
            {
                RequestPackage request = new RequestPackage("/otn/login/init");
                ArrayList      list    = TrainHttpContext.GetHtmlData(request);
                if (list.Count == 3)
                {
                    request.RequestURL = "/passport/captcha/captcha-image";
                    request.Params.Add("login_site", "E");
                    request.Params.Add("module", "login");
                    request.Params.Add("rand", "sjrand");
                    request.Params.Add("0.21660476430599007", "");
                    using (Stream stream = TrainHttpContext.DownloadCode(request))
                    {
                        path = list[2] + ".png";
                        if (SaveValidateCode(stream, Path.Combine(url, path)))
                        {
                            code = 0;
                        }
                    }
                }
                else
                {
                    Log.Write(LogLevel.Info, "请求/otn/login/init失败");
                }
            }
            catch (Exception ex)
            {
                Log.Write(LogLevel.Error, ex.Message, ex);
            }
            return(new Tuple <int, string>(code, path));
        }