1. 程式人生 > >模擬登陸web微信的流程和引數細節

模擬登陸web微信的流程和引數細節

這幾天在用python3寫了一個模擬登陸web微信,傳送和接受資訊的lykchat資訊傳送系統,解決zabbix傳送告警資訊的問題。

發現步驟不多,但需要的引數太多了
把流程和細節分享出來

第一步:登陸

提供headers
用途:獲取cookie
後續訪問必須帶headers、cookie等引數
get引數分別是
   appid:固定值,暫時為wx782c26e4c19acffb
    fun:值為new
    lang:語言,值為en_us
    redirect_uri:值為https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
    _:值為當前時間戳
完整的URL例子https://wx2.qq.com/jslogin?redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&appid=wx782c26e4c19acffb&lang=en_US&_=1485065568&fun=new
用途:獲取二維碼uuid
例子:https://wx2.qq.com/qrcode/AfdK5U5qyw==
用途:下載和展示二維碼
get引數
   loginicon:值必須為true
    uuid:值為{{uuid}}
    r:值為當前時間戳按位求反值
    _:值為當前時間戳
完整的URL例子:https://wx2.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=AacJ62nlRg==&tip=0&r=-974452&_=1485065779
用途:返回登陸狀態,登陸成功之後的redirect_uri
返回狀態碼說明如下:
    200,掃碼和確認成功
    201,掃碼,未確認
    其他,未掃碼或者其他原因

第二步、初始化頁面和獲取登陸資訊

1、get訪問{{redirect_uri}}

完整的URL例子:https://wx2.qq.com/cgi-bin/mmwebwx-bin/[email protected]_0&uuid=AacJ62nlRg==&lang=en_US&scan=1485065793
用途:返回登陸認證等資訊,一個字典型別的json格式,下文用login_info表示
post引數為
    BaseRequest:通過1返回引數獲取值
    例子:{"BaseRequest": {"DeviceID": "uKUD8e%2Bp7iXqNpbOuPTntL7OdbsfxEv5JdQjKtb7Mc%2FVQK2leE%2BRrNVkI5fQZZjB", "Sid": "xkQE8IoFPjwXEf2W", "Uin": "575635712", "Skey": "@crypt_2b05caf0_2290c785d1bc5646d2ff0ff771ec3324", "isgrayscale": "1"}}
用途:返回微信使用者資訊、第一頁好友資訊、和BaseRequest、最新聊天資訊等等

第三步、獲取好友資訊

get訪問https://wx.qq.com/webwxgetcontact
get引數
    r:值為當前時間戳*1000
    seq:值為0
    skey:值為login_info[Skey]
完整的URL例子:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?r=1485065800&seq=0&[email protected]_2b05caf0_2290c785d1bc5646d2ff0ff771ec3324
用途:返回所有的好友資訊,字典json格式
有用的好友資訊欄位說明:
    Sex:
        1表示男
        2表示女
        0為其他【沒有設定性別的好友、公眾號、群、系統賬號等等】
    UserName,微信系統為每個微訊號分配一個唯一號碼
        以@@開頭的表示群、字母或者數字開頭表示系統賬號
        以單@開頭的表示公眾號、好友等,好友的字元數多,公眾號等字元數少
        不已@開頭的,表示微信通知用的,例如檔案傳輸助手filehelper
    NickName,個人設定的暱稱,重複可能性很大
    Alias,微訊號,如果沒有設定為空,不會出現重複

第四步、接受和傳送新資訊

1、定時檢查是否有新資訊

    get訪問https://{{sync_url}}/synccheck
    get引數是:
        'r'        : 當前時間戳*1000
        'skey'     : login_info[skey]
        'sid'      : login_info[sid]
        'uin'      : login_info[uin]
        'deviceid' : login_info[deviceid]
        'synckey'  : login_info[synckey]
        '_'        : 當前時間戳*1000
    完整的URL例子:https://webpush.wx2.qq.com/cgi-bin/mmwebwx-bin/synccheck?deviceid=e565817597249768&synckey=List_%5B%7B%27Key%27%3A+1%2C+%27Val%27%3A+645531166%7D%2C+%7B%27Key%27%3A+2%2C+%27Val%27%3A+645531276%7D%2C+%7B%27Key%27%3A+3%2C+%27Val%27%3A+645531125%7D%2C+%7B%27Key%27%3A+1000%2C+%27Val%27%3A+1485058018%7D%5D%7CCount_4&skey=%40crypt_2b05caf0_2290c785d1bc5646d2ff0ff771ec3324&sid=xkQE8IoFPjwXEf2W&r=1485065802608&_=1485065802608&uin=575635712    
    用途:返回最新資訊數,0表示沒有新訊息

