https://www.bing.com/webmasters/verifybingbot
可以登录bing站长网站,从栏目 “验证Bingbot” 输入 ip地址,验证。
验证Bing搜索引擎爬虫IP的主要方法:
- 官方验证方法:
- 访问 Bing 的官方验证工具:https://www.bing.com/webmasters/help/how-to-verify-bingbot-3905dc26
- Microsoft 提供了一个JSON文件,其中包含了所有Bingbot的IP地址范围
- 反向DNS验证:
- 对可疑IP进行反向DNS查询
- Bing爬虫的IP应该解析为以下域名格式:
*.search.msn.com
*.msn.com
*.bing.com
*.microsoftonline.com
- 常见的Bing爬虫IP范围:
- 13.x.x.x (Microsoft Azure)
- 20.x.x.x (新的Microsoft范围)
- 40.x.x.x
- 52.x.x.x
- 104.x.x.x
- 131.253.x.x
- 157.55.x.x
- 207.46.x.x
- 验证步骤: a. 首先检查用户代理(User-Agent)字符串,Bing爬虫通常包含”bingbot”或”msnbot” b. 进行反向DNS查询 c. 进行正向DNS查询,确认IP地址确实属于Microsoft d. 对比官方IP列表
- 编写简单的验证代码示例:
import socket
import re
def verify_bingbot(ip_address):
try:
# 反向DNS查询
hostname = socket.gethostbyaddr(ip_address)[0]
# 检查是否匹配Bing的域名模式
bing_patterns = [
r'\.msn\.com$',
r'\.search\.msn\.com$',
r'\.bing\.com$',
r'\.microsoftonline\.com$'
]
is_bing_domain = any(re.search(pattern, hostname) for pattern in bing_patterns)
if is_bing_domain:
# 正向DNS查询验证
forward_ip = socket.gethostbyname(hostname)
if forward_ip == ip_address:
return True, f"验证成功: {ip_address} 是Bing爬虫IP (hostname: {hostname})"
else:
return False, f"验证失败: 正向DNS查询不匹配 ({forward_ip} != {ip_address})"
else:
return False, f"验证失败: 主机名不匹配Bing模式 (hostname: {hostname})"
except socket.herror:
return False, "验证失败: 无法解析主机名"
except Exception as e:
return False, f"验证失败: {str(e)}"
# 使用示例
test_ip = "40.77.167.72" # 这是一个示例IP
result, message = verify_bingbot(test_ip)
print(message)
- 注意事项:
- Bing的爬虫IP范围可能会随时更新
- 建议定期检查官方文档获取最新的IP范围
- 不要仅依赖IP范围进行验证,最好结合反向DNS查询
- 如果您使用CDN或WAF服务,确保正确配置以允许合法的Bing爬虫访问