首页 > 系统相关 >Nginx 如何预防网络爬虫?

Nginx 如何预防网络爬虫?

时间:2023-05-29 11:14:43浏览次数:77  
标签:爬虫 robots Nginx limit User txt 预防

网络爬虫是一种自动获取网页信息并进行处理的程序。爬虫通过访问指定的 URL 地址,对返回的 HTML 或其他类型响应数据进行解析、提取所需的数据或信息,并存储到本地或其他指定位置。通常可以用于搜索引擎的抓取、数据挖掘、信息聚合等领域。

为了预防网络爬虫,Nginx 可以采取以下措施:

启用访问频率限制:通过 Nginx 常用模块 HttpLimitReqModule 或第三方模块 ngx_http_limit_req_module 可以实现访问频率的限制,限制来自单个 IP 的请求速率。

启用访问速度限制:通过 Nginx 常用模块 HttpLimitReqModule 或第三方模块 ngx_http_limit_conn_module 可以实现对单个 IP 的最大连接数或速度进行限制。

启用浏览器 User-Agent 白名单:在 Nginx 配置文件中设置浏览器 User-Agent 白名单,避免被恶意的网络爬虫所伪装。

禁止目录遍历和文件上传:在 Nginx 配置文件中使用 location 指令禁止目录遍历和文件上传功能,以防止网站出现漏洞受到doss。

启用防火墙保护:启用 Linux 服务器自带的防火墙或者使用第三方防火墙软件,可以对输入的流量进行过滤和限制。

总体来说,Nginx 提供了多种方式来预防网络爬虫。需要根据具体情况不断调整和优化,以提高网站的安全性和稳定性。需要注意的是,防止爬虫与屏蔽爬虫之间的区别,合理、适度的限制才能更好的方式爬虫动态。

Nginx 是一个高性能的 Web 服务器,也可以用于​​反向代理​​和负载均衡等场景。要预防​​网络爬虫​​,可以通过以下几种方式使用 Nginx 进行配置:

  1. 配置 User-Agent 白名单:通过设置 Nginx ​​配置文件​​中的 ​​http​​ 段中的 ​​map​​ 指令,定义允许的 User-Agent 列表,然后在 ​​server​​ 段中通过 ​​if​​ 指令判断请求的 User-Agent 是否在白名单中,如果不在,则返回 403 Forbidden 响应。例如:
http {
  map $http_user_agent $is_bot {
    default 0;
    ~*bot 1;
    ~*spider 1;
    ~*crawler 1;
  }

  server {
    if ($is_bot) {
      return 403;
    }
  }
}

上面的配置定义了一个名为 ​​$is_bot​​ 的变量,它的值根据请求的 User-Agent 是否包含 ​​bot​​、​​spider​​ 或 ​​crawler​​ 字符串而变化。如果 ​​$is_bot​​ 的值为 1,则表示请求来自爬虫或机器人,返回 403 Forbidden 响应。

  1. 限制请求频率:通过设置 ​​limit_req_zone​​ 指令和 ​​limit_req​​ 指令,可以限制来自同一 IP 的请求频率。例如:
http {
  limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

  server {
    location / {
      limit_req zone=one burst=5 nodelay;
    }
  }
}

上面的配置定义了一个名为 ​​one​​ 的​​限制请求​​区域,它的大小为 10MB,速率为每秒 1 个请求。在 ​​location /​​ 中,使用 ​​limit_req​​ 指令限制每个 IP 地址的请求速率不超过 1 个请求/秒,如果超过了则返回 503 Service Unavailable 响应。

  1. 配置 robots.txt:在 Web 服务器​​根目录​​下放置名为 ​​robots.txt​​ 的文件,可以告诉​​搜索引擎​​和爬虫哪些页面可以访问,哪些页面不能访问。例如:
User-agent: *
Disallow: /admin/
Disallow: /private/

上面的配置表示不允许任何爬虫访问 ​​/admin/​​ 和 ​​/private/​​ 目录下的页面。要在 Nginx 中配置 robots.txt,可以使用 ​​location​​ 指令:

http {
  server {
    location /robots.txt {
      alias /path/to/robots.txt;
    }
  }
}

