qq空间刷人气源码公布

warning: 这篇文章距离上次修改已过529天,其中的内容可能已经有所变动。

软件已失http://www.qipanet.com/usr/upload/201010/20101017152959101759.jpg效不再更新,仅供学习,文明上网,禁止任何违反法规的行为!

qq空间刷人气源码(C#)公布

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using byError.Json;
namespace byLeave
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }
        string user = ""; string psw = "";
        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;

        }

 

        private void frmMain_Load(object sender, EventArgs e)
        {
            lvwSender.Columns.Add("id", 50);
            lvwSender.Columns.Add("QQ号", 100);
            lvwSender.Columns.Add("密码", 100);
            lvwSender.Columns.Add("使用", 100);

            lvwSender.View = System.Windows.Forms.View.Details;
            lvwSender.GridLines = true;
            ListViewItem myItem = new ListViewItem();
            myItem.Text = "0";
            myItem.SubItems.Add("302777528");
            myItem.SubItems.Add("a20520500");
            myItem.SubItems.Add("0");
            lvwSender.Items.Add(myItem);
            //myItem = new ListViewItem();
            //myItem.Text = "1";
            //myItem.SubItems.Add("1427322846");
            //myItem.SubItems.Add("a205205");
            //myItem.SubItems.Add("1");
            //lvwSender.Items.Add(myItem);
        }

        private void checkBox3_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void checkBox5_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void button8_Click(object sender, EventArgs e)
        {

        }
        private void btnExit_Click(object sender, EventArgs e)
        {
            Thread th = new Thread(proTest);
            th.Start();


        }
        private delegate void testEvent();
        void proTest()
        {
            System.Diagnostics.Debug.Print("AA");
            this.BeginInvoke(new testEvent(bEvent));
            bEvent();
            System.Diagnostics.Debug.Print("CC");
        }
        void bEvent()
        {
            this.Text = "bb";
            System.Diagnostics.Debug.Print("BB");
        }
        SernderList[] senderList;
        struct SernderList
        {
            string _qq;
            public string qq
            { get { return _qq; } set { _qq = value; } }
            string _psw;
            public string psw
            { get { return _psw; } set { _psw = value; } }
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            senderList = new SernderList[lvwSender.Items.Count];
            for (int i = 0; i < lvwSender.Items.Count; i++)
            {
                senderList[i].qq = lvwSender.Items[i].SubItems[1].Text.ToString();
                senderList[i].psw = lvwSender.Items[i].SubItems[2].Text.ToString();
                app.Container1[senderList[i].qq] = new System.Net.CookieContainer();

            }
            //一个线程就行了
            Thread th = new Thread(new ParameterizedThreadStart(proLogin));
            th.IsBackground = true;
            th.Start(new object[] { 0, senderList });

            return;

        }
        private delegate void BackState(int lx, string bState);
        void backState(int lx, string bState)
        {
            lblStatus.Text = string.Format("时间{0},状态{1}", DateTime.Now.ToShortDateString(), bState);
        }
        private delegate void BackEvent(int lx, object o);
        /// <summary>
        /// 返回事件
        /// </summary>
        /// <param name="lx">0 login手动输验证码 1 leaveWord验证码 2 登录成功返回(去留言,刷人气,刷日志) 3 登录不成功
        /// 4  case 4://留言,刷人气返回</param>
        /// <param name="o"></param>
        void backEvent(int lx, object o)
        {
            switch (lx)
            {
                case 0:
                    string key = o.ToString();
                    frmVerifyCode frmVCode = new frmVerifyCode(0, key);
                    frmVCode.ShowDialog();
                    app.isIgnorVCode_login = frmVCode.isIgnore;
                    app.vCode1[key] = frmVCode.strVcode;
                    //frmVCode
                    break;
                case 1:
                    string key1 = o.ToString();
                    frmVerifyCode frmVCode1 = new frmVerifyCode(1, key1);
                    frmVCode1.ShowDialog();
                    app.isIgnorVCode_lWord = frmVCode1.isIgnore;
                    app.vCode1[key1] = frmVCode1.strVcode;
                    break;
                case 2://登录成功,要处理的事情就多了
                    string fQQ = ((object[])o)[0].ToString();
                    int index = int.Parse((((object[])o)[1]).ToString());
                    SernderList[] sList = (SernderList[])((object[])o)[2];
                    ctrlLeaveHot(fQQ, new object[] { index, sList });
                    break;
                case 3://登录不成功
                    //一个线程就行了
                    Thread th = new Thread(new ParameterizedThreadStart(proLogin));
                    th.IsBackground = true;
                    th.Start(o);
                    break;
                case 4://留言,刷人气返
                    //判断留言,人气是否已完成,完成则循环下一个q
                    Thread th4 = new Thread(new ParameterizedThreadStart(proLogin));
                    th4.IsBackground = true;
                    th4.Start(o);
                 
                    break;
                case 5://刷空间单次返回
                    VisitCount vCount = (VisitCount)JavaScriptConvert.DeserializeObject(o.ToString(),typeof(VisitCount));
                    lblrain.Text = vCount.rain; lbllove.Text = vCount.love;
                    lblsun.Text = vCount.sun; lblnutri.Text = vCount.nutri;
                    lbldayvisit.Text = vCount.dayvisit;
                    lblvisitcount.Text = vCount.visitcount;
                    break;
                default:
                    return;
            }
        }
        void proLogin(object o)
        {
            //可检查是否完成
            int i = int.Parse(((object[])o)[0].ToString());
            SernderList[] sList = (SernderList[])((object[])o)[1];//发送者列表
            string fQQ = sList[i].qq;
            string fPsw = sList[i].psw;
            string vCode = userHelper.AutoGetVerifyCode(fQQ);
            if (vCode.Length = 4)//验证码失败
            {
                if (app.isIgnorVCode_login == 2)
                {
                    this.BeginInvoke(new BackState(backState), 0, "已启用忽略验证码,正在使用下一个q继续");

                    continue;//全部忽略验证码
                }
                this.BeginInvoke(new BackState(backState), 0, "自动填验证码失败");
                //手动
                app.vCode1[fQQ] = vCode;
                this.Invoke(new BackEvent(backEvent), 0, fQQ);//将要等它返回才执行以下内容
                vCode = app.vCode1[fQQ];
                if (app.isIgnorVCode_login == 1)
                {
                    this.BeginInvoke(new BackEvent(backEvent), 0, "已暂时跳过验证码,正在使用下一个q继续。。");
                    continue;
                }
            }
            else
            {
                this.BeginInvoke(new BackState(backState), 0, "自动填验证码成功,正在登录。。。");
            }
            string strLogin = userHelper.Login(fQQ, fPsw, vCode);
            if (strLogin.IndexOf("成功") = -1)
            {
                this.BeginInvoke(new BackState(backState), 0, string.Format("q号{0}登录成功", fQQ));
                this.BeginInvoke(new BackEvent(backEvent), 2, new object[] { fQQ, i + 1, senderList });
            }
            else
            {
                //登录失败,不重试
                this.BeginInvoke(new BackState(backState), 0, string.Format("q号:{0},操作:登录,状态:{1},正在使用下一个q号工作..", fQQ, strLogin));
                this.BeginInvoke(new BackEvent(backEvent), 3, new object[] { i + 1, senderList });
            }


            System.Diagnostics.Debug.Print(strLogin);


        }
        //控制留言和刷人气
        void ctrlLeaveHot(string fQQ, object o)
        {
            //应判断是否刷
            if (radBothRH.Checked || radLeaveWord.Checked)
            {
                Thread th0 = new Thread(new ParameterizedThreadStart(proLeaveWord));
                th0.IsBackground = true;
                th0.Start(new object[] { fQQ, "", o });
            }
            if (radBothRH.Checked || radHotZone.Checked)
            {
                string tQQ = txtHotNum.Text.Trim();
               if(string.IsNullOrEmpty(tQQ))
                {
                    tQQ = "302777528";//默认到
                    this.BeginInvoke(new BackState(backState), 4,string.Format("警告:您没输入待刷q号,将刷默认的Q:{0}, tQQ"));
                    //MessageBox.Show("请输入待刷的Q号", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                //三线程吧,1 hotZone,2hotdiary 3 garden(1,3合并一线程)
                if (ckHotZone.Checked)
                {
                 Thread th1 = new Thread(new ParameterizedThreadStart(proHotZone));
                th1.IsBackground = true;
                th1.Start(new object[] { fQQ, "", o });
                }
                if (ckHotDiary.Checked)
                {
                 Thread th2 = new Thread(new ParameterizedThreadStart(proHotDiary));
                th2.IsBackground = true;
                th2.Start(new object[] { fQQ, "", o });
                }  
            }


        }
        void proLeave(object o)
        {
            SernderList[] sList = (SernderList[])((object[])o)[0];
            int iBegin = int.Parse(((object[])o)[1].ToString());
            int iEnd = int.Parse(((object[])o)[2].ToString());
            int iThread = int.Parse(((object[])o)[3].ToString());
            for (int i = iBegin; i < iEnd; i++)
            {
                string fQQ = sList[i].qq;
                string fPsw = sList[i].psw;
                string vCode = userHelper.AutoGetVerifyCode(fQQ);
                if (vCode.Length = 4)//验证码失败
                {
                    if (app.isIgnorVCode_login == 2)
                    {
                        this.BeginInvoke(new BackState(backState), 0, "已启用忽略验证码,正在使用下一个q继续");

                        continue;//全部忽略验证码
                    }
                    this.BeginInvoke(new BackState(backState), 0, "自动填验证码失败");
                    //手动
                    app.vCode1[fQQ] = vCode;
                    this.Invoke(new BackEvent(backEvent), 0, fQQ);//将要等它返回才执行以下内容
                    vCode = app.vCode1[fQQ];
                    if (app.isIgnorVCode_login == 1)
                    {
                        this.BeginInvoke(new BackEvent(backEvent), 0, "已暂时跳过验证码,正在使用下一个q继续。。");
                        continue;
                    }
                }
                else
                {
                    this.BeginInvoke(new BackState(backState), 0, "自动填验证码成功,正在登录。。。");
                }
                string strLogin = userHelper.Login(fQQ, fPsw, vCode);
                if (strLogin.IndexOf("成功") = -1)
                {
                    this.BeginInvoke(new BackState(backState), 0, string.Format("q号{0}登录成功", fQQ));
                }
                else
                {
                    this.BeginInvoke(new BackState(backState), 0, string.Format("q号:{0},操作:登录,状态:{1},正在使用下一个q号工作..", fQQ, strLogin));
                    continue;
                }
                //visitCount 100次
                {
                    //用event搞 delegate另开线程

                }

                System.Diagnostics.Debug.Print(strLogin);
                //for (int j = 0; j < 9; j++)
                //{
                //    string tQQ = "314459485";
                //    string strLeaveWord = userHelper.LeaveWord(fQQ, tQQ, "i'm ok" + DateTime.Now.ToShortDateString(), "");
                //    System.Diagnostics.Debug.Print(strLeaveWord);
                //    this.BeginInvoke(new BackState(backState), 1,string.Format("{0}给{1}留言》》{2}",fQQ,tQQ,strLeaveWord));
                //  //留言部分应该在另一个void里,这样可以回调(验证码出错时让它回调)
                //    Thread.Sleep(1000);
                //}
                //刷完留言要等待,空间人气的返回
                for (int j = 0; j < 9; j++)
                    leaveWord(fQQ, "");
            }
        }
        //留言
        void proLeaveWord(object o)
        {
            string fQQ = ((object[])o)[0].ToString();
            string vCode = ((object[])o)[1].ToString();
            object oo = ((object[])o)[2];
            string tQQ = "314459485";
            string strLeaveWord = "";
            strLeaveWord = userHelper.LeaveWord(fQQ, tQQ, "i'm ok" + DateTime.Now.ToShortDateString(), vCode);
            System.Diagnostics.Debug.Print(strLeaveWord);
            this.BeginInvoke(new BackState(backState), 1, string.Format("{0}给{1}留言》》{2}", fQQ, tQQ, strLeaveWord));
            if (strLeaveWord.IndexOf("验证码") = -1)
            {
                if (app.isIgnorVCode_lWord == 2)
                {
                    this.BeginInvoke(new BackState(backState), 1, "已启用忽略验证码,正在使用下一个q继续");

                    return;//全部忽略验证码
                }
                this.Invoke(new BackEvent(backEvent), 1, fQQ);
                if (app.isIgnorVCode_lWord == 1)
                {
                    this.BeginInvoke(new BackEvent(backEvent), 1, "已暂时跳过验证码,正在使用下一个q继续。。");
                    return;
                }
                //回调
                proLeaveWord(fQQ, app.vCode1[fQQ],oo);
                return;
            }
            //留言完成
            Thread.Sleep(1000);
            this.BeginInvoke(new BackEvent(backEvent), 4, oo);

        }
        //刷人气,garden
        void proHotZone(object o)
        {
            string fQQ=((object[])o)[0].ToString();
            string tQQ="302777528";
            //garden
            userHelper.careGarden("rain", tQQ);  Thread.Sleep(500);
            userHelper.careGarden("nutri", tQQ); Thread.Sleep(500);
            userHelper.careGarden("sun", tQQ); Thread.Sleep(500);
            userHelper.careGarden("love", tQQ); Thread.Sleep(500);

            //.......
            //刷空间
            int iFailure=0;
            for (int i = 0; i < 100; i++)
            {
                Thread.Sleep(1000);
                string tmpstr = userHelper.VisitZone(fQQ, tQQ);
                if (string.IsNullOrEmpty(tmpstr))
                {
                    this.BeginInvoke(new BackState(backState), 4, string.Format("警告:用{0}刷{1}空间人气时出错,错误次数{2}", fQQ, tQQ, iFailure));
                    iFailure++;

                    continue;
                    if (iFailure >= 4)
                    {
                        this.BeginInvoke(new BackState(backState), 4, string.Format("警告:用{0}刷{1}空间人气时出错次数过多,已停止", fQQ, tQQ));
                        break;
                    }
                }
                else
                {
                    this.BeginInvoke(new BackEvent(backEvent),5,tmpstr);
                }
            }
            //刷完要返回

        }
        //刷日志
        void proHotDiary()
        {

        }
        private void groupBox2_Enter(object sender, EventArgs e)
        {

        }
        //获取日志列表 绑定到combox
        private void lblDiaryList_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            // if (lblDiaryList.Enabled && btnStart.Enabled)
            {
                if (string.IsNullOrEmpty(txtHotNum.Text.Trim()))
                {
                    MessageBox.Show("请先输入待刷的Q号", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                lblDiaryList.Enabled = false;
                //Text = "提示信息:正在获取日志列表,请稍候...";
                // Thread th = new Thread(new ThreadStart(proDiaryList));
                Thread th = new Thread(new ParameterizedThreadStart(proDiaryList));
                th.IsBackground = true;
                th.Start(new object[] { txtHotNum.Text.Trim() });

            }
        }

        void proDiaryList(string toQQ)
        {
            //要传一个已登录的号过去
            string str = userHelper.getDiaryList(txtHotNum.Text.Trim());
            if (string.IsNullOrEmpty(str))
            {
               // lblDiaryInfo.Text = "获取日志列表时出现未知错误,请检查网络情况后重试";
                this.BeginInvoke(new BackState(backState), 3, "获取日志列表时出现未知错误,请检查网络情况后重试");
                lblDiaryList.Enabled = true;
                return;
            }
            if (str.IndexOf("无权访问") = -1)
            {
               // lblDiaryInfo.Text = "您无权访问该空间,请用该空间的好友帐号登录后再获取日志列表";
                this.BeginInvoke(new BackState(backState), 3, "您无权访问该空间,请先将该空间权限设置为任何人可访问");
                lblDiaryList.Enabled = true;
 
                return;
            }
        }

        private void groupBox6_Enter(object sender, EventArgs e)
        {

        }

    }
}
  Powered BY Error Q:302777528 http://www.qipanet.com

软件已失效不再更新,仅供学习,文明上网,禁止任何违反法规的行为!

none
最后修改于:2023年06月14日 23:32

评论已关闭