- 很多的时候,我们想要显示其他网页上的内容,比如百度上好看的图片,微信中的图片,但是哪些大网站都给图片加上了盗链,不让你使用,下面讲一下如何将盗链的图片显示在网页上
当然作为一个开发者,这样做是不被允许的,违背了开发的精神,当时如果是用在自己的个人站点上,应该不会被排斥吧!
其实防盗链方法很多,很多都是通过refer来判断的,只要refer为空或者是本公司网站的域名则可以,否则就不行。
知道盗链的如何产生的就可以突破他了
最知名的应该是传送门[http://chuansong.me/] 的网站了,他的所有文章都是微信公众号的文章,但是他都突破的盗链,它的链接是这样的 http://read.html5.qq.com/image?src=forum&q=5&r=0&imgflag=7&imageUrl=http://mmbiz.qpic.cn/mmbiz/XGVVX13YPHyYnaUBw3UBS7Aq9VAF2bz8BZnrdg8Hq6LOWeWhQ8h2L625NlfMVuoWJG65ClBCjJFzEaHJd615xQ/0?wx_fmt=jpeg 在所有的链接前面加上 http://read.html5.qq.com/image?src=forum&q=5&r=0&imgflag=7&imageUrl=
- 然后我也试过了他的这一招,但是并没有什么用,这个应该是,在根据这个前缀给图片加了域名转向,跳了了refer 的验证。
还有很多的方法就是用七牛和阿里云的云存储,将图片下载下来存放在自己的云存储了,这样无可厚非是最好的办法,图片都在自己这里了,肯定不存在盗链了
- 这个方法应该是最可控制的
第三个方法就是通过iframe来跳过 refer 验证了,将网页全都放在iframe 里面 。达到跳过refer 的验证,这个是打印包含了多组图片不好区分的问题。如果抓到一篇文章,文章里面含有很多的图片
<iframe seamless></iframe>
var content=d.content.replace(/data-src="[\s\S]*?"/gi, function (src) {
var src = src + " " + src.substring(5);
return src;
});
var html = '<div id=\"page\">\n <div class=\"rich_media\">\n <div class=\"rich_media_inner\">\n
<div class=\"rich_media_area_primary\">\n
<h2 class=\"rich_media_title\">'+d.title+'</h2>\n\n
<div class=\"rich_media_meta_list\">\n
<em class=\"rich_media_meta rich_media_meta_text\">'+date(d.createTime)+'</em>\n
<a class=\"rich_media_meta rich_media_meta_link rich_media_meta_nickname\">'+d.author+'</a>\n
</div> </div>\n
<div class=\"rich_media_content\">'+content+'</div>\n <div class=\"rich_media_tool\">\n </div>\n </div>\n
</div>\n
</div>\n</div>';
$("iframe").attr("src", 'javascript:void(function(){document.open();document.write(\'' + html + '\');document.close();}())');
$("iframe").contents().find("head").append('<link rel="stylesheet" href="/static/css/article.css">');
}
如果你仅仅只需要显示出一张盗链图片,下面的代码。直接使用方法就可以了。
f_showimg: function(url){
var frameid = 'frameimg' + Math.random();
window.img = '<img id="img" style="margin-top:-10px;" src=\'' + url + '?' + Math.random() + '\' width="135" height="75" />';
return '<iframe id="' + frameid + '" src="javascript:parent.img;" frameBorder="0" scrolling="no" width="135" height="75"></iframe>';
}