示例#1
0
        static bool RegNewUser(RegInfo user, string tid)
        {
            try
            {
                HttpWebRequest request = null;
                string         url     = "http://www.vnscoin.com/user/register/?code=" + user.InviteCodeFrom; //登录页面
                request        = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                if (user.proxy != null)
                {
                    request.Proxy = new WebProxy(user.proxy.IP, user.proxy.Port);
                }
                else
                {
                    if (webproxy != null)
                    {
                        request.Proxy = webproxy;
                    }
                    else
                    {
                        request.Proxy = new WebProxy(localproxy.IP, localproxy.Port);
                    }
                }
                request.Accept            = "*/*;";
                request.UserAgent         = "Mozilla/5.0";
                request.ContentType       = "application/x-www-form-urlencoded";
                request.AllowAutoRedirect = true;
                request.CookieContainer   = user.CC;
                request.KeepAlive         = true;

                /*
                 * code:TOfUKS7u
                 * mobile:18648611298
                 * phone_code:901693
                 * password:vn,.?1wyky..
                 * pwd_again:vn,.?1wyky..
                 */

                string postData = string.Format("code={0}&mobile={1}&phone_code={2}&password={3}&pwd_again={4}&check_code={5}",
                                                System.Web.HttpUtility.UrlEncode(user.InviteCodeFrom),
                                                System.Web.HttpUtility.UrlEncode(user.Phone),
                                                System.Web.HttpUtility.UrlEncode(user.PhoneSmsCode),
                                                System.Web.HttpUtility.UrlEncode(user.Password),
                                                System.Web.HttpUtility.UrlEncode(user.Password),
                                                System.Web.HttpUtility.UrlEncode(user.PicVCode));
                log.WriteLine(postData);//这里按照前面FireBug中查到的POST字符串做相应修改。
                byte[] postdatabyte = Encoding.UTF8.GetBytes(postData);
                request.ContentLength = postdatabyte.Length;

                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(postdatabyte, 0, postdatabyte.Length);
                }

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                string strWebData = string.Empty;
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    strWebData = reader.ReadToEnd();
                }
                if (strWebData.IndexOf("奖") > 0)
                {
                    var doc = new HtmlDocument();
                    doc.LoadHtml(strWebData);
                    try
                    {
                        var yaoqing = doc.DocumentNode.SelectNodes("/html/body/div[2]/div/div[3]/div[3]/div[2]/table/tbody/tr[2]/td[2]/div").First().InnerText;
                        var jifen   = doc.DocumentNode.SelectNodes("/html/body/div[2]/div/div[3]/div[3]/div[2]/table/tbody/tr[4]/td[2]").First().InnerText;
                        var jiangli = doc.DocumentNode.SelectNodes("/html/body/div[2]/div/div[3]/div[3]/div[2]/table/tbody/tr[5]/td[2]").First().InnerText;
                        user.InviteCode = yaoqing;
                        user.JiFen      = Convert.ToInt32(jifen);
                        user.JiangLi    = Convert.ToInt32(jiangli);
                    }
                    catch
                    { }

                    string info = string.Format(tid + "新用户:{0}注册成功!!!,邀请:{1},积分:{2},奖励:{3}", user.Phone, user.InviteCode, user.JiFen, user.JiangLi);
                    Console.WriteLine(info);
                    log.WriteLine(info);
                    NewUserLog.WriteLine(info);
                    return(true);
                }
                else
                {
                    throw new Exception(strWebData);
                }
            }
            catch (Exception e)
            {
                string info  = string.Format(tid + "新用户:{0}注册失败 Err{1}", user.Phone, e.Message);
                string info1 = string.Format(tid + "新用户:{0}注册失败 ", user.Phone);

                Console.WriteLine(info1);
                log.WriteLine(info);
            }
            return(false);
        }
