不少站长都遇到过这种怪事:官网内容明明写得很全,产品参数、价格、常见问题一应俱全,可用户一问"哪款合适""多少钱",答案区里冒出来的却是别家。排查了一圈渲染、站点地图、抓取权限都没问题,最后才发现在根上——你的正文被自己网站的弹窗盖住了。
这不是个别现象。现在几乎每个站点都有 Cookie 同意条、登录墙或订阅弹窗,本意是合规或留资,但如果实现方式不对,最先读到页面的"用户"恰恰是答案引擎的抓取器,而它读到的第一屏全是"接受所有 Cookie""请先登录"。正文还在 HTML 里,只是被遮罩挡在了视线之外。
先理清:这层遮罩和"源码里没正文"不是一回事
很多人会把两类问题混为一谈,修错方向。
一类是正文干脆没进初始 HTML,比如整页靠 JavaScript 在浏览器里现拉数据,抓取端拿到的只是一只空壳。这是前面提到的渲染问题,要从服务端渲染或预渲染解决。
另一类正是本文说的遮罩:正文其实已经在 HTML 里了,页面骨架完整,可被引用的内容都在,但最上面盖了一层全屏或半屏的浮窗——同意条款、强制登录、订阅领取。抓取器不点"接受"、不登录、不填邮箱,于是它截到的首屏文本就是那行弹窗文案,正文反而没被读到。
两者表现一样(答案区里没你),但治法完全不同:渲染问题是"没有正文",遮罩问题是"有正文但被盖住"。下面专讲后者。
为什么答案引擎会停在弹窗上
生成式引擎的抓取器,本质是个"只看了眼没点的访客"。它多数不执行交互、不点同意、不登录、不提交表单,只读初始拿到的文档和首屏文本,再决定哪段话能当答案。
当首屏被遮罩占满,会发生三件事:
- 它截到的前几百字是"我们使用 Cookie 以提供更好体验""登录后查看完整内容",而不是你的产品名、参数和价格;
- 你精心写的可引用内容虽然躺在 HTML 里,却被浮层压在下方,首屏权重最高的位置给了弹窗;
- 引擎判断"这一页第一眼看到的是拦截层",自然不会把藏在下面的正文当作该问题的答案块。
结果就是:你的内容技术上能被抓,实际上从没进答案区。问题不出在写得好不好,而出在那层遮罩挡在了正文和引擎之间。
三类最常见的"正文遮罩"
不是所有弹窗都一样糟,关键看它是不是把正文挡在了首屏之外。
| 类型 | 典型表现 | 抓取端读到 | 后果 |
|---|---|---|---|
| Cookie 同意条 | 全屏或半屏遮罩,必须点"接受"才消失 | "接受所有 Cookie / 拒绝" | 首屏被占,正文前几段进不了答案块 |
| 登录强制墙 | 未登录就重定向到登录页或整页遮罩 | 登录页文案,非正文 | 公开内容被锁,引用位归零 |
| 订阅留资弹窗 | 进场即弹,关不掉或很难关 | "输入邮箱领取资料" | 正文被盖,用户和引擎都先撞墙 |
其中危害最大的是"未登录就 302 重定向到登录页"——这等于直接告诉抓取器"这片内容不对外",比浮层遮罩更彻底。浮层至少正文还在页面里,重定向则是把正文整个搬走了。
三步把正文从遮罩里放出来
治起来不复杂,核心是三个动作:正文进首屏、抓取器放行、自己验证。
第一步:把首屏正文放进初始 HTML,遮罩只做浮层
正文本来就该在 HTML 里,遮罩用 position: fixed 的浮层盖在上面即可,千万不要为了"用户点开才显示"就把正文设成 display:none、visibility:hidden 或 opacity:0。抓取端和用户浏览器看到的是同一份初始文档,遮罩只是视觉上的叠加,不应改变正文在文档里的存在。
如果正文被塞进了弹层模板或 iframe 里、初始 HTML 只剩一个壳,那等于又回到了"源码里没正文"的老路,前面的渲染修复白做。
第二步:给抓取器放行,别用拦截代替浮层
同意弹窗和登录墙是两件事。合规的 Cookie 提示可以保留,但不要用"未登录就重定向"去处理本该公开的内容。同时确认抓取权限是放行的——把生成式引擎的专用抓取标识(如 Google-Extended、GPTBot、ClaudeBot、ChatGPT-User、PerplexityBot 等)在抓取控制里允许,别把它们和广告爬虫一起拦掉。这一步和"先查抓取权限有没有挡门"是同一根链条的前后两段:权限放的是"让不让进",本文解决的是"进来了看到的是不是正文"。
第三步:用最"笨"的请求验证首屏
发布前,用不执行脚本、不带任何 Cookie 的请求看一眼首屏,模拟抓取器的视角:
- 用
curl直接拉页面源码,搜你的产品名、关键参数、价格,看能不能在初始文本里找到; - 用浏览器无痕模式禁用脚本后打开,看首屏前两段是不是正文;
- 把一段核心句子放进搜索引擎或答案引擎查,看能否被整段召回。
三步里任意一步读不到正文,就说明遮罩还在挡路,先改再发。
两个容易踩的坑
- 坑一:藏正文等点击。 有人为了让弹窗更突出,把正文先
display:none,等用户点"接受"再用脚本显示。抓取端不点,于是永远读不到。遮罩是视觉层,正文是文档层,两层要分开。 - 坑二:正文锁在弹层或 iframe。 把内容做成一个"点击展开"的弹层模板,初始 HTML 里只有触发按钮。这会让可引用内容从首屏消失,等于主动放弃了答案区的位置。
发稿前自查三件事
每次更新内容,顺手过一遍这三条,成本极低、收益很高:
- 不开脚本、不点同意,首屏能不能看到正文的前两三段?
- 关键句(产品名、参数、价格、结论)在初始 HTML 里搜不搜得到?
- 登录墙后面的内容,是否另有可抓取的公开版本?没有就补一份,别让公开信息只剩登录后可见。
把这三件事变成发布流程的固定动作,遮罩类问题基本不会再漏。
结语
遮罩是给真实用户的一个选择,不该变成横在内容和引擎之间的一堵墙。同意条款要留、登录该有,但正文必须始终待在首屏该在的位置——让访客点得开心,也让答案引擎一眼就读得到。把浮层归浮层、正文归正文,你写好的那些话,才真正有机会被整段引用。