国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

了解一波網(wǎng)頁(yè)端微信是如何登錄的

HitenDev / 2166人閱讀

摘要:還有一個(gè)很騷的點(diǎn)就是這個(gè)參數(shù)雖然是毫秒級(jí)的位時(shí)間戳,但是在微信第一次獲取后他不會(huì)再去了,就是一直致謝本項(xiàng)目受到以下項(xiàng)目的啟發(fā)

前言

工作之余突然對(duì)微信的網(wǎng)頁(yè)版的協(xié)議通信感興趣可以搞一波了解下。畢竟網(wǎng)頁(yè)版容易抓,靠一個(gè)瀏覽器的開發(fā)者工具的Network就開始抓包解析了。
這是我2019年03月寫的文檔。因?yàn)槲⑿诺膮f(xié)議可能隨時(shí)存在變動(dòng),以下內(nèi)容可以參考一波。本人爬蟲的方法很簡(jiǎn)單,就是盡一切方法模仿被爬蟲者的行為。
該文檔目前只寫到獲取最新消息。先記錄一波。有空更新

項(xiàng)目地址:楠尼瑪大帝 / wxWebR(Java版)
流程步驟

(這里只說到成功登錄到微信并獲取最新消息,因?yàn)橹皇悄7碌竭@里,其他的全部都已經(jīng)清清楚楚只是看你調(diào)不調(diào)用而已了。該拿到的參數(shù)都有了)

去獲取一個(gè)uuid,可以根據(jù)這個(gè)uuid獲取一張二維碼登錄的圖片

微信客戶端掃描該二維碼,在客戶端確認(rèn)登錄。

瀏覽器不停的調(diào)用一個(gè)接口,如果返回登錄成功,則調(diào)用登錄接口

循環(huán)遍歷一個(gè)檢查是否有新消息的接口。

如果新消息的接口返回有新消息的狀態(tài)碼去獲取消息接口。(完)

WebWechat API

(這里也只說到成功登錄到微信并獲取最新消息。其他可以自行去抓包或者參考其他文檔比如碼云參考->python版(老版本)

第一步獲取UUID(參考方法 getUUID)
API 獲取 UUID
url https://login.wx.qq.com/jslogin
method POST
data URL Encode(text/javascript)
params appid: 應(yīng)用ID 參考:wx782c26e4c19acffb
redirect_uri 轉(zhuǎn)發(fā)地址 參考:https://wx.qq.com/cgi-bin/mmw...
fun: 應(yīng)用類型 參考:new
lang: 語(yǔ)言 參考:zh_CN
_: 時(shí)間戳 參考:當(dāng)前時(shí)間毫秒級(jí)13位數(shù)的時(shí)間戳

返回?cái)?shù)據(jù)(String):

window.QRLogin.code = 200; window.QRLogin.uuid = "xxx"
注:目前看來參數(shù)除了_ 當(dāng)前時(shí)間毫秒級(jí)13位數(shù)的時(shí)間戳 其他都是固定的值。在微信給的js里面index_ad43596.js里搜索API_jsLogin可以得到這些參數(shù)。而且大部分不理解參數(shù)都可以從這個(gè)js文件得到答案。

顯示二維碼就不浪費(fèi)時(shí)間直接就是拿第一步拿到的uuid拼接就是二維碼地址:https://login.weixin.qq.com/q...{uuid}

第二步等待掃碼登錄即微信確認(rèn)登錄
API 獲取二維碼掃描登錄狀態(tài)
url https://login.wx.qq.com/cgi-b...
method GET(text/javascript)
params tip :這個(gè)東西根據(jù)瀏覽器走的話就是第一次為1,后面都是為0,網(wǎng)上說是掃碼狀態(tài)
loginicon 參考:true
uuid : 獲取到的uuid
_ : 當(dāng)前時(shí)間毫秒級(jí)13位數(shù)的時(shí)間戳

返回?cái)?shù)據(jù)(String):

window.code=xxx;

