Nginx禁止某些User Agent抓取网站

本文介绍了如何使用Nginx来禁止某些不受欢迎的User Agent抓取网站,以应对可能对服务器造成压力或恶意爬取的行为。通过在Nginx配置文件中添加规则,可以排除指定的User Agent头和空User-Agent头,有效保护服务器资源。文中还提供了常见垃圾UA列表,并展示了使用curl模拟不同User Agent抓取时的测试效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家都知道网络上的爬虫非常多,爬虫有利也有弊,爬虫可以让我们的网站容易被其他人搜到,比如百度蜘蛛(Baiduspider)

问题是有些爬虫不遵循robots规则对服务器造成压力,或者是恶意爬取网页、采集数据。不好的爬虫会耗费大量的服务器资源

影响正常的用户使用。有些服务器是按流量计费,被爬虫耗费很多流量要交这些额外产生的费用,比如:七牛


Nginx反爬虫

Nginx安装目录下的conf目录创建个spider目录,spider下新建个agent_deny.conf

cd /usr/local/nginx/conf         # 进入nginx配置文件目录
mkdir spider                     # 新建spider目录
cd spider                        # 进入spider目录
vim agent_deny.conf              # vim创建并编辑agent_deny.conf文件

agent_deny.conf配置如下


                
### 配置或处理Nginx中的User-Agent 为了在Nginx中配置或处理`User-Agent`,可以利用内置变量 `$http_user_agent` 来获取客户端发送的 `User-Agent` 字符串。此字符串包含了浏览器类型、版本和其他可能的信息。 #### 使用Map模块自定义响应行为 通过使用 `map` 模块可以根据不同的 `User-Agent` 设置特定的行为: ```nginx http { map $http_user_agent $is_mobile { default 0; "~*iPhone" 1; "~*Android" 1; "~*Windows Phone" 1; } server { listen 80; server_name example.com; location / { if ($is_mobile) { rewrite ^/(.*)$ http://m.example.com/$1 permanent; } try_files $uri $uri/ =404; } } } ``` 这段代码会检测访问者的设备是否为移动设备,并将请求重定向到专门针对移动端优化过的子域名上[^1]。 #### 过滤恶意爬虫 有时也需要阻止某些不受欢迎的蜘蛛程序抓取网站内容,在这种情况下可以在配置文件里加入如下规则来拒绝指定名称的 `User-Agent` 请求: ```nginx if ($http_user_agent ~* (curl|wget)) { return 403; } ``` 这将会返回HTTP状态码403给任何尝试用 curl 或 wget 访问服务器资源的人[^2]。 #### 日志记录增强 如果希望更细致地分析来自不同类型的用户的流量,则可以通过修改日志格式来包含 `User-Agent` 的信息: ```nginx log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"'; access_log /var/log/nginx/access.log main; ``` 上述设置会在每次请求的日志条目中增加一条关于用户代理的数据字段,便于后续统计和审计工作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SitVen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值