A/B 测试插件本身不是问题,按用户特征分流做实验也是常见做法。真正要守住的是一条线:给搜索引擎和给用户看到的内容不能是为了操纵排名而不一样。官方对这种做法的定义和举例都写在明处,本文先列红线,再讲怎么核对这类插件有没有越线。

哪些做法会踩到官方红线
Google 搜索垃圾政策里关于伪装的规定把这类行为说得很具体:伪装是指向用户和搜索引擎呈现不同内容,意图是操纵搜索排名并误导用户。文档给的例子包括——给搜索引擎看一个关于旅行目的地的页面,给用户看一个关于折扣药品的页面;以及只在请求方是搜索引擎而不是真人访客时,才把文字或关键词插进页面。
第二条例子值得逐字读一遍,因为它是判断 A/B 测试是否越线最直接的标准:差异的触发条件是不是"对方是不是搜索引擎"。按地域分、按设备分、按新用户老用户分,触发条件都是访客属性;按 User-Agent 或来源判定是不是爬虫来换内容,触发条件就是搜索引擎本身。
同一份文档还提醒过:如果站点被入侵,攻击者会用伪装让站长更难发现。所以实验类插件如果来源不明,排查顺序应该先看代码再看效果。
爬虫看到的到底是什么
抓取阶段先读 robots 文件决定能不能抓,被禁止的页面不会去请求,也不会渲染被挡页面上的 JavaScript。进入抓取后,它解析 HTML 里链接的 href 属性——Google 关于链接的说明写明,一般只有带 href 的 <a> 元素能被抓取;用 JavaScript 动态插入的链接可以,但必须用标准标记。这几条合起来说明一件事:
- 爬虫是否访问某个地址,第一道门是 robots 与状态码,不是实验分流。
- 它从页面里发现哪些地址,取决于 HTML 里有没有标准链接,而不是脚本运行时会不会生成。
- 它看到的页面内容,取决于渲染后的 HTML;官方在这条上的表述是内容不出现在渲染后的 HTML 里就无法被索引。
所以实验插件如果只在客户端分流,爬虫拿到的就是默认版本——这本身不违规。问题出在"默认版本"被做成了专门给爬虫看的低质版本,或两者在实质内容上不同。
怎么做:给实验划四条边界
- 分流条件只用访客属性。地域、设备、语言、是否新会话都可以用来分组;爬虫标识、搜索引擎入口这类条件,不要用来决定给什么内容。
- 两个版本的实质内容保持一致。标题、主标题、按钮文案、页面主体信息这类会影响理解的内容,两个版本应当相同或高度接近。可以改的是布局、配色、模块顺序、图片。
- 规范地址保持一致且唯一。官方那份 JavaScript 说明里专门写过一条:用 JavaScript 注入规范地址标签时,要保证页面上只有这一个规范标签,冲突或多个规范标签可能带来预期之外的结果。两个实验版本如果输出了不同规范值,务必确认最终只留一个。
- 不索引的判断按官方口径来。Google 关于 robots meta 标签的说明写明一条容易被忽略的顺序问题:如果某个地址通过 robots 文件被禁止抓取,那么页面上的索引与呈现规则不会被发现,也因此被忽略。也就是说不索引的信号要放在能被看到的地方。
| 实验动作 | 可以 | 需要停下 |
|---|---|---|
| 按地域或设备分流版式 | 可以 | — |
| 按是否爬虫分流内容 | — | 触发条件就是搜索引擎 |
| 两个版本标题不同 | — | 实质内容差异 |
| 两版都输出规范标签但值相同 | 可以 | — |
| 两版输出不同规范值 | — | 可能造成冲突或多个标签 |
例外与官方未公布的部分
有些做法处在灰区。以新会话为条件给新访客不同的引导内容,和伪装不是一回事,官方也没有把"以访客属性分流"列为违规,但它仍要求两版对搜索引擎没有本质差别。同一份政策文档里还有一条边界:内容门槛机制不被视为伪装,前提是 Google 能像有权访问的人一样看到门槛后面的完整内容——这指的是靠 JavaScript 隐藏全文的那种做法,前提条件写得很明确。
有几条空白必须写明:官方没有公布任何实验流量比例的阈值,也就是说"把爬虫命中比例控制在几%以内就不算伪装"这种说法在文档里没有依据;官方也没有公布实验期长短的建议值,更没有公布过实验页面的具体排名处理方式。把"我们只对 5% 流量做实验"当成合规证明,是把自定的数字当官方标准。
怎么验证实验没有越线
验证有三条独立的路。第一条是看爬虫实际拿到什么:Google 关于修复 JavaScript 抓取问题的说明推荐用结构化数据测试工具和网址检查工具,能看到加载的资源、控制台输出与异常、以及渲染后的 DOM。分别测一下实验开启和关闭两种状态,对比渲染后的 HTML 是否只在布局层面不同。
第二条是看信号是否一致:检查每种状态输出的规范标签数量和取值、robots meta 的内容、页面里标准链接的集合,这三项在两个状态下应该指向同一目标。第三条是看日志:如果两版响应体积差异很大、而爬虫总是拿到小的那版,就要停下来说清原因。
实验期间要配合的还有两件事:把实验组和默认组都登记上,方便后面按组看差异;把实验开关、作用范围、生效范围记进文档,避免换人后说不清。站内搜索页那种"不索引有没有真正输出"的问题,WordPress 站内搜索页被收录:先查 noindex 有没有真正输出里的排查顺序同样适用;一个页面同时产生多个地址变体时该怎么分清,WordPress 附件页关了图片会消失吗:两种 URL 要分开检查给的是区分思路。