SEO 百科

IP 段核对

本页目录

IP 段核对

IP 段核对是把访问网站的那个 IP 地址,与搜索引擎公布的地址列表做比对,落在名单里才判定请求来自该引擎。做 SEO 的人要关心它,因为日志里不少请求自称爬虫,用户代理可以伪造,IP 是另一条独立线索。核对时要对着各家最新公布的名单,名单会随抓取机器扩容而变化。

官方公布的 IP 列表在哪里

Google 把抓取工具的地址范围做成 JSON 文件,放在开发者站点上,机器可以直接下载比对。几个文件按抓取工具的类型分开,常见抓取工具、特殊情况下的抓取工具、用户触发的抓取器各有一份[3]。

Bing 早年说明不公布 IP 段,理由是地址会变,固定名单会让新抓取机器被误挡[1]。后来它提供了一个地址清单文件,形如 https://www.bing.com/toolbox/bingbot.json,文件里按 ipv4Prefix、ipv6Prefix 列出前缀[2]。

百度不提供固定的地址段,只让站长用 DNS 反查核对:主机名以 *.baidu.com 或 *.baidu.jp 结尾,才算百度自己的抓取[4]。

引擎 名单位置 形式
Google 开发者站点的 ipranges 目录 JSON,供程序读取[3]
Bing bingbot.json JSON,按前缀列出[2]
百度 不提供名单 用 DNS 反查代替[4]

什么时候需要对照 IP 段

需要核对 IP 的情形大致有三类:

  1. 给防火墙或 WAF 配置白名单,只放行真爬虫;
  2. 日志里出现高频抓取,想分清是引擎还是采集程序;
  3. 真爬虫收到 403,要排查是不是自己封错了地址。

第一种最容易出事。白名单一旦写死,引擎换了新机器,新地址不在名单里,真爬虫就被挡在门外,收录随之减少[1]。白名单要定期从名单文件重新生成,不能一次写好就不再管。

可照抄的核对命令

Google 的名单是 JSON,取回来之后就能用程序判断。下面给出一段 Python 代码,先取回常见抓取工具的地址范围,再判断一个 IP 是否落在其中。

# 取回 Google 常见抓取工具的地址范围,看它的结构
curl -s https://developers.google.com/static/crawling/ipranges/common-crawlers.json | head
import ipaddress, json, urllib.request

URL = "https://developers.google.com/static/crawling/ipranges/common-crawlers.json"
data = json.load(urllib.request.urlopen(URL))

def in_google(ip):
    addr = ipaddress.ip_address(ip)
    for item in data["prefixes"]:
        cidr = item.get("ipv4Prefix") or item.get("ipv6Prefix")
        if cidr and addr in ipaddress.ip_network(cidr):
            return True
    return False

print(in_google("66.249.66.1"))

IPv6 的地址写成 ipv6Prefix,判断时不能只看 ipv4Prefix[3]。只匹配 IPv4 时,走 IPv6 的真爬虫会被判成陌生地址。

常见误用

一个误用是把 IP 段当成唯一标准。地址会被回收和转手,旧名单里的地址可能已经属于他人。IP 段核对要和反向 DNS 核对一起用,两条线索都吻合,才敢放行[1]。

另一个误用是名单长期不更新。名单随抓取机器变化,隔几个月才取一次,中间新增的机器会让真抓取失败。

还有一种误用是只看 IPv4。Google 的名单里同时有 IPv6 前缀,只匹配 IPv4 会漏掉一部分抓取[3]。

最后一种误用是把名单拿来做精确封禁。真正要做的是放行名单内的地址,而不是封禁名单外的所有地址,后者会误伤用户和其他引擎。

附录

参见

参考资料

官方(境外)

  1. 《How to Verify that Bingbot is Bingbot》,Bing Webmaster Blog,2012-08-31。
  2. 《bingbot.JSON》,Bing。
  3. 《Verify requests from Google crawlers and fetchers》,Google 搜索中心,2025 更新。

官方(国内)

  1. 《Baiduspider》,百度。

外部链接

无。