图片防盗链的实现竟然如此简单?

几何心凉
2022年度博客之星前端领域TOP 1
博客专家认证
2021-11-03 08:43:04
加精

前言

防盗链,就是防有人盗用你的链接。别人在他的网站上引用了你的资源(图片,音频),这样就会浪费你的流量,资源被引用的多了起来,你这边的服务器可能就扛不住挂了,你说这是多么悲哀的事情!

一般情况下以图片防盗链居多,我们也来看看图片防盗链是如何做出来的。

的声卡是否

图片防盗链

先来看个图,这个图是我在本地启了一个服务后,分别加载了百度和360搜索两个网站的图片链接,对应防盗链下的样子(说好的美少女呢)

 

 

 

百度的做法是用另外一张图片替换了,而360搜索的做法更粗暴,直接出现了裂图,访问403直接给Forbidden了。

这就是所谓的图片防盗链了,毕竟看到这样的图,大家也没了兴致,和之前想要的图片差距太大,也就没必要再保留了

那么关键部分来了,图片防盗链是如何做到的呢?且看下图

 

 

 

图中所示,在请求头中有Host(请求的主机)和Referer(来源)两个参数,之所以会形成防盗链,那是因为Host和referer所对应的值不相同造成的。

下面我们就直接来实践一下,做一个图片防盗链,上菜;

 

 

 

 

该图为整个文件夹目录结构,下面参考该目录结构来做,继续来撸。

 


 
  1. // js部分

  2. const fs = require('fs');

  3. const path = require('path');

  4. const http = require('http');

  5. const url = require('url');

  6. const getHostName = function (str) {

  7. let { hostname } = url.parse(str);

  8. return hostname;

  9. };

  10.  

  11. http.createServer((req, res) => {

  12. let refer = req.headers['referer'] || req.headers['referrer']; // 请求头都是小写的

  13. // 先看一下refer的值,去和host的值作对比,不相等就需要防盗链了

  14. // 要读取文件 返回给客户端

  15. let { pathname } = url.parse(req.url);

  16. let src = path.join(__dirname, 'public', '.' + pathname);

  17. // src代表我要找的文件

  18.  

  19. fs.stat(src, err => { // 先判断文件存不存在

  20. if (!err) {

  21. if (refer) { // 不是所有图片都有来源

  22. let referHost = getHostName(refer);

  23. let host = req.headers['host'].split(':')[0];

  24.  

  25. if (referHost !== host) {

  26. // 防盗链

  27. fs.createReadStream(path.join(__dirname, 'public', './1.jpg')).pipe(res);

  28. } else {

  29. // 正常显示,如果路径存在,可以正常显示直接返回

  30. fs.createReadStream(src).pipe(res);

  31. }

  32. } else {

  33. // 正常显示,如果路径存在,可以正常显示直接返回

  34. fs.createReadStream(src).pipe(res);

  35. }

  36. } else {

  37. res.end('end');

  38. }

  39. });

  40.  

  41. }).listen(8888);

  42.  

通过以上不到40行的代码就完成了图片防盗链,想来也并没有辣么麻烦,利用请求头来做的事情还是蛮多的,先来看看防盗链的效果吧


 
  1. <-- html部分 -->

  2. <body>

  3. <img src="http://www.chenhd.me:8888/2.png" />

  4. </body>

  5.  

这里我们修改一下hosts文件,把127.0.0.1指定为两个不同的域名访问

  1. 127.0.0.1 www.chenhd.me

  2. 127.0.0.1 www.chd.me

友情提示

  • windows系统修改hosts文件地址为C:\Windos\System32\drivers\etc下的hosts文件,拷贝hosts文件修改后替换即可

  • mac系统下较为方便通过终端直接sudo vi /etc/hosts修改即可

由于html部分我们图片引用的地址就是www.chenhd.me域名下的图片,所以这种情况属于正常访问,直接展示2.png图片了,就是这么酷

 

 

 

