环境
nginx1.20 理由不说了,就是通过Nginx 一些策略来帮助防止爬虫或恶意访问
配置
- User-Agent检测 爬虫通常会使用特定的User-Agent来标识自己,Nginx可以通过检测User-Agent字符串并拒绝使用非法的User-Agent的请求。
if ($http_user_agent ~* "badcrawler") {
return 403; // 拒绝爬虫请求
}
- ip黑名单 Nginx允许你配置一个IP黑名单,将某些IP地址列入黑名单后可以拒绝其访问。
http {
...
include blacklist.conf;
...
}
- 限制并发连接数 通过配置Nginx的limit_conn模块来限制单个IP的并发连接数,这可以防止爬虫过度占用服务器资源。
http {
...
limit_conn_zone $binary_remote_addr zone=concurrent:10m;
server {
listen 80;
...
location / {
limit_conn concurrent 10;
...
}
}
}
- 频率限制 使用Nginx的limit_req模块来限制单个IP对某个URL的请求频率,这可以防止爬虫过于频繁地访问
http {
...
limit_req_zone $binary_remote_addr zone=req_rate_limit:10m rate=5r/s;
server {
listen 80;
...
location /api/ {
limit_req zone=req_rate_limit burst=10 nodelay;
...
}
}
}