简单的视频防盗链

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

 

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
防盗链是指为了阻止其他网站或用户在未经授权的情况下盗用自己网站的资源而采取的一种措施。在Python中,可以通过设置请求头中的"Referer"字段来进行防盗链。 在给定的代码中,通过设置请求头的"referer"字段来模拟请求时的来源页面。这样,被请求的服务器可以根据Referer字段来判断请求的合法性。如果请求的Referer字段与服务器期望的来源页面匹配,则服务器会正常返回请求的资源。否则,服务器可能会返回错误或者拒绝提供资源。 具体来说,在代码中的header字典中设置了"referer"字段的值为"https://www.pearvideo.com/video_1160135",这是一个示例的来源页面链接。根据实际情况,可以将该字段的值设置为合法的来源页面链接。 在请求中,会根据提供的链接获取视频资源的URL,并进行一些拼接替换操作,最终得到视频的真实URL。然后可以使用Python的requests库发送GET请求,获取到视频资源的内容,并进行保存。 总结起来,这段Python代码通过设置请求头的Referer字段来模拟合法的请求来源,从而实现防盗链的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python爬虫学习--防盗链](https://blog.csdn.net/weixin_30675247/article/details/95668172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python--爬虫,了解防盗链-->解决防盗链,解决反反反爬](https://blog.csdn.net/qq_57663276/article/details/127474123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值