当前位置:首页 > 云服务器 > 正文

图片服务器 防盗链

服务器 防盗链通过设置Referer校验、签名验证等技术,限制非授权域名访问,有效防止

什么是图片服务器防盗链

定义:图片防盗链(Hotlink Protection)是一种通过技术手段限制外部网站直接引用本站资源的策略,其核心目标是防止他人未经授权地将你的图片URL嵌入到他们的网页中,从而盗用带宽、流量或内容价值,典型场景包括博客抄袭文章配图、论坛恶意嵌套广告等行为。

关键概念对比 正常访问 盗链行为
来源域名 与图片所属站点一致 第三方陌生域名
Referer头信息 合法页面跳转路径 缺失/杜撰/跨站请求
服务器响应方式 正常返回图片二进制数据 拦截并返回错误代码(如403)


常见实现方案及配置示例

Nginx配置方案

location ~ .(jpg|jpeg|png|gif)$ { valid_referers none blocked server_names .example.com; if ($invalid_referer) { return 403; # 禁止空Referer或非白名单域名访问 } # 可选:添加水印增强威慑效果 image_filter test "/usr/local/bin/addwatermark --input $request_filename --output /dev/null"; }

说明:通过检查HTTP请求头的Referer字段判断是否来自允许的源站,若不符合则拒绝响应,可结合水印工具进一步保护原创性。

图片服务器 防盗链 第1张

️ IIS环境设置步骤

  1. 打开IIS管理器 → 选择目标站点 → “HTTP响应标头”;
  2. 新建自定义标头,名称填入Access-Control-Allow-Origin,值为当前站点域名;
  3. 启用URL重写规则模块,添加如下正则表达式匹配规则: <rule name="AntiLeech" patternSyntax="Wildcard"> <match url=".jpg" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTP_REFERER}" pattern="^https?://([a-zA-Z0-9-]+.)?example.com/?" negate="true" /> </conditions> <action type="AbortRequest" statusCode="403" /> </rule>

️ CDN服务商支持情况

主流云厂商均提供内置防盗链功能:

| 平台 | 配置路径 | 特色功能 |

|————|————————–|——————————|

| Aliyun OSS | Bucket属性→防盗链设置 | 支持IP黑白名单+UA过滤 |

| Tencent COS| 存储桶概览→访问控制 | 可设置特殊密钥签名验证 |

| Qiniu | 空间管理→防盗链管理 | 实时日志监控+自动封禁策略 |


高级防护技巧组合拳

  1. 动态水印叠加

    使用Python PIL库或FFmpeg工具链,在图片输出前自动添加半透明LOGO及用户ID水印,既保留观赏性又具备溯源能力,示例代码片段:

    图片服务器 防盗链 第2张

    from PIL import ImageDraw, ImageFont def add_watermark(img): draw = ImageDraw.Draw(img) font = ImageFont.truetype("arial.ttf", size=24) draw.text((10,10), "©MySite.com", fill=(255,255,255,128), font=font) return img

  2. Token时效认证机制

    为每个合法请求生成短期有效的签名令牌(如JWT),要求客户端携带该参数才能获取资源,适用于API接口调用场景,有效遏制爬虫批量抓取。

    图片服务器 防盗链 第3张

  3. User-Agent黑名单库

    维护常见爬虫UA特征库(如Scrapy默认标识),对可疑请求直接降权处理,推荐使用开源项目fake-useragent进行模拟测试。

  4. 效果验证与监控方法

    指标类型 检测工具 预期表现
    流量消耗 AWStats/百度统计 外部引用占比下降至5%以下
    异常请求日志 ELK Stack 每日拦截次数<总请求量的0.1%
    性能影响 WebPageTest TTI指标波动幅度控制在±10%内


    常见问题与解答

    Q1: 如果用户通过浏览器直接打开图片链接会怎样?

    :此时由于没有合法的Referer头信息,会被判定为盗链行为而触发403错误,建议在网站底部添加明确的图片使用说明,引导用户通过正规渠道查看原图。

    Q2: 开启防盗链后会影响搜索引擎收录吗?

    :不会,主流搜索引擎(百度/谷歌)在抓取图片时会携带正确的Referer头信息,只要将搜索引擎域名加入白名单即可保证正常收录,例如在Nginx配置中添加:

    valid_referers examples.com www.baidu.com

0