现在看到的资料都是全局性的限制高频率访问的 ip ,但是这样会把爬虫也给限制了,影响了网站排名。 我不想限制搜索引擎爬虫(需要正常放行),比如 Googlebot 和 baiduSpider ,该怎么做呢?求助大家 我的目前的配置可以全局限制访问 ip 频率,问了 chatGPT 半天,它也给不出正确答案,看看老铁的厉害
http {
# ...
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=15r/m;
server {
location ~ \.php {
limit_req zone=mylimit burst=5 nodelay;
}
}
}
1
lhbc 2023-03-26 01:49:05 +08:00 via Android
|
2
ab 2023-03-26 02:33:57 +08:00 2
# 蜘蛛白名单
map $http_user_agent $limit{ default $binary_remote_addr; ~*(Baiduspider|360Spider|bingbot|Googlebot|Sogou|YoudaoBot|Sosospider) ""; } limit_req_zone $limit zone=myqps:30m rate=2r/s; limit_req zone=qps burst=10 nodelay; limit_req_status 429; |
3
ab 2023-03-26 02:34:56 +08:00 1
后两行用于 server 段
|
7
ab 2023-03-26 04:44:03 +08:00 via iPhone
@herozzm #6 每个用户都有一堆参数可以当做限频属性。使用 ip 是因为 ip 的唯一性,别的参数都会误杀。那么你要放行例外,当然只能放空
|
8
yrj 2023-03-27 03:45:39 +08:00
你用 UA 做放行,那不是掩耳盗铃麽。。
|
12
herozzm OP @yrj
@ab 我搜集了一个搜索引擎 ip 段 已经公布 ip 的: google: https://developers.google.com/search/apis/ipranges/googlebot.json bing: https://www.bing.com/toolbox/bingbot.json 360: https://www.so.com/help/spider_ip.html 剩下的用 https://tool.ip138.com/spider/ |