做入口頁时很容易遇到一個矛盾:入口頁本来是给人看的會顯得很怪,一堆外鏈堆在那里,体驗不好。于是有人會想,能不能只對搜尋蜘蛛返回带連結的版本,對普通訪客返回一個正常的頁面。這就是通常说的“差异化返回”,英文里叫 cloaking。
差异化返回一般怎么實現
技術上不算复杂,判断依據主要有几類:
- User-Agent 判断:识別到 Bingbot、Googlebot 這類 UA 时返回一份 HTML,其他 UA 返回另一份。
- IP 反查:判断訪問 IP 是否落在搜尋引擎公布的官方網段,再决定返回什么。
- 行為特征:是否执行 JavaScript、是否加载图片、有没有正常浏览行為等。
- 来源判断:從搜尋引擎结果頁点進来的给一份,直接訪問的给另一份。
搜尋引擎對這件事的態度
需要说清楚:主流搜尋引擎把“向訪客和搜尋蜘蛛提供實质不同内容”列為作弊手法之一,寫進了站長指南。各家判断标准和执行尺度不一样,也可能出現誤判,但方向是明确的——它不是一種模糊的灰色技巧,而是被点名過的违規行為。
如果两份内容只是排版不同、核心信息一致,通常不算問题;如果一份有連結、另一份没有,或者一份是给人讀的文章、一份是纯連結列表,性质就變了。
可能出現的後果
- 抓取信任度下降:蜘蛛可能降低對你這個站点的抓取频次,甚至短期停止抓取。
- 入口頁被降權或從索引中移除,頁面里的連結自然也不會再被跟随。
- 如果入口頁和目标 URL 在同一個主域下,影响會顺着域扩散到主站。
- 反复出現时,可能触發人工處理,波及整個站点。
這些後果不是必然發生,也不是立刻就發生。自動化判断本身有延迟和誤差,很多人短期内看不到明顯變化,就容易誤以為“没事”,等抓取量掉下来再回头排查,定位难度反而更大。
相對稳妥的做法
如果目标只是让入口頁不那么难看,其實有更省事的路子:
- 對所有訪問者返回同一份内容,把連結做成正常可讀的列表,配一两句简短說明,用戶和蜘蛛看到的完全一样。
- 連結用标准的 a 标簽,不要用 JS 跳轉或 onclick 代替,保證可抓取。
- 如果實在不想让用戶看到大量連結,可以把入口頁放在不對普通用戶開放的路径下,但這样蜘蛛通常也訪問不到,就失去了入口頁的意义,需要谨慎评估。
- 更實际的做法是控制入口頁數量和連結质量,別指望靠“藏内容”去解决体驗問题。
自查方法
- 用 curl 分別带上常见蜘蛛 UA 和不带 UA 請求同一個 URL,對比返回的 HTML 是否一致。
- 用浏览器無痕模式打開该 URL,看内容和蜘蛛看到的版本是不是同一份。
- 查服務器日誌,看同一路径是否针對不同 UA 走了不同分支。
- 如果用了 CDN 或 WAF,检查有没有“爬虫模式”之類的開關在返回不同版本。
小结
入口頁给搜尋蜘蛛和訪客返回不同内容,短期内也许看起来有效,但它属于被明确列出的违規操作,風險落在入口頁本身,也可能牵连主站。做站点运营還是让入口頁的内容對谁都是一样的更省心。連結能不能被發現,主要取决于是否可抓取、頁面是否被正常索引,而不是靠“只给蜘蛛看”。