示例#2
0
        //Thread.CurrentThread.ManagedThreadId.ToString() 获取线程ID
        static void Reg()
        {
            string tid = Thread.CurrentThread.ManagedThreadId.ToString();

            Console.WriteLine("线程:{0}启动...", tid);
            Thread.Sleep(1000);
            RegInfo newuser = new RegInfo(Smss);

            //获取代理服务器
            bool proxyflag  = GetProxy(newuser, tid);
            int  proxycount = 0;

            while (!proxyflag)
            {
                Thread.Sleep(300);
                proxyflag = GetProxy(newuser, tid);
                proxycount++;
                if (proxycount > 3)
                {
                    break;
                }
            }
            if (!proxyflag)
            {
                newuser.proxy = null;
            }

            newuser.Phone = newuser.Sms.GetPhone();
            if (newuser.Phone.Length != 11)
            {
                Console.WriteLine(tid + "手机号获取失败:" + newuser.Sms.ServiceName + newuser.Phone);
                log.WriteLine(tid + "手机号获取失败:" + newuser.Sms.ServiceName + newuser.Phone);
                ThreadCount--;
                return;
            }
            Console.WriteLine(tid + "手机号获取:" + newuser.Sms.ServiceName + newuser.Phone + " 成功");
            log.WriteLine(tid + "手机号获取:" + newuser.Sms.ServiceName + newuser.Phone + " 成功");


            //破解验证码
            int piccount = 1;

            while (!BreakImgCode(newuser, tid))
            {
                Console.WriteLine(tid + "尝试第{0}次破解图片验证码", (piccount + 1));
                piccount++;
                if (piccount > 5)
                {
                    break;
                }
            }
            if (newuser.PicVCode == "")
            {
                ThreadCount--;
                return;
            }
            try

            {
                SendSmsMsg(newuser.Phone, newuser);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                ThreadCount--;
                return;
            }
            //获取短信内容
            int    times     = 0;
            string Smsresult = "";

            while (true)
            {
                if (times > 20)
                {
                    break;
                }
                if (!Working)
                {
                    break;
                }
                Smsresult = newuser.Sms.GetMsg(newuser.Phone);
                if (Smsresult.Length > 4)
                {
                    break;
                }
                else
                {
                    times++;
                    //Console.WriteLine(string.Format(tid  +newuser.Sms.ServiceName+"正在第 {0} 次获取验证码。", times));
                    Thread.Sleep(5000);
                }
            }
            if (Smsresult.Length < 4)
            {
                Console.WriteLine(tid + "获取短信内容失败" + newuser.Sms.ServiceName);
                log.WriteLine(tid + "获取短信内容失败" + newuser.Sms.ServiceName);
                newuser.Sms.AddIngore(newuser.Phone);
                newuser.Sms.Release(newuser.Phone);
                ThreadCount--;
                return;
            }
            //获取短信验证码 正则方式
            newuser.PhoneSmsCode = getyzm(Smsresult, 6);
            Console.WriteLine(tid + "Raw SmsMsg:" + Smsresult + newuser.Sms.ServiceName);
            Console.WriteLine(tid + "Sms Verficode:" + newuser.PhoneSmsCode + newuser.Sms.ServiceName);

            //获取邀请码
            newuser.InviteCodeFrom = GetInvCodeList();
            Console.WriteLine(tid + "返回随机邀请码:" + newuser.InviteCodeFrom);

            newuser.Password = GetRandomString(12, true, true, true);
            newuser.Password = newuser.Password.Substring(0, 11) + "0";
            Console.WriteLine(tid + "返回随机密码:" + newuser.Password);

            int regtime = 1;

            while (true)
            {
                Console.WriteLine(tid + "第{0}次尝试注册:", regtime);

                bool flag = RegNewUser(newuser, tid);
                if (flag)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(tid + "第{0}次尝试注册成功,更新数据库...", regtime);
                    Console.ForegroundColor = ConsoleColor.White;
                    log.WriteLine(tid + "第" + regtime + "次尝试注册成功,更新数据库...");
                    //更新数据库
                    regqueue.Put(newuser);
                    //newuser.UpdateDB();
                    break;
                }

                else
                {
                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(tid + "第{0}次尝试注册失败,..", regtime);
                    Console.ForegroundColor = ConsoleColor.White;
                    log.WriteLine(tid + "第" + regtime + "次尝试注册失败...");
                    regtime++;
                }



                if (regtime >= 4)
                {
                    Console.WriteLine(tid + "超过注册次数限制,失败!");
                    log.WriteLine(tid + "超过注册次数限制,失败!");
                    break;
                }
                // 默认注册失败是由于 图片验证码破解失败造成破解验证码
                piccount = 1;
                while (!BreakImgCode(newuser, tid))
                {
                    Console.WriteLine(tid + "第{1}次尝试注册 尝试第{0}次破解图片验证码", (piccount + 1), regtime);
                    piccount++;
                    if (piccount > 5)
                    {
                        break;
                    }
                }
            }
            //该号码拉黑
            newuser.Sms.AddIngore(newuser.Phone);
            if (newuser.Sms.Release(newuser.Phone))
            {
                Console.WriteLine("释放手机号:" + newuser.Phone + "成功!");
            }
            else
            {
                Console.WriteLine("释放手机号:" + newuser.Phone + "失败!");
            }
            ThreadCount--;
            //UpdateWebProxy();
        }