背景:抓取微信公众号内容后,发现图片盗链不容许使用。
所以查了一下。解决方案有两个。
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); }); });
以上