2、獲取新資訊內容

post訪問https://wx.qq.com/webwxsync?sid=login_info[sid]&skey=login_info[skey]&lang=en_US&pass_ticket=login_info[pass_ticket]
    post引數為
        'BaseRequest' : login_info[BaseRequest]
        'SyncKey'     : login_info[SyncKey]
        'rr'          : 當前時間戳按位求反值
        例子:{"rr": -1485065809, "BaseRequest": {"Ret": 0, "ErrMsg": ""}, "SyncKey": {"List": [{"Key": 1, "Val": 645531166}, {"Key": 2, "Val": 645531278}, {"Key": 3, "Val": 645531125}, {"Key": 11, "Val": 645531260}, {"Key": 13, "Val": 645524153}, {"Key": 201, "Val": 1485065810}, {"Key": 203, "Val": 1485064747}, {"Key": 1000, "Val": 1485058018}, {"Key": 1001, "Val": 1485057992}, {"Key": 1002, "Val": 1485058221}, {"Key": 1004, "Val": 1484911834}], "Count": 11}}
    完整的URL例子:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=xkQE8IoFPjwXEf2W&[email protected]_2b05caf0_2290c785d1bc5646d2ff0ff771ec3324&lang=en_US&pass_ticket=uKUD8e%2Bp7iXqNpbOuPTntL7OdbsfxEv5JdQjKtb7Mc%2FVQK2leE%2BRrNVkI5fQZZjB
    用途:返回最新資訊列表
    注意:群資訊的傳送者放在Content開頭部分

3、傳送資訊

post訪問https://wx.qq.com/webwxsendmsg
post引數
        'BaseRequest': self.base_request,
        'Msg': {
            'Type': login_info[BaseRequest],
            'Content': content,
            'FromUserName': 自己的username,
            'ToUserName': 傳送的username,
            'LocalID': int(time.time() * 1000 * 1000 * 10),
            'ClientMsgId': int(time.time() * 1000 * 1000 * 10),
            },
        'Scene' : 0
    返回傳送結果json字典

有錯誤之處,請指教

lykchat資訊傳送系統流程圖

相關推薦

模擬登陸web流程引數細節

這幾天在用python3寫了一個模擬登陸web微信,傳送和接受資訊的lykchat資訊傳送系統,解決zabbix傳送告警資訊的問題。 發現步驟不多,但需要的引數太多了 把流程和細節分享出來 第

Python 爬蟲案例-web登陸與消息發送

recv 遺憾 內部 set rmq view ons ats ascii 首先回顧下網頁微信登陸的一般流程   1、打開瀏覽器輸入網址   2、使用手機微信掃碼登陸   3、進入用戶界面 1、打開瀏覽器輸入網址 首先打開瀏覽器輸入web微信網址,並進行監控: h

Java-Web網頁支付開發流程以及各種坑

微信網頁支付流程概覽 生成Oauth2.0授權連結獲得code 使用code獲得使用者資訊(OpenId) 向微信統一下單介面提交訂單獲得PrepayID 在JS頁面中向用戶發起支付請求 使用者輸入支付密碼完成支付 使用weixin-

ShareSdk實現QQ或分享登陸

下面是比較簡單的 QQ 分享和登陸 Demo,整合方式為快速整合(Gradle)。下面主要包括: 根目錄配置 專案目錄配置 程式碼配置及除錯 注意事項 1. 根目錄配置 在根目錄新增程式碼: classpath 'com.mob.sdk:MobS

Web

後臺 type 請求 nco 需要 rdquo 用戶 表單 設置 一、源代碼地址: 二、總結:   1.分析Http請求     - 請求方式:get、post等等    - URL:每個請求的url,固定部分和變換部分,一般動態的部分可能是在這個請求的前面的請求中有

openidUnionID (多公眾號如何判斷是否是同一人)

data 平臺開發 反饋 更新 font 使用 -c 總數 org 以下內容源於網絡,因為非博客園信息,有想收藏,只能直接復制粘貼了,還希望原稿人員理解。 微信公眾平臺更新,為開發者提供UnionID機制 經開發者反饋,由於同一公司下多個公眾號之間需要用戶帳號互通,

h5房卡牛牛源碼搭建架設教程之電腦端服務器架構

