当前位置: 首页 > article >正文

nginx 配置防爬虫

        今天早上查看服务器,发现昨天发布的一个在线解析充电桩协议的网页工具有大量的访问记录,应该是爬虫在爬api接口数据。该工具api接口后台用的是python写的,和大多数项目一样也采用nginx反向代理,由于采用nginx,可以利用nginx配置限制小部分小爬虫。

一 Nginx 防爬虫配置手段

通过在 Nginx 中配置防爬虫通常需要结合 IP 限制、UA(User-Agent)过滤、访问频率限制等手段配置防爬虫。

nginx 防爬配置

1 nginx主配置如下图:

2 nginx 指定域名配置如下图: 

图中配置说明:

nginx主配置是 在http部分是针对全局的,如果不配置子配置域名的server则会对所有站点会生效,在nginx 指定域名的server配置则只会对该域名生效。

测试效果如下:

1 频率限制:连续快速点击,超过频率时报429错误如下图:

2 基于 Referer 的过滤效果图:

以下针对上面所采用了三种防爬策略详细说明:

1 基于 User-Agent 的过滤

有些爬虫会使用特定的 User-Agent,可以通过配置拒绝这些 User-Agent。

server {
    listen 80;
    server_name example.com;

    location / {
        if ($http_user_agent ~* (curl|wget|python|scrapy)) {
            return 403; # 禁止常见爬虫工具
        }

        # 允许正常访问
       
    }
}
2 基于 Referer 的过滤

防止爬虫通过非当前站点域名发出的访问请求。

server {
    listen 80;
    server_name example.com;

    location / {

        #只允许来自指定域名的请求
        valid_referers none blocked example.com;
        if ($invalid_referer) {
            return 403;
        }

    }
}
3 限制ip访问频率

 由于爬虫访问与人工访问频繁完全不相同,可通过 limit_req 模块限制每个 IP 的访问频率。

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s; # 每秒限制 5 次请求

    server {
        listen 80;
        server_name example.com;

        location / {
            limit_req zone=one burst=10; # 突发允许 10 次请求
            try_files $uri $uri/ =404;
        }
    }
}

小结 

nginx功能非常强大,仅通过简单的配置可以防止一部分小爬虫,这一点非常方便,但需要注意的是只是防住小部分,要想进一步做防爬,一般还要在接口层拦截器配合前端调整。


http://www.kler.cn/a/511357.html

相关文章:

  • 先进制造aps专题二十七 西门子opcenter aps架构分析
  • Unity补充 -- 协程相关
  • 【2024年华为OD机试】 (B卷,100分)- 路灯照明问题(Java JS PythonC/C++)
  • -bash: /java: cannot execute binary file
  • 八大排序--冒泡排序
  • 第22篇 基于ARM A9处理器用汇编语言实现中断<四>
  • 83.删除排序链表中的重复元素 python
  • sqlfather笔记
  • DQN【算法+代码】玩openai gym库游戏
  • 创建react18版本脚手架报错
  • SparseInst实例测试(含cuda10.1、pytorch1.8、detectron2安装过程)
  • C#中的语句
  • 【HTTP】详解
  • STL--set(集合)
  • 一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用
  • JVM 面试八股文
  • Redis学习笔记1【数据类型和常用命令】
  • 查看代理设置Get-Item Env:https_proxy
  • < OS 有关 > 阿里云:轻量应用服务器 的使用 安装 Tailscale 后DNS 出错, 修复并替换 apt 数据源
  • 安装指南:LLaMA Factory、AutoGPTQ 和 vllm
  • 算法刷题笔记——图论篇
  • Java反射、静态代理、动态代理
  • 以单用户模式启动 Linux 的方法
  • 调试Hadoop源代码
  • 020:为什么 Resnet 如此重要?
  • K8S 容器重启策略