简单的视频防盗链

article/2025/10/12 17:37:07

1.使用hls.js播放视频,页面中无法获得视频的src

hls.js是视频播放的工具文件,在官网上有播放方式,可以产生如上图所示的效果,没有source标签,也就是说,在页面上隐藏掉了视频的url

hls.js文件地址:https://cdn.jsdelivr.net/npm/hls.js@latest

拿到文件后创建一个新的js文件,将浏览器上的代码粘进去,注意如果浏览器自动翻译,要改成原文显示后复制

hls.js播放视频的代码:

var str = '<video id="'+name+'" class="video-js vjs-default-skin" controls preload="auto" ></video>';
$("#videoDiv").append(str);
var video = document.getElementById(''+name);
if(Hls.isSupported()) {var hls = new Hls();hls.loadSource('../static/video/'+name+'.m3u8');hls.attachMedia(video);hls.on(Hls.Events.MANIFEST_PARSED,function() {video.play();});
}

使用时需要根据页面情况自行改动,如果使用不了,去hls.js的官网找,播放网站上的样例视频,F12调试,如果没有source,在复制播放方法

2.拦截器验证网站来源referer

验证网站来源可以抵挡一些小白,原理和方法大家应该会,所以这里省略
3.浏览器与服务器交互,携带一个验证后立即失效的key,可以做到F12获取url无效

我们做了上面的两步之后,打开调试工具,会发现请求的url会出现在network里,只要稍微懂点技术的人就能轻松的找到视频的url,这时我们需要做第三步,为视频播放的请求增加一个key

key的生成方式:我用的是UUID,原则是拥有唯一性就可以了,时效性我们在key值上不做考虑,因为它是一次性的,没有必要弄过期时间。

key的传递:在后台生成cookie,将生成的uuid明文传送到浏览器(注意,这里是可以在浏览器被看见的,不过我们会在js当中为key加密,所以不怕被看见),视频播放时,url需要携带此key,来让进行服务器进行验证,这部分代码可以直接写在拦截器里

key的加密:网上百度的加密方式+自定义加密    原因不多说,安全一些,自定义的加密大家可以自己做 这样加密后的url会是这样的

红框的部分是m3u8格式的视频,是在上传MP4格式的视频之后,用ffmpeg解析拆分的,它可以把视频拆分成很多段的.ts格式的文件,并把这些以.ts结尾的文件名写在xxxx.m3u8的文件里,这样在播放的时候就是分段加载的了

箭头位置是我们的key,也就是uuid加密后的样子,此时由于我们在服务器上会做验证,并且验证之后,更新cookie中的uuid,所以盗链的人在打开F12获取url已经没用了,因为每一次请求都要新的key,并且只要他不知道你的加密方式,就无法模拟key,进行模拟请求

这里需要注意的是,由于我们使用的hls.js播放m3u8格式的视频,在视频的播放中会发送多次请求,这样我们要为每次请求增加key,需要修改hls.js的源码

在var e, t = this.context;这句话和e = this.loader = new n;这句话中间增加代码:

                        var url = t.url;
                        var newUrl = url +"?key="+secret;
                        t.url = newUrl;

这里只是告诉大家要加key的位置。secret是加密后的key,加密的方法可以写在hls.js的文件当中,也可以单独写一个js文件。
4.js加密

我们加密key的方法肯定不能让人看到,由于js在浏览器端是可以被看见的,所以需要加密,可以加密的面目全非(前提是浏览器能读懂),加密方法百度。代码混淆加密后的效果非常好,还有不可逆的加密手段。

注意:要把关键的代码和非关键的代码区分开来,只加密关键代码,这样加密后的js文件才不那么大。

漏洞:利用抓包工具在请求到达服务器之前拦截key

防盗链有更多的解决方案,不过代价太大,这个方案只是简单的防盗措施,可以防住很大一部分人,但并不是真的无懈可击。

ffmpeg:http://www.ffmpeg.org/download.html

 

 


http://chatgpt.dhexx.cn/article/jdGfowX4.shtml

相关文章

html设置referer防盗链,referer与防盗链

referer是什么 referer 中文意思是:参照页面,引用页。 下图直观感受,(づ ̄ 3 ̄)づ image 直接在浏览器中输入url地址来直接访问图片/js/css等资源时是没有referer的, 如果有referer说明是引用过来的,要么是从HTML页面,要么是通过css @import,再或则通过background(url)引用…

防盗链使用

现在很多网站启用了防盗链反爬&#xff0c;防止服务器上的资源被人恶意盗取。什么是防盗链呢&#xff1f; 以图片为例&#xff0c;访问图片要从他的网站访问才可以&#xff0c;否则直接访问图片地址得不到图片 练习&#xff1a;抓取微博图片&#xff1a;http://blog.sina.com…

nginx配置防盗链

现在流行前后端分离开发的情况下&#xff0c;一般我们都会将静态资源放在nginx的html目录下。这种情况下&#xff0c;我们就无法通过Java代码写拦截器来防盗链了。所以这里我们来说明一下如何使用nginx来配置防盗链。 1.我们先修改本地hosts文件&#xff0c;将 www.czx.com 映…

java防盗链_javaWeb防止恶意登陆或防盗链的使用

使用场景:明明引用了一个正确的图片地址,但显示出来的却是一个红叉或写有“此图片仅限于***网站用户交流沟通使用”之类的“假图片”。用嗅探软件找到了多媒体资源的真实地址用下载软件仍然不能下载。下载一些资源时总是出错,如果确认地址没错的话,大多数情况都是遇上防盗链…

防盗链机制

