网站上线搜索引擎死活不收录?最后发现是 IP 被墙了

网站上线搜索引擎死活不收录?最后发现是 IP 被墙了

卡在 sitemap 抓取失败

网站上线后,我第一时间去 Bing 站长工具和 Google Search Console 提交了域名,想着让搜索引擎尽快把文章收进去。提交之后爬虫会来抓取页面,而抓取前需要先读 robots.txt 找到 sitemap 的位置——这就引出了站点地图(sitemap)。

我用一个在线 sitemap 生成工具做好了地图,提交到站长平台。结果一直显示「获取失败」,直接浏览器打开那个地址也打不开。起初我以为是 CDN 还没生效:毕竟搜索引擎服务器大多在境外,访问国内源站大概率是会失败的,于是就先放着等。

先猜是网络问题

等了几个小时重试,还是不行。这时候我开始怀疑是不是网络链路的问题。为了验证,我分别 ping 了两个东西:一个是我的网站域名 stewie.fun,另一个是服务器的公网 IP。结果很有意思——ping 域名时显示「国外绿、国内红」,而 ping 服务器 IP 时变成了「国内绿、国外全红」。两组数据对不上,说明问题没那么简单,能做的似乎只有继续等。

关键一步:ping 域名 ≠ ping 服务器 IP

这一步区分清楚了,后面的排查才没走弯路。表面都是「ping 一下」,但二者测的根本不是同一段链路:

  • ping 域名:会先走 DNS 解析。如果开了 CDN,域名解析到的是 CDN 的边缘节点,所以测的是「CDN 节点通不通」,而不是你的源站。
  • ping 服务器 IP:绕开 DNS 和 CDN,直接连源站。这才是「源站本身通不通」的真相。

我之前看到「域名国外绿」就以为是 CDN 通了,其实那只能说明 CDN 节点可达;真正决定爬虫能否抓到内容的,是「IP 直连源站」这组——而它恰恰是「国外全红」。两组数据一对照,矛头就指向了源站 IP 本身。

排除 CDN:换阿里云、关小橙云都试了

既然怀疑和 CDN 有关,我就系统地排除它。先试了把源站接入阿里云 CDN,看能不能让爬虫从阿里云节点回源,结果依旧无效。接着干脆把 Cloudflare 的小橙云(☁️ 代理)关掉,让流量直连源站——关掉后国内确实能正常访问了,但国外仍然打不开。

这里有个容易被误导的点:很多人以为「开了 CDN 爬虫就能从 CDN 取到内容」,但 CDN 只是中间层,它最终还是要回源到你的服务器。源站本身在境外连不上,CDN 再强也救不了。而且关掉代理后国外依然不通,基本就把 CDN 这条线排除了。

真相:IP 被墙,换一个就好了

线索收敛到一点:国内通、国外全红,并且无论换 CDN 厂商还是关掉代理,结果都不变。这只能说明一件事——分配给我的那个源站 IP,被境外网络封禁了。判断依据很朴素:同一台服务器、同一个源站,只是 IP 变了,连通性就反转,那问题一定出在这个 IP 上,而不是程序或配置。

我前往服务器控制台更换了公网 IP,重新 ping 了一下,国内外都通了。再开小橙云,重新提交 sitemap——这次一次成功。第二天在搜索引擎里已经能搜到我的文章了。

爬虫能不能抓到你的站点,最终取决于「源站 IP 本身」通不通,CDN 只是中间商,救不了被墙的源站。

复盘整个过程,真正卡住收录的不是 robots、不是 sitemap 格式,而是一个被墙的 IP。排查时「ping 域名」和「ping IP」一定要分开看,前者测的是 CDN、后者才是源站;一旦确认源站 IP 在境外全红且换 CDN 无效,直接换 IP 往往比反复调配置更高效。希望这篇踩坑记录能帮你少走几小时弯路。

← 返回文章列表