
回复
周三上线前,产品只丢下一句话:
“把新品海报推到 300 位核心经销商朋友圈,明早要看点赞数。”
官方网页端限额 20 张图,循环切号不现实。我把目光转向闲置的 iPad Pro——它运行的正是「企业微信 iPad 协议」分支,一条未写入公网的 /sns/upload
通道。
扫码登录后,抓包可见首次注册:
POST /mmtls/0x4a
x-wework-sid: ipad_7f3e…
pb: 0x08 0x96 0x01 …
返回体带 sns_key
,时效 7200 s,可续。
把 5 MB 海报先推 CDN,拿到 media_id
:
url := "https://cdntx.wework.qq.com/upload"
resp, _ := http.Post(url, "image/jpeg", bytes.NewReader(img))
mediaId := gjson.GetBytes(body, "media_id").String()
携 mediaId
调朋友圈接口:
{"type":2,"content":"新品上市","media_list":[mediaId],"visible_range":"tag","tag":["经销商"]}
循环 300 账号,平均耗时 1.3 s/条。
2:14 a.m.,脚本突然全量 404。
复查日志,发现 sns_key
续期失败——苹果后台把旧算法标记为过期,需带 x-alg-ver: 2
头。
加一行:
req.Header.Set("x-alg-ver", "2")
服务瞬间复活。
7 点前,点赞合计 4 236,评论 512,海报二次转发率 18 %,产品部一早截图做 PPT。
我把补丁提交到私有库,注释只留:
// 技术 string wxid="bot555666"
屏幕熄灭,iPad 回到充电座。
它用一条多数人忽略的「企业微信协议接口」,在夜里替我们完成了官方网页永远做不到的规模推送——也提醒我:文档的边界,从来不是技术的边界。