阻止特定的 user-agent

阻止特定的用户 agent 头的请求, 这对于控制不同的蜘蛛很有用

如果基于 user-agent 请求, 以下代码会比较有用

1
2
3
4
5
6
7
8
9
server {
listen 80;

if ($http_user_agent ~* craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) {
return 403;
}

... other directives
}

该规则将导致来自 user-agent 的所有包含任何分隔字符串的请求都会返回 403 Forbidden响应。
如果特定的 robots 过多, 我们也可以采取另外的方式来阻止特定的 user-agent
那就是使用 Map 定义变量, 可以更清晰的来对 agent 进行分组

1
2
3
4
5
6
7
8
9
10
11
map $http_user_agent $robots{
default 0;
~*(baiduspider|googlebot) 1;
}

location / {
if($robots = 1) {
# do some thing
return 403;
}
}

语雀镜像 : 阻止特定的 user-agent ,点此 提问

作者

Duoli

发布于

2022-09-26

更新于

2022-09-29

许可协议

评论