QQ--模拟发表带图说说

发表说说之前,必须登录。

模拟QQ登录 >> http://www.cnblogs.com/deeround/p/4386629.html

发表带图说说,自然少不了上传图片,我这使用的PC端上传图片

首先,FileHelper的创建

QQ空间上传图片,使用的flash上传图片,所以我们需要在post的时候,提交的数据进行一个转换。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Web;
 6
 7 namespace Web.QQ
 8 {
 9     class FileHelper
10     {
11         private List<byte> formData;
12         private Encoding encode = Encoding.GetEncoding("UTF-8");
13         public FileHelper()
14         {
15             formData = new List<byte>();
16         }
17         public void Add(string name, string value)
18         {
19             formData.AddRange(encode.GetBytes("--dnpbajwbhbccmrkegkhtrdxgnppkncfv\r\n"));
20             formData.AddRange(encode.GetBytes("Content-Disposition: form-data; name=\"" + name + "\"\r\n"));
21             formData.AddRange(encode.GetBytes("\r\n"));
22             formData.AddRange(encode.GetBytes(value + "\r\n"));
23         }
24         public void Add(string name, string fileName, byte[] fileData)
25         {
26             formData.AddRange(encode.GetBytes("--dnpbajwbhbccmrkegkhtrdxgnppkncfv\r\n"));
27             formData.AddRange(encode.GetBytes("Content-Disposition: form-data; name=\"filename\"; filename=\"" + fileName + "\"\r\n"));
28             formData.AddRange(encode.GetBytes("Content-Type: application/octet-stream\r\n"));
29             formData.AddRange(encode.GetBytes("\r\n"));
30             formData.AddRange(fileData);
31             formData.AddRange(encode.GetBytes("\r\n"));
32         }
33         public void Add()
34         {
35             formData.AddRange(encode.GetBytes("--dnpbajwbhbccmrkegkhtrdxgnppkncfv--"));
36         }
37         public List<byte> GetFormData()
38         {
39             Add();
40             return formData;
41         }
42     }
43 }

接着,一个生产图片提交的数据方法

 1         public string UploadImage(string qq, string filePath, Model model)
 2         {
 3             string skey = GetCookieString(model.CookieContainer, "skey");
 4
 5             FileStream file = new FileStream(filePath, FileMode.Open);
 6             byte[] bb = new byte[file.Length];
 7             file.Read(bb, 0, (int)file.Length);
 8             file.Close();
 9
10             FileHelper form = new FileHelper();
11             form.Add("hd_quality", "96");
12             form.Add("hd_height", "10000");
13             form.Add("filename", "filename");
14             form.Add("upload_hd", "1");
15             form.Add("hd_width", "2048");
16             form.Add("charset", "utf-8");
17             form.Add("output_type", "xml");
18             form.Add("uin", qq);
19             form.Add("output_charset", "utf-8");
20             form.Add("albumtype", "7");
21             form.Add("exif_info", "extendXml:");
22             form.Add("skey", skey);
23             form.Add("zzpaneluin", qq);
24             form.Add("refer", "shuoshuo");
25             form.Add("uploadtype", "1");
26             form.Add("photoData", "filename");
27             form.Add("Filename", Path.GetFileName(filePath));
28             form.Add("filename", Path.GetFileName(filePath), bb);
29             form.Add("Upload", "Submit Query");
30             form.GetFormData();
31
32             string url = "http://shup.photo.qq.com/cgi-bin/upload/cgi_upload_image";
33             string html = new Helper().Post(url, form.GetFormData().ToArray(), model.CookieContainer);
34
35             return html;
36         }

接着,发表说说的方法

 1 #region 空间动作
 2         public void PublishShuoShuo(string qq,Model model)
 3         {
 4             string gtk = new Helper().GetGtk(GetCookieString(model.CookieContainer, "skey"));
 5             string url = "http://taotao.qq.com/cgi-bin/emotion_cgi_publish_v6?g_tk=" + gtk;
 6             string content = "我是机器人,请不要为我点赞~~";
 7             string postData = "qzreferrer=http%3A%2F%2Fuser.qzone.qq.com%2F" + qq + "&syn_tweet_verson=1&paramstr=1&pic_template=&richtype=&richval=&special_url=&subrichtype=&con=" + HttpUtility.UrlEncode(content) + "&feedversion=1&ver=1&ugc_right=1&to_tweet=0&to_sign=0&hostuin=" + qq + "&code_version=1&format=fs";
 8
 9             string html = new Helper().Post(url, postData, model.CookieContainer);
10         }
11         public void PublishShuoShuo(string qq, string filePath, Model model)
12         {
13             //先上传图片
14             string html = UploadImage(qq, filePath, model);
15
16             IDictionary<string, string> data = new Dictionary<string, string>();
17             string[] lines = html.Replace("\n", "|").Split(‘|‘);
18             foreach (var line in lines)
19             {
20                 Regex regex = new Regex("<(.+)>(.*)</.+>");
21                 MatchCollection mc = regex.Matches(line);
22                 foreach (Match m in mc)
23                 {
24                     if (m.Groups.Count > 1)
25                     {
26                         data.Add(m.Groups[1].Value, m.Groups[2].Value);
27                     }
28                 }
29             }
30
31             string gtk = new Helper().GetGtk(GetCookieString(model.CookieContainer, "skey"));
32             string url = "http://taotao.qq.com/cgi-bin/emotion_cgi_publish_v6?g_tk=" + gtk;
33             string richval = string.Format(",{0},{1},{2},{3},{4},{5},,{4},{5}", data["albumid"], data["lloc"], data["sloc"], data["type"], data["height"], data["width"]);
34             string picbo = string.Format("{0}    {1}", data["pre"].Substring(data["pre"].IndexOf("bo=") + 3), data["url"].Substring(data["url"].IndexOf("bo=") + 3));
35             string content = "我是机器人,请不要为我点赞~~";
36             string postData = "qzreferrer=http%3A%2F%2Fuser.qzone.qq.com%2F" + qq + "&syn_tweet_verson=1&paramstr=1&pic_template=&richtype=1&richval=" + HttpUtility.UrlEncode(richval) + "&special_url=&subrichtype=1&pic_bo=" + HttpUtility.UrlEncode(picbo) + "&con=" + content + "&feedversion=1&ver=1&ugc_right=1&to_tweet=0&to_sign=0&hostuin=" + qq + "&code_version=1&format=fs";
37
38             string html1 = new Helper().Post(url, postData, model.CookieContainer);
39         }
40
41
42
43         #endregion

