正文:
如果你想在自己的网站中使用其他网站的防盗链图片,而只有该网站的域名才能访问,那么你需要先将该图片下载到本地,然后再上传到自己的博客上。这样做可能会很麻烦。今天想到了一个简单的方法,只需添加一段 jQuery 代码,就能轻松实现盗链,而对方网站也不会有任何反应。
具体方法如下:
1、将相应的 jQuery 文件(如jquery-1.11.3.min.js)放在网站的根目录下。
2、修改网站模板文件(一般在文章详情页),在文件末尾添加以下内容:
代码如下:
<script type='text/javascript'>
function showImg(url) {
// 生成一个随机数,用于创建唯一的ID。
//https://www.zhanbangshou.com/
var imgid = Math.random(),
// 根据生成的随机数创建一个frameid,这个ID将用于iframe和script标签。
frameid = 'frameimg' + imgid;
// 注意:这里的字符串拼接存在问题,应该使用单引号或双引号来闭合字符串,而不是使用反引号。
window['img'+imgid] = '<script>window.onload = function() { parent.document.getElementById(\''+frameid+'\').height = document.getElementById(\'img\').height+\'px\'; }<'+'/script>';
// 返回一个iframe标签的HTML字符串,这个iframe会包含上面创建的script标签。
return '<iframe id="'+frameid+'" src="javascript:parent[\'img'+imgid+'\'];" frameBorder="0" scrolling="no" width="100%"></iframe>';
}
$(function(){
// 遍历所有的img标签。
$('img').each(function(index, element) {
// 将每个img标签替换为showImg函数生成的iframe标签。
$(this).replaceWith(showImg(this.src));
});
});
</script>
我们来讲一下原理:
其实原理非常简单,就是通过上述的JavaScript代码,在每个包含图片的地方生成一个独立的 iframe,以实现对原图的下载。由于在 iframe 中直接下载原图,可以完美地绕过防盗链检查。具体更改后,生成的网页源代码如下图所示: