我学会了做网站的防盗链

学会企业级网站优化一篇就够了(LNMP之全优化)!!! 最近整理了一下Nginx的优化,详细介绍,防盗链,更改用户与组、配置网页缓存、日志切割、设置连接超时等 阅读详情

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

👉这是一个或许对你有用的开源项目

国产Star破10w的开源项目,前端包括管理后台、微信小程序,后端支持单体、微服务架构

RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRM、AI大模型、IoT物联网等功能:

  • 多模块:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • 微服务:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK17/21+SpringBoot3、JDK8/11+Spring Boot2双版本 

来源:程序员小富


下午摸鱼的时候遇到了一件有意思的事,在网上找到一个资源站,将资源站的 url 放到自己的博客里,想白嫖一波,结果在我自己的博客里链接失效了,折腾半天忽然想起来,这个网站应该是做了防盗链处理。

什么是盗链

盗链是个什么操作,看一下百度给出的解释:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。术语听得有点迷糊?那我们简单的举个栗子:

平时我们在TX网看新闻,里边有很多劲爆的图片、视频资源,每天吸引上亿的用户活跃浏览,赚着大把的广告费。有一天一个穷比程序员小富突发奇想,也想建一个自己的网站吸引用户赚广告费,但苦于自己没有资源,他灵光一闪盯上了TX网,心想:要是把它的资源为我所用,这样就能借助TX的资源为自己赚钱。

于是他通过爬虫等一些列技术手段,把TX网资源拉取到自己的小富网,绕过了TX网的展示页面直接呈现给用户,达到了自己不提供资源又能赚钱的目的。

而如此做法却严重的损害了TX网的利益,不仅分流了大量用户,而且由于小富网的大量间接资源请求,大大增加TX网服务器及带宽的压力。

TX网蛋糕被动,忍无可忍决定封杀小富网这类空手套白狼的站点,终于祭出防盗链系统,对除了在TX网本站以外发起的资源请求全部封杀,小富网没法再拉取资源,小富一下子又成了穷比,嘤嘤嘤~上边我们简单的举例说了什么是网站的盗链,再总结的简单点就是小站点盗取大站点资源以此来获利的一种行为。

既然有人盗就会有人防盗,接下来在看看怎么防止盗链。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

如何防盗链

防盗链在google,新浪,网易,天涯等,内容为主的网站应用的比较多,毕竟主要靠资源内容赚钱的嘛。

提到防盗链的实现原理得从HTTP协议说起,上边我们说过设置防盗链以后,会对 “除了在TX网本站以外发起的资源请求全部封杀”,那么问题来了,如何识别一个请求URL是从哪个站点发出的呢?

熟悉HTTP协议的小伙伴应该知道,在HTTP协议头里有一个叫referer的字段,通过referer 告诉服务器该网页是从哪个页面链接过来的,知道这个就好办了,只要获取 referer 字段,一旦检测到来源不是本站即进行阻止或者返回指定的页面。

防盗链的核心理念:尽量做到不让外站获取到我的资源,即便能通过一些手段获取到资源,也让你的获取过程异常繁琐复杂,无法实现自动化处理,或者干脆就给你有问题的资源恶心死你。

做防盗链的方法比较多,基于HTTP协议头的referer属性也只是其中一种,下边我们来分析几种实现防盗链的方法,如果你有更好的实现方法欢迎留言哦。

基于 HTTP 协议的 referer

基于HTTP协议中的 referer做防盗链,可以从网关层或者利用AOP、Filter拦截器实现。

使用Nginx在网关层做防盗链,目前是最简单的方式之一。通过拦截访问资源的请求,valid_referers 关键字定义了白名单,校验请求头中referer地址是否为本站,如不是本站请求,rewrite 转发请求到指定的警告页面。

在 server 或者 location 配置模块中加入:valid_referers none blocked,其中 none : 允许没有http_refer的请求访问资源(比如:直接在浏览器输入图片网址);blocked : 允许不是http://开头的,不带协议的请求访问资源。

注意 :这种实现可以限制大多数普通的非法请求,但不能限制有目的的请求,因为可以通过伪造referer信息来绕过。

[root@server1 nginx]# vim conf/nginx.conf

      location / {
            root /web;
             index index.html;
      }
      location ~* \.(gif|jpg|png|jpeg)$ {
            root /web;
            valid_referers none blocked www.chengxy-nds.top;
            if ($invalid_referer){
                #return403;
                rewrite ^/ https://img-blog.csdnimg.cn/20200429152123372.png;
         }
     }

     server {
         listen 80;
         server_name www.chengxy-nds.top;
         location / {
                 root /bbs;
                 index index.html;
         }
    }
    
[root@server1 nginx]# systemctl restart nginx

Filter拦截器的实现方式更加简单,拦截指定请求URL,拿到HttpServletRequest 中 referer值比对是否为本站。

public class MyFilter implements Filter {
    @Override
    public void doFilter(HttpServletRequest request, HttpServletResponse response,
            FilterChain chain) throws IOException, ServletException {
            
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        String referer = req.getHeader("referer");
        
        if (referer == null || !referer.contains(req.getServerName())) {
            req.getRequestDispatcher("XXX.jpg").forward(req, res);
        } else {
            chain.doFilter(request, response);
        }
    }
}

登录验证,禁止游客访问

登录验证这种就属于一刀切的方式,一般在论坛、社区类网站使用比较多,不管你发起请求的站点是什么,到我这先登录,没登录请求直接拒绝,简单又粗暴。

图形验证码

图形验证码是一种比较常规的限制办法,比如:下载资源时,必须手动操作验证码,使爬虫工具无法绕过校验,起到保护资源的目的。

实现防盗链的方式还有很多,这里就不一一列举了(别问,问就是还有很多)。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

总结

本来没想写这篇文章,下午搭建自己的博客整理资料,白嫖别人资源没成功有感而发,哈哈哈~ 正好借此机会简单的介绍一下防盗链的概念,提醒 everyone 在开发中要提高安全意识。其实盗链与防盗链就是像是矛与盾一样,说不好是矛更锋利还是盾更坚固,做不到绝对的防盗。道高一尺魔高一丈,盗链的手段越高,相应的防盗技术也会越成熟。


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,“长按”或“扫描”下方二维码噢:

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
视频播放403 Forbidden错误全解析:从防盗链到Token鉴权的排查与解决 HTTP 403 Forbidden状态码是客户端错误的一种,其核心含义是服务器理解请求但拒绝执行。在Web开发与运维实践中,该状态码常与资源访问控制机制紧密相关,其背后原理涉及服务器安全策略、访问规则及网络协议交互。从技术价值看,正确处理403错误是保障Web应用安全、实现细粒度资源管控的关键,尤其在媒体流、API接口等场景下至关重要。具体到视频播放领域,403错误的高频触发点包括防盗链机制和访问鉴权失效。防盗链通过校验HTTP Referer请求头来阻止非授权站点盗用资源,是保护带宽与版权的基础手段。而 阅读详情

相关推荐

智能驾驶域控(ADCU)方案介绍

本文主要对智能驾驶域控(ADCU)方案相关知识进行总结,以加深理解,及方便后续查漏补缺。

liuxu324的博客 1574

nginx优化与防盗链配置

一方发送结束连接请求,等待对方的确认,同时仍然可以发送数据。

qq_51545656的博客 1955

PD虚拟机安装CentOS7后必做的Parallels Tools配置指南(附常见错误解决)

本文详细指导在Mac的Parallels Desktop虚拟机中安装CentOS 7后如何高效配置Parallels Tools,包括环境准备、镜像挂载、依赖问题解决及性能优化。特别针对常见错误如挂载失败、依赖缺失等提供实用解决方案,帮助用户实现主机与虚拟机间的无缝交互和显示优化。

weixin_29288313的博客 302

为了资料不被白嫖,我学会了做网站的防盗链

下午摸鱼的时候遇到了一件有意思的事,在网上找到一个资源站,将资源站的 url 放到自己的博客里,想白嫖一波,结果在我自己的博客里链接失效了,折腾半天忽然想起来,这个网站应该是做了防盗链处...

小詹学python的博客 161

CANoe信号传输故障排查指南

本文提供了全面的CANoe信号传输故障排查指南,涵盖从硬件连接、通道配置到软件脚本与数据库加载的全链路诊断。针对常见的通道指示灯不亮、信号无法发送及ECU握手失败等问题,给出了基于CANoe工具和CAPL脚本的详细排查步骤与解决方案,帮助工程师系统化定位并解决实车测试中的通信故障。

