您的位置:首页 > 其它

.Net 版 QQ群发器 附源码

2011-05-23 11:39 337 查看
程序仅用于学习交流娱乐使用,不得用于商业用途!由此程序程序带来的一切法律责任与作者无关.QQ: 462012667

某天qq聊天有件事想通知下所有朋友,由于好友太多发完直接崩溃,所以决定研究下qq,觉得如果研究qq客户端的话可能比较费劲,所以想到手机的QQ,经过半天终于搞定.后来网上搜了下发现原来通过这种方式重新封装的原来很多,随便下了几个发现都不是真正的源码.

源码由于比较匆忙没时间整理,没注释,也很冗余,也很不规范,有兴趣的同学自己研究吧,

研究中遇到几个关键性的问题

1.http协议版本:由于手机qq是一个wap平台,刚一开始没有太注意到版本区别一直使用的未默认的没有设置请求版本,所以总是导致 " 服务器提交了协议冲突.Section=ResponseHeader Detail=CR 后面必须是LF "
这个错误,网上有很多对这个问题的解决方案是添加下面代码,可尝试过都不管用(只解决一半问题),后来通过http抓吧工具对每个请求元素进行比对才发现其中的猫腻.因为之前很少很少开发wap,开发的版本也是1.1所以很少注意到他,对于网上很多有过这种问题的人不妨试试改下http协议版本.设置代码:request.ProtocolVersion = HttpVersion.Version10;

下面这个配置只解决一半问题.
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>

代码中这句是关键之一:
request.ProtocolVersion = HttpVersion.Version10;

2.全局cookie 变量:贯穿整个与qq服务器交互的过程都要使用,很重要没有登录过手机qq的qq号码或者与上次登录ip不一致都会需要输入验证码,这里的验证码请求连接的全局cookie是在验证登录之前获取并赋给全局cookie,登录后返回的cookie与验证码的是有区别的,所以这里还要更新全局cookie

关键变量:
CookieContainer ccta = new CookieContainer();

3.WapQQ 登录上线后会分配给每一个WapQQ 一个sid.相当于sessionid

4.每次获取好友的数量可能和实际好友数据量不同,正常现象,可能由于wap qq 服务对qq上下线的状态更新不同步等原因所致,没研究过...,有兴趣的可以自己研究下问题

用到的软件:

WinWAP for Windows 3.2 wap模拟浏览器,chorme 也可以

HTTPAnalyzerFullV6 or HTTPAnalyzerFullV3

5..Net Framework 3.5 及以上

源码下载连接:http://files.cnblogs.com/hzi8/NewQQMessageBox(.NetQQ).zip

转载请注明出处,谢谢.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息