结论:先分清是哪一種限制
搜尋蜘蛛訪問入口頁时,本质上是一個不带 Cookie、不登入、没有本地存储的匿名請求。它只带一個 UA 字符串和少量請求头。所以限制方式不同,结果完全不同:
- 登入後才顯示連結:蜘蛛拿不到,基本無效。
- 校驗 Cookie 或 Session:同样拿不到,連結等于不存在。
- 只對搜尋引擎 UA 輸出連結:蜘蛛能拿到,技術上可行,但属于對不同訪客返回不同内容,有被判伪装的風險。
- 校驗 Referer 或来源 IP:蜘蛛的 Referer 通常為空,来源 IP 也不固定,很容易被直接挡在门外。
所以看到入口頁日誌里有蜘蛛来訪,並不代表它真的看到了你要它發現的那些連結,這两件事要分開看。
為什么登入和 Cookie 這條路走不通
蜘蛛不會替你註冊帳號,也不會保持會话。它每次抓取都近似一次全新的匿名訪問,不會带着你浏览器里那份 Cookie。少數渲染型蜘蛛能执行頁面上的 JavaScript,但它不會去填登入表單、也不會点按钮完成身份驗證。
如果你的入口頁需要先登入、或者要带着某個校驗過的 Cookie 才會輸出目标連結,那么對蜘蛛而言,這個頁面就是一個没有連結的空頁面。你把連結藏得再巧妙,它也没办法凭空猜出来。
UA 白名單為什么看着能用、却不好用
- UA 字符串會變。新的蜘蛛标识、移動端 UA、或者平台更新過的 UA,都可能不在你的白名單里,連結就漏掉了。
- 對蜘蛛輸出一套、對普通訪客輸出另一套,是典型的伪装内容。短期可能看到抓取量上来,長期损伤的是域名整体信任度。
- 這類頁面一旦被人工审核或算法抽样命中,连累的不只是入口頁,可能包括同域的其他頁面。
能被抓到,和该不该這么做,是两件事。
怎么自测入口頁對蜘蛛是否可见
- 用不带 Cookie 的匿名請求訪問入口頁,直接看返回的 HTML 源碼里有没有目标連結,而不是看你浏览器里渲染出来的样子。
- 關掉 JavaScript 再看一遍,確認連結是寫在服務端返回的 HTML 里,還是靠前端脚本注入的。
- 查服務器日誌,按蜘蛛 UA 過滤,看返回碼是不是 200、返回字节數和你自己看到的差多少。返回内容明顯偏小,往往是没輸出連結。
- 用搜尋平台提供的抓取诊断或 URL 检查工具,看渲染後的 HTML 里目标連結有没有出現,顺带看渲染是否报错。
更稳妥的做法
入口頁最好保持無狀態、匿名可见、服務端直接輸出的 HTML 連結。頁面對所有人都是同一份内容,蜘蛛能否發現連結,就不取决于它是不是蜘蛛,而取决于連結是不是真的在頁面里。
如果你确實需要区分訪客,把区分放在展示样式、統計脚本、個性化模块上,不要放在“有没有連結”這件事上。入口頁的核心任務是让 URL 被稳定地看见,任何需要額外條件才可见的連結,都會让這條鏈路變得不可控。
最後提醒一句:入口頁让蜘蛛發現 URL,只是把 URL 送進了抓取队列。能否抓取、能否收錄,還取决于目标 URL 自身的质量、返回狀態和站点整体情况,中間没有必然的因果關系,也不建议用没被收錄就繼續加入口頁的方式反复叠加。