木头虫在家

  • 系统
  • 网络
  • 技术
  • 安全
  • 运维
  • 应用
木头虫在家
蜘蛛网
  1. 首页
  2. 安全
  3. 正文

网站如何屏蔽垃圾蜘蛛爬取?

2019年6月18日 1197点热度 0人点赞 0条评论

网站一般欢迎蜘蛛访问,因为蜘蛛意味着搜索排名和流量,但有时候,大量垃圾蜘蛛甚至爬虫访问很影响性能,特别是服务器配置不高的情况下,那么我们该怎样屏蔽掉垃圾蜘蛛呢?

一般来说,屏蔽蜘蛛的爬取有三种方法:

  • Robots 禁封
  • UA 禁封
  • IP 禁封

一、Robots 禁封

Robots 协议(也称为爬虫协议、机器人协议等)的全称是 “网络爬虫排除标准”(Robots Exclusion Protocol),用来告诉搜索引擎、爬虫哪些页面可以抓取,哪些页面不能抓取。

Robots 协议在网站中体现在根目录下的 robots.txt 文件,一般格式入下:

User-agent: YisouSpider
Disallow: /
User-agent: EasouSpider
Disallow: /
User-agent: *
Disallow: /admin/

正规 Robot 在爬取网站前都会先读取该文件,根据 robots.txt 指示爬取,但是由于 Robots 协议并不是一个规范,而是约定俗成的,所以只能引导正规蜘蛛爬取,并不能阻止垃圾蜘蛛,因此要屏蔽流氓垃圾蜘蛛还需要其他更严格的措施来配合。

二、UA 禁封

UA(User Agent)中文名为用户代理,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等,大多数蜘蛛都有携带此信息,如谷歌 Chrome 浏览器 Windows 版本 UA 是:

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36

针对指定 UA 的访问,返回预先设定好的异常页面(如 403,500)或跳转到其他页面的情况,即为 UA 禁封。

Nginx 下,可以单独创建一个配置文件,如 deny-robots.conf,并将文件添加到 nginx.conf 或网站配置中,然后重新加载 Nginx 即可。

例如 deny-robots.conf 在 /etc/nginx/conf/ 文件夹下,deny-robots.conf 内容:

if ($http_user_agent ~ "InetURL|Pcore-HTTP|PocketParser|Wotbox|SEMrushBot|newspaper|DnyzBot|Mechanize|redback|ips-agent|Sogou Pic Spider|python-requests|PiplBot|SMTBot|WinHTTP|Auto Spider 1.0|GrabNet|TurnitinBot|Go-Ahead-Got-It|Download Demon|Go!Zilla|GetWeb!|GetRight|libwww-perl|Cliqzbot|MailChimp|SMTBot|Dataprovider|XoviBot|linkdexbot|feedreader|SeznamBot|Qwantify|spbot|evc-batch|zgrab|Go-http-client|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$")
  {
  return 444;
  }

则在网站配置中添加:

server {
......
include deny-robots.conf
......
}

然后,service nginx reload 即可生效,Apache 等其他软件操作类似。

解释一下,这个配置的意思是 判断访问者 UA 是否包含引号中的字符串,若为真,则返回错误码 444,其中错误码 444 是 nginx 独有的错误码,表示服务器不返回任何数据,直接丢弃。。

由于 UA 禁封是由 Nginx 或 Apache 等已经到应用层才处理,因此即使已经禁止爬取访问,蜘蛛仍然会先与服务器创建连接,浪费资源,为此,针对特别流氓的蜘蛛,可以通过防火墙在底层拒绝连接。

三、IP 禁封

IP 禁封是指利用系统自带防火墙,拒绝蜘蛛 IP 连接,此措施最为严格,且针对有特定 IP 蜘蛛,如果 IP 是随机变动的, IP 禁封意义也不大。

举例, 有 UA 为 ”WF search/Nutch-1.12“ 的蜘蛛,通过 IP 183.94.118.76 与服务器产生大量连接访问,影响到正常运行,则通过以下命令禁止连接(CentOS7):

生效后此 IP 将无法再与服务器产生连接

整理了一份清单上传到 GitHub,链接:https://github.com/vircloud/ips ,可以作为参考。

Views: 384
标签: 服务器 蜘蛛
最后更新:2019年6月18日

admin

这个人很懒,什么都没留下

点赞
下一篇 >

文章评论

您需要 登录 之后才可以评论
分类
  • 值的推
  • 域名主机
  • 安全
  • 应用
  • 技术
  • 未分类
  • 系统
  • 网络
  • 运维
最新 热点 随机
最新 热点 随机
ucloud香港云主机 Windows 11访问局域网共享文件时出现报错 “出现了扩展错误”解决办法 4s店修理工秘密,车开到报废,这几种东西不必换 联想K4e-ITL重装WIN系统蓝屏解决方案 上学出路在哪里 windows远程桌面中如何发送CTRL+ALT+DEL命令 linux查看远程文件保存到本地,复制一个文件到新文件未尾命令 电脑分区盘符不见了怎么找回 Windows系统通过命令行工具启用禁用网卡 攻防演练之企业网络安全体系建设历程
ucloud香港云主机
Windows 网卡驱动黄色叹号 【Windows 仍在设置此设备的类配置。 (代码 56)】 vsphere 出现“在主机的当前连接状况下不允许执行该操作” Vmware Esxi6.0和Esxi6.5对比 宝塔bt控制面板mysql数据库意外停止 实时监控mysql方法 todesk正在尝试重新连接 BT宝塔https ssl证书Let's Encrypt不会自动续签 FreeBSD配置IP地址、网关、DNS的方法 win10关闭或开启系统预读以及超级预读的方法 Centos 配置eth0 提示Device does not seem to be present windows10共享访问时出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问”

COPYRIGHT © 2025 blog.qmun.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备11036795号