nginx反爬虫设置

网站反爬虫的原因

  • 不遵守规范的爬虫会影响网站的正常使用
  • 网站上的数据是公司的重要资产
  • 爬虫对网站的爬取会造成网站统计数据的污染

常见反爬虫手段

1. 根据 IP 访问频率封禁 IP

2. 设置账号登陆时长,账号访问过多封禁
设置账号的登录限制,只有登录才能展现内容
设置账号登录的时长,时间一到则自动退出

3. 弹出数字验证码和图片确认验证码
爬虫访问次数过多,弹出验证码要求输入

4. 对 API 接口的限制
每天限制一个登录账户后端 api 接口的调用次数
对后台 api 返回信息进行加密处理

nginx反爬虫设置

因为user-agent带有Bytespider爬虫标记,这可以通过Nginx规则来限定流氓爬虫的访问,直接返回403错误。
修改对应站点配置文件(注意是在server里面)

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  index index.html index.htm index.nginx-debian.html;

  server_name _;

  location / {
    try_files $uri $uri/ =404;
  }
  #forbidden Scrapy
  if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
    return 403;
  }

  #forbidden UA
  if ($http_user_agent ~ "Bytespider|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|python-requests|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {

    return 403;
  }
  #forbidden not GET|HEAD|POST method access
  if ($request_method !~ ^(GET|HEAD|POST)$) {
    return 403;
  }
}

重启Nginx,建议通过nginx -s reload平滑重启的方式。重启之前请先使用nginx -t命令检测配置文件是否正确。

通过curl命令模拟访问,看配置是否生效(返回403 Forbidden,则表示配置OK):


本文参考链接:

https://www.cnblogs.com/itsharehome/p/11114588.html

https://www.cnblogs.com/xiao987334176/p/12559101.html

posted @ 2022-03-15 19:28  RFAA  阅读(705)  评论(0编辑  收藏  举报