在蜘蛛池入口页里放链接,常见的两种操作是:给链接加 rel="nofollow",或者把链接藏在用户看不到的位置。前者有人觉得能避免权重外流,后者有人觉得能多塞几条 URL 又不影响页面外观。这两种做法的实际差别很大,值得分开说。
nofollow 拦的是权重,不是抓取
rel="nofollow" 最早的语义是“不背书这个链接”,后来被明确为一种抓取提示。也就是说,搜索蜘蛛看到 nofollow 之后,是否抓取由它自己决定,很多情况下它仍然会去访问这个 URL——只是不一定通过这个链接传递权重,也不一定把它当作推荐信号。
所以,如果你的目的是让搜索蜘蛛发现入口页里的目标 URL,加 nofollow 通常不会成为决定性阻碍;但如果你的目的是让目标页从入口页拿到权重,那 nofollow 基本等于白放。
实际观察中,nofollow 链接的抓取比例往往低于普通链接,尤其是入口页本身权重不高、链接数量又很大时。也就是说 nofollow 会降低被抓的概率,而不是把概率清零。
ugc 和 sponsored 是另一回事
- rel="ugc":用在用户生成内容里,同样表示不背书,效果和 nofollow 接近。
- rel="sponsored":用于付费或广告性质的链接,是明确的声明。
- 从抓取角度看,这两个和 nofollow 没有本质区别;从站点整体信誉角度看,用错了反而容易被标记成“链接交易”。蜘蛛池入口页里混用这几个属性,通常没有收益。
真正麻烦的是隐藏链接
把链接藏起来(用户看不见,但 HTML 里有)和 nofollow 是完全不同的性质。常见做法包括:
- 用 display:none 或 visibility:hidden 包一层
- 用 font-size:0、文字颜色和背景同色、text-indent 负值把文字挪出屏幕
- 容器高度设为 0 并 overflow:hidden
- 用绝对定位把链接放到视口之外
- 把链接塞进极小的透明图片热区
这类做法在搜索引擎的链接质量评估里属于比较典型的作弊特征。搜索引擎不一定能识别每一种写法,但常见的几种识别成本很低。
被发现之后可能发生什么?各家规则不完全公开,但常见的处理方向是:链接被忽略(等于白放),或者入口页整体信任度下降,连带正常链接也被打折。两种情况都不划算。
判断标准其实很简单:用户能不能正常看到并点击这个链接。看不到,就不要指望搜索蜘蛛把它算作有效链接。
noscript 和图片链接呢
noscript 里的链接,在默认不执行 JS 的抓取环境下通常能被解析,属于可以用的位置,但不少爬虫也会执行 JS,前后内容重复反而显得刻意。纯图片热区链接(没有文字锚点)可以被抓取,但缺少锚文本,对目标页的帮助有限;如果图片本身还被 CSS 隐藏,那又回到隐藏链接的问题上。
更省事的做法
- 把目标 URL 放进普通可见的 a 标签,锚文本和页面主题相关,不要全是“点击这里”。
- 每个入口页的链接数量控制住,几十条以内比上千条更容易被完整抓取。
- 确实不想传递权重的地方才用 nofollow,不要整页默认都加。
- 不要用隐藏链接凑数量,收益低、风险高。
怎么验证有没有被跟进
回到日志:在服务器访问日志里看搜索蜘蛛的 UA 是否访问过目标 URL,访问时间点是否跟入口页被抓的时间接近。如果入口页天天被抓,目标页却从来没有对应的请求,那问题多半出在链接形态上(隐藏、nofollow 比例过高、JS 注入),而不是“入口页没被发现”。
把链接还原成用户可见的正常锚点,再观察一轮日志,通常比反复调整隐藏样式更快看出差别。