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


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设置检查点简单实现代码
Jul 01 Python
python计算圆周率pi的方法
Jul 11 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 Python
python中hashlib模块用法示例
Oct 30 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 Python
python 判断矩阵中每行非零个数的方法
Jan 26 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
pytest中文文档之编写断言
Sep 12 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 Python
Python实现抖音热搜定时爬取功能
Mar 16 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 日期时间函数的高级应用技巧
2009/10/10 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
jquery对表单操作2
2011/04/06 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
微信小程序工具函数封装
2019/10/28 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
打架检讨书100字
2014/01/19 职场文书
专业技术职务聘任书
2014/03/29 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
学校宣传标语
2014/06/18 职场文书
车间核算员岗位职责
2014/07/01 职场文书
群众路线专项整治方案
2014/10/27 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python