Exemple #1
0
 private static void KadLingQuan(int index)
 {
     string domain = "http://user.360kad.com";
     string couponUrl = string.Format("{0}/coupon", domain);
     string userCookie = "bdshare_firstime=1455627982618; __juid=1455628956347654972179793; __newnuid=AAAAAFbDIrpD9gZ9IAgvAg==; KadGuide_4743619=False; kad_cart2=cookie_0f6439019fb44a54b1d5bd03d41c1ee7; KadGuide_3331197=False; Hm_lvt_9dc25c72b2848d6257aafcf33ec1a6db=1455627686,1455716978,1456241460,1456327203; Hm_lpvt_9dc25c72b2848d6257aafcf33ec1a6db=1456327203; newhisSearch=%5B%7B%22title%22%3A%22%E4%B9%90%E5%BF%83%E4%BD%93%E9%87%8D%E8%84%82%E8%82%AA%E6%B5%8B%E9%87%8F%E4%BB%AA%22%7D%5D; s_cc=true; s_fid=5C190A8E89FF447E-04661E7397ACE3AC; s_nr=1456327206908-Repeat; s_temp=Repeat; s_sq=gdkad-web-prd%3D%2526pid%253Dsearch.360kad.com%25253Ahome%2526pidt%253D1%2526oid%253Dhttp%25253A%25252F%25252Fwww.360kad.com%25252Fproduct%25252F1010125350.shtml%25253Fkzone%25253Dkadse…%252525E5%252525BF%25252583%252525E4%252525BD%25252593%252525%2526ot%253DA; KadProductHistory=%5B%7B%22WareSkuCode%22%3A%221010125350%22%2C%22CreateAt%22%3A%22%2FDate(1456327204249)%2F%22%7D%2C%7B%22WareSkuCode%22%3A%2239370%22%2C%22CreateAt%22%3A%22%2FDate(1455717414693)%2F%22%7D%2C%7B%22WareSkuCode%22%3A%2269614%22%2C%22CreateAt%22%3A%22%2FDate(1455717251470)%2F%22%7D%2C%7B%22WareSkuCode%22%3A%222145%22%2C%22CreateAt%22%3A%22%2FDate(1455717046408)%2F%22%7D%2C%7B%22WareSkuCode%22%3A%2275571%22%2C%22CreateAt%22%3A%22%2FDate(1455629005953)%2F%22%7D%5D; KadCPS_Source=51fanli; KadCPS_Id=144915441; KadCPS_Url=http://www.360kad.com/; KadCPS_CID=D02ea1gx4itd25t39eu5; KadCPS_WI=4704756582; KadGuide_1280946910=False; KadBindPhone_1280946910=True; __utmt=1; CNZZDATA2913503=cnzz_eid%3D1069869852-1455626671-%26ntime%3D1456323051; __utma=1.234690889.1455627820.1455627820.1455627820.1; __utmb=1.32.10.1456326942; __utmc=1; __utmz=1.1455627820.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); Hm_lvt_7a942c91de8533c33ddabdacba23065b=1455716993,1456241631,1456326693,1456327358; Hm_lpvt_7a942c91de8533c33ddabdacba23065b=1456328153; K2_Web_User=13632254308; K2_Web_Token=SxVEGRfPtEYdlDC4A3uO+LTyIIPg9d3q25f+7RVhVSMpTo27QmzaK9yIVhEstchH5J5ru1PiBeLPFihzUQ3FWAQ5jK/JVUrps3vMoMydkorfWOkmoF/SiBRGu2rLLOLR2p2c//MztiLRGyNbSTL13B8Tjq79/cvgFEa7assunZwEEAEKahYIym8wEOKWQ7gfG5ikb5VQuQs=";
     var couponResult = HttpHelper.GetHtml(new HttpItem()
     {
         URL = couponUrl,
         Method = "get",
         Cookie = userCookie
     });
     var doc = new HtmlDocument();
     doc.LoadHtml(couponResult.Html);
     var nodes = doc.DocumentNode.SelectNodes("//*[@class=\"lingqu-btn\"]");
     if (nodes == null || nodes.Count == 0)
     {
         Console.WriteLine("已领取完毕!");
         return;
     }
     List<Task> taskList = new List<Task>();
     List<string> prmCodes = new List<string>();
     var prmCodeReg = new System.Text.RegularExpressions.Regex("\\d{5,40}");
     foreach (var node in nodes)
     {
         string prmCode = prmCodeReg.Match(node.Attributes["onclick"].Value).ToString();
         prmCodes.Add(prmCode);
         taskList.Add(Task.Factory.StartNew(() =>
         {
             var result = new HttpHelper().GetHtml(new HttpItem()
             {
                 URL = string.Format("{0}/Coupon/AddCusPrmote?procode={1}", domain, prmCode),
                 Method = "get",
                 Cookie = userCookie
             });
         }));
     }
     Task.WaitAll(taskList.ToArray());
     Console.WriteLine(string.Format("第{0}次领券成功,领取的优惠券为:\r\n{1}", index, string.Join(",", prmCodes)));
     index += 1;
     KadLingQuan(index);
 }
        public ActionResult Index()
        {
            //下载
            string url = "http://11185gz.com.cn/security/jcaptcha.jpg";
            int qty = 30;
            string type = "nubia";
            Task[] tasks = new Task[qty];
            List<Image> imgs = new List<Image>();
            for (int i = 0; i < qty; i++)
            {
                tasks[i] = Task.Factory.StartNew(() =>
                {
                    var result = new HttpHelper().GetHtml(new HttpItem()
                    {
                        URL = url.Contains("?") ? string.Format("{0}&t={1}", url, DateTime.Now.ToString("yyyyMMddHHmmsssss")) : string.Format("{0}?t={1}", url, DateTime.Now.ToString("yyyyMMddHHmmsssss")),
                        Method = "Get",
                        ResultType = ResultType.Byte
                    });
                    using (MemoryStream ms = new MemoryStream(result.ResultByte))
                    {
                        ms.Write(result.ResultByte, 0, result.ResultByte.Length);
                        imgs.Add(Image.FromStream(ms, true));
                    }
                });
            }
            Task.WaitAll(tasks);

            List<VCodeBinary> vCodeBinarys = new List<VCodeBinary>();
            Dictionary<string, Image> dictCutImgs = new Dictionary<string, Image>();
            foreach (var img in imgs)
            {
                try
                {
                    var imgList = ImageProcessHelper.PreProcess(img, 1, img.Width / 4, img.Height);
                    foreach (var cutImg in imgList)
                    {
                        string id = Guid.NewGuid().ToString("N");
                        vCodeBinarys.Add(new VCodeBinary()
                        {
                            Id = id,
                            Code = ImageProcessHelper.GetBinaryCode(cutImg),
                            Text = string.Empty,
                            Type = type,
                            CreateTime = DateTime.Now
                        });
                        dictCutImgs.Add(id, cutImg);
                        //cutImg.Save(string.Format(@"D:\USER\luojun\Desktop\vCode\{0}.jpg", id));
                        //cutImg.Dispose();
                    }
                    img.Dispose();
                }
                catch (Exception ex)
                {
                    LogHelper.Log(ex);
                }
            }
            var liteDBHelper = new LiteDBHelper("VCode.db");
            liteDBHelper.Insert<VCodeBinary>(vCodeBinarys);

            //相似分组
            int rate = 85;
            Dictionary<string, List<VCodeBinary>> dictVCodeBinarys = new Dictionary<string, List<VCodeBinary>>();
            foreach (var vCodeBinaryA in vCodeBinarys)
            {
                try
                {
                    var codes = new List<VCodeBinary>() {
                    vCodeBinaryA
                    };
                    foreach (var vCodeBinaryB in vCodeBinarys)
                    {
                        int thisRate = ImageProcessHelper.CalcRate(vCodeBinaryA.Code, vCodeBinaryB.Code);
                        if (thisRate >= rate)
                        {
                            codes.Add(vCodeBinaryB);
                        }
                    }
                    dictVCodeBinarys.Add(vCodeBinaryA.Id, codes);
                }
                catch (Exception ex)
                {
                    LogHelper.Log(ex);
                }
            }

            foreach (var key in dictVCodeBinarys.Keys)
            {
                string savePath = string.Format(@"H:\VCode\{0}", key);
                Directory.CreateDirectory(savePath);
                foreach (var vCodeBinary in dictVCodeBinarys[key])
                {
                    string imgFullName = Path.Combine(savePath, string.Format("{0}.jpg", vCodeBinary.Id));
                    dictCutImgs[vCodeBinary.Id].Save(imgFullName);
                    //dictCutImgs[vCodeBinary.Id].Dispose();
                }
            }
            return View();
        }