xxx:
    【未掃碼的話】 -> window.code=408; 
    【手機(jī)掃碼但是未登錄】 -> window.code = 201; 
    【手機(jī)取消登錄】 -> window.code=400; 
    【手機(jī)授權(quán)登錄】 -> window.code=200;
當(dāng)返回200時(shí):
wechatLoginStatus:window.code=200; window.redirect_uri=
"https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=XXX&uuid=XXX&lang=XXX&scan=XXX"; 
當(dāng)返回201時(shí)可以獲取掃碼用戶頭像的base64數(shù)據(jù)哦(好像沒啥用)
注: 像這種成功的話得到這種參數(shù)自己一定存起來,下一步肯定要用即ticket,languuid,scan
第三步掃描成功去獲取你的登錄憑據(jù)
API 獲取登錄憑據(jù)
url https://wx2.qq.com/cgi-bin/mm...
method GET(text/plain;charset=utf-8)
params ticket : ticket
uuid : uuid
lang : lang
scan : scan
fun : 參考:new
version 參考:v2

返回?cái)?shù)據(jù)(XML):


    0
    OK
    xxx
    xxx
    xxx
    xxx
    1

核心數(shù)據(jù)點(diǎn): skey, wxsid, wxuin, pass_ticket

注: 切記,第三步會(huì)返回cookie,存下來,這里這個(gè)接口會(huì)得到cookie的。 cookie哪里用到我會(huì)說明的。
第四步微信初始化
API 微信初始化
url https://wx2.qq.com/cgi-bin/mm...lang&pass_ticket=pass_ticket
method POST
data JSON(application/json; charset=UTF-8)
header Content-Type: application/json; charset=UTF-8
params {
???? BaseRequest: {
???????? Uin: wxuin,
???????? Sid: wxsid,
???????? Skey: skey,
???????? DeviceID: xxx,
???? }
}
注:r這個(gè)參數(shù)是通過js的一個(gè) ~new Date 這是一個(gè)類似二進(jìn)制反轉(zhuǎn)的一個(gè),可自行百度或者打開控制臺(tái)輸出一下就知道了。

DeviceID這個(gè)參數(shù)是一個(gè)簡(jiǎn)單js拼接出來的參數(shù) "e"+(Math.random().toFixed(15)).substring(2, 17)

返回?cái)?shù)據(jù)(JSON):

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "Count": 11,
    "ContactList": [...],
    "SyncKey": {
        "Count": 4,
        "List": [
            {
                "Key": 1,
                "Val": 635705559
            },
            ...
        ]
    },
    "User": {
        "Uin": xxx,
        "UserName": xxx,
        "NickName": xxx,
        "HeadImgUrl": xxx,
        "RemarkName": "",
        "PYInitial": "",
        "PYQuanPin": "",
        "RemarkPYInitial": "",
        "RemarkPYQuanPin": "",
        "HideInputBarFlag": 0,
        "StarFriend": 0,
        "Sex": 1,
        "Signature": "Apt-get install B",
        "AppAccountFlag": 0,
        "VerifyFlag": 0,
        "ContactFlag": 0,
        "WebWxPluginSwitch": 0,
        "HeadImgFlag": 1,
        "SnsFlag": 17
    },
    "ChatSet": xxx,
    "SKey": xxx,
    "ClientVersion": 369297683,
    "SystemTime": 1453124908,
    "GrayScale": 1,
    "InviteStartCount": 40,
    "MPSubscribeMsgCount": 2,
    "MPSubscribeMsgList": [...],
    "ClickReportInterval": 600000
}

第四步中獲取 SyncKey, User 后面的消息監(jiān)聽用。

第五步消息檢查是否有新消息(這里要帶上cookie)
API synccheck
url https://webpush.wx2.qq.com/cg...skey&sid=wxsid&uin=wxuin&deviceid=xxx&synckey=Synckey&_=xxx
method POST
data JSON(text/javascript)
header ContentType: application/json; charset=UTF-8
params

返回?cái)?shù)據(jù)(String):

window.synccheck={retcode:"xxx",selector:"xxx"}

