侧边栏壁纸
博主头像
一个九零后的萤火虫博主等级

行动起来,活在当下

  • 累计撰写 33 篇文章
  • 累计创建 7 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

用nginx屏蔽疯狂爬虫的方法

Administrator
2024-01-25 / 0 评论 / 0 点赞 / 27 阅读 / 1770 字

站点总是莫名的cpu100%,检查发现全是mysql占用,网络流量也不高,这就有必要怀疑爬虫问题。

  1. 使用"robots.txt"规范

在网站根目录新建空白文件,命名为"robots.txt",将下面内容保存即可。

User-agent: Baiduspider
Disallow:
User-agent: YisouSpider
Disallow:
User-agent: 360Spider
Disallow:
User-agent: Sosospider
Disallow:
User-agent: sogou spider
Disallow: 
User-agent: YodaoBot
Disallow: 
User-agent: Googlebot
Disallow: 
User-agent: bingbot
Disallow: 
User-agent: *
Disallow: /
  1. nginx

    有些爬虫是不按规则出牌的,我们必须要能自己控制,方法如下:

将下面代码添加到"location / { }" 段里面,比如伪静态规则里面。
Bash

 #禁止Scrapy等工具的抓取
   if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
     return 403;
    }

  #禁止指定UA及UA为空的访问
   if ($http_user_agent ~ "YandexBot|Bytespider|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|Ezooms|^$" ) {
     return 403;
   }
   #禁止非GET|HEAD|POST方式的抓取
    if ($request_method !~ ^(GET|HEAD|POST)$) {
      return 403;
    }

注意: ~ 为模糊匹配 ,~* 为 模糊匹配不区分大小写

测试一下:

  curl -I -A  "Mozilla/5.0Macintosh;IntelMacOSX10_12_0AppleWebKit/537.36KHTML,likeGeckoChrome/60.0.6967.1704Safari/537.36;YandexBot"  http://www.demo.com

返回 403 表示设置成功!

0

评论区