解决微信图片反防盗链的方法(此图片来自微信公众平台,未经允许不可引用)

最近手上的官网图文出现“此图片来自微信公众平台,未经允许不可引用”,导致图片显示不了,究其原因:因为微信公众平台对图片采用了防盗链设置,微信对外提供了API接口,让我们可以通过授权的方式获取到自己公众号里面的文章,或者你也可以通过爬虫去抓取微信的文章,但是微信的图片默认是不允许外部调用的。

解决方案:【文章来源CSDN Lison原创,请标明出处】

1、下载图片保存在本地上,发布图片时候上传本地图片;

2、在JS中提前把图片加载到本地,然后从本地缓存中读取图片

var showImg = function (url) {
  var frameid = 'frameimg' + Math.random();
  window.img = '<img id="img" src=\'' + url + '?' + Math.random() + '\' /><script>window.onload = function() { parent.document.getElementById(\'' + frameid + '\').height = document.getElementById(\'img\').height+\'px\'; }<' + '/script>';
  return '<iframe id="' + frameid + '" src="javascript:parent.img;" frameBorder="0" scrolling="no" width="100%"></iframe>';
}


通过各种iframe,form等来跳过防盗链机制,但是这种方法,对代码的结构影响很大,对一些移动类库兼容性不太好。

3、在head标签上加上【经测试,已经被和谐掉了】

<meta name="referrer" content="no-referrer" />

4、 第三方接口方式替换原防盗链接【亲测有效,难以确保长期有效】

<script type="text/javascript">
function showImage(){
	//获取Class为main-nav里面的所有img
	//var imglist=$(".main-nav img");
	//或使用下面这句,获取ID为divArticle里面的所有img
	var imglist=$("#divArticle img");
	for(var i=0;i<imglist.length;i++){
	    if(imglist[i].getAttribute('src')){
		if(imglist[i].getAttribute('src').indexOf("mmbiz.qpic.cn")!=-1){
			imglist[i].setAttribute('src','http://img01.store.sogou.com/net/a/04/link?appid=100520029&url='+imglist[i].getAttribute('src'));
		}
	    }
	}
}
showImage();
</script>

5、微信公众号文章保存在自己服务器【较麻烦,暂不使用】

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值