当修改域名为www.chd.me的时候,再次访问就发现已经替换为防盗链图片1.jpg了,看如下效果

 

 

 

以上内容就实现了如何做一个图片防盗链,防止别人使用你的资源,当然不仅仅是图片防盗链,音频,视频等也可以根据此方法实现,之后大家也可以在工作中尝试尝试。

 

原文:https://juejin.im/post/5adc0d03518825673a2022b7

...全文
559 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
拉文麦克 2021-11-13
  • 打赏
  • 举报
回复

大网站没必要防盗链,人家免费给你做了外链,你还防盗链。

  • 打赏
  • 举报
回复

那我伪造referer不是一样能获取

img

blog_1103 2021-11-04
  • 打赏
  • 举报
回复

那我f12盗图不还是可以复制使用

  • 打赏
  • 举报
回复 1

新知识get

请叫我阿ken 2021-11-03
  • 打赏
  • 举报
回复 2

学习了 牛b

UZCMS镜像程序采集系统是一款全自动采集复制网站的web应用程序,目前支持95%以上的网站类型采集!它采用PHP程序架构,安全高效,简单,灵活。程序首创一键复制整站、正则替换任意修改网站任意位置的信息,做成你想做的样子,达到即使1000个人采集的是同一个网站,却每个人都不相同的效果。可以自动采集图片,并成功突破多种图片防盗链!利用本程序,可以快速部署站点,自动更新内容,程序内容使用万能通配符,省去目标站规则更新您也要更新的烦恼!堪称史上最牛的镜像采集程序。 程序后台在线演示帐号密码均为 admin 相对于市面上其他镜像程序或采集工具,本程序具有如下特点: 1. 无需安装、使用简单:只需输入目标站地址,就可以复制一个完全一样的镜像程序;通过简单的数据替换,修 改CSS布局,即可制作出一个全自动更新的网站; 2. 全站伪静态.html结尾:无论您偷取什么样的网站,ASP,PHP,ASPX,本程序都会在内部自动转换参数,全部以.html伪静态方式结尾,如果您觉得我们默认的URL路径不好用或者不喜欢,没关系!我们为您准备了各种服务 器下的伪静态组件,您只需要简单配置,即可轻松完成Rewrite!每个用户的想法不同,Rewrite出来的样式也不同,如此使用自如的方式,极大的优化了搜索引擎的亲和力! 3. 全站缓存时效机制:后台设置缓存更新时间,会根据访客的访问情况自动更新缓存,保持和目标站内容一致:并且自带一键清除所有缓存的功能。极大的提高了程序访问速度,即使目标站短时间内Down机了,您的网站依然畅通无忧! 4. 支持多目录采集:如果目标站使用了多个目录,本站亦可自动将所有目录内的站点内容采集过来,形成一个站点 5. 全站伪原创:强大的SEO机制,如果启用伪原创,将极大的提高数据的原创性,内置8000组常用词汇,并且支持用户自己更改词汇设置,向搜索引擎亮剑; 6. 突破图片防盗链:程序内置多种图片防盗链破解机制,程序也会不断的更新并且完善突破防盗链,即使对方有图片防盗链功能,亦可轻松突破; 7. 支持不同**的图片采集:比如百度、淘宝这样的大型站点,图片和网站使用了不同的**;不同的服务器,本程序亦可将所有图片采集过来,同样可突破图片盗链; 8. 可自由修改网页内容/广告:通过简单的替换规则、可以将目标站站内任意内容、样式、广告、替换成自己想要的内容(html代码替换);可以删除不需要的内容,这一切只需要看的懂最简单的html即可,如果您不会,没关系,我们的售后会给你提供远程服务,现场教学; 9. 支持正则表达式屏蔽、删除;程序内置转码机制,将繁琐的正则表达式,简单化,只需要一个开头一个结尾,即可轻松屏蔽或替换任何内容; 10. 支持网站使用多级**/多级目录:程序内置了目录、**规则,即使您使用的是多级**/多级子目录也不会影响到程序的正常使用,也就是说您一个**可以用UZCMS建无数个站。 11. 支持自定义模板风格:通过正则表达式,屏蔽目标站的风格模块,将目标站的CSS文件下载到本地,即可实现自己制作完全脱离目标站的独立风格模板(新手需要帮助可以联系我们); 12. 支持站群功能:通过本程序的镜像复制系统,可以完全复制不限数量的站群,并且制作各种程序的伪原创词汇,达到百站相存,站站不一的效果; 13. 制作淘宝客等商务站点:支持采集复制淘宝客,拍拍客等盈利型站点,只需要在正则替换联盟PID即可 14. 支持代理服务器采集,避免目标站点封IP; 15. 支持登录采集,即使是目标站需要登录才能查看的VIP内容,也有一定概率可以采集; 16. 支持多种编码,购买一套程序我们是给您GBK UTF-8两个版本的程序,想采集什么编码的站就采集什么编码。终生无忧; 17. 突破图片水印,只需要在配置文件里写上目标站图片上的水印文字,即可轻松祛除; 18. 程序自带安全保护,程序采用无需数据库构架,后台登陆账号密码必须修改文件才能实现生效,有效防止SQL漏洞,造成网站安全隐患。
UZCMS镜像程序采集系统是一款全自动采集复制网站的web应用程序,目前支持95%以上的网站类型采集!它采用PHP程序架构,安全高效,简单,灵活。程序首创一键复制整站、正则替换任意修改网站任意位置的信息,做成你想做的样子,达到即使1000个人采集的是同一个网站,却每个人都不相同的效果。可以自动采集图片,并成功突破多种图片防盗链!利用本程序,可以快速部署站点,自动更新内容,程序内容使用万能通配符,省去目标站规则更新您也要更新的烦恼!堪称史上最牛的镜像采集程序。 程序后台在线演示帐号密码均为 admin 相对于市面上其他镜像程序或采集工具,本程序具有如下特点: 1. 无需安装、使用简单:只需输入目标站地址,就可以复制一个完全一样的镜像程序;通过简单的数据替换,修 改CSS布局,即可制作出一个全自动更新的网站; 2. 全站伪静态.html结尾:无论您偷取什么样的网站,ASP,PHP,ASPX,本程序都会在内部自动转换参数,全部以.html伪静态方式结尾,如果您觉得我们默认的URL路径不好用或者不喜欢,没关系!我们为您准备了各种服务 器下的伪静态组件,您只需要简单配置,即可轻松完成Rewrite!每个用户的想法不同,Rewrite出来的样式也不同,如此使用自如的方式,极大的优化了搜索引擎的亲和力! 3. 全站缓存时效机制:后台设置缓存更新时间,会根据访客的访问情况自动更新缓存,保持和目标站内容一致:并且自带一键清除所有缓存的功能。极大的提高了程序访问速度,即使目标站短时间内Down机了,您的网站依然畅通无忧! 4. 支持多目录采集:如果目标站使用了多个目录,本站亦可自动将所有目录内的站点内容采集过来,形成一个站点 5. 全站伪原创:强大的SEO机制,如果启用伪原创,将极大的提高数据的原创性,内置8000组常用词汇,并且支持用户自己更改词汇设置,向搜索引擎亮剑; 6. 突破图片防盗链:程序内置多种图片防盗链破解机制,程序也会不断的更新并且完善突破防盗链,即使对方有图片防盗链功能,亦可轻松突破; 7. 支持不同域名的图片采集:比如百度、淘宝这样的大型站点,图片和网站使用了不同的域名;不同的服务器,本程序亦可将所有图片采集过来,同样可突破图片盗链; 8. 可自由修改网页内容/广告:通过简单的替换规则、可以将目标站站内任意内容、样式、广告、替换成自己想要的内容(html代码替换);可以删除不需要的内容,这一切只需要看的懂最简单的html即可,如果您不会,没关系,我们的售后会给你提供远程服务,现场教学; 9. 支持正则表达式屏蔽、删除;程序内置转码机制,将繁琐的正则表达式,简单化,只需要一个开头一个结尾,即可轻松屏蔽或替换任何内容; 10. 支持网站使用多级域名/多级目录:程序内置了目录、域名规则,即使您使用的是多级域名/多级子目录也不会影响到程序的正常使用,也就是说您一个域名可以用UZCMS建无数个站。 11. 支持自定义模板风格:通过正则表达式,屏蔽目标站的风格模块,将目标站的CSS文件下载到本地,即可实现自己制作完全脱离目标站的独立风格模板(新手需要帮助可以联系我们); 12. 支持站群功能:通过本程序的镜像复制系统,可以完全复制不限数量的站群,并且制作各种程序的伪原创词汇,达到百站相存,站站不一的效果; 13. 制作淘宝客等商务站点:支持采集复制淘宝客,拍拍客等盈利型站点,只需要在正则替换联盟PID即可 14. 支持代理服务器采集,避免目标站点封IP; 15. 支持登录采集,即使是目标站需要登录才能查看的VIP内容,也有一定概率可以采集; 16. 支持多种编码,购买一套程序我们是给您GBK+UTF-8两个版本的程序,想采集什么编码的站就采集什么编码。终生无忧; 17. 突破图片水印,只需要在配置文件里写上目标站图片上的水印文字,即可轻松祛除; 18. 程序自带安全保护,程序采用无需数据库构架,后台登陆账号密码必须修改文件才能实现生效,有效防止SQL漏洞,造成网站安全隐患。