上面的配置表示将请求 ​​/robots.txt​​ 的响应重定向到 ​​/path/to/robots.txt​​ 文件。

综上所述,以上是使用 Nginx 预防网络爬虫的三种方法。需要根据具体情况选择合适的方法进行配置。

标签:爬虫,robots,Nginx,limit,User,txt,预防
From: https://www.cnblogs.com/q-q56731526/p/17439872.html

相关文章

  • selenium爬虫 根据域名后缀查询网站数量
    本质是对‘site’功能的自动化查询importrefromseleniumimportwebdrivera={'org.do',....,'org.ua'}driver=webdriver.Chrome()driver.get("https://www.baidu.com/")p_input=driver.find_element_by_id('kw')dir_={}d_=......
  • nginx,gateway配置
    反向代理:监听192.168.10.129:9001如果url中有edu就把请求转发给http://ip1:port1,如果url中有vod就把请求转发给http://ip2:port2nginx配置:server{listen9001;server_name192.168.10.129;location~/edu/{proxy_passhttp://ip1:port1}location~/vod/{proxy_passhtt......
  • windows nginx.bat cmd 命令脚本,方便windows开发
    @echooffsetROOT=C:\Users\38524\bin\nginx-1.25.0echoyounginxrootpathis:%ROOT%setCMD=%ROOT%\nginx.exeechoyounginxcmdpathis:%CMD%setCONF=%ROOT%\conf\nginx.confechoyounginxconfpathis:%CONF%^@REMforstart@REMecho......
  • CentOS 9 安装 Nginx 模块 `subs_filter`
    sub_filter和subs_filter区别sub_filter(0.7.24):替换响应体(ResponseBody)中的文本,只能设置一组替换。subs_filter:替换响应体(ResponseBody)和响应头(ResponseHeaders)中的文本,可以设置多组替换。sub_filter使用案例:http{server{listen80;server_n......
  • 使用Python实现分布式爬虫
    使用Python实现分布式爬虫在Web爬虫中,分布式爬虫已经成为一种流行的技术,可以帮助我们快速地收集互联网上的数据。下面我们将介绍如何使用Python实现分布式爬虫。什么是分布式爬虫?分布式爬虫是指将爬虫任务分配给多个计算机节点执行,以提高爬取效率和稳定性的一种技术。分布式爬虫通......
  • CentOS 9 安装 Nginx 模块 `subs_filter`
    sub_filter和subs_filter区别sub_filter(0.7.24):替换响应体(ResponseBody)中的文本,只能设置一组替换。subs_filter:替换响应体(ResponseBody)和响应头(ResponseHeaders)中的文本,可以设置多组替换。sub_filter使用案例:http{server{listen80;server_......
  • [nginx]lua控制请求头
    前言nginx原生提供expires、add_header两个指令控制请求头,在LuaAPI中也有类似的指令。添加请求头指令:ngx.req.set_header语法:ngx.req.set_header(header_name,header_value)环境:set_by_lua*、rewrite_by_lua*、access_by_lua*、content_by_lua*、header_filter_by_lua*、b......
  • 记一次爬虫
    先感谢403F的帮助要爬的是https://soutubot.moe/然后就遇到了问题贯穿始终的是401未授权访问,但是请求包里不包含token一类的,cookie也放了,将整个导入到postman里面发现能够请求成功,然后只有请求头可能出问题,那就是请求头的问题请求头一个一个去掉发现比较重要的一项是x-api-k......
  • Nginx编译安装2
    1.进入安装目录:#cd/usr/local/src 2、下载nginx源码文件nginx网址:http://nginx.org/en/download.html 3、复制文件下载地址:http://nginx.org/download/nginx-1.22.1.tar.gz4、开始下载:#wgethttp://nginx.org/download/nginx-1.22.1.tar.gz5、解压#tar-zxvf......
  • Python 爬虫神器 requests 工具
    一、模块安装pipinstallrequests二、常用方法在实际的爬虫中,其实真正用到的只有GET、POST,像其他的方法基本用不到,比如:DELETE、HEAD、PUT等。1、GET方法headers={'user-agent':'my-app/0.0.1'}payload={'key1':'value1','key2':'value2'}re......