retcode:
    0 正常
    1100 失敗/登出微信
    1101 在其他地方登錄了微信
        1102 無(wú)憑據(jù)或者憑據(jù)已失效
selector:
    0 正常
    2 新的消息
    7 進(jìn)入/離開聊天界面
注: deviceid 和上面的DeviceID這個(gè)參數(shù)是一樣的:一個(gè)簡(jiǎn)單js拼接出來的參數(shù) "e"+(Math.random().toFixed(15)).substring(2, 17)
我們叫他時(shí)間戳取反
    _是一個(gè)當(dāng)前時(shí)間毫秒級(jí)13位數(shù)的時(shí)間戳 
第六步獲取最新消息(要帶上Cookie)
API webwxsync
url https://wx2.qq.com/cgi-bin/mm...wxsid&skey=Skey
method POST
data JSON(text/plain)
header ContentType: application/json; charset=UTF-8
params {
???? BaseRequest: { Uin: User下的Uin, Sid: wxsid, Skey: skey, DeviceID: DeviceID},
???? SyncKey: syncKey,
???? rr: 時(shí)間戳取反
}

返回?cái)?shù)據(jù)(JSON):

{
    "BaseResponse": {"ErrMsg": "", "Ret": 0},
    "SyncKey": {
        "Count": 不確定個(gè)數(shù),
        "List": [
            {"Val": 636214192, "Key": 1},
            ...
        ]
    },
    "ContinueFlag": 0,
    "AddMsgCount": 1,
    "AddMsgList": [
        {
            "FromUserName": "",
            "PlayLength": 0,
            "RecommendInfo": {...},
            "Content": "", 
            "StatusNotifyUserName": "",
            "StatusNotifyCode": 5,
            "Status": 3,
            "VoiceLength": 0,
            "ToUserName": "",
            "ForwardFlag": 0,
            "AppMsgType": 0,
            "AppInfo": {"Type": 0, "AppID": ""},
            "Url": "",
            "ImgStatus": 1,
            "MsgType": 51,
            "ImgHeight": 0,
            "MediaId": "", 
            "FileName": "",
            "FileSize": "",
            ...
        },
        ...
    ],
    "ModChatRoomMemberCount": 0,
    "ModContactList": [],
    "DelContactList": [],
    "ModChatRoomMemberList": [],
    "DelContactCount": 0,
    ...
}
注 這一塊比較要特別注意,得到消息后發(fā)現(xiàn)返回的信息也是有SyncKey 這個(gè)要更新一波直接拿下來替換自己的舊的,不然第五步檢查消息是會(huì)出現(xiàn)問題就是刷的特別快,而且消息是不正確的。因?yàn)檎嬲晒υL問的到是微信的請(qǐng)求不會(huì)立即返回,一個(gè)請(qǐng)求會(huì)跑的比較久至少幾十秒,因?yàn)榉乐汞偪癖闅v,不用擔(dān)心因?yàn)橐坏┯袛?shù)據(jù)返回微信服務(wù)器會(huì)立刻返回?cái)?shù)據(jù)給你進(jìn)入下一階段的循環(huán)。這一步也是比較坑的就是SyncKey要記得更新就行了。還有一個(gè)很騷的點(diǎn)就是_這個(gè)參數(shù)雖然是毫秒級(jí)的13位時(shí)間戳,但是在微信第一次獲取后他不會(huì)再去new了,就是一直+1+1;
致謝

本項(xiàng)目受到以下項(xiàng)目的啟發(fā):

Zhao / wxBot

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/73980.html