304,300

社区成员

发帖
与我相关
我的任务
社区描述
欢迎加入几何心凉的前端社区,本社区活动丰富可以拿到众多周边礼物,本社区还对接Vue技能树可以更加系统的进行学习,还为大家定期举办博主成长计划,助您赢在CSDN同时带您遨游在前端技术的海洋中!!
前端学习经验分享 个人社区 北京·丰台区
社区管理员
  • 几何心凉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

诚挚的邀请大家加入几何心凉社区,在这里您可以结实挚友、提升技术、分享经验、成就自己

  • 【社区活动】本社区受官方长期扶持,您可以通过活动打造个人IP,让更多的人受益于您的分享,同时我们还会奉上精美周边;
  • 【赢在CSDN】社区会对社区成员开设博主扶持计划,集结优质博主分享成长经验,更是疑问在线解答,定期直播连麦,只要您是本社区成员皆可免费享受此权益,让我们携手共进助您速获万粉头衔;
  • 【Vue技能树】本社区创建人同时作为Vue技能树构建者,可为本社区开设技能树投稿通道,获得此权益后我们的高质量的文章被技能树收录获得更多曝光机会;
  • 【简历/就业指导】本社区创建者目前兼职高校就业指导,如果您是学生准备找工作或者您是职场人在应聘中遇到任何问题都可以在这里寻求帮助,我们会定期开设简历审查、面试技巧等就业方面的直播讲解;
  • 【技术交流】任何语言任何方向的技术文章我们都可以汇聚于此,大家可以摸鱼时间可以来此处提升自己,遨游在技术的海洋中;
  • 【立码吐槽】不管你是学生还是打工人,相信在生活中肯定有不断的新鲜事发生,这些事情可以是令你高兴的(比如今天过生日)可以是伤心的(比如我们丢了一个发卡)当然还会有很多,不满、发泄、求安慰等等,那么你可以在这个专栏中做出分享,求一句生日快乐、上岸顺利、加油老铁等等暖心的话;相信我们社区的伙伴看到后一定会速来吐槽;
  • 【bug记录】开发中的坑、学习中的雷,我们皆可投递于此,让更多的人借着分享精准避免从而高效开发;
  • 【更多】更多专栏正在筹备中。。。如果您是社区成员、如果您想为社区建设贡献力量,可以私聊社区管理员;

试试用AI创作助手写篇文章吧