微信小程序IDE http接口分析

在2017年的時候就做了這個分析夸盟,一直沒發(fā)出來。??注意文中使用的ide版本是Mac 版的暖释,ide version: 1.01.1711020戚炫,不推薦在生產(chǎn)環(huán)境中使用剑刑。

準(zhǔn)備工作

下載IDE版本:1.01.1711020

  • 美化開發(fā)工具js代碼:在js目錄執(zhí)行命令 find . -type f -name '*.js' -exec js-beautify -r -s 2 -p -f '{}' \;

  • 打開針對IDE的調(diào)試工具:在./app.nw/js/core/index.js 第81行 init() 過后 加入以下代碼:nw.Window.get().showDevTools();

  • 在IDE源碼中使用 global.contentWindow.console.log 來打印變量

微信開發(fā)者工具登陸接口

URL配置文件
全局搜索 LOGIN_URL
登錄頁面的固定url:
https://open.weixin.qq.com/connect/qrconnect?appid=xxx&redirect_uri=https%3a%2f%2fmp.weixin.qq.com%2fdebug%2fcgi-bin%2fwebdebugger%2fqrcode&scope=snsapi_login&state=login
他返回二維碼掃碼頁面(html)。
此處代碼可以全局搜索 _longPollURL 定位到該文件嘹悼。
在集成到發(fā)布系統(tǒng)的時候叛甫,完全可以用headless chrome 或者是 phantom js 模擬請求來一步搞定。

ide中登陸流程如下

// step1: 拿到二維碼鏈接
const content = ''; // 上面接口返回的html
const qrcodeReg = /src="\/(connect\/qrcode\/.+)"/;
const s = c.match(qrcodeReg)[1];
const src = `https://open.weixin.qq.com/${s}`; // 拼接出登陸二維碼url
 
// step2 : 拿到輪詢鏈接, 用于輪詢登陸狀態(tài)
const longPollReg = /"(https:\/\/long.open.weixin.qq.com\/connect\/l\/qrconnect\?uuid=.+?)"/;
const pollUrl = content.match(longPollReg)[1];
 
// step3 輪詢登陸結(jié)果
const LOGIN_WX_ERRR_CODE = {
    SUCCESS: 405,
    SCANNED: 404,
    CANCELLED: 403,
    TIMEOUT: 402,
    ERROR: 500,
    KEEP_ALIVE: 408
}

const platform = "darwin" === process.platform ? "darwin" : "win";

// poll
request({
    url: `${pollUrl}&last=""}&_=${+new Date()}`,
    headers: { "Content-Type": "application/javascript" },
    timeout: 60000
}, (a, b, c) => {
    // 返回了一段js代碼
    eval(c);
    const e = window.wx_errcode;
    switch(e) {
        case LOGIN_WX_ERRR_CODE.SUCCESS:
            const loginRedirectUrl = `https://mp.weixin.qq.com/debug/cgi-bin/webdebugger/qrcode?code=${window.wx_code}&state=${platform}`;
            // 拿到登陸信息
            request({ url: loginRedirectUrl }, (a, b, res) => {
                let a = JSON.parse(res);
                let i = b.headers,
                j = i["debugger-signature"],
                k = i["debugger-newticket"],
                l = +new Date(),
                m = {
                  signature: j,
                  newticket: k,
                  openid: a.openid,
                  nickName: a.nickname,
                  headUrl:
                    a.headurl ||
                    "https://res.wx.qq.com/zh_CN/htmledition/v2/images/web_wechat_no_contect.png",
                  ticketExpiredTime: 1e3 * a.ticket_expired_time + l,
                  signatureExpiredTime: 1e3 * a.signature_expired_time + l,
                  sex: 1 === a.sex ? "male" : "female",
                  province: a.province,
                  city: a.city,
                  contry: a.contry
                };
            });
    }
});

生成體驗(yàn)版二維碼

體驗(yàn)版二維碼鏈接: https://open.weixin.qq.com/sns/getexpappinfo?appid=xxx&path=pages%2Fhome.html#wechat-redirect

??????????????????????注意

預(yù)覽接口 和 上傳接口的 http method 都是 post杨伙,下面表格列的參數(shù) 是需要附加到url上面的query參數(shù)。
post的 body數(shù)據(jù)就是打包好的.wx文件萌腿,示例代碼 見文章 微信小程序上傳/預(yù)覽代碼分析 末尾限匣。

