搜索引擎爬虫UA大全,识别各类搜索蜘蛛
服务器日志里每天都有大量访问记录,其中一部分来自搜索引擎爬虫。
准确识别这些蜘蛛的User-Agent,既能避免误封正常收录,也能防止恶意爬虫伪装成搜索引擎消耗资源。
下面从UA特征、日志筛选、真伪验证三个层面给出可落地的操作方法。
主流搜索蜘蛛的UA特征速查
搜索引擎爬虫的User-Agent通常包含特定标识字符串。
以下是常见搜索蜘蛛的UA关键词,匹配时建议使用不区分大小写的包含判断:
- 百度蜘蛛:
Baiduspider,完整UA类似Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) - Googlebot:
Googlebot,例如Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) - Bingbot:
bingbot,例如Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) - 360蜘蛛:
360Spider或HaoSouSpider - 搜狗蜘蛛:
Sogou web spider或Sogou inst spider - 神马蜘蛛:
YisouSpider - 字节蜘蛛:
Bytespider - YandexBot:
YandexBot
注意:UA字符串可以被任意伪造,仅凭UA判断并不可靠,必须配合IP验证。
在Nginx日志中快速筛选蜘蛛访问
假设Nginx访问日志路径为 /var/log/nginx/access.log,日志格式为默认的combined格式。
第一步:统计各搜索引擎蜘蛛的访问量
awk -F'"' '{print $6}' /var/log/nginx/access.log | grep -iE 'baiduspider|googlebot|bingbot|360spider|sogou|yisouspider|bytespider' | sort | uniq -c | sort -rn
这条命令会输出每个UA字符串的出现次数,帮助你了解哪些蜘蛛最活跃。
第二步:查看某个蜘蛛的具体访问URL
grep -i 'baiduspider' /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
如果发现百度蜘蛛频繁抓取后台路径或带参数的动态链接,说明可能存在伪装爬虫或站点结构需要优化。
第三步:实时监控蜘蛛请求
tail -f /var/log/nginx/access.log | grep --line-buffered -iE 'baiduspider|googlebot|bingbot'
实时输出可以帮你观察蜘蛛的抓取频率和规律。
验证蜘蛛真伪:反向DNS与IP段核对
UA可以伪造,但IP来源相对难以伪装。
验证逻辑是:对访问IP做反向DNS解析,如果主机名以搜索引擎官方域名结尾,再正向解析该主机名,确认解析结果与原始IP一致。
百度蜘蛛验证:百度官方建议通过 nslookup 反查IP。
例如访问IP为 220.181.108.xx,执行:
nslookup 220.181.108.xx
若返回的PTR记录包含 baidu.com,则为百度官方蜘蛛。
更准确的方式是使用百度搜索资源平台提供的验证工具,或核对百度公布的蜘蛛IP段。
Googlebot验证:
host 66.249.66.1
返回结果应包含 googlebot.com 或 google.com。
然后对返回的主机名再做一次正向解析,确认IP一致。
Bingbot验证:
nslookup 40.77.167.1
返回的PTR记录应包含 search.msn.com。
如果反向解析失败或主机名与搜索引擎无关,基本可以判定为伪装爬虫。
通过robots.txt和Nginx配置管理蜘蛛
robots.txt放置位置:网站根目录,例如 /www/wwwroot/yourdomain/robots.txt。
一个基础示例:
User-agent: *
Disallow: /admin/
Disallow: /api/
User-agent: Baiduspider
Allow: /
Sitemap: https://yourdomain.com/sitemap.xml
Nginx层面限制伪装爬虫:如果确认某些IP段为恶意爬虫,可以在Nginx配置中添加:
if ($http_user_agent ~* (baiduspider|googlebot)) {
set $spider_flag 1;
}
更严格的做法是结合 geo 模块或 map 指令,仅放行官方IP段。
宝塔面板操作路径:网站 → 设置 → 配置文件,在 server 块中添加上述规则后重载Nginx。
常见误判与避坑要点
- 不要仅凭UA封禁:UA可被任意篡改,误封会导致正常收录下降。建议先记录日志观察,确认异常后再处理。
- 反向DNS并非100%可靠:部分搜索引擎未提供PTR记录,此时应参考官方公布的IP段列表。
- CDN场景需看真实IP:如果站点使用了CDN,Nginx日志中的IP可能是CDN节点IP,需要从
X-Forwarded-For头中提取真实IP再验证。 - 蜘蛛频率异常不等于恶意:新站或内容更新频繁时,蜘蛛抓取量会自然上升,应结合抓取URL和响应状态码综合判断。
- 验证结果以官方文档为准:各搜索引擎的IP段和验证方式可能调整,建议定期查看对应搜索资源平台的官方说明。
效果验证:确认识别规则是否生效
配置完成后,按以下步骤验证:
- 访问一个测试页面,用
curl模拟蜘蛛UA请求:
curl -A "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" -I https://yourdomain.com/test.html
- 查看Nginx日志中该请求是否被正确记录并匹配到蜘蛛规则。
- 如果配置了限制规则,确认返回状态码是否为预期的
403或200。 - 观察一周内搜索引擎收录变化,如果收录量稳定或上升,说明规则未误伤正常蜘蛛。
掌握搜索引擎爬虫UA大全和验证方法后,建议把识别逻辑写成定期执行的脚本,结合日志分析工具持续监控。
遇到抓取异常时,先核对IP再决定是否拦截,避免因误判影响站点收录。