別亂猜了! 這才是西安一碼通崩潰的真實(shí)原因
點(diǎn)擊“開(kāi)發(fā)者技術(shù)前線(xiàn)”,選擇“星標(biāo)”
讓一部分開(kāi)發(fā)者看到未來(lái)



看下這個(gè)接口返回,設(shè)計(jì)上也沒(méi)有太大的問(wèn)題。? 主要問(wèn)題集中在所有的js/css/img這些靜態(tài)資源全都從從一個(gè)出口進(jìn)行提供,沒(méi)上CDN 粗略估算了一下,js/css/img數(shù)據(jù)總共約500kB 按照從某個(gè)群里得到的數(shù)據(jù),暫且認(rèn)為是準(zhǔn)的,健康碼的請(qǐng)求量峰值達(dá)到了3.3w qps 那按照這個(gè)量估計(jì) 33000 x 500 x 8 bps ≈ 125Gbps ?這個(gè)出口量級(jí)很難用單機(jī)房承載,峰值一來(lái),出口網(wǎng)卡打滿(mǎn),直接gg。 到寫(xiě)這個(gè)回答時(shí),西安健康碼還是沒(méi)有將靜態(tài)資源上CDN,之后看看訪(fǎng)問(wèn)量再起飛的時(shí)候,能不能扛得住吧。

在安卓模擬器登微信小號(hào),打開(kāi)大號(hào)轉(zhuǎn)發(fā)來(lái)過(guò)來(lái)的「西安市民一碼通」小程序

然后找到此路徑下的新增文件(*.wxapkg)

把它們拷到電腦上,用一個(gè)叫「wxappUnpacker」的東西解包,拿到微信小程序源代碼

從源碼的 pages\index\index.wxml 中找到了個(gè)人電子碼,及其綁定的點(diǎn)擊事件「onElectronCode」,進(jìn)而跟蹤到「onYmtLogin」->「toYmtLink」-> 「toElectronCode」

N = getApp(),
從源碼的 app-service.js 中,找到 globalData.ymtUrl 的值

拼接出完整 URL(就是參數(shù)不全),瀏覽器訪(fǎng)問(wèn)了一下

然后發(fā)現(xiàn)了 qrcode.js,在里面找到了「personCodeShow」->「qrcodeColour」
function qrcodeColour(e, t, a, o) {var s = baseUrl + "/view/login.html?code=" + t, i = 300, r = 300, n = i, d = r, p = 80, l = 80, c = (i - p) / 2, u = (r - l) / 2, m = $(e).qrcode({render: "canvas",text: s,width: i,height: r,background: "transparent",foreground: a}), g = m.find("canvas").get(0), C = new Image;C.src = g.toDataURL("image/png"),C.onload = function() {g.width = n,g.height = d;var e = g.getContext("2d");e.fillStyle = "#ffffff",e.fillRect(0, 0, g.width, g.height),e.drawImage(C, 0, 0);var t = new Image(p,l);t.src = o,t.onload = function() {e.drawImage(t, c, u, p, l)}}}
最終結(jié)果:沒(méi)有在服務(wù)端生成二維碼圖片!
相關(guān)鏈接
https://www.zhihu.com/question/509914161/answer/2299099095
https://www.zhihu.com/question/509914161/answer/2299646933
—?完?—
點(diǎn)這里??關(guān)注我,記得標(biāo)星呀~
前線(xiàn)推出學(xué)習(xí)交流一定要備注: 研究/工作方向+地點(diǎn)+學(xué)校/公司+昵稱(chēng) (如算法+上海+小寶) 掃碼加我微信,進(jìn)群和大佬們零距離
2021清北畢業(yè)生去向:清華博士0人出國(guó),70%進(jìn)體制、搞教育、國(guó)內(nèi)深造!

