惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
The GitHub Blog
The GitHub Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
GbyAI
GbyAI
博客园_首页
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
The Cloudflare Blog

博客园 - 玉开

好简历 5 月下旬更新:React 简历编辑器、95 套模板、全新编辑体验 好简历是干啥的?一篇说人话的自我介绍 代码评审歪诗 京东招聘架构师 暂停招聘 京东招聘Java开发人员 [已招满,谢谢关注]Sogou招聘C#开发人员,有意者请进 maven仓库信息分析站点推荐 技术人员如何确认web产品的需求 有你救有力量,呼吁添加壹基金在支付宝公益开通的救援四川雅安banner 360以安全之名做搜索,可信,还是欺世盗名? OutOfMemory.CN 为程序员服务 上线40天小记 js+JQuery实现返回顶部功能 c#显示友好时间代码 c#使用System.Media.SoundPlayer播放资源文件中的wav文件 C#使用Process类杀死进程,执行命令等 推荐一个新的技术网站OutOfMemory.CN 在32位windows 7下安装PyLucene linux无root权限安装软件 error rpm cannot be installed 端口被占用了,使用netstat找到占用端口的进程
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求?
玉开 · 2014-11-14 · via 博客园 - 玉开

网站经常会被各种爬虫光顾,有的是搜索引擎爬虫,有的不是,通常情况下这些爬虫都有UserAgent,而我们知道UserAgent是可以伪装的,UserAgent的本质是Http请求头中的一个选项设置,通过编程的方式可以给请求设置任意的UserAgent。 

所以通过UserAgent判断请求的发起者是否是搜索引擎爬虫(蜘蛛)的方式是不靠谱的,更靠谱的方法是通过请求者的ip对应的host主机名是否是搜索引擎自己家的host的方式来判断。

要获得ip的host,在windows下可以通过nslookup命令,在linux下可以通过host命令来获得,例如:

这里我在windows下执行了nslookup ip 的命令,从上图可以看到这个ip的主机名是crawl-66-249-64-119.googlebot.com。 这说明这个ip是一个google爬虫,google爬虫的域名都是 xxx.googlebot.com.

我们也可以通过python程序的方式来获得ip的host信息,代码如下:

import socket
def getHost(ip):
    try:
        result=socket.gethostbyaddr(ip)
        if result: return result[0], None
    except socket.herror,e:
        return None, e.message

上述代码使用了socket模块的gethostbyaddr的方法获得ip地址的主机名。

常用蜘蛛的域名都和搜索引擎官网的域名相关,例如:

  • 百度的蜘蛛通常是baidu.com或者baidu.jp的子域名
  • google爬虫通常是googlebot.com的子域名
  • 微软bing搜索引擎爬虫是search.msn.com的子域名
  • 搜狗蜘蛛是crawl.sogou.com的子域名

基于以上原理,我写了一个工具页面提供判断ip是否是真实搜索引擎的工具页面,该页面上提供了网页判断的工具和常见的google和bing的搜索引擎爬虫的ip地址。

页面地址:http://outofmemory.cn/tools/is-search-engine-spider-ip/ 

本文提供的代码是python代码,通过c#代码也是可以实现的,原理是一样的。

附带常见搜索引擎蜘蛛的IP段:

蜘蛛名称IP地址
Baiduspider

202.108.11.* 220.181.32.* 58.51.95.* 60.28.22.* 61.135.162.* 61.135.163.* 61.135.168.*

YodaoBot

202.108.7.215 202.108.7.220 202.108.7.221

Sogou web spider

219.234.81.* 220.181.61.*

Googlebot

203.208.60.*

Yahoo! Slurp

202.160.181.* 72.30.215.* 74.6.17.* 74.6.22.*

Yahoo ContentMatch Crawler

119.42.226.* 119.42.230.*

Sogou-Test-Spider

220.181.19.103 220.181.26.122

Twiceler

38.99.44.104 64.34.251.9

Yahoo! Slurp China

202.160.178.*

Sosospider 124.115.0.*
CollapsarWEB qihoobot

221.194.136.18

NaverBot

202.179.180.45

Sogou Orion spider

220.181.19.106 220.181.19.74

Sogou head spider

220.181.19.107

SurveyBot

216.145.5.42 64.246.165.160

Yanga WorldSearch Bot v

77.91.224.19 91.205.124.19

baiduspider-mobile-gate

220.181.5.34 61.135.166.31

discobot

208.96.54.70

ia_archiver 209.234.171.42
msnbot

65.55.104.209 65.55.209.86 65.55.209.96

sogou in spider

220.181.19.216