安全修复对搜索引擎索引效果的影响分析
|
我越来越觉得“安全修复对搜索引擎索引效果的影响分析”是错的。 去年十一月,我们给十七个站批量加了 CSP 头、关掉 /debug 接口、把所有 302 重定向强制改成了 301——就为应付那次等保复查。运维老张拍着工位隔板说:“这下百度蜘蛛再爬也摸不着影儿了。”结果呢?三个月后 SEO 小王跑来敲我显示器边框:“你猜咱主站首页关键词排名掉了几个?”我没理他。第二天早会,CTO 拿着平板划拉两下:“怎么连‘API 文档下载’这个长尾词都搜不出来了?” 我原以为关掉 /debug 接口只会影响测试人员,结果蜘蛛真就停在那个 404 页面上不动了——不是封 IP,不是限速,是它压根没再往下扒第二层。我们盯了整整五天日志,直到看见百度 UA 的请求头里多了一行 “X-Request-ID: debug-legacy-fallback”,才反应过来:它不是被拦在外围,是被我们自己写的错误降级逻辑给卡在了中间件层。那个降级逻辑根本没配白名单,连蜘蛛都当异常流量打回了空响应体。我们光顾着修漏洞,忘了蜘蛛也是个需要“合法身份”的客户端。 冷眼看看这事:你拿安全团队交来的加固 checklist 一条条打钩,他们管你索引不索引?他们只管 WAF 不报红、Nessus 扫不出高危、渗透测试员翻不出越权。可蜘蛛不是人,它不看你的等保报告,它只认 HTTP 状态码和响应体长度。你把 /api/v1/users 改成 require login,蜘蛛立马就跳过整条路径;你把 robots.txt 加了 Disallow: /admin/,它倒真听话——但你忘了 /admin/login 这个路由其实是暴露在前端 JS 里的,而 JS 文件又带了 inline source map 注释。我们漏掉的就是那行注释里明文写的接口路径。三周后,一个叫阿哲的实习生,用 Chrome 开发者工具里随便点开 source map,直接扒出了整个内部 API 清单。蜘蛛早干完这活了,只是它没写日报。 有次跟架构老陈在茶水间争这个事。他说:“蜘蛛又不审计你代码,它只管能不能抓取到有效 HTML。”我说:“那它要是连 HTTP/1.1 协议栈都拼不全呢?”他愣住。后来我查了百度官方文档补丁说明(就贴在 GitHub wiki 最底下第三屏),发现他们在 2023 年 Q4 就悄悄把 User-Agent 解析模块升级了——支持识别自定义 header 字段,只要字段名带 “x-csp-” 前缀,就会触发预加载缓存机制。可我们当时所有安全头都是 “Content-Security-Policy” 全称,一个横杠都没加。蜘蛛不认识,也不猜。它就静静等 5 秒超时,走人。 优胜劣汰这点,我是真服气。不是因为修得对,是因为修得糙。去年双十一前,我们临时把支付网关域名从 http://pay.xx.com 切到 https://pay-gateway.xx.com,但没同步更新所有前端页面的 fetch 地址——只有登录页改了。其他页面还在发请求到旧域名。旧域名开着 HSTS,可没证书,浏览器弹不到用户面前,但蜘蛛一进来就直接标红失效链接。两周后,“在线支付失败怎么办” 这个词搜索量掉了四成。客服那边倒涨了二十七通电话。没人抱怨蜘蛛太较真,但也没人想起去翻爬虫抓取日志里那一串 307 Temporary Redirect 后跟着的 certificate verify failed 报错。 再说个细节:测试环境的 mock 服务,端口是 8081,但我们写了 nginx 配置把所有 /mock/ 的 path 都 proxy_pass 到那里。线上没删这配置。蜘蛛第一次来,抓到了一个 /mock/user/info 返回 {"id":1,"name":"test"} 的页面,HTML 里还带了个 。百度居然把它当成真实内容页收录了——标题是“模拟用户接口返回示例”,URL 是 https://www.xx.com/mock/user/info,权重低,但确实存在。三个月后我们上线新版 API 文档站,那个旧 mock URL 还在搜索结果里挂着,底下标注“快照时间:2023年11月17日”。没人删它,因为谁也不知道蜘蛛还记得这事。 还有个更荒的:我们为防 SSRF,在网关层统一拦截了所有含 “127.0.0.1” 或 “localhost” 字样的请求体和 query 参数。某天运营同事在 CMS 里填了个优惠券文案,写的是 “领取地址:https://localhost:3000/coupon/abc123”,纯文本。网关一扫,直接返回 400,并且拒绝写入任何 access log——它认为这不是合法请求,连记录资格都没有。蜘蛛来的时候看到的就是空响应 + 400,于是它把那个 CMS 页面整个标记为“不可访问”。该页面本是“双十一活动规则”的聚合页,里面三十多个内部链接,全挂了。直到 SEO 小王导出死链报表时,才发现其中一条 URL 标题居然是“【温馨提示】点击领取您的专属优惠券(已失效)”。我们没人改过这句话。是蜘蛛自己拼的。
文章配图,仅供参考 原理我说不清。为什么同样关闭 /debug,有的站三天就恢复索引,有的站三个月还在“正在审核中”?我不知道。为什么换掉 CDN 证书后,谷歌先恢复、百度晚两周、Bing 直接拒收?我也说不清。我只看见:去年十一月那批安全修复之后,七个项目里,三个站的自然流量两个月后回到峰值,四个站至今还没爬回原来的结构化数据覆盖率。优胜劣汰是真的,但淘汰的不是漏洞,是那些以为打完补丁就能躺平的人。这事我也可能就运气好——刚好赶上百度那次爬虫调度策略回调。要再晚一个月动手,说不定全军覆没。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

