盖茨 发表于 2025-6-23 01:55:28

Nginx阻止特定User Agent访问,遇到点问题

yc007t 起因是我发现配置里的YisouSpider,在日志里依然可以正常访问,还是200的状态码。
下面这两段if,到底有啥区别,为啥我默认配置里的YisouSpider依然可以200访问。

其中一条日志:
106.8.137.218 - - "GET /home.php HTTP/1.1" 200 4139 "-" "YisouSpider"

配置文件:
#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient|ClaudeBot|DotBot|SEOkicks|externalagent|python-requests|ImagesiftBot|Barkrowler|SemrushBot|GPTBot))
{
return 403;
}

#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" )
{
return 403;            
}

hanada 发表于 2025-6-23 13:06:21

有没有一种可能,你配置完之后没有reload

奧巴马 发表于 2025-6-23 13:12:04

~和~*,一个区分大小写,一个不区分!^$以这些结尾的UA,因为不是以yisou***结尾,所它能访问!

盖茨 发表于 2025-6-23 13:20:13

hanada 发表于 2025-6-23 13:06
有没有一种可能,你配置完之后没有reload

yc014t 没可能,我每次必然reload

盖茨 发表于 2025-6-23 13:23:38

本帖最后由 盖茨 于 2025-6-23 13:25 编辑

奧巴马 发表于 2025-6-23 13:12
~和~*,一个区分大小写,一个不区分!^$以这些结尾的UA,因为不是以yisou***结尾,所它能访问! ...

yc014t ~是区分大小写,也可写成不区分大小写:~*
但是有点奇怪,我本地复制日志里的UA,在自己浏览器上新建一个设备模拟,是会被403的,好奇怪。

还有一个问题就是,第一个是用括号包裹,第二个是用双引号包裹,这也有啥区别吗?

谢谢yc008t

AceSheep 发表于 2025-6-23 13:45:34

怎么返回403 太仁慈了
丢一个 gzip 的炸弹 让它会去解压去吧 耗它内存

盖茨 发表于 2025-6-23 14:41:35

AceSheep 发表于 2025-6-23 13:45
怎么返回403 太仁慈了
丢一个 gzip 的炸弹 让它会去解压去吧 耗它内存

yc009t 担心惹到疯狗啊。。

fondy 发表于 2025-6-23 15:12:48

AceSheep 发表于 2025-6-23 13:45
怎么返回403 太仁慈了
丢一个 gzip 的炸弹 让它会去解压去吧 耗它内存

牛逼

轻功水上漂 发表于 2025-6-23 15:14:21

我宝塔防火墙里UA添加黑名单就可以了
页: [1]
查看完整版本: Nginx阻止特定User Agent访问,遇到点问题