模擬登陸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字典
有錯誤之處,請指教
相關推薦
模擬登陸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,固定部分和變換部分,一般動態的部分可能是在這個請求的前面的請求中有
微信openid和UnionID (多公眾號如何判斷是否是同一人)
data 平臺開發 反饋 更新 font 使用 -c 總數 org 以下內容源於網絡,因為非博客園信息,有想收藏,只能直接復制粘貼了,還希望原稿人員理解。 微信公眾平臺更新,為開發者提供UnionID機制 經開發者反饋,由於同一公司下多個公眾號之間需要用戶帳號互通,
h5房卡牛牛源碼搭建架設教程之微信端和電腦端服務器架構
超時 教程 80年 學生 服務器架構 通信 es2017 jpg 基礎上 類型1:卡牌、跑酷等弱交互服務端 卡牌跑酷類因為交互弱,玩家和玩家之間不需要實時面對面PK,打一下對方的離線數據,計算下排行榜,買賣下道具即可,所以實現往往使用簡單的 HTTP服務器:
php獲取微信ticket和token並返回簽名
所有 未能 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