1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          微信網頁版web通訊全解析

          來源:互聯網轉載 時間:2024-01-29 08:28:32

          背景:

          不知道大家沒有沒接觸過微信自動添加好友的軟件,還有第三方基于微信做的功能,如分流搶票中的微信通知,可以指定人發消息,還有一些,微信集成機器人的功能.總之我對這一類的軟件始終保持著強烈的求知欲和好奇心.終于有一天我忍不住揭開它神秘的面紗,看看她誘人的絲襪下掩蓋著著的到底是怎樣一雙美腿. 終于,終于,我找到了揭開那層面紗的關鍵詞.微信web端通信協議

          開始:

          善用搜索的人,可能已經讀過一篇解析微信網頁版api的文章了,我也是看了那篇文章才想細細的研究一遍,求甚解.

          打開微信網頁版 你會看到一個二維碼,打開控制臺,點擊netweok你會看到所有請求.

          通過分析不難發現,頁面優先調取了一個https://login.wx.qq.com/jslogin 接口 獲取uuid,然后使用uuid去獲取二維碼https://login.weixin.qq.com/qrcode/IeJfvSS6vw==

          最后調取一個接口去監聽用戶掃描二維碼.

          那么掃描就分為了三部分

          1:獲取UUID

          2:獲取二維碼

          3:監聽用戶掃描二維碼

          部分截圖

          一步一步說

          獲取UUID

          代碼寫的有點糙了,大佬湊合著看吧.

          接口詳細描述

          地址:url: https://login.wx.qq.com/jslogin參數:appid: wx782c26e4c19acffb // 隨便寫fun: new // 固定newlang: zh_CN // 固定zh_CN_: 1554721401246 // 當前時間戳
          router.get('/', function (req, res, next) {  let getUUID = function () {    axios.get('https://login.wx.qq.com/jslogin', {      params: {        appid: global.appId,        redirect_uri: 'https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage',        fun: 'new',        lang: 'zh_CN',        _: +new Date()      }    }).then(loginRes => {      console.log(loginRes.data)      uuid = loginRes.data.split(';')[1].split('= ')[1].replace(/"/g, "")      global.uuid = uuid      console.log('UUID為____' + uuid)      res.render('index', {        title: 'Express',        imgData: `https://login.weixin.qq.com/qrcode/${uuid}`      });    })  }  getUUID()});

          此處注意坑點1:該接口返回結果不是json而是text

          需要自己處理轉換

          獲取二維碼地址

          uuid就是上一步的返回值https://login.weixin.qq.com/qrcode/${uuid}

          監聽二維碼掃描

          // 監聽掃描結果方法async function _queryScanStatus(tip) {  let url = 'https://wx.qq.com/cgi-bin/mmwebwx-bin/login'  let body = {    tip: tip,    uuid: global.uuid,    _: +new Date(),    loginicon: true  }  let res = await axios.get(url, {params: body})  return dataToJson(res.data)}// 監聽掃描結果入口async function getScanResult() {  let scanRes = await _queryScanStatus(1)  if (scanRes['window.code'] == 201) {    let confirmRes = await _queryScanStatus(0)    if (confirmRes['window.code'] == 200) {      let data = queryToJson(confirmRes['window.redirect_uri'])      return data    }  }}function queryToJson(url) {  let index = url.indexOf('?')  let apiURL = url.substr(0, index)  let query = url.substr(index + 1)  let data = dataToJson(query, '&')  data.apiURL = apiURL  return data}// 監聽第一階段router.get('/listnScan', function (req, res) {  _queryScanStatus(1).then(scanRes => {    if (scanRes['window.code'] == 201) {      res.json({scanRes})    }  })})// 監聽第二階段router.get('/listnScanConfirm', function (req, res) {  _queryScanStatus(0).then(confirmRes => {    if (confirmRes['window.code'] == 200) {      let data = queryToJson(confirmRes['window.redirect_uri'])      res.json({data})    }  })})

          此處一開始我很難理解, 或者去監聽用戶掃描了,困擾了我很久,但當我注意到調取這個接口會,服務一直處于pending狀態我就立即明白了,原來用了那么low的處理啊.

          注意這里需要二次調取接口,一次是用戶掃描,一次是用戶點擊了確定登錄的按鈕.

          代碼如上:

          接口詳細描述:

          接口地址url: https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login請求方式method: get參數loginicon: true // 固定rueuuid: 4db-Azt7kA== // 第一步獲取的uuidtip: 0 // 固定值 0獲取1 0:是否掃描; 1:是否確定登錄r: 56037589 // _: 1554722097962 // 當前時間戳

          代碼地址

          過程:

          整個過程還是挺有意思的,目前代碼才剛寫到用戶點擊確定登錄的監聽, 初始化用戶數據還沒做. 我會慢慢加上去的,后續還考慮封裝api供第三方使用.如果你也想參與請在下方評論留言

          高潮:

          除了那個監聽用戶掃描狀態的接口比較耗時了一些,還有就是解析返回結果

          用戶掃描后,會返回用戶頭像的接口這個接口奇坑無比. 有多種數據格式返回,需要做兼容.具體請看代碼

          另外需求注意的一點是 生成二維碼和去監聽掃描決不能同時去請求, 否則會報超時返回408

          標簽:web微信-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          臺灣藝人阿ken身高?林肯恩,1978年1月25日出生于臺灣,影視演員。他曾就讀于紐約李斯特拉斯堡戲劇學院和臺北延平中學。身高172cm英雄本色1和,英雄本色2拍攝只差一年,為什么周潤發的造型差了這么多?仔細看看小編的問題。也許是周潤發在英雄電影1和2中造型的不同設計?1有點土,但2沒有土,對吧?你用“變化很大”這個詞。我想是這樣的在電影英雄1中,mark Chow扮演香港偽造集團總干事的角色,因...

          北京十中初中部怎么樣?第十中學非常好。其校長知名度高于官校,但在學校的教育理念和精耕細作上頗有建樹。是中央和各大部委選送的學校,共建單位都很優秀。是東城區最好的中學,生源出口比較理想。是一所與主流社會緊密相連的小學,外語教學特色令人印象深刻,令人羨慕。北京十中初中部怎么樣?在豐臺排名第三。我從初一開始就在十中讀書,現在高中還在十中。我覺得十中初中部比高中好。高三實驗班還可以,普通班就沒那么好了。另...

          testflight 3.0怎么用?Testflight是一款面向開發人員的測試應用軟件。作為開發人員,您可以通過電子郵件邀請測試。如果你不知道如何使用它,你可以看看下面的教程。打開iPhone上的app store軟件進行搜索,或直接從當前軟件園下載最新版本的testflight;1。如果提示您是否允許[推送通知],則我們選擇允許;2?,F在,軟件中沒有內容,您需要等待開發人員邀請測試,然后才能正...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>