每天定时去女友空间留言工具(首选你要有个女友。!哈哈哈哈)

1:定时每天自动给固定QQ空间发布不同的留言。
功能列表:
   1:定时器。
   2:登陆QQ空间。
   3:给固定QQ空间留言(随机读取预先设定的文本txt)。
现在的问题:
   1: 登陆成功了。
   2:发布留言的时候提示没有登陆。

全部代码如下:

  1 namespace QQAPI
  2 {
  3     public partial class Form1 : Form
  4     {
  5         public String host = "http://d.web2.qq.com";
  6         public String shost = "http://s.web2.qq.com";
  7         private Random rd = new Random();
  8         private String get = "get";
  9         private CookieContainer cookies = new CookieContainer();
 10         private String refer = "http://d.web2.qq.com/proxy.html?v=20110331002&callback=2";
 11         private String userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)";
 12         private String accept = "*/*";
 13         private String contentType = "application/x-www-form-urlencoded; charset=UTF-8";
 14         private String verifyCode = "";
 15         private String hex16 = "";
 16         private String skey = "";
 17         private String clientid = new Random().Next(100000000) + "";
 18
 19         //默认需要输入验证码
 20         private Boolean isVerify = false;
 21
 22         public Form1()
 23         {
 24             InitializeComponent();
 25         }
 26         private void butLogin_Click(object sender, System.EventArgs e)
 27         {
 28             //登陆
 29             String qq = this.txtQQNumber.Text.Trim();
 30           String pass = this.txtPwd.Text.Trim();
 31            verifyCode = this.txtcode.Text.Trim();
 32             String md5pass = GetPassword(hex16, pass, verifyCode);
 33             LoginQzone(qq, md5pass, verifyCode);
 34         }
 35         public void GetQzoneVCode()
 36         {
 37             //QQ空间_是否要验证码
 38             String qq = this.txtQQNumber.Text.Trim();
 39             String url = "http://check.ptlogin2.qq.com/check?uin=" + qq + "&appid=549000912&ptlang=2052&js_type=2&js_ver=10009&r=0." + DateTime.Now.Ticks.ToString().Substring(7, 7);
 40             String result = getHtml(url, get, null);
 41             if (result.IndexOf("!") < 0)
 42             {
 43                 //需要验证图片
 44                 String verifyUrl = "http://captcha.qq.com/getimage?aid=1003903&uin=" + qq + "&r=" + rd.NextDouble();
 45                 Stream img = getStream(verifyUrl, get);
 46                 Image codeImage = Image.FromStream(img);
 47                 this.picbox_code.Image = codeImage;
 48                 isVerify = true;
 49             }
 50             else
 51             {
 52                 this.verifyCode = result.Substring(result.IndexOf("!"), 4);
 53                 this.hex16 = result.Substring(result.IndexOf("\\"), 32);
 54                 this.hex16 = this.hex16.Replace("\\x", "");
 55             }
 56         }
 57         public void LoginQzone(string qq, string md5pass, string verifyCode)
 58         {
 59             // QQ空间_登录空间
 60             String loginUrl = "http://ptlogin2.qq.com/login?ptlang=2052&u=" + qq + "&p=" + md5pass + "&verifycode=" + verifyCode + "&css=http://imgcache.qq.com/ptcss/b2/sjpt/549000912/qzonelogin_ptlogin.css&mibao_css=m_qzone&aid=549000912&u1=http%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&ptredirect=1&h=1&from_ui=1&dumy=&fp=loginerroralert&action=10-77-43469&g=1&t=1&dummy=&js_type=2&js_ver=10009";
 61             String loginResult = getHtml(loginUrl, "get", null);
 62             MessageBox.Show(loginResult);
 63             int isLogin = loginResult.IndexOf("登录成功");
 64             if (isLogin > 0)
 65             {
 66                 butMessage.Enabled = true;
 67                 String cks = cookies.GetCookieHeader(new Uri(loginUrl));
 68                 this.skey = getMidStr(cks, "skey=");
 69             }
 70             else
 71             {
 72                 MessageBox.Show("登陆失败");
 73                 butMessage.Enabled = false;
 74             }
 75         }
 76         public bool <span style="color: #FF0000;">QzoneMessage</span>(int qqnum, string message)
 77         {
 78             try
 79             {
 80                 int gtk = GetGTK(this.skey);
 81                 string num = txtQQNumber.Text.Trim();
 82
 83                 WebClient _client = new WebClient();
 84                 string host = "http://m.qzone.qq.com/cgi-bin/new/add_msgb?ref=qzone&g_tk=" + gtk + "";
 85
 86                 string postValues = "qzreferrer=http%3A%2F%2Fcnc.qzs.qq.com%2Fqzone%2Fmsgboard%2Fmsgbcanvas.html%23uin%3D123456%26pfid%3D2%26qz_ver%3D6%26appcanvas%3D0%26qz_style%3Dv6%2F18%26params%3D%26entertime%3D1356580709748%26canvastype%3D&content="
 87                     + message + "&hostUin=" + qqnum + "&uin=" + num + "&format=fs&g_tk=" + gtk + "&ref=qzone&json=1&inCharset=gbk&outCharset=gbk&iNotice=1";
 88
 89                 byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(postValues);
 90                 byte[] pageData = _client.UploadData(host, "POST", byteArray);
 91                 string s = Encoding.Default.GetString(pageData);
 92                 this.txtMessage.Text = s;
 93                 return true;
 94             }
 95             catch (Exception)
 96             {
 97                 return false;
 98             }
 99         }
100         public string getMidStr(string cks, string flg)
101         {
102             string temp = "";
103             string[] cksall = cks.Split(‘;‘);
104             for (int i = 0; i < cksall.Length; i++)
105             {
106                 if (cksall[i].Contains(flg))
107                 {
108                     temp = cksall[i].Replace(flg, "").Trim();
109                     break;
110                 }
111             }
112             return temp;
113         }
114         private void butMessage_Click(object sender, System.EventArgs e)
115         {
116             if (QzoneMessage(int.Parse(txtPeerQQ.Text), txtMessage.Text))
117             {
118                 MessageBox.Show("留言成功");
119             }
120             else
121             {
122                 MessageBox.Show("留言失败");
123             }
124         }
125         private void Form1_Load(object sender, System.EventArgs e)
126         {
127             butMessage.Enabled = false;
128         }
129         public int GetGTK(string skey)
130         {
131             int gtk = 0;
132             int hash = 5381;
133             string str = skey;
134             for (int i = 0, len = str.Length; i < len; ++i)
135             {
136                 hash += (hash << 5) + str.ElementAt(i);
137             }
138             gtk = hash & 0x7fffffff;
139             return gtk;
140         }
141         public string GetPassword(string qq, string password, string verifycode)
142         {
143             String P = hexchar2bin(md5(password));
144             //String U = md5(P + hexchar2bin(qq.Replace("\\x", ""))).ToUpper();
145             String U = md5(P + hexchar2bin(qq)).ToUpper();
146             String V = md5(U + verifycode.ToUpper()).ToUpper();
147             return V;
148         }
149         private string binl2hex(byte[] buffer)
150         {
151             StringBuilder builder = new StringBuilder();
152             for (int i = 0; i < buffer.Length; i++)
153             {
154                 builder.Append(buffer[i].ToString("x2"));
155             }
156             return builder.ToString();
157         }
158         private string md5(string input)
159         {
160             byte[] buffer = MD5.Create().ComputeHash(Encoding.GetEncoding("ISO-8859-1").GetBytes(input));
161             return binl2hex(buffer);
162         }
163         private string hexchar2bin(string passWord)
164         {
165             StringBuilder builder = new StringBuilder();
166             for (int i = 0; i < passWord.Length; i = i + 2)
167             {
168                 try
169                 {
170                     builder.Append(Convert.ToChar(Convert.ToInt32(passWord.Substring(i, 2), 16)));
171                 }
172                 catch (Exception e)
173                 {
174                     MessageBox.Show(e.ToString());
175                 }
176             }
177             return builder.ToString();
178         }
179         private String getHtml(String url, String method, String data)
180         {
181             Uri uri = new Uri(url);
182             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
183             request.UserAgent = this.userAgent;
184             request.Accept = this.accept;
185             request.ContentType = this.contentType;
186             request.Method = method;
187             request.Referer = this.refer;
188             request.CookieContainer = this.cookies;
189             if (method.Equals("post"))
190             {
191                 byte[] byteRequest = Encoding.Default.GetBytes(data);
192                 Stream rs = request.GetRequestStream();
193                 rs.Write(byteRequest, 0, byteRequest.Length);
194                 rs.Close();
195             }
196             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
197             cookies.Add(response.Cookies);
198             Stream resultStream = response.GetResponseStream();
199             StreamReader sr = new StreamReader(resultStream, Encoding.UTF8);
200             string html = sr.ReadToEnd();
201             sr.Close();
202             resultStream.Close();
203             request.Abort();
204             response.Close();
205             return html;
206         }
207         private Stream getStream(String url, String method)
208         {
209             Uri uri = new Uri(url);
210             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
211             request.UserAgent = this.userAgent;
212             request.Accept = this.accept;
213             request.ContentType = this.contentType;
214             request.Method = method;
215             request.Referer = this.refer;
216             request.CookieContainer = this.cookies;
217             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
218             foreach (Cookie cookie in response.Cookies)
219             {
220                 cookies.Add(cookie);
221             }
222             Stream s = response.GetResponseStream();
223             return s;
224         }
225         private void txtQQNumber_Click(object sender, EventArgs e)
226         {
227             GetQzoneVCode();
228         }
229     }
230 }

