前几天我们给自己官网加了一层自动封禁——把恶意扫描的 IP 自动挡在门外。上线前留了一步:先只观察、不真封,把”如果开启会被封掉的 IP”记下来看几天。
结果这一步救了我们:观察期抓出的三十多个”该封”的 IP 里,有 4 个是真的 Googlebot。
如果当时图省事直接开启,我们就会把 Google 的爬虫挡在门外——而且没有任何东西会报警。网站照常打开,后台一切正常,只有排名和收录会在接下来几周里慢慢往下走,等你发现时早就找不到原因了。
这件事值得单独写一篇,因为它是很多公司正在犯却完全不知道的错:装了安全插件、上了 CDN、配了防火墙规则——防护是加上了,但很可能顺手把搜索引擎和 AI 的爬虫也一起挡了。
先说结论:防护和 SEO 天生冲突,因为好人坏人长得太像
你想挡的攻击者和你想请进来的搜索引擎爬虫,行为特征高度重合:都是程序自动访问、都不看广告不点按钮、都在短时间内抓大量页面、都来自你不认识的 IP。
所以任何”按访问频率封禁”的规则,必然同时误伤爬虫。这不是配置没调好,这是判据本身选错了。我们观察期里那 4 个 Googlebot,有一个用单个连接连续抓了 647 个页面——单看这个数字,和扫描器毫无区别。
一个几乎没有灰色地带的判别特征:看”找不到”的比例
频率不能用,那用什么?我们试出来一个判据,区分度大到几乎不用犹豫:看这个访客请求的页面里,有多少是”根本不存在”的。
原因很直白:正常爬虫是顺着你给的线索抓的——站点地图里列了哪些网址、页面里有哪些链接,它就抓哪些,所以命中率极高。而扫描器是在猜——挨个试探有没有配置文件泄漏、有没有数据库备份、后台在哪,绝大多数当然是”找不到”。
实测这两类的差距大到没有中间地带:爬虫的”找不到”比例基本是 0,扫描器普遍在 87% 以上,很多是 100%。所以把”找不到的比例”作为封禁的前置条件,比单纯看频率靠谱得多。
一个反直觉的坑:域名里有 google,不代表是 Google
我们在观察期还抓到一个很有意思的东西:一个 IP 反查出来的域名带着 google 字样(属于 Google 云的一个子域),但它当时正在探测我们的 /.git/config——这是典型的攻击行为。
原因是:那类域名属于云服务器的租户,谁都能花钱租一台,和 Google 自己的爬虫完全是两回事。所以”域名里含 google 就放行”这种图省事的写法,会直接把真扫描器请进门。同理,只看访客自称的身份(UA)更不可靠——那玩意儿谁都能随便填,伪装成百度爬虫是最基础的手法。
正确的验证办法:双向解析对得上才算
业界的标准做法叫正反解验证,搜索引擎官方文档里都写着,分三步:
- ① 反查:拿访客 IP 反向解析出域名。
- ② 核对:看这个域名是不是搜索引擎的官方域名(比如百度、Google 各自公布的爬虫域名)。要按”点”精确匹配后缀,不能用”包含”——否则
xxx-google.com这种域名也能混过去。 - ③ 正查:再把这个域名正向解析回 IP,和访客 IP 对得上,才确认是真的。
三步都过才放行。只做第一步不够,只看 UA 等于没做。
另外一个我们踩过的细节:如果 DNS 本身出故障,反查会失败——这时候千万不能当成”可疑”处理,否则搜索引擎会被整批误封。要区分”确实没有反查记录”和”我们这边解析不了”,后者应该跳过判断而不是封禁。
中小企业怎么自查:三件不需要技术的事
上面那些是技术细节,大部分公司不用自己实现。但下面三件事你必须知道怎么查,因为问题往往就出在你以为不会出问题的地方。
- 去站长平台看”抓取异常”。这是最直接的证据。百度、Bing 的站长后台都有抓取失败率和错误明细,如果突然出现大量抓取失败、连接超时、被拒绝访问,基本就是被自己的防护挡了。正常状态应该是接近 0。
- 把所有”会拦人”的东西列一遍。很多公司的防护是好几层叠加的:CDN 有一层、服务器防火墙有一层、网站安全插件又有一层,可能还有一层是建站公司当年配的、现在没人知道。清单化,搞清楚每一层都在拦什么。
- 确认封禁一定带过期时间。这是我们自己的硬规矩:绝不做永久封禁。因为规则总有误判的一天,带过期时间的封禁最多影响几小时,永久封禁则会一直伤下去、而且没人记得当年封过谁。
上线任何拦截规则,都先”只看不拦”
这是本文最想说的一条,也是唯一救了我们的一条:新的拦截规则先跑观察模式——只记录”本来会拦谁”,不真的拦。跑几天,把名单翻一遍,确认里面没有你其实想请进来的客人,再正式开启。
这一步多花几天,但省掉的是”排名莫名下滑三个月还找不到原因”。我们那 4 个 Googlebot 就是这么捞回来的。安全和 SEO 的取舍,不该靠猜,该靠先看真实数据。
每月十分钟自查表
| 查什么 | 在哪查 | 正常应该是 |
|---|---|---|
| 抓取异常率 | 百度 / Bing 站长平台 → 抓取诊断、抓取异常 | 失败率接近 0,无”拒绝访问”类错误 |
| 拦截层清单 | CDN 后台 + 服务器防火墙 + 网站安全插件 | 每一层都说得清在拦什么,没有来历不明的规则 |
| 封禁名单 | 防护后台的黑名单 / 已封 IP 列表 | 都有过期时间;没有搜索引擎的 IP 在里面 |
| robots 文件 | 打开 域名/robots.txt |
没有误禁正式页面,没有 Disallow: / |
| 收录趋势 | site:域名 记总数 / 站长平台曲线 |
随发文缓慢上涨,不是从某月起掉头往下 |
和上一篇讲”静默失效”时一样,重点是记录不是检查:每月记一笔,趋势才看得出来。爬虫被误封的伤害是渐进的,单看一天永远看不出问题。
几个常见疑问
Q:那我干脆不做防护,全放进来行不行?
A:不行。扫描器是真的在找你的漏洞,不管会让服务器变慢,严重的会直接导致数据泄漏或者被入侵。正确的方向不是”要不要防”,而是”用对的判据防”——按行为特征(比如上面说的找不到比例)判断,而不是简单按频率一刀切。
Q:被误封的爬虫,解封后能恢复吗?
A:能,但要时间。搜索引擎发现你这边反复访问失败,会自动降低抓取频率,恢复到原来的节奏通常要几周。所以早发现比会补救重要得多,这也是为什么要每月看抓取异常率。
Q:AI 的爬虫也要考虑吗?
A:要,而且现在越来越重要。AI 要能引用你的内容,前提是抓得到。你把它挡在门外,结果就是在 AI 的回答里彻底不存在——比搜索排名靠后严重得多,因为 AI 那边没有”第二页”给你。
Q:怎么知道自己有几层防护?
A:问一句”我们网站前面挂了什么”通常问不清。比较可靠的办法是把域名解析链路和服务器配置一起捋一遍,看流量到底经过了哪些环节。这件事一次性捋清楚,画个图存着,以后排查任何访问问题都用得上。
担心自己的防护正把搜索引擎和 AI 挡在门外?
思文力得为北京及周边中小企业做网络安全防护与官网 SEO/GEO 运营——两件事我们一起做,所以清楚它们会在哪儿打架:帮你捋清有几层拦截、逐层核对规则、把爬虫误封解开并加上正反解验证的白名单,再按月盯抓取异常与收录趋势。文中那 4 个差点被封的 Googlebot,就是我们自己站上”先观察再开启”抓出来的。访问 siwenlide.com 或拨 400-686-2011 聊聊。





