SEO 百科
反向 DNS 验证
本页目录
反向 DNS 验证
反向 DNS 验证用来核对访问方身份:取访问网站的 IP 地址,先反查这个地址对应的域名,再正查这个域名对应的 IP,两次结果一致,才能确认请求真的来自那台机器[1]。做 SEO 的人要关心它,因为日志里自称百度、Google 的请求,用户代理那一串字符可以随便写。只看用户代理,假的爬虫会被放过,真的爬虫反而可能被当作假货挡掉。核对 IP 与域名是否互相对应,是分辨真假爬虫少数可用的办法之一。
正向解析与反向解析各查什么
反向解析把 IP 地址翻译成域名。DNS 里存着一条 PTR 记录,记录某个 IP 对应哪个主机名。查这条记录用的是 host 66.249.66.1,返回的主机名形如 crawl-66-249-66-1.googlebot.com。
正向解析把域名翻译回 IP 地址。DNS 里存着 A 记录,记录某个主机名指向哪个 IP。用第一步查到的主机名再查一次,应当回到最初的那个 IP。
两次查询缺一不可。反向解析的结果由 IP 的所有者自行设置,它只说明这个地址登记在谁名下,不证明来访者的身份。把反查到的域名再正查一遍,确认它指回同一个 IP,才能排除他人伪造主机名的可能[1]。Google 把这一步写成:“验证该域名与日志中访问服务器的原始 IP 地址是否一致”[2]。
# 第一步:反向解析,看 IP 对应哪个主机名
host 66.249.66.1
# 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
# 第二步:正向解析,看主机名是否指回同一个 IP
host crawl-66-249-66-1.googlebot.com
# crawl-66-249-66-1.googlebot.com has address 66.249.66.1
各家引擎的验证后缀
反查出的主机名落在哪个域名之下,是判断引擎归属的第一步。各家公布的后缀并不相同,核对时要对着官方说法,不凭印象。
| 引擎 | 反查主机名的后缀 | 说明 |
|---|---|---|
googlebot.com、google.com、googleusercontent.com |
三类抓取工具各有对应掩码[2] | |
| Bing | search.msn.com |
官方只公布后缀,不公布 IP 段[1] |
| 百度 | baidu.com、baidu.jp |
主机名以 *.baidu.com 或 *.baidu.jp 结尾[3] |
百度还把抓取分成几类,广告相关的抓取不进入搜索索引[3]。核对之后放行还是封禁,要先分清它属于哪一类。
可照抄的验证命令
单个 IP 手动核对,用 host 就够。Windows 上用 nslookup,macOS 上用 dig -x,三个命令查的都是同一条 PTR 记录。
# Linux 与 macOS 通用,反查一个 IP
host 66.249.66.1
# Windows 命令行反查
nslookup 66.249.66.1
# macOS 反查,-x 表示按地址查域名
dig -x 66.249.66.1
日志量大时要批量核对。下面给出一段脚本,从 Nginx 日志里筛出候选地址,凡是自称 Googlebot 的请求,逐个反查后缀。
# 从访问日志提取自称 Googlebot 的 IP,反查后缀后分类
grep "Googlebot" /var/log/nginx/access.log \
| awk '{print $1}' | sort -u \
| while read -r ip; do
name=$(host "$ip" | awk '/domain name pointer/{print $NF}')
case "$name" in
*.googlebot.com.|*.google.com.|*.googleusercontent.com.)
echo "REAL $ip $name" ;;
*)
echo "FAKE $ip ${name:-NXDOMAIN}" ;;
esac
done
结果先看 FAKE 那些行。出现 FAKE 也不必立刻封禁,先记下 IP 与访问频率,再看这些请求抓了哪些页面,判断是采集还是误报。
常见误用
一个误用是只做反向解析。反查通过的域名可能是他人自建的,只有正向解析回到同一个 IP,才能确认机器身份。
另一个误用是频繁反查、一失败就封禁。DNS 查询会偶发超时,反查失败不等于对方伪造。可以连续查三次,三次都取不到后缀,再放进黑名单。
还有一种误用是把广告类抓取当成搜索爬虫。封禁 Baiduspider-cpro 不影响收录,放行它也不会带来收录[3],处理前先分清它属于哪一类。
最后一种误用是拿公布的后缀去反推 IP 段。Bing 明确说过不公布 IP 列表,理由之一正是固定名单会让新机器被误挡[1]。
附录
参见
参考资料
官方(境外)
- 《How to Verify that Bingbot is Bingbot》,Bing Webmaster Blog,2012-08-31。
- 《Verify requests from Google crawlers and fetchers》,Google 搜索中心,2025 更新。
官方(国内)
- 《Baiduspider》,百度。
外部链接
无。