預(yù)覽接口

接口描述 預(yù)覽小程序
域名 https://servicewechat.com
路徑 /wxa-dev/testsource
請求方法 POST
入?yún)?/td> 參數(shù)見下面
返回 返回結(jié)果見下面

query參數(shù):

{
  _r: '0.8530581592723374', // 隨機(jī)數(shù)
  appid: 'xxx', // 小程序appid
  platform: 0, // 平臺
  ext_appid: '',
  os:   'darwin',
  clientversion: '101171018',
  gzip: 1,
  path: 'pages/home?',// 預(yù)覽頁面的路徑
  newticket: 'jGUKNzQ59CI5yEoZRgmVP7P6PCnY1xaTv7QSdOXYoIM', // 未知,該數(shù)據(jù)從登陸接口拿到
  os: 'darwin', // 系統(tǒng)
  clientversion: '1.01.171018'
}

返回結(jié)果

{
    "baseresponse": {
        "errcode": 0,
        "errmsg": "test source success."
    },
    "qrcode_img": " base64 圖片   ",
    "wxpkg_size": 48269,
    "compile_time": 0,
    "widget_size": 0
}

上傳接口

接口描述 上傳小程序
域名 https://servicewechat.com
路徑 /wxa-dev/commitsource
請求方法 POST
入?yún)?/td> 參數(shù)見下面
返回 返回結(jié)果見下面

query 入?yún)?/h4>
{
  _r: '0.8530581592723374', // 隨機(jī)數(shù)
  appid: 'xxx', // 小程序appid
  platform: 0, // 平臺
  ext_appid: '',
  os:   'darwin',
  clientversion: '101171018',
  "user-version": 1,
  "user-desc": "xxx",
  "uuid": "",
  gzip: 1,
  newticket: 'jGUKNzQ59CI5yEoZRgmVP7P6PCnY1xaTv7QSdOXYoIM', // 未知,該數(shù)據(jù)從登陸接口拿到
  os: 'darwin', // 系統(tǒng)
  clientversion: '1.01.171018'
}

返回結(jié)果

{
    "baseresponse": {
        "errcode": 0,
        "errmsg": "commit source success."
    },
    "wxpkg_size": 48269,
    "compile_time": 0,
}

檢查是否已經(jīng)設(shè)置了預(yù)覽版

{
  protocol: "https:",
  host: "servicewechat.com",
  pathname: "/wxa-dev-logic/getcommitqrcode",
  query: {
    _r: "0.014995344596100635",
    os: "darwin",
    clientversion: "1011711300",
    appid: "xxx",
    newticket: "uVMVEwpFifCRfXjx53x9ORZsbn1X_ygFWl61kwaEeBg"
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末米死,一起剝皮案震驚了整個濱河市锌历,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峦筒,老刑警劉巖究西,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異物喷,居然都是意外死亡卤材,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門峦失,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扇丛,“玉大人,你說我怎么就攤上這事尉辑》” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵隧魄,是天一觀的道長卓练。 經(jīng)常有香客問我,道長购啄,這世上最難降的妖魔是什么襟企? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮闸溃,結(jié)果婚禮上整吆,老公的妹妹穿的比我還像新娘。我一直安慰自己辉川,他們只是感情好表蝙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乓旗,像睡著了一般府蛇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屿愚,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天汇跨,我揣著相機(jī)與錄音,去河邊找鬼妆距。 笑死穷遂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的娱据。 我是一名探鬼主播蚪黑,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忌穿?” 一聲冷哼從身側(cè)響起抒寂,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掠剑,沒想到半個月后屈芜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朴译,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年井佑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片动分。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡毅糟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澜公,到底是詐尸還是另有隱情姆另,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布坟乾,位于F島的核電站迹辐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏甚侣。R本人自食惡果不足惜明吩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望殷费。 院中可真熱鬧印荔,春花似錦、人聲如沸详羡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽实柠。三九已至水泉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窒盐,已是汗流浹背草则。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蟹漓,地道東北人炕横。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像葡粒,于是被迫代替她去往敵國和親看锉。 傳聞我的和親對象是個殘疾皇子姿锭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容