C#什么行使C#落成QQ号码的报名

腾讯向公众提供了报名QQ的界面,方便广大潜在用户参与QQ大军中,注册页面是http://reg.qq.com
,为了限制用户的过于施用,设置了验证码、IP限制等招数,一般用户默许一天只能够申请多少个QQ号码,号码是随机生成的,当然好的号码是不会有些,那几个是腾讯的资源,要求付费才能获得到。

本文首要介绍如何使用C#来落到实处QQ号码的登时、批量申请操作,以及考虑怎么进入宽带拨号的不二法门已毕IP的限量,尽可能的提请到更加多的QQ号码,以供他用。

先看看演示程序的界面效果:

C# 1 =====》C# 2

地点是我使用C#心想事成QQ号码申请的演示程序,是运用的雏形。其中为了便利,把用户要求填写的新闻打包起来,用户开通QQ号码后,再自动修改即可,只需求输入验证码即可火速申请到QQ。

1、首先需求得到验证码,然后供用户输入并交给报名,那里我使用了后台线程进行拍卖,提升用户界面的响应效果。

     public partial class Form1 : Form

    {
        private CookieContainer cookieReg = new CookieContainer();
        private BackgroundWorker worker = new BackgroundWorker();
        private WebProxy proxy;

        public Form1()
        {
            InitializeComponent();

            worker.DoWork +=new DoWorkEventHandler(worker_DoWork);
            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);

            //proxy = new WebProxy(“120.203.214.184”, 80);
        }

        private void GetVerifyImage()
        {
            worker.RunWorkerAsync(“GetImage”);
        }

        void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            string newverifyUrl = “http://captcha.qq.com/getimage?aid=1007901&” +
                new Random().NextDouble() + new Random().Next(10) + new Random().Next(10);

            cookieReg = new CookieContainer();
            HttpHelper httpHelper = new HttpHelper();
            string regurl = “http://reg.qq.com“;
            httpHelper.GetHtml(regurl, cookieReg, regurl, proxy);

            using (Stream s = httpHelper.GetStream(newverifyUrl, cookieReg, regurl, proxy))
            {
                if (s == null)
                {
                    MessageUtil.ShowWarning(“获取登陆码错误,请检查你的网络!”);
                    return;
                }
                e.Result = Image.FromStream(s);
            }
        }

        void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            Image image = e.Result as Image;
            if (image != null)
            {
                this.pictureBox1.Image = image;
            }
        }

 

 

2、
处理申请操作结果突显。申请QQ的拍卖操作相对比较麻烦,我把它封装在一个处理函数中,那样大家在事件处理的时候,先宏观处理结果,然后在更为细化具体的操作,如下所示:

        private void btnApplyNumber_Click(object sender, EventArgs e)
        {
            if (this.txtVerifyCode.Text.Length < 4)
            {
                SetTips(“请输入验证码”);
                this.txtVerifyCode.Focus();
            }

            string qqnumber = ApplyQQ();
            if (!string.IsNullOrEmpty(qqnumber))
            {
                SetTips(string.Format(“恭喜您,申请到QQ {0}”, qqnumber));
                LogTextHelper.WriteLine(string.Format(“{0}—-{1}”, qqnumber, “123abc”));
            }
            else
            {
                if (getnumHtml.Contains(“此IP申请的操作过于频繁”))
                {
                    SetTips(“IP操作过于频仍”);
                }
                else
                {
                    SetTips(“申请破产,请重试”);
                }
            }
            GetVerifyImage();
        }

 

 以上先对报名的操作举行拍卖,并记录最终报名结果页面,如若页面有一些相当的如IP操作频仍的信息,则提示用户IP操作的问题,方便利用如“手工拨号”等办法开展拍卖,已毕IP的生成,从而可以报名更多的QQ号码。若是一切正常,再次来到QQ号码,那么记录到相关的媒人并突显即可。

 

