宝塔nginx配置防爬虫
在宝塔面板中为Nginx配置防爬虫,可以有效保护网站资源。其核心是通过识别并拦截恶意爬虫的请求特征(如User-Agent)来实现。下面是一个清晰的配置指南。
🛡️ 主要防御策略:屏蔽恶意User-Agent
这是最直接有效的方法,通过识别并拦截已知恶意爬虫的请求头信息来防御。
-
创建防爬虫配置文件
首先,需要在宝塔面板的文件管理中,进入
/www/server/nginx/conf目录,创建一个新文件,可以命名为kill_bot.conf或agent_deny.conf。 -
编辑配置文件
将以下规则代码写入该文件。这段代码包含了一个非常全面的恶意爬虫与扫描工具User-Agent黑名单。
# 禁止垃圾搜索引擎蜘蛛和恶意爬虫抓取 if ($http_user_agent ~* "CheckMarkNetwork|Synapse|Nimbostratus-Bot|Dark|scraper|...|AhrefsBot|SemrushBot|DotBot|MJ12bot|Scrapy|Curl|Python-urllib") { return 403; } # 禁止扫描工具客户端(更宽泛的匹配) if ($http_user_agent ~* "crawl|curb|git|Wtrace|Scrapy" ) { return 403; } # 可选:禁止非标准HTTP方法(如PUT, DELETE)的请求 if ($request_method !~ ^(GET|HEAD|POST)$) { return 403; }关键说明:
-
$http_user_agent ~*:表示不区分大小写匹配User-Agent字符串。 -
竖线
|是正则表达式中的“或”运算符,用于分隔多个关键词。 -
return 403;:直接向匹配的请求返回403禁止访问状态码。
-
-
在网站配置中引入该文件
进入宝塔面板的「网站」页面,点击你的网站对应的「设置」按钮。在「配置文件」选项卡中,找到
#SSL-START标记附近的空白行,插入以下代码以引入刚才创建的规则文件:include /www/server/nginx/conf/kill_bot.conf;
📝 辅助手段:使用robots.txt文件
robots.txt是一个告知爬虫哪些目录可以或不可以抓取的协议文件。它对遵守规则的友好爬虫(如搜索引擎蜘蛛)有效,但对恶意爬虫作用有限,可作为一道辅助防线。
在网站根目录(如 /www/wwwroot/yourdomain.com)下创建或编辑 robots.txt文件,针对特定AI爬虫或垃圾蜘蛛添加规则:
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: AhrefsBot
Disallow: /
此方法旨在引导合规爬虫,而非强制拦截。
⚙️ 进阶配置:自动化封禁IP
对于更持久的恶意攻击,可以考虑在Nginx层面实现IP地址的自动封禁。
-
核心思路:通过自定义脚本(如PHP、Python)或日志分析工具,识别出频繁恶意访问的IP地址,并将其写入一个文本文件(如
banned_ips.txt)。 -
修改WAF配置:然后,可以修改宝塔面板的Nginx防火墙(WAF)核心配置文件
waf.lua,使其在每次请求时检查客户端IP是否存在于封禁列表中。如果存在,则直接断开连接(返回444状态码)。 -
注意事项:此操作涉及修改WAF核心文件,存在一定风险,建议在操作前务必备份,并对服务器配置有深入了解。
✅ 配置生效与验证
-
保存与重启:完成所有配置修改后,保存配置文件,并重启Nginx服务使更改生效。
-
测试效果:你可以使用
curl命令模拟恶意爬虫的请求来测试规则是否生效。例如,下面的命令模拟一个名为"AhrefsBot"的爬虫访问你的网站:curl -I -A "AhrefsBot" http://yourdomain.com如果返回
403 Forbidden,则说明配置成功。
💎 重要提醒
-
谨慎更新名单:在配置User-Agent黑名单时,务必仔细甄别,避免误伤正规的搜索引擎蜘蛛(如Baiduspider、Googlebot),否则会影响网站在搜索引擎的收录和排名。
-
组合使用效果更佳:建议将
robots.txt的友好告知与Nginx的强制拦截结合使用,以实现更全面的防护。
如果直接配置nginx配置文件可以根据上面的方法加入到相应的vhost中即可,注意必须在server配置内
更多推荐




所有评论(0)