⭐ 推荐:社区规则条款 V1.0

搜索引擎白名单

GJ论坛站长
GJ论坛站长 管理员资深会员 👑黑卡会员
发布于 2026-10-23 23:35 ·11 浏览 ·0 回复
内容摘要

搜索引擎白名单由 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 白名单,把你带宽跑满。

正确做法是三步校验:

  1. 先看 UA 是否匹配官方蜘蛛标识(Googlebot、Baiduspider、bingbot、YisouSpider、Bytespider)。
  2. 对来源 IP 做反向 DNS 解析:dig -x 66.249.x.x +short,结果必须落在 googlebot.com / google.com / baidu.com / search.msn.com 等官方域。
  3. 再做一次正向解析,确认 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 反向测试自己的白名单,能拦住伪造请求、放行真实蜘蛛,才算真正生效。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2437.html
转载请注明出处,版权归原作者所有。
他们都看过 1 人浏览过
GJ论坛站长
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 0

还没有回复,来抢沙发~