
在 宝塔 + Nginx + PHP 下防止网站被采集或爬虫抓取,可以从 “Nginx层 + PHP层 + 应用层” 三个层面入手实现综合防护。下面是详细的防爬方案(实战级):
🧱 一、Nginx 层防护(最关键)
✅ 1. 限制请求频率(防止高频采集)
编辑宝塔面板中网站的 Nginx 配置文件,在 server {} 内添加:
# 定义限速区域
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
...
# 限制单IP请求速率
limit_req zone=req_limit_per_ip burst=5 nodelay;
# 限制并发连接数
limit_conn addr 10;
# 如果超出限制则返回错误
error_page 503 = @limiterror;
location @limiterror {
return 503 "Access Denied";
}
}👉 说明:
rate=1r/s 表示每秒允许 1 次请求。
burst=5 表示允许瞬间突发 5 次。
超过则会直接拦截,非常有效对付采集器。
✅ 2. 屏蔽常见爬虫 UA(User-Agent)
在 nginx.conf 或网站配置中添加:
if ($http_user_agent ~* (curl|wget|python|scrapy|httpclient|java|go-http|spider|bot)) {
return 403;
}👉 可屏蔽:
curl、wget、Python、Scrapy、HttpClient、Go、常见采集蜘蛛。
✅ 3. 防止图片等资源被盗链
location ~* \.(jpg|jpeg|png|gif|mp4|avi|webp)$ {
valid_referers none blocked server_names *.yourdomain.com;
if ($invalid_referer) {
return 403;
}
}⚙️ 二、ThinkPHP 层防护(后端逻辑)
✅ 1. 验证请求来源
在 middleware 或 BaseController 中添加:
public function initialize()
{
$referer = request()->header('referer');
$userAgent = request()->header('user-agent');
if (empty($referer) || strpos($referer, request()->domain()) === false) {
abort(403, '非法请求');
}
if (preg_match('/(curl|wget|python|httpclient|spider|bot)/i', $userAgent)) {
abort(403, '拒绝爬虫访问');
}
}✅ 2. Token / 签名验证机制(API类接口必须加)
每个请求都必须附带签名(timestamp + token + sign):
$sign = md5($secretKey . $timestamp . $userId);
服务器验证:
时间戳有效期(如 5 分钟)
签名正确性
👉 防止伪造请求和批量采集
✅ 3. 图形验证码 / 滑块验证(表单与接口)
在登录、搜索、提交等入口加上验证码,例如使用:
think-captcha 扩展
或第三方滑块验证(如极验、hCaptcha)
🧩 三、应用层策略(前端 + JS)
✅ 1. 动态加载数据(前端异步加载)
例如:
页面主结构先渲染;
关键数据通过 AJAX 拉取(并带签名验证)。
📦 采集器无法轻易抓到内容。
✅ 2. JS混淆 + 加密接口参数
混淆前端 JavaScript;
对请求参数做加密(AES/BASE64),服务器端再解密。
✅ 3. 加入随机延时或伪装
对爬虫来说,页面加载太慢、数据格式变化,会增加解析难度。
🧰 四、宝塔额外策略
✅ 1. 使用 “网站防火墙插件”
宝塔有 “防火墙插件” 或 “宝塔安全加固”,可以:
拦截SQL注入;
限制User-Agent;
防止CC攻击。
✅ 2. 配合 Cloudflare / CDN
如果访问量大,可以让 Cloudflare 过滤大量垃圾流量,尤其对海外采集效果好。
🚀 综合建议
| 防护层 | 推荐措施 |
|---|---|
| Nginx层 | 限速 + 屏蔽UA + 防盗链 |
| ThinkPHP层 | Referer验证 + Token签名 + 验证码 |
| 前端层 | 异步加载 + 参数加密 |
| 安全层 | 宝塔防火墙 + CDN防护 |
最后
以上就是热心网友最近收集整理的关于nginx网站怎么防盗链和避免采集爬虫的全部内容,更多相关nginx网站怎么防盗链和避免采集爬虫内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复