机器人之一步一步来做WebQQ机器人-(五)(发送消息||完结)
小标 2018-09-28 来源 : 阅读 1246 评论 0

摘要:本文主要向大家介绍了机器人之一步一步来做WebQQ机器人-(五)(发送消息||完结),通过具体的内容向大家展现,希望对大家学习机器人有所帮助。

本文主要向大家介绍了机器人之一步一步来做WebQQ机器人-(五)(发送消息||完结),通过具体的内容向大家展现,希望对大家学习机器人有所帮助。
最后一章内容不多但我还是啰嗦,可能对大部分人都已知晓的流程方法我也会介绍一下
前面几个demo我已经上传到对应页面的尾部,剩下的会抽时间补,外包经常加班且没外网,尽量本周弄完


目前总进度大概100%


全系列预计会有这些步骤,当然某些步骤可能会合并:

验证码
第一次登陆
第二次登陆
保持在线和接收消息
获取好友和群列表
发送消息
变成智能的(*?∀?*)




回顾基础 一般抓包模拟请求的方式

熟悉流程:


在页面上普通操作,熟悉基本的操作过程
打开抓包软件(httpwatch,IE9+,FF,Chrome),再到页面操作一遍,根据功能和请求把整体分为各个步骤
对应每一个步骤,多次操作,了解每一步需要的http请求,不断模拟每一次的请求该步骤


注意事项:


敏感页面需要保存Cookie
查找请求的参数,这个我喜欢用IE9+,可以从cookie,返回正文里面搜索.Chrome我没有找到这个功能. 即参数可能来源Cookie,或者页面,或者某次返回值内等等
请求的referer
多次模拟请求某个域后接下来突然失败,代码找不到错误?换个IP试试
万变不离其宗,当你实在不知道哪里有问题的时候,去跟浏览器比比看,总之跟浏览器一样是准没错的


 
 

Tips WebQQ中是无法取得好友QQ号码的


每个好友在你本次登陆后,都会生成一个当前唯一的uid码给你,群的是gid,前篇文章中已经介绍了
在你关闭网页前,你跟好友、群所有的信息交互,都要通过这个唯一码。所以上一步中需要储存好友的信息,来识别poll得到的消息,是从哪里来,谁说的
发送消息也是,你想要跟谁说,这个唯一的标识即为上述的uid或者gid


开始 发送消息

 
Chrome这点好,可以帮你拿到url转码之前的数据,还能帮你反序列化成对象。IE就只能看到转码之后的字符串了。
先把数据格式化看看:
r: {
    "to": 3088776308,
    "content": "[\"你在干啥?\",[\"font\",{\"name\":\"宋体\",\"size\":10,\"style\":[0,0,0],\"color\":\"000000\"}]]",
    "face": 585,
    "clientid": 53999199,
    "msg_id": 38160001,
    "psessionid": "8368046764001d636f6e6e7365727665725f77656271714031302e3133332e34312e383400006a5800000425016e0400f36afba86d0000000a404c30634555727447716d000000287b74805042214d42b7fa4930eb31c8421c1e24bfe90f6b2f35e8221fb3b505f79a85d6b0a97a5252"
}ResponseHeadersviewsource

 
一下子就明朗好多了,主要参数如下:


to:本次是发送给好友,这里即为好友的uin
content是消息正文和字体颜色样式,在webqq中消息的换行是:\n
face大概枚举的某个默认头像
clientid是之前说过的,代表本人的一个id,固定不变的
msg_id 这里要注意,它是一个8位数字的参数,在每次发送消息之后都会++,自增1,无论好友还是群消息,都用的是这个值
psessionid 之前保存的QQ令牌


 
那么我们请求的post字符串就是:
                string postData = "{\"to\":" + uin
                    + ",\"content\":\"[\\\"" + content.Replace(Environment.NewLine, "\\\\n")
                    + "\\\",[\\\"font\\\",{\\\"name\\\":\\\"宋体\\\",\\\"size\\\":10,\\\"style\\\":[0,0,0],\\\"color\\\":\\\"000000\\\"}]]\",\"face\":549,\"clientid\":" + ClientID
                    + ",\"msg_id\":" + MsgId
                    + ",\"psessionid\":\"" + PSessionID
                    + "\"}";
                postData = "r=" + HttpUtility.UrlEncode(postData);

 

Http请求中的数据,一般是将键值对用"="相连,将每一个键值对用"&"相连
而且会把每个键值对的值进行url编码,你可能会说,我不编码也能用啊!当然大部分网站这样没问题,但是浏览器确实是这么做的,尽量跟浏览器保持一致可以避免很多错误,比如这里。
C#中进行url编码一般用:HttpUtility.UrlEncode(string),需要引用System.Web

 


请求的referer://d.web2.qq.com/proxy.html?v=20130916001&callback=1&id=2
请求的url://d.web2.qq.com/channel/send_buddy_msg2
请求成功后返回:{"retcode":0,"result":"ok"},注意,如果你的数据格式什么的都正确,但是msg_id不对,也有可能返回这个,但是实际上消息没有发送出去。TX会以为你重复请求了,因此返回给你一个成功信息。


 
发送群消息跟这个很类似,唯一的区别就是post字符串有点小小的改动:
                string postData = "{\"group_uin\":" + uin
                    + ",\"content\":\"[\\\"" + content.Replace(Environment.NewLine, "\\\\n")
                    + "\\\",[\\\"font\\\",{\\\"name\\\":\\\"宋体\\\",\\\"size\\\":10,\\\"style\\\":[0,0,0],\\\"color\\\":\\\"000000\\\"}]]\",\"face\":549,\"clientid\":" + ClientID
                    + ",\"msg_id\":" + MsgId
                    + ",\"psessionid\":\"" + PSessionID
                    + "\"}";
                postData = "r=" + HttpUtility.UrlEncode(postData);

 
×
到此为止webqq模拟请求流程已经分析完毕。
剩下几章的demo我在本周陆续补齐.
下面我们去抓抓小黄鸡,回顾一下,顺便让你的webqq项目实现机器人功能。


我是结束的分割线


小黄鸡 实现机器人

 
 
我想,这一张图已经包含全部了吧,当我看到这个的第一反应就是:
不管有没有用,先访问一下这个页面得到cookie,然后带上这个referer,照着这个网址,post这个字符串"para="+HttpUtility.UrlEncode("你在干嘛?")
当然上面的cookie和referer在后来我测试是没用的...
 
 
 
×Close
到目前为止,所有内容已经完毕
各个章节demo尽快补全
使用C#模拟http请求可以参考猛戳这里
您有没有对这篇文章感兴趣呢?
还好啦 WQNMLGB


// <![CDATA[
function seemsGood(){
makeDialog("? ??)ノ","那么点一下推荐好不好,嘿嘿...",function(){},10);
}
function seemsBad(){
makeDialog("(?Д?≡?Д?)","很抱歉...反正我尽力了",function(){},10);
}
// ]]>

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能智能机器人频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved