如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求


Posted in Python onOctober 13, 2015

网站经常会被各种爬虫光顾,有的是搜索引擎爬虫,有的不是,通常情况下这些爬虫都有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地址。

附带常见搜索引擎蜘蛛的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

ps:https协议网页能够被搜索引擎收录吗

百度现在只能收录少部分的https,大部分的https网页无法收录。

不过我查询了google资料,Google能够比较好地收录https协议的网站。

所以如果你的网站是中文的,而且比较关注搜索引擎自然排名流量这块,建议尽量不要将所有内容都放到https中去加密去。

可考虑的方式是:

1、对于需要加密传递的数据,使用https,比如用户登录以及用户登录后的信息;

2、对于普通的新闻、图片,建议使用http协议来传输;

3、网站首页建议使用http协议的形式。

Python 相关文章推荐
Python生成验证码实例
Aug 21 Python
以windows service方式运行Python程序的方法
Jun 03 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
Python反射用法实例简析
Dec 22 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
python3+PyQt5重新实现QT事件处理程序
Apr 19 Python
python简单区块链模拟详解
Jul 03 Python
Python统计时间内的并发数代码实例
Dec 28 Python
Python猫眼电影最近上映的电影票房信息
Sep 18 Python
python模拟点击玩游戏的实例讲解
Nov 26 Python
详解Golang如何实现支持随机删除元素的堆
Sep 23 Python
Python语法快速入门指南
Oct 12 #Python
初步认识Python中的列表与位运算符
Oct 12 #Python
Python入门学习之字符串与比较运算符
Oct 12 #Python
各个系统下的Python解释器相关安装方法
Oct 12 #Python
Python中数字以及算数运算符的相关使用
Oct 12 #Python
深入解析Python中的变量和赋值运算符
Oct 12 #Python
Python2.x版本中基本的中文编码问题解决
Oct 12 #Python
You might like
php随机显示图片的简单示例
2014/02/15 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
angular.js实现购物车功能
2017/10/23 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
python能否java成为主流语言吗
2020/06/22 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
电气专业推荐信范文
2013/11/18 职场文书
水电工岗位职责
2014/02/12 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
大学生就业意向书范文
2014/04/01 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
大学生实习证明
2015/06/16 职场文书
大学班长竞选稿
2015/11/20 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers