1. 程式人生 > >新浪微博相簿圖片外鏈限制,圖床不顯示解決方法總結!

新浪微博相簿圖片外鏈限制,圖床不顯示解決方法總結!

近期新浪微博抽風,很多站長的圖片都存在微博相簿,導致絕大部分網站的圖片無法顯示,文主的站也不幸淪陷,找了各種方法解決此問題,後來綜合各種說法自己找了個方法。

新浪微博相簿外鏈圖片不顯示的其它一些解決辦法:

1、修改域名:ww1.sinaimg.cn 改為 ww4.sinaimg.cn 不好使;

2、修改referrer:在Header中新增:<meta name=”referrer” content=”no-referrer” />,不推薦,對整站有影響;

3、給img標籤新增 referrerpolicy=”no-referrer” 屬性:<img src=”https://ws3.sinaimg.cn/thumb150/xxoo.jpg” referrerpolicy=”no-referrer”>,本文用的方法,只修改文章內容版塊的 img 標籤,其它不受影響;

4、切換HTTP:直接使用HTTP連結,不要用HTTPS~~~

5、內嵌iframe:原理有點像no-referrer~ 使用iframe載入圖片不會跟蹤到原請求域名,可以載入圖片!但是這個方法改動太大了,累死人~~~

6、第三方反代:有許多大佬提供反代方案,比如將 sinaimg.cn 替換成 sinaimg.in,不多介紹~~~臨時方案。

7、付費服務:七牛、阿里雲、付費圖床等等;

8、自建圖床。

 

說明:本方法不一定適合每一個站長,但是值得試一試,萬一行了呢!

工具:editplus、jquery、簡單HTML知識;

解決辦法原理,以下面網址做說明:

<img src="http://wx3.sinaimg.cn/mw690/005Cikyoly1fy3yd869pfg30hs09yhe4.gif" />

這個圖片在本站域名下用 img 標籤是不顯示的,但是改為以下格式就會顯示:

<img src="http://wx3.sinaimg.cn/large/005Cikyoly1fy3yd869pfg30hs09yhe4.gif" referrerpolicy="no-referrer" />

也就是表面這個 img 標籤下有兩處改動,將 mw690 替換為 large,img 標籤屬性新增 referrerpolicy="no-referrer" 這個屬性。

由此可知,我們只需將原網址下的 mw690 替換為 large,然後新增屬性 referrerpolicy="no-referrer" 即可。

那麼我們直接操作,首先是結構程式碼,這個程式碼是本站的結構程式碼,自己網站是什麼結構自己看下,因地制宜:

  <div id="postlist">
    <table></table>
    <table></table>
      <div>
        <table>
            <tbody>
                <tr>
                    <td>第一個td</td>
                    <td>
                        <div></div>
                        <div class="pct">
                            <img src="https://user-images.githubusercontent.com/23384966/57830772-c0f4de00-77e5-11e9-8179-3495a36c25c4.gif">
                            <img src="http://www.gifdtm.com/data/attachment/forum/201806/13/211440j2fgmqgtg7ffy75p.jpg"/>
                            <p>選擇這個元素下的所有img標籤</p>
                            <img src="http://wx3.sinaimg.cn/large/005Cikyoly1fy3yd869pfg30hs09yhe4.gif" />
                        </div>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
      <div></div>
    <table></table>
  </div>

下面是修改程式碼的步驟,可能有點差,高手勿噴:

<script src="jquery.js"></script>
<script>
//postlist 下面第一個 div 的 table 下面的 img 標籤新增 referrerpolicy="no-referrer"屬性

var imgs = $("#postlist .pct img");//選擇 img 標籤
imgs.attr("referrerpolicy","no-referrer");
imgs.attr("alt","alt文字");

//console.log(typeof imgs.attr("src"));//返回的是一個img的src
//console.log(typeof imgs);//返回 imgs 型別,object型別

//宣告空陣列,等待接受元素
var arr = new Array();

//遍歷 imgs 物件,以便取到 imgs 中的所有img標籤
$.each(imgs,function(i,value){
    //console.log(src + " " + value.src); //測試輸出索引和值
    str = value.src.replace(/\/mw690\//ig, "/large/"); //正則表示式替換字串
    //console.log(str); //測試輸出字串
    arr.push(str); //將替換後字串新增到arr陣列
    //console.log(arr);
    $(this).attr("src",arr[i]); //將對應的當前第i個img標籤的src屬性設定為替換後字串
});

</script>
好了基本思路和程式碼就是這樣,希望有更好的方法,歡迎留言討論哦~~~~

&n