我是靠谱客的博主 热心网友,这篇文章主要介绍nginx网站怎么防盗链和避免采集爬虫,现在分享给大家,希望可以做个参考。

image.png

宝塔 + 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. 验证请求来源

middlewareBaseController 中添加:

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网站怎么防盗链和避免采集爬虫内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(195)

评论列表共有 0 条评论

立即
投稿
返回
顶部