防盗链机制的几种实现 通常防盗链是为了防止图片&#xff0c;视频被盗用。下面简单介绍几种防盗链的机制&#xff1a; 1. 利用HTTP Referer字段 HTTP请求中会包含来自哪个url的点击来源&#xff0c;通过这个referer字段可以检测是否别的网站发送的请求。 2.利用登录验证信息 有…

网络中的防盗链是指什么?

什么是盗链&#xff1f; 比如,别人上传的东西,你直接拿了LINK去,贴到别的论坛或者网站,宣称"有好东西,快来下载",又或者告诉你的朋友"你要这个文件?俺有连接,快下",然后在那里接受别人的滔滔不绝的景仰之情。 “盗链” 的定义是&#xff1a; 此内容不在…

Nginx防盗链

Nginx防盗链的实现原理&#xff1a; 了解防盗链的原理之前&#xff0c;我们得先学习一个HTTP的头信息Referer,当浏览器向web服务器发送请求的时候&#xff0c;一般都会带上Referer,来告诉浏览器该网页是从哪个页面链接过来的。 后台服务器可以根据获取到的这个Referer信息来判…

Nginx-防盗链

目录 一、什么是盗链 如何区分哪些是不正常的用户&#xff1f; Referer理解 二、Nginx配置防盗链 三、使用 curl 测试防盗链 四、企业实战 1.设置返回错误页面 2.整合 rewrite 返回报错图片 一、什么是盗链 在实际生产过程中&#xff0c;我们线上的图片等静态资源&#…

Nginx:防盗链原理和配置

目录 一、防盗链概念 二、Nginx防盗链的具体实现 配置&#xff1a; 三、验证和验证时的问题 真正的验证&#xff1a; 没有none的验证 加上none参数的验证 让报错返回的是一张图片 注意事项&#xff1a; 一、防盗链概念 防盗链简单来说就是存在我们服务中的一些资源&#xff…

Java:eclipse下开发webservice教程

1 环境准备 下载wtp-all-in-one-sdk-R-1.5.4-win32&#xff0c;这个是eclipse的web开发插件 下载jakarta-tomcat-5.0.30 下载axis-src-1_4.zip 2 环境配置 配置tomcat关联到你的eclipse中 将axis-1_4\webapps\axis\WEB-INF\lib中的文件复制到$TOMCATHOME$\…

webservice 教程学习系列(九)——使用cxf框架开发webservice

首先下载两个包&#xff1a;apache-cxf-3.2.7.zip和apache-cxf-3.2.7-src.zip 解压两个包&#xff0c;进入apache-cxf-3.2.7的bin目录 可以看到wsdl2java.bat&#xff0c;这个相当于jdk自带的wsimport.exe的功能&#xff0c;可以将wsdl文件转换成java文件。 这里我的目录是&a…

WebService开发教程

一、webservice 开发 1.webservice介绍 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求&#xff0c;轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务&#xff0c;使用WSDL文件进行说明&#xff0c;…

MyEclipse开发WebService教程

创建一个 webService 工程。 2. 创建一个普通 Java 类 view plain copy to clipboard package com.hmw.jaxws; /** * 提供 WebService 服务的测试类<br> * <b>注意&#xff1a;</b>该类必须有一个无参构造方法&#xff0c;否则无法使用 MyEclipse 的向导为此…

WebService培训教程详解

开发webservice 1. 概述 开发手段&#xff1a;使用JDK开发(1.6及以上版本)使用CXF框架开发(工作中)组成&#xff1a;服务器端客户端 2. 使用JDK开发WebService 1).开发服务器端 Web Service编码&#xff1a;WebService( SEI和SEI的实现类)WebMethod(SEI中的所有方法)发布W…

SoapUI测试webservice接口

方法1、导入wsdl文件 输入参数&#xff0c;点击运行&#xff0c;看到响应结果 方法2、输入wsdl地址 项目名随便起一个&#xff0c;Initial WSDL直接输入wsdl地址&#xff0c;确定即可。

孔浩老师 java 微信_孔浩老师JAVA WebService教程

课程目录&#xff1a;01_webservice快速实例 02_wsimport的使用 03_wsdl和soap讲解(介入了tcpmon工具) 04_SOA的分析(纯属扯淡) 05_dtd讲解 06_schema的命名空间 07_schema的元素和属性的定义 08_schema的语法和建议的编写方式 09_使用jaxb完成对象和xml的转换 10_Stax的基本操…

.Net WebService简单学习

一、什么是WebService Web Service是一个使用开放的XML&#xff08;标准通用标记语言下的一个子集&#xff09;标准来描述、发布、发现、协调和配置这些应用程序&#xff0c;用于开发分布式的交互操作的应用程序。 Web Service技术&#xff0c; 能使得运行在不同机器上的不同应…

java webservice 入门教程_WebService入门实例教程

什么是WebService 通过使用WebService&#xff0c;您的应用程序可以向全世界发布信息&#xff0c;或提供某项功能&#xff0c;它是基于Web的服务&#xff0c;通过Web进行发布、查找和使用。 WebService脚本平台需支持XMLHTTP。 HTTP协议是最常用的因特网协议。 XML提供了一种可…

idea使用xfire方式发布webservice教程

近日在熟悉webservice发布的过程&#xff0c;此处主要讲解xfire方式。 1.使用idea新建一个web项目 步骤1&#xff1a; 按照图中的指定序号建立对应的web项目即可。 步骤2&#xff1a; 填写组织ID和具体项目id&#xff0c;点击进行“下一步”即可。 步骤3&#xff1a; 设置相…

java发布webService服务教程

发布webService服务并使用soap UI测试 发布简单的webService服务同时发布多个webService接口使用SoapUI测试webService接口下载SoapUI并安装打开WSDL文件测试文件上传 示例源码 发布简单的webService服务 新建一个Maven项目pom引入 webService需要的依赖 <dependency>&…