ice55的博客 258

Python实战:5分钟搞定VCF文件中每个样本的SNP统计(附bcftools安装指南)

本文介绍了三种高效统计VCF文件中每个样本SNP数量的Python方法,包括原生解析、结合bcftools的推荐方案以及使用PyVCF3专业库。特别推荐bcftools结合Python的方法,适用于中大型VCF文件,显著提升处理效率。文章还提供了bcftools安装指南和进阶统计技巧,帮助生物信息学分析人员快速完成SNP统计任务。

weixin_30555125的博客 494

服务器加网站防盗链,网站防盗链的设置方法介绍(适用于IIS和Apache)

这篇文章主要为大家详细介绍了网站防盗链的设置方法介绍(适用于IIS和Apache),具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。做网站的朋友一般都会遇到这样的一种情况,就是别人的网站经常会调用我们自己网站的图片或者文件,这无形之中会增加我们的服务器的压力,尤其是对于一些服务器带宽并不是十分富裕的网站来说就更是雪上加霜。因此我们需要学会设置防盗链来应对或者说来...

weixin_36046776的博客 1069

基于价值的深度强化学习:DQN

本文主要是介绍DQN原理和算法伪代码和代码实现,算法实现包括pytorch版本和stable-baselines3版本

溯源的专栏 1085

学会Nginx优化与防盗链预防坏蜀黍

首先需要了解我们当前系统结构和瓶颈,了解当前使用的是什么,运行的是什么业务,都有哪些服务,了解每个服务最大能支撑多大的并发,比如Nginx作为静态资源服务的并发是多少,最高的瓶颈在哪里,能支持多少pqs(每秒查询率)的访问请求等,也可以通过日志去分析请求的情况,当然也可以通过我们前面介绍到的stub_status模块查看当前的连接情况,也可以对线上的业务进行压力测试(低峰期),去了解当前这套系统能承担多少的请求和并发,已做好相应的评估,这个是我们做性能优化最先考虑的地方...

masonyong的博客 684

从硅片到时钟:揭秘SiTime MEMS谐振子的精密制造之旅

本文深入解析了SiTime MEMS谐振子的精密制造工艺,从硅晶圆的提纯到DRIE深硅刻蚀,再到真空封装技术,揭示了其如何克服传统石英晶振的局限。通过对比测试数据,展示了MEMS谐振子在精度、可靠性和生产效率上的显著优势,特别是在5G基站和汽车电子等领域的应用潜力。

weixin_42522953的博客 403

树莓派5安装ROS2小白指南避坑攻略

手把手教你如何在树莓派5上顺利安装ROS2,避开常见问题与陷阱,提升配置效率。针对树莓派5安装ros2过程中的依赖冲突、源配置错误等高频难题提供解决方案,适合新手快速上手。

weixin_35754962的博客 1005

学会分析网站原始访问日志

如果你的博客或网站是搭建在付费主机上,如果你是博客或网站的管理员,如果你连原始访问日志(Raw Access Log)是什么都不知道,或者对其根本不屑一顾,我只能说你是一个不称职的网站管理员,一旦网站出问题,必定是束手无策!     相信大家都在自己的网站上安装了网站统计的代码,

许立峰的专栏 1953

YOLOv11改进 - 卷积Conv | PATConv(Partial Attention Convolution)部分注意力卷积,在减少计算量的同时融合卷积与注意力的优势 | AAAI 2026

本文提出部分注意力卷积(PATConv)机制,并将其集成到YOLOv11中。传统神经网络中,卷积计算密集,注意力机制全局计算冗余,此前的“部分卷积”会丢失未计算通道的特征价值。PATConv通过“通道拆分 - 并行处理 - 结果拼接”的逻辑,给不同通道分配“擅长的任务”,兼顾局部与全局特征。基于此,它还衍生出PAT_ch、PAT_sp和PAT_sf三种细分模块。此外,还提出了动态部分卷积(DPConv),并构建了新的混合网络家族PartialNet。我们将PATConv代码集成到YOLOv11中,实验表明,

魔改工程师的博客 1085

Discuz论坛网站搭建教程,从0开始学会搭建网站

Linux系统使用宝塔面板搭建网站并开启SSL和使用CDN加速网站,网站搭建教程,教程以Discuz X3.4网站程序为例。

