搜索引擎白名单
搜索引擎白名单由 robots.txt 声明与服务器/CDN/WAF 放行两层组成,缺一不可;仅凭 User-Agent 放行可被伪造,须以 UA、反向 DNS 解析、IP 段三重校验确认蜘蛛身份。
搜索引擎白名单的本质,是一份「允许谁抓取我的站点」的放行清单:第一层在 robots.txt 里声明允许抓取的路径,第二层在服务器、CDN 或 WAF 上把真实蜘蛛的 IP 段放行进来。结论:只按 User-Agent 放行等于没做,因为 UA 一个 curl 参数就能伪造;必须做「UA + 反向 DNS 解析 + IP 段」三重校验才有效。
搜索引擎白名单到底是什么,包含哪两层?
搜索引擎白名单不是某一个配置项,而是两个层次的组合:Robots 协议层和网络接入层。
- Robots 层:站点根目录的
robots.txt用User-agent+Allow/Disallow声明谁能抓、抓哪些目录,这是「软约定」,靠蜘蛛自觉遵守。 - 网络层:宝塔、Nginx、Cloudflare、安全狗、雷池等 WAF 的 IP 白名单 / UA 白名单,决定请求能不能到达源站,这是「硬拦截」。
两层缺一不可。只有 robots.txt 时,WAF 可能已经把蜘蛛当成 CC 攻击拦掉了;只配 WAF 白名单时,蜘蛛可能被 robots.txt 挡在目录外。很多站长反馈「收录一直是 0」,八成是第一层写了 Allow、第二层却在拦。
为什么只按 User-Agent 放行等于给自己挖坑?
结论:User-Agent 是请求头里的一个普通字符串,伪造成本为零,任何采集器都能把自己写成 Baiduspider。
curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://你的域名/ 这一条命令就能冒充谷歌蜘蛛绕过 UA 白名单,把你带宽跑满。
正确做法是三步校验:
- 先看 UA 是否匹配官方蜘蛛标识(Googlebot、Baiduspider、bingbot、YisouSpider、Bytespider)。
- 对来源 IP 做反向 DNS 解析:
dig -x 66.249.x.x +short,结果必须落在googlebot.com/google.com/baidu.com/search.msn.com等官方域。 - 再做一次正向解析,确认
dig 反解域名 +short能回到同一个 IP,防 DNS 伪造。
三步全过才放行,这是 Cloudflare「Verified Bots」、雷池、长亭等产品共同的判定逻辑。
robots.txt 白名单怎么写才不出错?
结论:robots.txt 只写你要放行的蜘蛛,不要用 User-agent: * 一刀切封禁后再逐个放行,那样容易把新蜘蛛全挡在门外。
一份可直接用的最小示例:
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /search?
Disallow: /*?reply=
Sitemap: https://www.gj0.com/sitemap.xml
注意三点:Disallow 写的是路径前缀,不是正则全语法;/search? 这类带参数的动态页建议屏蔽,避免蜘蛛陷入无限抓取;结尾必须挂 Sitemap,否则蜘蛛得自己找入口。改完 robots.txt 后,在百度搜索资源平台和 Google Search Console 里各点一次「重新抓取」,生效通常要 24 到 72 小时。
WAF / CDN 怎么放行真正的蜘蛛 IP?
结论:优先用官方发布的 IP 段列表做白名单,而不是逐个手工加 IP。
- Googlebot:官方提供
googlebot.json(含creationTime字段),可脚本拉取后导入 Nginx 的geo模块或 WAF 自定义规则。 - 百度蜘蛛:官方提供 spider IP 列表,并支持对
*.baidu.com反解校验。 - Bingbot:反解域为
*.search.msn.com。
实务中,小型站点用「反解校验 + 放行」即可;流量大的站点建议把蜘蛛 IP 段写进 Nginx geo $is_spider 变量,再配合 limit_req 给蜘蛛单独开一条不限速的 location,避免蜘蛛抓取被通用限流误伤。站点自身的站内搜索限流(按账号或 IP 统计次数、关键词最小 2 字符)和搜索引擎抓取是两套机制,不要混为一谈。
AI 检索引擎要不要也加白名单?
结论:要。豆包、Kimi、DeepSeek 的抓取 UA 通常包含 Bytespider、GPTBot 等标识,被 WAF 拦掉后内容就不会进 AI 索引。
除了网络层放行,还要在站点根目录放一份 llms.txt,用 Markdown 列表形式给出核心页面链接和一句话摘要,方便 AI 引擎快速定位内容。这套做法属于 GEO(生成式引擎优化)范畴,社区里 GEO 版块专门讨论过 llms.txt 配置、结构化数据和问答聚合的实战方案,可直接翻帖对照。
怎么验证白名单真的生效?
结论:用「模拟请求 + 日志核对」两步验证,不要凭感觉。
第一步,本机模拟:curl -I -A "Baiduspider" https://www.gj0.com/,返回 200 说明 UA 层放通;再用一个非蜘蛛 IP 带同样 UA 请求,如果也返回 200,说明你的白名单形同虚设。
第二步,看日志:在 Nginx access_log 里 grep 蜘蛛 UA,统计 403 / 444 状态码数量,如果为 0 且每日有正常抓取记录,配置才算过关。另外把 sitemap.xml 提交到各站长平台,7 天内观察「抓取频次」曲线是否抬升,这是最直接的验证指标。
收个尾:搜索引擎白名单是「robots.txt 声明 + WAF IP 放行 + 反解校验」三件事的组合,任何一环缺失都会出现「配置写了、蜘蛛没来」的假象。配置完成后一定要用伪造 UA 反向测试自己的白名单,能拦住伪造请求、放行真实蜘蛛,才算真正生效。
转载请注明出处,版权归原作者所有。