国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

一步一步來做WebQQ機器人-(五)(發送消息||完結)

2019-11-17 02:36:17
字體:
來源:轉載
供稿:網友

一步一步來做WebQQ機器人-(五)(發送消息||完結)

本篇主要是:發送QQ消息(to:好友,群),以及對小黃雞抓包利用它的語言庫

本文是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, "http:////n")                    + "http:///",[///"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

發送群消息跟這個很類似,url見demo,其次post字符串有點小小的改動:

                string postData = "{/"group_uin/":" + uin                    + ",/"content/":/"[///"" + content.Replace(Environment.NewLine, "http:////n")                    + "http:///",[///"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在后來我測試是沒用的...

到目前為止,所有內容已經完畢

各個章節demo盡快補全

使用C#模擬http請求可以參考猛戳這里

您有沒有對這篇文章感興趣呢?

抱歉最后一個demo到現在才發上來

年前一段時間,房東的客廳被房產局帶領執法隊強拆了 =。= .... 那段時間沒電,特照相留念

一步一步來做WebQQ機器人-(五)(發送消息||完結):

本步驟的demo,一步一步來做WebQQ機器人-(五)(發送消息||完結),更新于2015/2/26

因為hash算法和加密算法修改,新demo,更新與2015/4/8

TX每過一段時間就會變更一下算法,以后的更新就交給大家啦 。。。

轉載請保留本頁鏈接:http://m.survivalescaperooms.com/lianmin/p/4257421.html

.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苏尼特左旗| 南充市| 句容市| 太仓市| 吉首市| 深圳市| 霍城县| 浏阳市| 马龙县| 吉隆县| 富平县| 江川县| 金乡县| 贞丰县| 南雄市| 新晃| 鄂州市| 通辽市| 洱源县| 南宫市| 商水县| 故城县| 襄垣县| 漳浦县| 民县| 确山县| 许昌市| 屯昌县| 四平市| 浦东新区| 邯郸市| 晋州市| 杭锦旗| 绿春县| 凤冈县| 临西县| 普格县| 尖扎县| 社旗县| 密山市| 河东区|