站点里有一部分内容需要登入才能看,运营上很常见:會員文章、訂單中心、内部文档、素材下载。問题在于,搜尋蜘蛛永遠是一個“未登入訪客”。它不會輸入帳號密碼,也不會带上你的會话 Cookie。這些頁面對蜘蛛来说,看到的往往就是登入頁或者一片空壳。
蜘蛛撞上登入墙时,通常有几種表現
- 跳轉到登入頁:蜘蛛拿到的是登入頁的 HTML,而入口 URL 被记成跳轉来源,久而久之登入頁會被当成大量頁面的“最终内容”。
- 狀態碼正常但正文是表單:返回 200,正文却是“請先登入”,這是典型的软性替換,蜘蛛很难判断這是權限問题還是内容問题。
- 返回 401 或 403:態度明确,一般不會被当成正常内容收錄,但反复抓到拒绝响應同样會消耗抓取配額。
- 内容被截断:前几段公開、後面隐藏,蜘蛛只拿到摘要,頁面容易被判定為内容單薄。
自查怎么做最直接
用“未登入狀態”重新走一遍站点,比讀任何文档都有用。打開無痕窗口、清掉 Cookie,或者用命令行發一次不带登入信息的請求,看返回的到底是什么。
- 列出所有受權限控制的 URL 模式,例如 /member/、/order/、/download/、/api/。
- 逐個用未登入狀態訪問,记錄狀態碼與實际正文。
- 確認這些 URL 有没有被站内連結、Sitemap、feed 或站内搜尋结果指向。
- 检查登入頁是否共用同一個地址,例如 /login?redirect=...,這會让蜘蛛在同一處反复打轉。
不同類型的頁面,處理方式不一样
希望被索引的公開内容
保持完全公開,不要让“点開才需要登入”的遮罩盖住正文。有些站点為了收集线索,把首屏内容用彈层挡住,蜘蛛拿到的 HTML 里可能只剩彈层代碼。
不打算被索引的會員区
這里有個常见誤区:用 robots.txt 屏蔽 /member/ 只是阻止抓取,並不等于阻止索引。如果別處有連結指向這些地址,它們仍可能以“無有效标题”的形式出現在结果里。更稳妥的做法是明确返回 401 或 403,或者允许抓取但加上 noindex。
付費墙與部分可见
如果必须保留付費墙,至少让蜘蛛看到有意义的公開部分:标题、導语、目錄、作者、更新時間。付費墙的标记方式业界有不同做法,建议先小范围測試,观察抓取日誌和收錄表現,再决定是否扩大范围。
後台、接口與临时地址
管理後台、内部接口、測試路径不建议只依赖“別人猜不到”来保護。除了權限校驗,最好在入口處就返回明确的拒绝狀態,避免蜘蛛在 /admin、/api/v1 這類地址上反复试探。
判断标准很简單:把浏览器切成未登入狀態,你看到的頁面,基本就是蜘蛛大概率看到的頁面。
把它纳入日常巡检
- 每月抽查一次受權限控制的 URL,用無 Cookie 請求核對狀態碼。
- 在訪問日誌里筛出登入頁與错誤頁的抓取次數,異常升高通常意味着有連結或 Sitemap 指错了地方。
- 上线新的會員功能时,確認它有没有把原本公開的 URL 一並關進去。
權限控制是产品需要,可抓取性也是运营需要,两者並不冲突。關键是把“哪些頁面给蜘蛛看、哪些不给”寫成一份清晰的清單,並在每次改版或上线會員体系时重新核對一遍。