3、
详细QQ申请操作处理逻辑。申请QQ的处理,不是一般的劳动,为了不给用户识别相应的交付内容,腾讯把申请的材料进行乱码化处理,并把各样打乱,把相应的名号处理成0f2b4766321c2d6a4c7a61515324那样不行识其他字符串,然后统一交由,一般人是甄别不了这个字符串的,字符串不是加密串,是擅自按照规则组合而成,很变态。那里自己提供大致的思绪,就是先拿走Cookie的连带音讯,把内部的变量作为基础,对数码开展处理,然后作为相应的字段名称,混合提交的情节,一起POST到服务器,如果成功,则赶回QQ号码,否则提醒相应的错误音信。

        private string getnumHtml = “”;//末了报名的网页内容
        private string ApplyQQ()
        {
            string html = “”;// “g_dataArray=new Array(new Array(\”0f2b4766321c2d6a4c7a61515324\”,\”4621587a340437624e71315a5a2b\”,\”23755a6a29192c7b506d73474536\”,\”4f21596e22043464537b774b493a\”,\”2d2d5b6a01163078567072577102\”,\”4121587a340437624e7130525223\”,\”4f2d486122002679117b65555728\”,\”047548612200267910736d5d5f30\”,\”306d4a6024193779584b55656718\”,\”2574486122002679136b75454738\”,\”33344a66250e703f1429370b0970\”,\”252348683412256c49766a585c2d\”,\”161059673e192645547262564206\”),new Array(9796,9806,9807,9803,9797,9795,9793,9798,9802,9801,9800,9799,9792),\”/cgi-bin/getnum\”);”;
            string regurl = “http://reg.qq.com/“;
            HttpHelper helper = new HttpHelper();

            int BaseNum = 0;
            BaseNum = GetBaseNumByCookieSkey(cookieReg);     

            string nick = “test”;
            string pass = “123abc”;
            string repass= pass;
            string year = “2009”;
            string month = “12”;
            string day = “13”;
            string sex =  “1”;
            string verifycode = this.txtVerifyCode.Text;
            string province = “11”;
            string city = “1”;
            List<string> ElementsArrName = GetElementArray(nick, pass, repass, year, month, day, sex, verifycode, province, city);
            List<short> DataArrayShort = new List<short>();
            List<string> DataArrayLong = new List<string>();

            Thread.Sleep(100);
            string regurl2 = “http://reg.qq.com/cgi-bin/checkconn?seed” + new Random().NextDouble() + new Random().Next(10);

            html = helper.GetHtml(regurl2, cookieReg, regurl, proxy);
            // html = “g_dataArray=new Array(new Array(\”0f2b4766321c2d6a4c7a61515324\”,\”4621587a340437624e71315a5a2b\”,\”23755a6a29192c7b506d73474536\”,\”4f21596e22043464537b774b493a\”,\”2d2d5b6a01163078567072577102\”,\”4121587a340437624e7130525223\”,\”4f2d486122002679117b65555728\”,\”047548612200267910736d5d5f30\”,\”306d4a6024193779584b55656718\”,\”2574486122002679136b75454738\”,\”33344a66250e703f1429370b0970\”,\”252348683412256c49766a585c2d\”,\”161059673e192645547262564206\”),new Array(9796,9806,9807,9803,9797,9795,9793,9798,9802,9801,9800,9799,9792),\”/cgi-bin/getnum\”);”;
            GetDataArray(html, ref DataArrayShort, ref DataArrayLong);

            string postData = GetPostData(ElementsArrName, BaseNum, DataArrayShort, DataArrayLong);
            //MessageBox.Show(postData);

            Thread.Sleep(100);
            string regurl3 = “http://reg.qq.com/cgi-bin/getnum“;
            html = helper.GetHtml(regurl3, cookieReg, postData, true, regurl, proxy);
            getnumHtml = html;//记录最终分析的始末,以便进一步分析操作

            Regex re = new Regex(“var\\s*xyz=\”(.*?)\”;”, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace);
            Match mc = re.Match(html);
            if (!mc.Success)
            {
                return “”;
            }
            string qqnumber = mc.Groups[1].Value;
            return qqnumber;
        }   

 

下边注释的有的,就是赢得到的连带音信,乱码一片,可是既然是地面处理,也是有规律可循的,本文只是介绍有关的条条框框,详细完成不在一一突显,紧要的拍卖逻辑就是取得当地Cookie的某项内容,并把内容开展截断,作为一个BaseNum,然后把获得到的数组举办乱码化,作为提交字段的称号,然后逐一放置相关的情节,提交到服务处理。

下面只是一个简便的Demo,一般意况下,申请3~10左右的数码或者就会因为IP的界定,而不能持续,要求暂停多少个小时才能一而再可以报名一个左右,第二天才足以三番五遍申请越多的数码。

 为了更好的提请更多的QQ号码,一般须要投入拨号那种措施来拍卖IP的范围,如本人的QQ搜通天中行使来批量提请QQ号码的界面如下所示:

C# 3 

 假诺须求精晓详细,可以下载该软件来娱乐,熟稔下QQ申请的操作形式。

 

 

相关文章