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;
} 有没有一种可能,你配置完之后没有reload ~和~*,一个区分大小写,一个不区分!^$以这些结尾的UA,因为不是以yisou***结尾,所它能访问! hanada 发表于 2025-6-23 13:06
有没有一种可能,你配置完之后没有reload
yc014t 没可能,我每次必然reload 本帖最后由 盖茨 于 2025-6-23 13:25 编辑
奧巴马 发表于 2025-6-23 13:12
~和~*,一个区分大小写,一个不区分!^$以这些结尾的UA,因为不是以yisou***结尾,所它能访问! ...
yc014t ~是区分大小写,也可写成不区分大小写:~*
但是有点奇怪,我本地复制日志里的UA,在自己浏览器上新建一个设备模拟,是会被403的,好奇怪。
还有一个问题就是,第一个是用括号包裹,第二个是用双引号包裹,这也有啥区别吗?
谢谢yc008t 怎么返回403 太仁慈了
丢一个 gzip 的炸弹 让它会去解压去吧 耗它内存 AceSheep 发表于 2025-6-23 13:45
怎么返回403 太仁慈了
丢一个 gzip 的炸弹 让它会去解压去吧 耗它内存
yc009t 担心惹到疯狗啊。。 AceSheep 发表于 2025-6-23 13:45
怎么返回403 太仁慈了
丢一个 gzip 的炸弹 让它会去解压去吧 耗它内存
牛逼 我宝塔防火墙里UA添加黑名单就可以了
页:
[1]
