加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.xcrb.com/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 运营中心 > 搜索优化 > 正文

小程序搜索排名低?外链权重隐形逻辑揭秘

发布时间:2026-11-03 11:09:00 所属栏目:搜索优化 来源:DaWei
导读:  去年8月,我蹲在IDC机房听那台老CDN节点嗡嗡叫了十八秒——不是报警,就是纯粹的、低频共振,像有人拿指甲刮黑板,但只刮左耳。监控又跳了一条报警:/search/api/v2/rank?from=miniprogram 超时,478ms,阈值是300。我没点开tr

  去年8月,我蹲在IDC机房听那台老CDN节点嗡嗡叫了十八秒——不是报警,就是纯粹的、低频共振,像有人拿指甲刮黑板,但只刮左耳。监控又跳了一条报警:/search/api/v2/rank?from=miniprogram 超时,478ms,阈值是300。我没点开trace,先摸出手机搜自己家小程序,第一页没见着,第二页第三条,带“官方”标但灰着。这时候王磊在测试群@我,发了个捂脸笑的表情包,底下跟了句:“你家搜索rank掉得比我们压测QPS还干脆。”


  我原以为是蜘蛛最近换了调度策略,把miniprogram crawler从T1集群挪到了T3冷池——结果查日志发现,上周三凌晨三点二十七分,备案系统那边推送了条新规则变更,但没走工单,直接刷进了search-cfg-svc的etcd config path。这个我敢打包票,因为那天我正好在改自动化用例,把“备案状态=已通过”断言加到了check_cdn_origin_health()里,顺手抓了那条etcd watch event的hex dump存本地了。但你说它和外链权重有没有关系?这个我说不准。


  外链权重那套逻辑,真不是算法团队闭门造的。去年八月那个周末,我和阿哲蹲在望京SOHOB座四层,对面是微信搜索侧的PM,他喝完第三杯冰美式,说:“你们外链的refer_host字段,如果带query里的utm_medium=wechat,我们会降权;但如果query里有source=miniprogram_v2,反而升权——不过v2必须带timestamp签名,不然算无效。”我当场打开Postman重放了五次,第三次成功触发了ranking_boost标记。但第四次,我忘了清localstorage,结果header里混进了旧版wxapp-token,返回503,阿哲手抖把咖啡泼到键盘上,键盘现在还在维修,三个月没换新键帽。


  优胜劣汰?对。不是筛“做得好不好”,是筛“谁敢把refer_host写成www.baidu.com/cn/192.168.1.102:8080”。上周五下午三点十四分,我们上线了个外链聚合页,把所有渠道外链统一proxy到 /go?target=,结果收录量当天涨了三百七十二,排名却全掉到第五页之后。后台查了蜘蛛User-Agent,发现百度spider跑的是mip-cache路径,但微信爬虫还是直连origin。我们立刻切回302跳转,但已经晚了——缓存雪崩了,CDN节点开始吐503,不是超时,是直接return 503,连body都不带。这个我敢打包票,因为我截了三百一十七个tcpdump包,每个都含“HTTP/1.1 503 Service Unavailable”字符串,没有空格错位,没有大小写混用。


  工位左边那盒麻婆豆腐凉透了,红油凝成一片膜,底下米饭硬得能打玻璃。我盯着它看了七秒,忽然想起昨天运营甩来一张图:竞品小程序搜索排名稳居第一,点进去看详情页源码,href里全是http://xxx.com/abc?id=777&ref=wx_miniprogram_sourcetrack_2023。那个2023,根本不是年份,是他们内部track版本号。我们之前也试过类似命名,但加了timestamp后多了一个毫秒级精度参数,结果被误判为“动态参数爆炸”,蜘蛛给打了low-trust标签。我原以为是参数长度问题,结果扒他们js发现,那个2023其实是base64编码后的“sourcetrack_v3.0”,而我们的v3.1用了URL-safe base64,少了个=号——就这一个字符差,权重分掉了三档。


文章配图,仅供参考

  张工昨天夜里两点在GitLab MR里comment了一句:“config.js里那行`// TODO: remove hardcode rank boost for mini-search`,别删。” 我回了个ok,但他没看见,因为他在改CDN预热脚本,正卡在S3 presigned URL签名失效那段。现在我们线上用的还是手动curl + jq parse的临时方案,每小时跑一次。他桌上外卖盒写着“黄焖鸡米饭(加辣不加葱)”,葱没加,但辣油倒多了,浸透了纸盒底,滴在鼠标垫上,干了之后变成一块棕褐色硬壳。


  其实吧,rank低最要命的从来不是外链本身,是外链带来的流量特征失真。我们埋了全链路PV统计,但发现搜索进来的用户,UV/PV比稳定在1.02——说明几乎没人点击第二页。而自然推荐流里同一个小程序,UV/PV是3.8。这个数我不信,所以让测试同学写了段Python脚本,在小程序内模拟滚动+点击行为,结果触发了风控滑块,弹出来一个蓝色对话框:“检测到异常操作,请完成验证。” 我截图发群里,林薇回了个“???”然后撤回,三秒后发来张照片:她家猫蹲在显示器上,尾巴尖刚好盖住那个蓝色对话框右下角的小问号图标。


  所以现在我们每天早十点,会手动执行一遍 search_rank_bypass_check.py,检查三个接口是否返回HTTP 200且content-length > 1024字节,不校验JSON schema,也不管data字段有没有数据——只要能通就行。这脚本是我八月写的,现在还没动过一行,但每次运行前,我都得先kill掉IDEA里另一个跑着的debug进程,否则端口冲突,报错提示是“Address already in use”,而真正占着端口的,是昨晚留下的Pytest session,挂着--reruns 3参数,但只跑了一次就停了,log里最后一行是“[ERROR] selenium.common.exceptions.WebDriverException: Message: unknown error: net::ERR_CONNECTION_REFUSED”,后面没写时间戳,也没写堆栈。


  下周一我打算把rank_check脚本改成cron每十五分钟跑一次,顺便把工位上那盒麻婆豆腐扔了——反正凝膜了。至于外链权重那套隐形逻辑,我不打算再往下抠。太冷了,机房噪音还在响,刚收到微信消息:蜘蛛爬虫今天起启用了新的User-Agent识别规则,但文档没更新,只有内部邮件附件里有一份xls,名字叫“user_agent_mapping_v2023_q3_draft_final_v2.xlsx”。我点了下载,进度条走到87%卡住了。算了,等它自己好。

(编辑:站长网)

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