zeruns 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

学会Apache网页与安全的优化,让你的技术更加胜人一筹!(网页压缩与缓存、隐藏版本信息与配置防盗链)

文章目录前言:一、Apache的压缩模块(一)、网页压缩(二)、网页gzip概述(三)、Apache的压缩模块(四)、启用网页压缩功能步骤(五)、Apache的压缩模块配置命令二、网页缓存(一)、配置网页的缓存时间概述(二)、启用网页的缓存功能步骤(三)、网页缓存优化配置命令三、安全优化(防盗链)(一)、防盗链概述(二)、防盗链步骤与命令四、隐藏版本信息(一)、配置Apache隐藏版本信息的必要性(二)、隐藏版本信息步骤与命令 前言: 我们在使用Apache 作为Web服务器的过程中,只有对 APache

Gengchenchen的博客 2305

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【Nginx】Nginx防盗链的配置详解

none: #请求报文首部没有referer首部,#比如用户直接在浏览器输入域名访问web网站,就没有referer信息。blocked: #请求报文有referer首部,但无有效值,比如为空。server_names: #referer首部中包含本主机名及即nginx 监听的server_name。arbitrary_string: #自定义指定字符串,但可使用*作通配符。示例: *.timinglee.org www.timinglee.*

2301_79481320的博客 119

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【你也能从零基础学会网站开发】Web建站之javascript入门篇 认识Document文档对象

认识Document对象

极客小俊 1146

零基础自学Nginx 进阶篇 2 Nginx静态资源部署 2.7 Nginx静态资源防盗链 2.7.1 效果展示

零基础自学Nginx 进阶篇 2 Nginx静态资源部署 2.7 Nginx静态资源防盗链 2.7.1 效果展示

代码改变世界 220

破解防盗链的图片的一些方法总结

为什么要处理这些东西,在做网站采集的时候,有时候我们并不想吧网站的图片全部下载下来,而是希望可以引用它原本网站上的图片,这样可以我们既可以拿到资源,又可以节约我们的磁盘空间,不过坏处就是被抓取的网站如果挂了,图片无法访问,那同样我们的服务器去访问也就失败了! nginx 配置server里面的一个路径piclocation /pic/ { set $hostx "";

yoqu的专栏 9287

10分钟带你学会nginx!

什么是nginx? Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的一款应用。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。 如果你不明白上边在说什么的话也没关系,你可以把它当成一个工具软件,接下来我会告诉你它可以做什么以及怎么使用。 安装 既然是个工具,那

拾荒者 586

零基础自学Nginx 进阶篇 2 Nginx静态资源部署 2.7 Nginx静态资源防盗链 2.7.2 实现原理和实现步骤

零基础自学Nginx 进阶篇 2 Nginx静态资源部署 2.7 Nginx静态资源防盗链 2.7.2 实现原理和实现步骤

代码改变世界 251

console.log 不显示到控制台_网站使用CDN加速微信小程序,不显示图片,教你快速解决方法...

网站使用CND加速对网站速度提升有很大帮助,如果网站有对接微信小程序时就会遇到问题。比如小程序图片不能加载,小程序图片不显示及基础的显示错误。针对WordPress博客网站开发的微信小程序就会出现这个问题。网站使用CND加速对网站速度提升本站在给 爱搜博客小程序 升级时就发现WordPress小程序图片不显示。经过排查与分析终于找到了问题所有。网站使用的是百度云CND加速之后与他网站配套的小程序突...

weixin_39823200的博客 652

《7天学会伪静态》第六节:伪静态与301永久重定向、302临时重定向、404页面配置等

通过前边几节的学习我们基本了解了怎么写一个网站的伪静态,但是那其实是入门的一些东西,这一节来一些高端的、特别的,就是用伪静态来配置一些其他方面的东西。根据不同的服务器环境,我们可以用伪静态配置一些规则来实现以下的一些功能:1、301永久重定向2、302临时重定向3、404页面4、防盗链功能这是四种常见的功能,那么具体该怎么做呢?

yongyisou666的博客 351
上一篇: SpringBoot + Tesseract 异步 OCR:发票识别流水线深度解析
下一篇: 程序员工资已经很高了,为什么不舍得消费?
公众号-芋道源码
博客等级 码龄10年 1631粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值