入口頁按 User-Agent 返回不同内容,指的是什么
常见做法是:入口頁在服務端判断請求头里的 User-Agent,如果识別為 Googlebot、Bingbot、百度蜘蛛等,就返回一份带有大量目标連結的 HTML;如果判断為普通浏览器,就返回空白頁、提示頁或者直接跳走。也有站点反過来做,只给蜘蛛看精简版。目的只有一個:让搜尋蜘蛛看见連結,而普通訪客看不到這些連結。
搜尋蜘蛛並不是只看 User-Agent 字符串
這是最容易誤判的一点。搜尋引擎對官方蜘蛛有驗證机制:反向 DNS 校驗、IP 段核對,以及公開的 IP 列表。UA 字符串可以随便改,但真實的来源 IP 很难伪装。
更關键的是,搜尋蜘蛛會對同一個 URL 做多種形式的抓取。它可能用普通浏览器 UA 再抓一次,也可能啟用渲染模式抓一次,然後與你给官方 UA 返回的版本做對比。如果两份内容结构差异很大,尤其是連結數量、正文主题、可见文本完全不同,就很容易被判定為差异化返回。
被判定之後,處理方式通常不只是「忽略這份内容」那么简單。轻則這份差异化内容不被采信,重則整個入口頁的抓取频率下降,甚至影响到同一批入口頁的抓取预算。至于收錄和排名,任何工具都無法承诺。
除了被识別,這種寫法本身還有几個副作用
- UA 判断容易誤伤:蜘蛛版本更新、移動端蜘蛛、不同地区的蜘蛛 UA 可能不在你的匹配規則里,结果该看到的没看到,不该看到的反而看到了。
- 缓存與 CDN 會让判断失效:CDN 缓存的是第一次請求的版本,後續蜘蛛拿到的可能正好是普通訪客版本。
- 日誌里會出現大量混杂记錄:自己都分不清蜘蛛到底抓了哪一版,排查問题时缺少可靠依據。
- 入口頁一旦被标记為異常,之前「成功被發現」的 URL 也不會因此获得額外待遇。
更稳妥的替代做法
如果目标只是让連結更容易被發現,完全可以用不冒風險的方式實現。
- 让搜尋蜘蛛和普通訪客拿到同一份 HTML,連結直接寫在初始响應里,不依赖脚本二次注入。
- 頁面结构保持简單:可点击的 a 标簽、清晰的层級,避免把連結藏進 iframe、图片或事件绑定里。
- 控制單頁連結數量,把入口頁拆成多個层級,而不是一頁堆上千條。
- 入口頁内容與目标頁面保持一定相關性,纯連結列表頁在長期看並不占優势。
- 把 sitemap 当作补充手段提交,同时用服務器日誌观察蜘蛛實际抓了什么、返回了什么狀態碼。
怎么观察這類做法是否已经产生影响
如果已经用了差异化返回,可以重点看几件事:同一批入口頁的抓取频次有没有下降;抓取日誌里官方蜘蛛的 IP 是否真實;返回给不同 UA 的内容差异有多大;目标 URL 的抓取狀態是「已發現未抓取」,還是压根没有记錄。這些信号比任何猜测都直接。
蜘蛛池能做的,是降低 URL 被發現的难度,而不是决定搜尋引擎抓不抓、收不收。用差异化返回去換短期的「被看见」,通常得不偿失。