很多人在服務器日誌里看到百度、Google 或其他搜尋蜘蛛的 UA 訪問了蜘蛛池入口頁,就預設入口頁上的目标 URL 已经被發現。這個判断跳跃了一步:蜘蛛訪問入口頁,只說明它来過;目标 URL 是否被解析、是否進入待抓取队列,是後面的事。
訪問入口頁和發現目标 URL 是两件事
搜尋蜘蛛抓取入口頁後,會先解析 HTML。只有在這個頁面里以可识別連結形式存在的 URL,才有机會被加入發現列表。如果連結被 nofollow、被 robots.txt 阻止、由 JavaScript 异步渲染、放在 iframe 里,或者頁面本身返回的是驗證頁、错誤頁,蜘蛛即使来了,也不一定會把目标 URL 记下来。
另外,入口頁日誌里出現蜘蛛 UA,並不等于它抓取了入口頁的完整内容。有的請求只是 HEAD,或者只取了少量字节就断開。這種請求通常不足以完成連結解析。
日誌里更值得看的几個字段
- 請求方法:GET 通常是完整抓取,HEAD 一般只探头部信息。
- 狀態碼:200 才可能正常解析;403、503、302 到驗證頁都會影响發現。
- 响應字节數:字节數過小,可能只拿到空頁或错誤頁。
- 目标 URL 的獨立請求:如果目标 URL 在入口頁被抓後一段時間出現獨立請求,說明它被發現了。
- Referer:部分蜘蛛會带上来源頁,能帮助判断它從哪里發現連結。
入口頁本身的問题會让“發現”落空
入口頁返回 200 不代表連結一定可解析。常见情况包括:連結由前端框架動態生成,初始 HTML 里没有;連結放在大量無關外鏈中間,被蜘蛛忽略;入口頁被判定為低质或镜像頁面,抓取频率被压低;連結文本是纯文本或图片,没有可点击的 a 标簽。
如果入口頁的連結數量太多,蜘蛛也可能只挑選一部分抓取。連結越靠後,被解析和抓取的机會通常越低。
怎么驗證是否真的被發現
- 先確認入口頁返回 200,並且初始 HTML 里能看到目标 URL 的 a 标簽。
- 在日誌中鎖定入口頁被蜘蛛抓取的時間点,然後观察之後几小时到几天内,目标 URL 是否出現獨立請求。
- 用 sitemap、主動提交或站内連結做對照,看目标 URL 是否通過其他路径被抓取。
- 如果目标 URL 始终没有請求,優先检查入口頁連結是否可被解析,而不是反复增加入口頁數量。
日誌只能反映蜘蛛的行為记錄,不能保證目标 URL 一定被收錄或获得排名。發現、抓取、索引、排名是不同环节。
實操建议
把入口頁連結寫成普通可点击的 a 标簽,放在 HTML 初始内容里;控制單頁連結數量,優先放真正需要被抓取的 URL;保留一段時間的原始日誌,方便對比蜘蛛訪問入口頁和目标 URL 的時間差;不要只凭 UA 判断,最好结合狀態碼和後續請求记錄。
如果入口頁频繁被訪問,但目标 URL 一直没有動静,先排查頁面返回内容和連結结构,再考虑更換入口頁形式或配合其他 URL 提交方式。