`

js修改referer 解决图片防盗链问题

阅读更多

 最近在项目中遇到了一个问题就是项目中需要显示其他网站上的图片,网上找了好多,但是没有一个具体的代码策略,我在这里给大家提供一个方案。

先说说防盗链的原理,http 协议中,如果从一个网页跳到另一个网页,http 头字段里面会带个 Referer。图片服务器通过检测 Referer 是否来自规定域名,来进行防盗链。

如果盗用网站是 https 的 protocol,而图片链接是 http 的话,则从 https 向 http 发起的请求会因为安全性的规定,而不带 referer,从而实现防盗链的绕过。

 

我的解决方案原理就是使用iframe来绕过图片防盗链,具体就是拿到页面中的图片地址,然后将该图片放在一个iframe里,然后将新的iframe替换到原图片的位置,然后将原图片去掉,完美解决。

具体代码如下:

 

<script type="text/javascript">
 $(document).ready(function() {
    //获取Class为arcContent里面的所有img
    var imglist=$(".mainList img");
    //或使用下面这句,获取ID为divArticle里面的所有img
    //var imglist=$("#divArticle img");
    for(var i=0;i<imglist.length;i++){ 
    	if(imglist[i].getAttribute('src')){
    		url = new URL(imglist[i].getAttribute('src')); 
        	var frameid = 'frameimg' + Math.random();
        	window.img = '<img id="img" width="158" height="108" src=\''+url+''+Math.random()+'\' /><script>window.onload = function() { parent.document.getElementById(\''+frameid+'\').height = document.getElementById(\'img\').height+\'px\'; }<'+'/script>';
    		$(imglist[i]).parent().empty().append('<iframe id="'+frameid+'" src="javascript:parent.img;" frameBorder="0" scrolling="no" width="158" height="108"></iframe>');
        }
    }
}); 
</script>

 

 

分享到:
评论

相关推荐

    javascript操作referer详细解析

    JavaScript中的`referer`是一个关键的HTTP头部字段,它记录了用户从哪个URL访问了当前页面。这个信息对于网站分析、追踪用户来源以及了解流量来源至关重要。在JavaScript中,我们可以使用`document.referrer`来获取...

    php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)

    然而,针对这种情况,开发者可以通过修改PHP代码来突破基于HTTP_REFERER的防盗链措施。 知识点一:HTTP_REFERER和防盗链 HTTP_REFERER是HTTP协议中的一个头部字段,用于标识用户访问当前页面前访问的页面地址。一些...

    Asp.net防盗链实例源码

    Asp.Net防盗链技术是网站保护资源免受非法引用或盗用的重要手段,尤其是在图片、视频、音频等静态资源较多的网站中。本实例源码提供了实现Asp.Net防盗链功能的方法,帮助开发者构建安全的网络环境。下面将详细介绍...

    解决js下referer兼容各大浏览器的方法

    HTTP Header referer这玩意主要是告诉人们我是从哪儿来的,就是告诉人家我是从哪个页面过来的,可以用于统计...防盗链也很简单了,js里判断来路url如果不是本站不显示图片。 众所周知,我们web开发人员痛恨IE浏览器,因

    通过修改referer下载文件的方法

    通过修改`Referer`,可以解决一些特定场景下的文件下载问题,例如绕过某些网站的防盗链机制或满足特殊权限验证。然而,这种方法也有其局限性,比如受限于浏览器的安全策略、跨域限制以及ActiveX对象在现代浏览器中的...

    htaccess 防盗链,防止目录浏览等10大技巧

    9. **设置文件缓存**:通过Header指令设置Cache-Control,可以控制静态资源(如图片、CSS、JS)的缓存策略,提高页面加载效率。 10. **添加URL尾部反斜杠**:尽管是否对SEO有利尚有争议,但为URL添加尾部反斜杠可以...

    [其他类别]PHP防图片盗链程序_script.zip

    4. CDN配合:使用CDN(内容分发网络)服务,可以在边缘节点进行防盗链处理,减轻源站压力。 总之,PHP防图片盗链程序通过多种方式确保只有合法用户或指定来源的网站能够访问图片资源,有效保护了网站的权益。在实际...

    基于java的图片预览带后端

    7. **安全与性能优化**:为防止图片盗链,可以设置防盗链策略,如添加referer检查或者使用签名URL。性能优化方面,可以使用CDN加速图片加载,或者对图片进行懒加载。 8. **错误处理和日志记录**:在处理图片时,...

    面试JAVA程序员常遇到的一些问题.pdf,这是一份不错的文件

    3. 图片防盗链:通过检查HTTP请求头的Referer字段,只允许来自特定源的请求访问图片。 4. 图片木马检测:可以通过扫描文件类型、内容分析、病毒库比对等方式进行检测。 五、数据库方面 1. MySQL查询字段区分大小写...

    阿里云javaAPI

    7. **防盗链和Referer策略**:可以通过设置防盗链策略,限制Object的访问来源,保障数据安全。 8. **版本控制和多版本**:开启版本控制后,OSS会保存Object的所有版本,便于恢复误删除或覆盖的文件。 9. **事件...

    .htaccess重定向和url重写的几个例子.docx

    7. **图片防盗链**: ``` RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://.111cn.net/.*$ [NC] ... RewriteRule .*.(jpg|jpeg|gif|png|bmp|js|css|swf)$ http://.google.com [R,NC] `...

    网站架构技术

    解决问题 数据库访问 使用应用服务器集群改善网站的并发处理能力 问题: 负载均衡情况下session状态的保持? 解决方案: 基于DNS的负载均衡 反向代理 ngix JK2 数据库的读写分离 ...

    第二十七章:apache应用详解及优化1

    本章将深入探讨Apache的优化策略,包括保持连接、网页传输压缩、页面缓存时间、隐藏版本号、防盗链、日志分析、访问控制以及虚拟主机的实现。 ### 一、Apache优化之保持连接、网页传输压缩、页面缓存时间 **1. ...

    awesome-htaccess:也许是理想的.htaccess文件

    总结来说,一个理想的.htaccess文件应具备良好的权限控制、URL重写规则、错误页面定制、资源压缩和防盗链策略,同时考虑性能优化和安全性。通过不断调整和优化,我们可以打造出满足特定需求的.htaccess文件,实现对...

    运维142问不看一定后悔

    62. **防盗链配置**:通过限制 referer 头部来防止其他网站盗用资源。 63. **删除数据区别**:drop 删除表,delete 删除数据行,truncate 清空表数据,但保留表结构。 64. **MySQL主从原理**:主库写入binlog,从...

    nginx场景配置与常见错误解析

    ### Nginx场景配置与...通过以上的场景配置与错误解析,可以有效地提高Nginx服务器的性能和安全性,同时也可以帮助运维人员快速定位和解决问题。这些配置不仅适用于特定的业务场景,而且也是构建高效Web服务的基础。

    架构师实战Nginx构建高性能WEB服务器

    Nginx最初由Igor Sysoev为解决当时Web服务器面临的大规模并发连接问题而设计,自2004年首次发布以来,因其出色的性能和可靠性,在全球范围内获得了广泛的应用。 **Nginx的主要特点:** - **高性能:** 占用内存少,...

    Apache服务器中.htaccess文件的实用配置示例集锦

    2. **防止图片被盗链(防盗链)** 防止其他网站直接引用你的图片可以节省服务器带宽。以下配置将检查请求者的`HTTP_REFERER`头,如果来源不是你的网站,则返回一个指定的“禁止盗链”图片: ``` RewriteEngine On...

Global site tag (gtag.js) - Google Analytics