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

 更新时间:2015年10月13日 14:43:52   投稿:mrr  
我们的网站经常被各种蜘蛛爬虫光顾,由于这些爬虫都有UserAgent,所以很多朋友使用UserAgent判断请求的发起者是否是搜索引擎爬虫的方式是很不准确的,接下来,通过本篇文章给大家介绍准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求的方法,需要的朋友可以参考下

网站经常会被各种爬虫光顾,有的是搜索引擎爬虫,有的不是,通常情况下这些爬虫都有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读写mat文件操作指南(使用scipy.io)

    Python读写mat文件操作指南(使用scipy.io)

    Matlab是一个非常好用的矩阵计算分析软件,然而随着深度学习的发展,Python语言也逐渐成为人们的常用编程语言,这篇文章主要给大家介绍了关于Python使用scipy.io读写mat文件的相关资料,需要的朋友可以参考下
    2023-06-06
  • Keras中Sequential模型和Functional模型的区别及说明

    Keras中Sequential模型和Functional模型的区别及说明

    这篇文章主要介绍了Keras中Sequential模型和Functional模型的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • pandas的连接函数concat()函数的具体使用方法

    pandas的连接函数concat()函数的具体使用方法

    这篇文章主要介绍了pandas的连接函数concat()函数的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python中Pyspider爬虫框架的基本使用详解

    Python中Pyspider爬虫框架的基本使用详解

    这篇文章主要介绍了Python中Pyspider爬虫框架的基本使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 基于python实现的百度新歌榜、热歌榜下载器(附代码)

    基于python实现的百度新歌榜、热歌榜下载器(附代码)

    这篇文章主要介绍了基于python实现的百度新歌榜、热歌榜下载器(附代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python使用tkinter模块实现文件选择功能

    python使用tkinter模块实现文件选择功能

    这篇文章主要介绍了python使用tkinter模块实现文件选择功能,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • python机器学习Logistic回归原理推导

    python机器学习Logistic回归原理推导

    这篇文章主要为大家介绍了python机器学习Logistic回归原理推导,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • python基础之局部变量和全局变量

    python基础之局部变量和全局变量

    这篇文章主要介绍了python局部变量和全局变量,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下
    2021-10-10
  • 详解Python如何获取列表(List)的中位数

    详解Python如何获取列表(List)的中位数

    本文通过图文及实例代码介绍了怎样利用python获取列表的中位数,文章介绍的很详细,有需要的小伙伴们可以参考学习。
    2016-08-08
  • Python算法绘制特洛伊小行星群实现示例

    Python算法绘制特洛伊小行星群实现示例

    这篇文章主要介绍了Python算法绘制特洛伊小行星群实现示例,这个小示例完成后非常的有意思也会使你在Python学习的道路上感到一丝丝小成就
    2021-10-10

最新评论