IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

真假百度蜘蛛的甄别

火丁笔记 2017-02-06 23:09:48 累计浏览 3,004 次
本机暂存

   虽然百度的口碑并不好,但是不可否认的是,它一直是中文搜索中的霸主,所以对大多数中小型商业公司而言,都对百度蜘蛛的抓取行为予以放行,不过还有很多非法的蜘蛛,它们会通过 User-Agent 把自己伪装成百度蜘蛛,此时如果单纯以 User-Agent 来判断是否是百度蜘蛛就不合适了。虽然网上能找到很多现成的百度蜘蛛 IP 段,但是并不能确认它们的准确性,所以我打算自己收集,进而甄别真假百度蜘蛛。

   

   实际上百度在常见问题解答中给出了甄别的方法:当有 User-Agent 是 Baiduspider 的请求时,我们可以通过 host 命令反解 ip 来判断,Baiduspider 的 hostname 以 *.baidu.com 或 *.baidu.jp 的格式命名,其它的则可以视为非法的蜘蛛。

   注意:有的百度蜘蛛服务器并不遵守此规则,本案例中无视它们。

   为什么百度不主动公布它自己的 IP 段呢?这样大家就方便了啊!答案多半是因为它怕别人封禁它,正所谓君子坦荡荡,小人常戚戚。比如 AWS 就公布了自己的 IP 段。

   下面我们将尝试通过 log 历史数据来找出真正的百度蜘蛛,假设 log 格式如下;

   1.2.3.4 … “Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)”

   简单 shell 即可实现,通过分析我的 log,最终可以拿到几百个百度蜘蛛的 IP:

shell> awk '$0 ~ "Baiduspider" {print $1}' /path/to/log \
    | xargs -n1 -I {} sh -c 'echo -en {} "\t"; host {}' \
    | awk '$NF ~ "\\.baidu\\.(com|jp)\\.$" {print $1}' > baidu

123.125.71.100
123.125.71.101
123.125.71.102
123.125.71.103
123.125.71.104
123.125.71.105
...

   因为结果集太臃肿了,所以我拍脑袋做了一个 24 位的 CIDR 处理:

shell> awk -F. -v OFS=. '{print $1, $2, $3, "0/24"}' baidu | sort -u

119.63.195.0/24
119.63.198.0/24
123.125.66.0/24
123.125.71.0/24
180.76.15.0/24
180.76.5.0/24
220.181.108.0/24

   如此结果集就精简多了,以后再有 User-Agent 是 Baiduspider 的请求进来时,我们只要简单判断一下 IP 是否在 CIDR 结果中即可,是则予以放行。当然,本文中百度蜘蛛的 IP 数据也可以用在别的地方,比如禁止百度访问。 </body></html>

同分类推荐文章

  1. 【已复现】Linux内核Fragnesia权限提升漏洞(CVE-2026-46300) (2026-06-15 10:53:58)
  2. 企业文档安全最佳实践(二):给文档上“身份证”——手动标密与智能自动标密 (2026-06-12 17:18:33)
  3. AI 时代的「幸福烦恼」:漏洞报告井喷,我们在疲于应对中看见未来 (2026-06-01 14:52:44)

查看更多 安全 文章 →

建议继续学习

  1. 淘宝搜索:定向抓取网页技术漫谈 (累计阅读 9,465)
  2. 简析搜索引擎中网络爬虫的搜索策略 (累计阅读 7,383)
  3. 定向抓取漫谈 (累计阅读 5,522)
  4. 用谷歌浏览器来当手机模拟器 (累计阅读 5,248)
  5. 收集几个手机浏览器的User-agent (累计阅读 4,455)
  6. 搜索引擎爬虫蜘蛛的USERAGENT收集 (累计阅读 3,545)
  7. js不同浏览器检测 (累计阅读 2,605)
  8. 搜索引擎spider整理 (累计阅读 2,004)