超時 教程 80年 學生 服務器架構 通信 es2017 jpg 基礎上 類型1:卡牌、跑酷等弱交互服務端  卡牌跑酷類因為交互弱,玩家和玩家之間不需要實時面對面PK,打一下對方的離線數據,計算下排行榜,買賣下道具即可,所以實現往往使用簡單的 HTTP服務器:

php獲取tickettoken並返回簽名

所有 未能 substr pro content abcd sha1 簽名 wiki jssdk.php頁 <?php /* * 微信公眾號後臺裏獲取appId和appSecret,並在公眾號後臺=>安全中心=>IP白名單中設置當前頁面服務器的

WEB協議詳註(待續)

WEB微信協議詳註 微信機器人 當初寫微信機器人也是為了個紅包,雖然紅包拿到了,過程還是蠻有意思的,下面給下詳細說明。 微信入口主要有兩個(wx和wx2),wx老號 wx2新號,我微信是老號了,為了測試方便采用的是老號入口。 1.入口抓包,獲取uuid

WEB協議詳註(續)

心跳檢測 心跳同步 先放一張效果圖以上的基礎都是建立在正確同步心跳之上;呵呵,界面做的很醜哈,不過關鍵是功能實現了。再次強調一次: 同步中所用的synckey 第一次所需的synckey是在微信初始化時返回的字串中,在開啟同步心跳的時候第一次提交的synckey就是來源於此;

***單文件搞定支付支付寶支付

發現 電腦 源代碼 tps fun 演示 tro 復雜 申請 這段時間做微信支付和支付寶支付集成,發現了一個不錯的開源代碼 簡單快捷,單文件即可搞定微信支付和支付寶支付。 單文件搞定微信支付系列: https://github.com/dedemao/weixinPay

基於flask開發web

window 自己 網頁 time dal -s 最近聯系人 bin in use 流程 階段一 目標:基於falsk編寫登錄頁面,獲取二維碼 解析:1:、二維碼圖片地址有個後綴字符串 2、圖片生成之前,先獲取到隨機字符串再生成二維碼 3、二維碼的圖片的來源

支付支付寶支付一直回調問題

無需 OS osql ucc 流程 告訴 urn 解決 order   在做支付開發時,發現一個問題,就是說異步回調會一直不停的回調,這樣會導致有些業務邏輯的問題,比如說本人在做的一個項目,支付成功後,會有一系列的業務,比如會員升級,錢包判斷等功能,如果一直回調進行處理那出

java實現沙箱測試環境支付寶支付(demo)整合支付支付寶支付到ssm

mar 文件 fun Go examples IT === throws 由於 文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關註我的微信公眾號:好好學java,獲取優質學習資源。 一、支付寶測試環境代碼測試 1.下載電腦網站的官方demo: 下載地址:https:

支付支付寶支付接口回調函數的判斷

判斷 遍歷 節點數據 task har 支付 節點數 怎麽 yun 微信支付和支付寶支付接口是現在網絡商城必不可少的功能,有些網站不只一處需要對接這樣同一個接口,不同的功能,傳的參數不一樣,但是回調只有一個,針對這樣的問題,我們在回調函數裏就需要進行判斷了,判斷是那個功能模

Androd整合支付支付寶支付

文章目錄 前言 微信支付 支付寶支付 前言 我們在做App的時候,可能需要接入支付功能,常見的支付有微信支付和支付寶支付。這裡只說明下前端的程式碼邏輯。 微信支付 微信支付開發

判斷是不是瀏覽器QQ內建瀏覽器

is_weixn() { let ua = navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i) == "micromessenger" || ua.match(/WeiBo/i) == "w

ios接支付字串轉json物件

幫朋友做個小活,微信支付的前期工作就不說了,網上一找一大把。就是伺服器發過來的json字串轉成json物件稍微卡了下。 程式碼如下: void IosHelper::startWeiXinPay(const char *pStr) { if(pStr == nil)

python獲取群成員

首先用命令pip install itchat安裝itchat,然後進到你要獲取的群裡去選擇“儲存到通訊錄”那裡將選項滑到右邊選上,沒有儲存到通訊錄的群是取不到資訊的。以下程式碼在Win7和Python3.7裡除錯通過。__author__ = 'Yue Qingxuan'# -*- coding: utf-

登入公眾號授權

微信公眾號: 填寫配置 url填寫:http://外網IP/wx 。 http的埠號固定使用80,不可填寫其他。 Token:自主設定,這個token與公眾平臺wiki中常提的access_token不是一回事。這個token只用於驗證開發者伺服器。 java 版說明:   &n