如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求?
2014-11-14 22:29
387 查看
网站经常会被各种爬虫光顾,有的是搜索引擎爬虫,有的不是,通常情况下这些爬虫都有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信息,代码如下:
上述代码使用了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代码,通过JAVA代码也是可以实现的,原理是一样的。
所以通过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代码,通过JAVA代码也是可以实现的,原理是一样的。
相关文章推荐
- 如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求?
- 如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
- 如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求?
- 如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
- 如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
- 如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求?
- 准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
- 怎样准确推断请求是搜索引擎爬虫(蜘蛛)发出的请求?
- 如何喂搜索引擎的爬虫
- 如何构造一个C#语言的爬虫蜘蛛程序
- 如何去勾引百度谷歌的蜘蛛爬虫
- 浅谈屏蔽搜索引擎爬虫(蜘蛛)抓取/索引/收录网页的几种思路
- 关于如何去勾引百度谷歌的蜘蛛爬虫
- 搜索引擎爬虫是如何实现的?
- 如何让 Spring MVC Controller 的同一个 URL 请求,根据逻辑判断返回 JSON 或者 HTML 视图?
- 搜索引擎爬虫蜘蛛的User-Agent
- 搜索引擎如何判断页面是否已经收录
- PHP如何判断ajax请求
- 搜索引擎爬虫蜘蛛的User-Agent收集
- 蜘蛛爬虫网络高像素图片抓取工具[搜索引擎]