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

2023-09-18 13:39:48 首页 > 操作系统

  嘿!大家好!今天我想跟大家聊一聊网站优化中的一个有趣话题——yodaobot。你一定听说过网站会经常被各种各样的爬虫访问,有些是搜索引擎的爬虫,有些却不是。通常情况下,这些爬虫都会使用UserAgent,而我们又知道UserAgent是可以伪装的。实际上,UserAgent是一个包含在Http请求头中的设置,我们可以通过编程的方式给请求设置任意的UserAgent。因此,通过判断请求的发起者是否是搜索引擎爬虫,仅通过UserAgent是不可靠的。要更可靠地判断是否是搜索引擎爬虫,我们可以通过请求者IP对应的主机名是否是搜索引擎自己的主机名来判断。

  想要获得IP对应的主机名,在Windows下可以使用nslookup命令,在Linux下可以使用host命令。举个例子,在Windows下执行nslookup IP命令,我们可以看到IP的主机名是crawl-66-249-64-119.googlebot.com。这意味着这个IP是谷歌的爬虫,因为谷歌爬虫的域名通常都是xxx.googlebot.com。其实,我们也可以使用Python程序来获取IP的主机名,代码如下:

  ```python

  import socket

  def getHost(ip):

  try:

  result = socket.gethostbyaddr(ip)

  if result:

  return result[0], None

  except socket.herror as e:

  return None, e.message

  ```

  这段代码使用了socket模块的gethostbyaddr方法来获取IP地址的主机名。常用爬虫的域名通常与搜索引擎官网的域名相关。举例来说,百度的爬虫通常是baidu.com或者baidu.jp的子域名,谷歌爬虫通常是googlebot.com的子域名,微软的Bing搜索引擎爬虫是search.msn.com的子域名,搜狗爬虫是crawl.sogou.com的子域名。

  基于以上原理,我开发了一个工具页面来判断IP是否是真正的搜索引擎爬虫。这个页面提供了网页判断工具以及常见的谷歌和Bing搜索引擎爬虫的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

  嗯,对了!有个小问题,关于HTTPS协议的网页收录,你知道搜索引擎能收录吗?其实,目前百度只能收录少部分的HTTPS网页,大部分HTTPS网页无法被收录。但我查询了谷歌的资料,发现谷歌可以更好地收录HTTPS协议的网站。所以,如果你的网站是中文的,而且特别注重搜索引擎自然排名和流量,我建议尽量不要将所有内容都放在HTTPS中加密。你可以考虑使用其他方案。

最近发表
标签列表
最新留言