时间: 2024-12-29 06:58:43

每天定时去女友空间留言工具(首选你要有个女友。!哈哈哈哈)的相关文章

Html - 仿QQ空间右下角工具浮动块

仿QQ空间右下角工具浮动块 <style type="text/css"> .cy-tp-area>.cy-tp-fixbtn>.cy-tp-text { display: none; margin-top: 15px; text-align: center; text-decoration: none; } .cy-tp-area>.cy-tp-fixbtn { background-color: #fafafa; color: #8c8c8c; } .

VirtualBox硬件级虚拟机 vbox修改器去虚拟化 批量管理工具 支持批量启动克隆

浪潮vbox批量管理工具--v2019 软件价格 此版本采用注册码方式 软件绑定电脑使用包月20元 包年120元 永久版200元 https://item.taobao.com/item.htm?id=598192994387 Ω.Ω: 1311190882 特别说明1.此工具是基于官方版本VirtualBox,在购买我们软件之前请自行安装好vbox主程序!2.如果vbox不能正常使用,可以联系我们客服远程安装或处理,收费20元3.该工具支持批量链接克隆与完整克隆链接克隆一个新的虚拟机才2-3M

QQ空间留言的JS

直接上代码吧... var i=0; var time; function test(str) { i++; document.getElementById('tgb').contentWindow.document.getElementById('veditor1_Iframe').contentWindow.document.getElementsByTagName ('div') [0].innerHTML = str+i; document.getElementById('tgb').c

SQLSERVER自动定时(手动)备份工具

最近项目需要,写了一个小工具软件: 1.实时显示监控 2.可多选择备份数据库 3.按每天定时备份 4.备份文件自动压缩 5.删除之前备份文件 直接上图 1.备份监控界面: 2.数据库设置: 附工具下载:http://files.cnblogs.com/files/starksoft/SQLSERVER%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD%E5%B7%A5%E5%85%B7.rar

填充磁盘空间的工具和方法

平时在测试时(比如测试安装.保存文件到本地等),可能需要构造本地硬盘空间不足的情况,这里介绍一个方法. 一.fsutil命令 1.以管理员的身份运行cmd 2.进入相应的盘符 3.命令:fsutil file createnew hello.txt 100000,其中"hello.txt"创建的文件,"100000"创建的文件大小 4.一般创建文件的大小为盘符空间大小的从右向左数第8位小1就可以了 这个方法有个小缺点,就是要自己计算生成文件的大小,有一点点麻烦. 二

ArcGIS空间分析工具

1. 3D分析 1.1. 3D Features toolset 工具 工具 描述 3D Features toolset (3D 要素工具集) Add Z Information 添加 Z 信息 添加关于具有 Z 值的要素类中的要素的高程属性的信息. Buffer 3D 3D 缓冲 围绕点或线创建三维缓冲区以生成球形或圆柱形的多面体要素. Difference 3D 3D 差异 消除目标要素类中部分与减法要素类中闭合的多面体要素体积重叠的多面体要素. Enclose Multipatch 封闭

wstool ros空间管理工具

查看ROS的默认空间: 使用以下命令可以查看ROS默认使用的工作空间: $ echo $ROS_PACKAGE_PATH 1.wstool 用于从多个版本控制系统维护项目工作空间的命令行工具.wstool是一个操作ROS工作区的命令. wstool取代了它的前身rosws.wstool提供了基于单个工作空间定义文件(.rosinstall)管理多个本地SCM存储库(支持git,mercurial,subversion,bazaar)的命令.wstool不是重写.它旨在重用大部分的rosws工具代

【时间管理】学会管理自己的时间、空间和工具

摘抄: 当你在适当的时候考虑适当的事情,并且动用恰当的工具来捕捉这些具有增值价值的思想时,你就能显著提升工作效率,增强创造力. 预留时间: 留一段单独的时间来确定执行计划,一般是周末或者节假日. 确保这段时间不被其他人干扰: 做计划时候一定要把必要的工具等提起拿出来 预留空间: 你必须准备一个专门的工作空间--在家.在工作场所,如果可能的话,甚至在旅途中. 时时刻刻不间断的收集,思考,加工处理和组织管理这本身已经是一个巨大的挑战了.你必须确保自己有恰当的工具来尽可能地简化这一过程. 提升个人工作

iOS获取文件夹中存储空间的大小、手机剩余空间大小、手机总空间大小 工具

// // DiskSpaceTool.h // ScreenRecordMaster // // Created by feimo on 15/7/24. // Copyright (c) 2015年 feimo. All rights reserved. // #import <Foundation/Foundation.h> #include <sys/param.h> #include <sys/mount.h> @interface DiskSpaceTool