相關(guān)文章

  • 聊聊二維碼登錄

    摘要:場(chǎng)景主要的場(chǎng)景有如下幾個(gè)掃二維碼登錄版系統(tǒng)比如微信版,在手機(jī)端微信登錄的前提下,掃二維碼確認(rèn),自動(dòng)登錄網(wǎng)頁(yè)版。小結(jié)二維碼掃描登錄是個(gè)挺潮流的功能,這要求既有系統(tǒng)增加改造,也要求針對(duì)這種形式的登錄帶來潛在的攻擊進(jìn)行安全防范。 序 本文主要來研究一下二維碼登錄的相關(guān)場(chǎng)景和原理。 場(chǎng)景 主要的場(chǎng)景有如下幾個(gè): app掃二維碼登錄pc版系統(tǒng) 比如微信web版,在手機(jī)端微信登錄的前提下,掃二維碼...

    Tikitoo 評(píng)論0 收藏0
  • 微信第三方登錄接口開發(fā)

    摘要:相關(guān)資料博客微信第三方登錄接口開發(fā)端微信掃碼登錄文檔移動(dòng)端網(wǎng)頁(yè)微信公眾平臺(tái)授權(quán)登錄微信開放平臺(tái)登錄與微信公眾平臺(tái)授權(quán)登錄區(qū)別在哪微信登錄接口幾個(gè)問題微信登錄的和區(qū)別百分號(hào)編碼在線轉(zhuǎn)換第三方登錄 微信登錄接口開發(fā)須知 APP登錄接口 PC網(wǎng)站登錄接口 微信移動(dòng)網(wǎng)頁(yè)登錄接口(又稱微信公眾號(hào)授權(quán)登錄) 移動(dòng)端非微信自帶瀏覽不支持微信登錄 微信移動(dòng)網(wǎng)頁(yè)登錄接口(又稱微信公眾號(hào)授權(quán)登錄) ...

    ziwenxie 評(píng)論0 收藏0
  • 手把手教你擴(kuò)展個(gè)人微信號(hào)(1)

    摘要:關(guān)于本教程有任何建議或者疑問,都?xì)g迎郵件與我聯(lián)系,或者在上提出教程流程簡(jiǎn)介教程將會(huì)從如何分析微信協(xié)議開始,第一部分將教你如何從零開始獲取并模擬擴(kuò)展個(gè)人微信號(hào)所需要的協(xié)議。 現(xiàn)在的日常生活已經(jīng)離不開微信,難免會(huì)生出微信有沒有什么API可以使用的想法。 那樣就可以拿自己微信做個(gè)消息聚合、開個(gè)投票什么的,可以顯然沒有這種東西。 不過還好,有網(wǎng)頁(yè)版微信不就等于有了API么,這個(gè)項(xiàng)目就是出于這個(gè)...

    siberiawolf 評(píng)論0 收藏0
  • 簡(jiǎn)述網(wǎng)頁(yè)微信掃碼登錄過程

    摘要:查詢是否掃描二維碼登錄顯示了二維碼以后,用戶必須用手機(jī)微信掃描這個(gè)二維碼才能登錄。 我的小站 網(wǎng)頁(yè)版微信掃碼登錄流程 1. 請(qǐng)求頁(yè)面 先打開https://wx.qq.com/顯示出頁(yè)面,這時(shí)候會(huì)加載一堆的html,js等資源。 2. 獲取會(huì)話UUID 微信Web版本不使用用戶名和密碼登錄,而是采用掃描二維碼登錄,所以服務(wù)器需要首先分配一個(gè)唯一的會(huì)話ID,用來標(biāo)識(shí)當(dāng)前的一次登錄。 使用...

    Jonathan Shieber 評(píng)論0 收藏0
  • 基于 Workman 實(shí)現(xiàn)Web掃描登錄

    摘要:實(shí)現(xiàn)流程圖運(yùn)行流程用戶訪問微信網(wǎng)頁(yè)版,微信服務(wù)器為這個(gè)會(huì)話生成一個(gè)全局唯一的,上面的中就是這個(gè),此時(shí)系統(tǒng)并不知道訪問者是誰(shuí)。用戶打開自己的手機(jī)微信并掃描這個(gè)二維碼,并提示用戶是否確認(rèn)登錄。 Web 掃碼登錄實(shí)現(xiàn) 基于 Workerman 做了一個(gè)掃碼登錄示例,給有需要的朋友參考一下。發(fā)現(xiàn)問題,歡迎指正。 實(shí)現(xiàn)流程圖 showImg(https://segmentfault.com/im...

    yexiaobai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<