加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

鸿蒙开发者亲述:外链运营告别流量焦虑

发布时间:2026-11-03 08:02:51 所属栏目:外闻 来源:DaWei
导读:  告警响的那一刻,我正把泡面叉子插进最后一块蛋里——没吃完,汤还浮着油花,屏幕右下角三个窗口没关:一个跳着 Certbot 的 renewal 日志,一个连着内网监控的 SSH,第三个是鸿蒙 DevEco Studio,光标停在 manifest.json 里那

  告警响的那一刻,我正把泡面叉子插进最后一块蛋里——没吃完,汤还浮着油花,屏幕右下角三个窗口没关:一个跳着 Certbot 的 renewal 日志,一个连着内网监控的 SSH,第三个是鸿蒙 DevEco Studio,光标停在 manifest.json 里那行 ohos.permission.INTERNET 上,灰的。


  不是 HTTPS 报错,不是 DNS 解析失败,是「外链请求响应超时」告警。五台边缘节点,三台开始抖——抖得不规律,一会儿 200,一会儿直接 timeout,像有人拿扳手拧松了某根网线接口又临时拧回去。开发老张电话进来的时候我还在嚼面,他说「你快看看外链域名是不是被墙了?」我说「没墙,我们自己配的 CNAME 指向的又是自家 CDN,又不是直连 Google Fonts」。他顿了两秒,说:「哦,那是我们改了 HarmonyOS 的 WebView 默认 User-Agent,拦截规则没跟上。」


文章配图,仅供参考

  我原以为是证书续签出了岔子——毕竟上周刚手动续过三台机器的通配符证书,其中一台忘加 reload nginx 的命令,害得凌晨两点爬起来连机房重试。结果翻到日志尾部,发现根本不是 TLS 握手失败,是上游 CDN 回源时被某个第三方反爬中间件干掉了:它只认 Android/iOS UA,一见 HarmonyOS/4.0 就静默 503。我们去年九月份压测那会儿还没这个 UA 字段,当时全靠开发者自己 patch 过滤器,patch 了三次,第三次才跑通——没人留文档,只有一行注释写在 devops 的钉钉群聊里:「别删,这玩意儿活不过下次 OTA」。


  其实早该察觉。三周前运维小刘问我「为啥咱们外链白名单里混着七个华为云 OSS 的 bucket 域名?不是都走 CDN 缓存吗?」我没搭理,忙着配新集群的磁盘配额。他后来自己去查,发现两个 bucket 权限开了 public-read,第三个干脆绑了个旧版签名策略,key 都没轮转过。我说「先挂着吧,回滚不了——开发说鸿蒙侧依赖那个 signature v1 的 header 格式」。小刘摇头走了,桌上保温杯里枸杞沉底,窗外天快亮了,楼下一串早班公交启动的嗡鸣声碾过去。


  那晚最后救回来的不是链路,是心态。开发老张凌晨四点发来一段 HarmonyOS 的 Intent 伪代码,里面用到了 `Intent.setUri()` 直接唤起网页,绕开 WebView 完整加载逻辑——也就是说,我们原来那套埋点 JS 注入、防劫持检测、Referer 校验,全成了废柴。他说:「以后外链不走浏览器渲染层,走系统协议分发,你的 Nginx 配置再精细,也管不到 Intent 分发的那一刻。」我盯着那行 `intent://...` 看了三分钟,手边键盘还残留着刚才敲 `tail -f /var/log/nginx/access.log` 的热气。那一刻真不是解脱,是突然被卸掉半副盔甲:证书不用盯了,UA 适配不用写了,连 Referer 白名单都显得可笑——人家根本不经过你的 server。


  优胜劣汰站得住的地方,就在这儿。不是谁技术更强,是生态位变了。你守着一套 HTTP/1.1 下打磨十年的外链运营体系,别人已经用 system-level intent 跳出 TCP 层了。就像去年九月份我们替换掉第三家 CDN 厂商,对方工程师临走前说:「你们流量波动太小,我们算法模型喂不饱」——我们还以为是夸。结果现在看,不是我们稳,是我们被剔除了训练集。他们不要稳定的小流量,就要爆发式的、不可预测的、系统级触发的大流量。我们这些还在给 referer 头写正则、半夜爬 CDN 回源日志查 UA 截断点的人,早就是被筛掉的第一批。


  我手机屏保还是上个月值班表截图,上面用红圈标了「8号 张工—鸿蒙联调支持」,旁边备注写着「带充电宝,机房空调太冷」。那天他穿的灰色抓绒衫,袖口磨得起球,调试到下午三点突然抬头问我:「你们做外链,还看 302 跳转链路吗?」我说「看啊,怎么了?」他说:「HarmonyOS 4.1 以后,302 不走 WebView,走底层重定向引擎,日志打不出来。」我愣住,他笑着拧开保温杯喝了一口,说:「没事,我们改用 HAP 包直传了。」


  对,HAP。我们连 build.gradle 里怎么加签名配置都没研究透,人家已经甩开 Webview 全栈切过去了。我电脑屏幕上还开着一个 Vim 窗口,里面是我昨天写的 shell 脚本,check_cname.sh,里面有一行注释:# 此脚本不检查 intent:// 协议 ——因为根本没法 check。这不是缺陷,是代差。不是你漏配了什么,是你脚本里所有的「if」都失去了判定条件。


  前两天吃饭,老婆问我什么时候能准时下班。我说可能等鸿蒙出个新版 Intent 协议规范文档。她夹了块豆腐给我:「那文档要是三年后才出呢?」我说:「那就三年后准点下班。」说完我自己先笑了——火大倒是不至于,就是有点麻。那种眼睁睁看着你修了八年水管,突然开发商说:「别修了,咱改用真空管道送水。」


  其实这事本来能避免。去年九月份第一次接入鸿蒙测试版 SDK 时,我就该把 DevEco 里那个「External Link Behavior」的选项框点开,看看底下那串灰色说明文字——但我点了跳过,因为弹窗里写着「仅影响系统级链接调度,不影响现有 WebView 流程」。结果三个月后,WebView 流程就被标成 deprecated 了。文档里没提,公告里没提,只在一次内部技术分享的 PPT 第 47 页角落,一行 8 号字写着:「Intent-based link dispatching will gradually replace webview-based fallback in Q4 FY2023」。


  接下来我准备把那台跑 certbot 的机器硬盘腾出来,装个鸿蒙模拟器。反正空着也是空着,总比继续盯 access.log 强。泡面桶还立在桌角,面汤结了薄皮,手机屏保换了,新的是一张纯黑图片——我设的,图层下面什么都没放。反正……也没人再往里写新东西了。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!