背景:抓取微信公众号内容后,发现图片盗链不容许使用。
所以查了一下。解决方案有两个。
1.使用代理,用代理去抓图片。当然要搞后端的东西。需要额外的服务器。
2.防盗链无非是referer,干掉就行了。
<meta name="referrer" content="never">
html头里加上这句话。但是只对chrome有效。
还有一种用 嵌套一个iframe来显示,也是防止referer的。
function showImg(url, id) {
var frameid = 'frameimg' + Math.random();
window.img = '<img id="img" src="'+url+'?'+Math.random()+'" width="100%"/><script>window.onload = function() { parent.document.getElementById(\''+frameid+'\').height =document.getElementById(\'img\').height+\'px\'; }<'+'/script>';
$("#"+id).html('<iframe id="'+frameid+'" src="javascript:parent.img;" frameBorder="0" scrolling="no" width="100%"></iframe>');
}
代理法,还可以用qq浏览器的代理服务器。完整代码。使用iframe 办法去掉注释,注释掉代理的 部分就ok了。
$().ready(function() {
var i =0;
var i2 = 'showid';
$("img:not(.logo)").each(function(){
var src = $(this).attr('src');
//var newsrc='http://read.html5.qq.com/image?src=forum&q=5&r=0&imgflag=7&imageUrl='+encodeURIComponent(src);
//$(this).attr("src",newsrc);
i2 = i2+i;
$(this).wrap('<span id="'+i2+'"></span>');
i++;
//var newsrc2 = src.replace(prefix,"");
showImg(src,i2);
});
});
以上