← 所有工具
我哋嘅筆記
用 smee.io 將 UnifyPort webhook 轉發去 localhost
UnifyPort 會將事件投遞去一個公開嘅 HTTPS URL。smee.io 淨係靠一個 Node client 就將佢駁去你部手提電腦——唔使 tunnel binary,亦都唔使開戶口。
smee.io 解決咩
smee.io 係 GitHub 維護嘅 proxy:開一次就畀個公開嘅 channel URL 你。任何 POST 去呢個 channel 嘅請求都會 re-broadcast 畀每個連住嘅 client。喺你部機跑嗰個細細粒嘅 smee-client,佢就會將每條請求 replay 去你本地嘅 handler——咁公網嚟嘅 webhook 唔使裝 tunnel 軟件都到到 localhost。
五分鐘接上 UnifyPort handler
假設你個 handler 聽住 3000 port:
- 1. 打開 smee.io,撳 Start a new channel,copy 個 channel URL。
- 2. 透過
POST /v1/webhook-endpoints註冊佢——將urlset 做呢個 channel,撳緊嘅時候subscribed_events用["*"]。 - 3. 跑個 client,指去你本地嘅 route:
- 4. 喺渠道嗰邊 trigger 一個事件——一條 Telegram 私訊、一條 WhatsApp 訊息——睇住佢到
localhost:3000。
npx smee-client -u https://smee.io/<channel> -t http://localhost:3000/events
簽章驗證照舊work
smee 原封不動咁轉發 raw body,所以你 handler 收到嘅 bytes 就係 UnifyPort 簽嗰份。驗證同生產環境一模一樣——重新計過再同 X-Device-Signature 比:
X-Device-Signature = hex( HMAC-SHA256( secret, timestamp + "." + raw_body ) )
想喺寫 code 之前用手先確認一次,可以喺我哋嘅 CyberChef 教學度跑同一套演算法,或者用離線嘅 DevToys。
smee.io 唔啱用嘅場合
- 任何似生產嘅流量。 channel 係公開又估得到——當任何人都讀得到或者 inject 到流量咁睇。淨係用即棄嘅密鑰。
- 高頻或者對延遲敏感嘅測試。 公共 relay 多咗一 hop;好似 ngrok 咁帶 4040 inspector 嘅本地 tunnel 穩陣啲。
- 你仲要睇其他 HTTP 流量。 smee 淨係 relay 佢自己個 channel;ngrok 或者 Pipedream RequestBin 畀到你睇得更全。
常見問題
- smee.io 會唔會改個請求 body?
- 唔會。佢 relay 嘅係 raw bytes,所以
X-Device-Signature驗證同生產環境一樣——重新計hex(HMAC-SHA256(secret, timestamp + "." + body))再比就得。 - 我使唔使裝啲咩?
- 淨係要 Node——用
npx smee-client跑個 client 就得,唔使全域安裝,亦都唔使任何 tunnel binary。 - smee.io 用唔用得喺生產 webhook?
- 唔得。channel 公開又估得到。佢啱本地開發、配即棄嘅 signing secret;上 staging 或者生產就要換私有 tunnel 或者你真正嘅 endpoint。
推薦嘅 UnifyPort 本地開發流程
專登留一個戶口畀本地開發,smee client 長開喺一個 terminal 窗格度,handler 一 save 就 reload。有條投遞唔對路嗰陣,喺渠道嗰邊再 trigger,或者喺 handler log 度回睇——萬一簽章對唔上,用 CyberChef 驗一驗。