最后,如何调用

new Methods().PublishShuoShuo(qq, "D:\\1.png", model);

到此结束,目前只能发送一张图,发表多图说说的话,应该是多执行几次UploadImage,同时生产post数据也需要相应的修改,不过这个还没做。

时间: 2024-11-11 02:13:14

QQ--模拟发表带图说说的相关文章

vbs脚本实现qq定时发消息(初级)

vbs脚本实现QQ消息定时发送 目标 批处理又称为批处理脚本,强大的强大功能可以高效得实现很多功能,例如批量更改文件格式,批量进行文件读写,今天我们的目标是用vbs脚本编写可以发送qq消息的脚本,并利用c++程序,实现qq消息的定时自动发送 准备 记事本 vbs脚本不需要什么花里花哨的东西,记事本足矣 c++编译器 随便选一个就行 开工 编写vbs脚本 VBS是基于Visual Basic的脚本语言,功能还是很强的,当然我也只会一点点皮毛,因为工作需要,去学习了如何写发送QQ消息的脚本~ 新建一

java mail使用qq邮箱发邮件的配置方法

1.QQ邮箱设置 1.1 进去QQ邮箱-->设置-->账号-->进行设置如下图 2.foxmail设置(由于我要利用它收邮件) 2.1 参照官方的设置即可http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=371 ps:填写的邮箱密码是独立密码:需要注意的就是SSL链接要勾选;smtp端口是465 3.Java中代码配置 3.1 发送邮件配置代码 public class MailUti

发个图,庆祝一下

训练最终有结果了,分类准确率稳定在0.7,眼下最高到达0.73.发图庆祝一下,留个坑.到时再具体总结一下.

借用smtp.qq.com发邮件

至于sentmail和postfix的配置有多么麻烦学生在这里就不多废话了...反正是配置了N个小时,最终弄的头晕眼花也没弄好... 下面的方法可以让你完全摆脱这两个工具...当然,你要是想做邮件服务器的话就令当别论了...你要是只想让服务器自动发个邮件什么的,用下面的就行了 通常的做法都是,关闭本机的sendmail服务或者postfix服务, #执行下面的命令,各位大侠都对号入座吧 #sendmial service sendmail stop chkconfig sendmail off

使用random模块中的sample模拟发红包

''' python实现发红包 ''' def hong_bao(money,num): ''' 模拟红包 :param money:总钱数 :param num: 份数 ''' import random ret = random.sample(range(1,money*100),num-1) ret.sort() ret.insert(0,0) ret.append(money*100) for i in range(len(ret) - 1): yield (ret[i+1]-ret[i

Qt实现QQ音乐轮播图

由于项目中需要使用到类似轮播图这样的东西,百度之后发现并没有效果不错的案例,于是仿照QQ音乐的轮播图写了一个 效果如下 和QQ音乐的基本没什么差别 这里记录一下需要用到的模块QParallelAnimationGroup.QPropertyAnimation.QGraphicsOpacityEffect 基本实现原理是,通过并行动画组QParallelAnimationGroup添加QPropertyAnimation的geometry属性作为动画,其中每次切换(左移为例)geometry属性的

QQ互发消息

private NewsData data; private void button3_Click(object sender, EventArgs e) //发送 { string x = textBox1.Text; //将输入框的内容存到x里面 new NewsDA().Insert(x);//然后将x存到数据库里面去 textBox1.Text = "";//清空一下原来的输入框 data = new NewsDA().Select1();//调用一个查询方法 ,查一下刚刚存到

C# 用qq邮箱发邮件

一.在企业的QQ邮箱中开启POP3/SMTP服务 开启服务时,授权密码保存好. 二.示例 public static string UserName = ""; // 企业邮箱 public static string UserPass = ""; //邮箱开启POP3/SMTP服务,开启后的授权码密码 /// <summary> /// 向用户发送邮件 /// </summary> /// <param name="Rece

主角带头发生成图xy

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms; namespace WindowsFormsApplic