如何直接引用微信的圖片鏈接詳解

歡迎掃碼加入Java高知羣交流


以微信的一個圖片鏈接爲例子:http://mmbiz.qpic.cn/mmbiz_jpg/azXQmS1HA7m80L8HYB1Jfdqicn4LMgfejKp4Nkia6ZyExOJURicRg6HibN7aBcWxSkCTicCkbRIQgprO33Q2TsHFT9Q/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1

微信圖片做了防盜鏈處理,如果直接引用圖片的src地址,會提示如下信息:


網上查詢了一下,有的說是用qq的一個鏈接能解決:

http://read.html5.qq.com/image?src=forum&q=5&r=0&imgflag=7&imageUrl=xxx

其中imageUrl是需要訪問微信圖片的鏈接,之前也測試過這個方法確實可行,但是現在騰訊做了更嚴格的防盜,所以現在這種方式也不行了。

那有沒有更好的辦法呢?我們發現,直接copy微信圖片的鏈接到瀏覽器敲回車是可以正常的展示圖片出來的,估計是通過Referer來判斷,如果是非本站的Referer會進行攔截,

直接copy到瀏覽器地址欄是不帶有Referer的,對不帶Referer的請求貌似沒限制,本人猜測的。通過iframe可以請求圖片不攜帶Referer,雖然效率上和體驗上沒那麼好,但是圖片這樣是可以展示出來的。如下圖:


那麼講了這麼多,大家最關心的問題還是代碼怎麼實現,其實很簡答,通過js動態生成iframe即可,代碼如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
    <head>
    <title>test</title>
	<script src="js/common/jquery-1.8.3.min.js"></script>
	<script type="text/javascript">
	</script>
    </head>
    <body>
    <img src="http://mmbiz.qpic.cn/mmbiz_jpg/AiaMTYUYjYNa0mibnn2ay6luBGXPBRSV2ibJic3uGYickID3OUkvKzAC2E0ibVWSNicpykkpUqALFicSiaibgO0XyYWlEhGQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1">
    <script>
	    function showImg(url) {
	        var imgid = Math.random(),frameid = 'frameimg' + imgid;
	        window['img'+imgid] = '<img id="img" src=\''+url+'\' />' +
	                        '<script>window.onload = function(){' +
	                        'parent.document.getElementById(\''+frameid+'\').width=document.getElementById(\'img\').width+\'px\';' +
	                        'parent.document.getElementById(\''+frameid+'\').height=document.getElementById(\'img\').height+\'px\';' +
	                        '}<'+'/script>';
	        return '<iframe id="'+frameid+'" src="javascript:parent[\'img'+imgid+'\'];" frameBorder="0" scrolling="no" width="100%"></iframe>';
	    }
    </script>
    <script type="text/javascript">
    	//$("img").hide();
        var imgs = document.getElementsByTagName('img');
        for(var i=0;i<imgs.length;i++){
            var data_src = $(imgs[i]).attr("src");
            var html = showImg("http://read.html5.qq.com/image?src=forum&q=5&r=0&imgflag=7&imageUrl="+data_src);
            $(imgs[i]).replaceWith(html);
        }
    </script>
    </body>
</html>


體驗上來說確實不是很好,各位大神有什麼更好的其它辦法可以底下留言交流交流。


還有一種簡單的方法就是直接在頁面的head中添加<meta name="referrer" content="never">,

但是這樣所有的請求都不會帶referrer,有點自宮的感覺。


歡迎掃碼加入Java高知羣交流


發佈了205 篇原創文章 · 獲贊 1046 · 訪問量 462萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章