商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 怎样在Nginx中配置防盗爬虫

怎样在Nginx中配置防盗爬虫

  发布于2026-07-03 阅读(0)

扫一扫,手机访问

在Nginx中配置防盗爬虫,其实是很多运维同学都会遇到的需求。爬虫越来越多,尤其是那些不带Referer的、恶意刷接口的,甚至伪装成正常用户的爬虫——想要完全防住并不容易,但至少可以通过Nginx层面做一些基础限制。下面就来聊聊几种常见且实用的方案。

怎样在Nginx中配置防盗爬虫

使用ngx_http_referer_module限制访问

  1. 打开Nginx配置文件,通常位于/etc/nginx/nginx.conf/etc/nginx/sites-a vailable/yourdomain.com

  2. server块中添加以下配置:

location / {
    # 允许的域名列表
    valid_referers none blocked server_names yourdomain.com www.yourdomain.com;
    if ($invalid_referer) {
        return 403; # 返回403 Forbidden错误
    }
    # 其他配置...
}

这段配置的逻辑很简单:只有来自你指定的域名(比如yourdomain.comwww.yourdomain.com)的请求才被放行,其他Referer统统返回403。注意,这里的none表示允许没有Referer的请求(比如直接输入网址),blocked表示允许Referer被防火墙或袋里隐藏的情况。如果你希望更严格,可以去掉这两个参数,但那样可能会误伤正常用户。

使用ngx_http_xss_clean_module防止XSS攻击

另一个思路是,如果你担心爬虫不仅来抓数据,还可能顺手注入恶意脚本,那可以在Nginx层对请求参数做清洗。这就需要用到ngx_http_xss_clean_module

  1. 安装ngx_http_xss_clean_module模块(如果尚未安装)。

  2. 在Nginx配置文件中添加以下配置:

load_module modules/ngx_http_xss_clean_module.so;

server {
    # 其他配置...
    location / {
        xss_clean on;
        xss_clean_params "arg1,arg2,arg3"; # 指定需要清理的参数
        # 其他配置...
    }
}

这样,所有传入的指定参数都会被检查和清理,把潜在的XSS payload过滤掉。当然,这个模块不是内置的,需要编译安装。

注意事项

  • 这两个模块都不是Nginx自带的,你可能需要重新编译Nginx才能启用它们。如果不想折腾编译,也可以考虑用Lua模块或第三方模块替代。
  • 必须清醒地认识到:Referer检查和XSS清洗只能挡住“老实”的爬虫。那些模拟正常浏览器行为、甚至使用真实浏览器驱动的爬虫,完全可以伪造Referer、携带合法参数,这些手段基本防不住它们。
  • 防盗爬虫策略如果过于严格,很容易误伤真实用户。比如用户通过搜索引擎跳转过来,你的Referer列表里没有收录该搜索引擎的域名,那他就被403了。所以黑白名单一定要仔细评估,最好先观察一段时间的日志再上线。
  • 除了Nginx层,应用层也需要配套措施。比如限流、验证码、动态token验证、行为分析等,多管齐下效果更好。

最后提醒一句:任何配置改动前,务必先在测试环境充分验证,别一上线就把用户挡在门外。

本文转载于:https://www.yisu.com/ask/93371634.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注