防止爬虫采集绝对是一个站长需要做的事;且不说站内资源被爬走,单是爬虫采集时消耗的服务器资源可能就够很多站长心疼了。
本文采用的方式比较原始,首先通过分析 Nginx 日志找出请求最多的 IP,然后将其加入屏蔽名单使其无法访问;
查找爬虫 IP
可运行以下命令:
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10
其中:
access.log
:是 Nginx 日志文件
这条命令通过统计 Nginx 日志中每次请求的 IP 地址,找出请求次数最多的 10 个 IP,并排序将其列出;一般来说,在很短时间内单个 IP 或 IP 段存在大量请求,它极有可能是爬虫。
屏蔽 IP 访问
在 Nginx 配置文件目录下新建一个blockip.conf
文件,用于管理要屏蔽的 IP;
将爬虫的 IP 地址以以下形式写入blockip.conf
文件:
deny IP;
其中:
deny
:是 Nginx 的访问控制指令,用于禁止特定 IP 或网段访问服务器。IP
:要屏蔽的 IP,支持 IPv4 和 IPv6;
将以下内容加入http
、server
或location
块中:
include blockip.conf;
需要重启 Nginx 服务才会生效;
对于已屏蔽的 IP 请求,会直接返回403 Forbidden
应小心识别搜索引擎蜘蛛请求和 CDN 回源请求;
更多的屏蔽、放行格式
#屏蔽单个 IP 访问
deny IP;
#允许单个 IP 访问
allow IP;
#屏蔽所有 IP 访问
deny all;
#允许所有 IP 访问
allow all;
#屏蔽 IP 段:
deny IP/24;
也可组合使用:
#允许指定 IP 访问,其他全部拒绝:
allow IP;
deny all;