常见问题

入口页链接用 CSS 隐藏或折叠起来,搜索蜘蛛还能发现目标 URL 吗

链接写在 HTML 源码里,搜索蜘蛛通常都能提取到,隐藏影响的是抓取优先级和页面可信度,而不是简单的“看得见才抓”。这篇文章拆解常见隐藏方式的风险差异、容易被误判为抓不到的真实原因,以及更稳妥的入口页写法。

常见问题

入口页链接用 CSS 隐藏或折叠起来,搜索蜘蛛还能发现目标 URL 吗

先给一个大致结论:只要目标链接是写在 HTML 源码里的 a 标签 href,搜索蜘蛛抓取入口页时通常都能提取到,哪怕它在页面上被 CSS 隐藏了、用户根本看不见。真正需要关心的不是“能不能发现”,而是这条链接拿到多少权重、被抓取的优先级有多高,以及这种隐藏写法会不会让入口页整体被判定为异常页面。

搜索蜘蛛看的是源码,不是渲染后的画面

很多站长把“用户看不到”等同于“蜘蛛看不到”,这是最常见的误解。搜索引擎抓取入口页时,第一步拿到的是服务器返回的 HTML 源码,链接解析也主要发生在这一步。链接在源码里存在,就有被提取的机会;链接只存在于渲染之后的画面里,才需要靠渲染能力去补。

所以判断标准应该换一下:不是问“页面上看不看得见”,而是问“href 有没有出现在返回的 HTML 里”。用 curl 或者浏览器的查看源代码拉一次页面,搜一下目标 URL,能不能搜到,答案其实立刻就清楚了。

不同隐藏方式,风险不一样

折叠面板、选项卡这类交互

内容被折叠起来、需要点击展开才能看到,属于正常的页面交互设计。链接仍然在 HTML 中,蜘蛛可以正常解析。这类做法的风险相对低,但要注意折叠区域里的链接同样会因为位置靠后、可见性差而降低抓取表现。

纯作弊式隐藏,风险明显更高

下面这些写法是另一回事:

  • 用 display:none 挂上几十上百条与页面正文毫无关系的链接;
  • 把文字颜色设成和背景完全一样,或者字号缩到 1px;
  • 用绝对定位把整块链接推到可视区域之外;
  • 把链接塞进隐藏的 div 里,页面正文却看不出任何相关性。

这些做法的共同点是:对用户完全不可见,纯粹为了给蜘蛛看。搜索引擎对隐藏文本、隐藏链接的识别已经比较成熟,入口页一旦被标记,后续的抓取频次和信任度都会受影响,得不偿失。

为什么有人还是发现“抓不到”

排除掉隐藏这个因素,链接没被蜘蛛跟进,通常问题出在别处:

  1. 链接是 JS 动态插入的。CSS 隐藏和 JS 渲染是两件事,链接如果不在初始 HTML 里,就需要蜘蛛完成渲染后才可能看到,被发现的时间会拉长,也不保证一定被跟进。
  2. 链接由 CSS 伪元素生成,比如用 content 属性拼出来的内容,这类内容不在 DOM 的 a 标签里,一般不作为链接处理。
  3. 页面本身有拦截,包括 robots.txt 屏蔽、nofollow、防火墙或安全插件返回异常状态码。
  4. 入口页整体抓取频次就低,蜘蛛来得少,藏在角落里的链接自然更排不上号。

更稳妥的写法

  • 链接尽量放在页面主干区域,靠近顶部或正文开头,而不是全部堆在隐藏容器里;
  • 折叠区域可以保留,但让部分链接在默认状态下就可见;
  • 单页链接数量控制在合理范围,避免把入口页做成一个庞大的链接仓库;
  • 锚文本写清楚,别全是“点击这里”“更多”;
  • 不要为了藏链接而使用同色文字、零字号这类老手法。
隐藏链接能否被抓到,和隐藏链接有没有效果,是两个完全不同的问题。前者多数情况下答案是“能”,后者往往因为触发风险识别而变成负数。入口页的价值在于持续、稳定地被抓取,而不是短时间塞进大量链接。

怎么确认到底抓没抓

光看页面判断不了,最直接的办法是查服务器日志:筛出搜索蜘蛛的 User-Agent,看它请求了哪些入口页,再顺着看有没有请求目标 URL。如果入口页被请求了、目标 URL 一直没有访问记录,那问题基本不在 CSS 隐藏上,应该去查链接是否真实存在于源码、目标 URL 是否可访问、以及是否存在 robots 层面的拦截。

把入口页做得像正常页面,比研究怎么藏链接更省事,也更经得起长期的抓取波动。