1. 程式人生 > 實用技巧 >圖床的千層套路

圖床的千層套路

原文來自:ChenYFanの部落格

部落格最近在細心打磨終於上95分了,其中我認為圖片功勞不可沒。

2020年8月9日Jsdelivr釋出了一次使用政策:Create Acceptable Use Policy,其中第4條Prohibited Use引起了眾多議論:

xxxxxxxxxx
4. Prohibited Use
The following behavior is prohibited:
 1. Hosting or accessing content that:
   - contains malware or harmful code in any form,
   - violates proprietary rights of others,
   - is sexually explicit,
   - is potentially illegal in the EU or the USA.
 2. Abusing the service and its resources, or using jsDelivr as a general-purpose
  file or media hosting service. This includes, for example:
   - running an image hosting website and using jsDelivr as a storage for all
    uploaded images,
   - hosting videos, file backups, or other files in large quantities.
  We recognize that there are legitimate projects that consist of a large number
  of files, and these are not considered abuse. For example: icons packs, apps,
  or games with a large number of assets.

其中running an image hosting website and using jsDelivr as a storage for all uploaded images 這一句相當的有歧義,要多少的圖片才能算是圖站?部落格裡面圖片放裡面算嗎?上傳的圖片怎樣才不行?

反觀網上流傳的白嫖Github做圖床,基本點進去都是https://cdn.jsdelivr.net/gh/ 這樣子的圖床,這種行為,我不敢妄加評論。但是,jsdelivr誕生的意義似乎並不是為了圖床而生的,這種行為也很難判斷成濫用。

使用政策釋出之後,一時間,QQ群、v2ex、知乎上立刻就炸了鍋。很多人猜測jsdelivr是不是濫用過度而禁止將其作為圖床?免費圖床的白嫖日子要結束了嗎?更多的人,是在哭訴和詢問那裡還有像jsd一樣優秀的圖床可以白嫖,微博炸了,那裡還有免費圖床啊?

實際上,我一般採用的是BackBlaze+CloudFlare 但是自從八月底移動開始改道,從原先優秀的CMI繞路LAX後,國內CloudFlare訪問質量再次暴跌,這不得不使我將部落格遷至Vercel。好在八月份我有幸申請到了doegdoge圖床使用許可權,獲得了國內較高速的圖床.

但是,對於哪些沒有沒有圖床的人來說,免費圖床真的這麼難以獲得嗎?

不好意思,免費圖床非常多,只是你不會用而已,這篇文章,就是拯救面前陷入圖床危機的你【當然是面向小白,大佬也可以在底下給我提意見鴨】。

公益圖床

sm.ms

https://sm.ms

推薦程度:★

首先推薦的是這個圖床,loli.net域名經典重現。三年前此圖床域名還有備案採用的是國內CDN,可惜後來因為濫用吊銷備案號而被迫遷移國外,用的是CloudFlare。實際使用效果面向國內確實不太好,建議備用。

你不需要註冊,拖拽直接上傳,只要不違反大陸和香港法律,他就能永久保留你的圖片

可搭配PicGo

Imgur

https://imgur.com

推薦程度:★★

國外一家牛逼的圖片託管服務商,你可以選擇註冊或不註冊,同樣的,拖拽上傳,永久保留,其SLA有著相當高的保證。

然而很可惜的是,這種網站很早就在國內被DNS域名汙染,也就意味著訪客無法正常載入你的圖片。這也就是被打為兩顆星的原因。

當然,你也可以通過#影象快取服務 從而實現國內訪問。

可搭配PicGo【需註冊】

去不圖床

https://7bu.top/

推薦程度:★★★★

杜老師提供的個人公益圖床,儲存於阿里和騰訊的COS,官方保證SLA>=99%,是一個不錯的選擇,當然,7bu畢竟是個人維護的圖床,能不能永久撐下去還是個問題,我也沒有做過深度評測,無法表明其可用性。

可搭配PicGo。

xxxxxxxxxx
介面地址:https://7bu.top/api/upload
post引數:image
回撥json:data.url

更準確的API文件

而且,就在我上傳測試圖片的時候,明明已經表明圖片已經上傳,開啟卻發現COS提示404,這一點我不得陷入思考,個人維持的公益專案真的能保證SLA嗎?

昨天上傳的時候撞上伺服器維修了,很抱歉做出了不夠恰當的評價.7bu採用的是全國騰訊雲CDN加速,國內訪問速度十分優良。然而請注意,7bu剛開始建立的目的並不是面向全球【僅面對中國大陸游客】,這導致其大陸以外基本解析至國內西藏騰訊,訪問效果並不好。並且,這是通過騰訊雲的鑑黃,可能會存在誤殺行為。具體使用請個人斟酌【不過作為開發環境還是可行的】。

白嫖的

阿里圖床

推薦程度:★★★★

我個人搭建的API:https://picbed.cyfan.top 不保證上傳SLA

由於小雞聯通國內網路不太好,很有可能無法正常上傳,原專案已經開源 ,你完全可以通過在國內的機子或者是本地搭建以獲得更佳體驗。

如果上傳成功了,圖片將會託管於阿里雲的CDN,無論是速度還是延遲都相當的優秀。

官方大廠,下載SLA有保障。

可搭配PicGo。

xxxxxxxxxx
介面地址:https://picbed.cyfan.top/update.php
post引數:file
回撥json:data.url

DogeDoge圖床

推薦程度:★★★★★

其實很早就看到V2EX的那篇徵文了

可是當時我不夠優秀啊雖然現在同樣不優秀,部落格也沒滿一年啊,於是白嫖的心態擱淺了。

後來突然看到Jalen的部落格也用了DogeDoge圖床,這才突然意識到原來我已經滿一年了。於是抱著試試看的心態向doge官方郵箱傳送了郵件,結果真過了。。。

dogedoge擁有著國內相當不錯的CDN,國內訪問飛快,但是國外的訪問質量的確不如人意。【反正此部落格面向中國大陸】

而且,DogeDoge擁有著很良心的處理引數:

xxxxxxxxxx
w:寬
h:高
mode:模式 - crop 裁剪、clip 縮略
fmt:格式 - jpg、png、webp(原圖為 gif,且沒有 frame 引數時,不做任何裁切、縮略處理)
frame:1 - EOF幀,預設為 1 (對動畫有效)
q:壓縮質量 - 1 - 100(預設 90 )
rect:指定位置裁剪 - top,left,w,h(若與 w / h 引數同時存在,則 會在 rect 裁剪過後,繼續按照 w / h 的要求縮略)
pos:(配合 w / h )裁剪位置 - top-left、top、top-right、left、center、right、bottom-left、bottom、bottom-right,預設為center
pos 還有一個特殊的值 auto,該值目前為 alpha 狀態,可以根據圖片重點來進行 pos 的位置取捨。

當然,DogeDoge也可以搭配PicGo使用。

xxxxxxxxxx
介面地址:https://www.dogedoge.com/tools/upload/{Your_Token}
post引數:file
回撥json:data.o_url

當然,現在的Doge圖床還是處於免費的試用期【Creater】,不過好在試用期過後價格也比較合理,一般的tester也足夠使用,目前看來SLA還是不錯的。

當然,申請不到dogedoge圖床也沒關係,看下去你就會發現,白嫖的路千千萬萬,何必執著於一條。

BackBlaze

推薦程度:★★★

具體可以看看這篇文章

千奇百怪的

Github+JSDelivr

正如我所說的,這種組合已經被廣大博主所採納,並且網上教程已經氾濫了,在這裡不再闡述。

npm+JSDelivr&&Zhimg&&bdstatic&&自定義映象

推薦程度:★★★★★

為什麼很多文章都沒有提到用npm做圖床?我想其中很大的原因是,白嫖jsd做圖床的,很多都是小白【或者不願花時間在於此的大佬】,同樣的,這些文章面向的都是這些人,畢竟,以拖拽方式上傳的Github和命令列方式上傳,我想,大都數人會選擇前者吧。

可是,你們沒有想到的是,github檔案映象【github.com.cnpmjs.org是站點映象】只有jsd一個,npm映象可遠遠不止這一個啊!

讓我們看看分別映象在jsd、zhimg、bdstatic的檔案怎麼樣:

【unpkg映象用的是CloudFlare,國內加速效果不好,暫時不寫】

jsd就不必多說了,國內擁有強勁的網宿節點支撐【雖然以前出現過網宿下游投毒】,速度絲滑無比,國外也有強勁的CloudFlare上崗,可謂國內外兩不誤。而且,jsd對於npm的package單檔案沒有大小限制,也就是說泡個視訊也不是問題。

zhimg是知乎的unpkg映象,也是一個不錯的選擇【阿里CDN】,知乎官方也未對此做出限制,日常使用是可以的。

bdstatic是百度的內用npm映象,速度也很好【百度CDN】,但是請注意,bdstatic作為內用cdn,其拉取頻率較慢,經常出現無法及時更新。

啊哈?不會上傳? npm 官網註冊個賬號去,然後先:

xxxxxxxxxx
npm login

接著:

xxxxxxxxxx
npm init
npm publish

請注意,如果你之前用過淘寶映象,那麼請先手動切回源:

xxxxxxxxxx
npm config set registry https://registry.npmjs.org

每一次釋出圖片後,你可以將原來的圖片刪除,更改package.json 版本號【向上增加】,然後npm publish即可

這個似乎可以搭配picgo,不過好像沒這個外掛,寫起來也麻煩。。。

unpkg的國內映象其實遠遠不止這些,包括七牛、餓了麼、騰訊都有,不過這個就要自己找了。

一些推薦的npm【or unpkg映象】:

xxxxxxxxxx
【jsd出品,網宿國內節點】https://cdn.jsdelivr.net/npm/
【知乎出品,阿里國內節點】https://unpkg.zhimg.com/
【百度出品,網宿國內節點】https://code.bdstatic.com/npm/
【餓了麼出品,網宿國內節點】https://shadow.elemecdn.com/npm/

或者說,你還可以自建unpkg映象。

啊,你說你沒有伺服器反向代理unpkg?

其實,七牛的物件儲存,騰訊的COS和阿里的OSS都是支援映象回源的鴨!

七牛http流量每月免費10GB,騰訊的國內免費60GB6個月,作為自用完全足夠了!

ipfs

我曾經寫過關於ipfs的講解 ,作為一個去中心化的儲存系統拿來做公開圖床其實挺不錯的。

我個人搭建的ipfs映象【託管於CloudFlareWorkers】:https://ipfs.cyfan.top

我個人搭建的ipfs上傳API:https://ipfsupload.cyfan.top

xxxxxxxxxx
介面地址:https://ipfsupload.cyfan.top/api/v0/add?pin=true
post引數:file
回撥json:Hash

此處Hash獲得的是檔案的Qmhash,你還要依託ipfs映象,如https://ipfs.cyfan.top/ipfs/{QmHash}

順便收錄一些ipfs閘道器【可訪問】:

xxxxxxxxxx
【北京 阿里雲】https://hashnews.k1ic.com/
【香港 阿里雲】https://ipfs.jbb.one/
【美國 DigitalOcean】https://ipfs.telos.miami/
【Amazon】https://ipfs.oceanprotocol.com/

你可以在https://ipfs.github.io/public-gateway-checker/找到更多

圖片快取服務

正如##Imgur所說的,imgur在國內已經無法訪問了,但是,圖片快取服務可以啊!

收集了一些圖片快取服務:

xxxxxxxxxx
【國內網宿節點,只能載入特定圖床圖片如imgur】https://search.pstatic.net/common/?src=
【Akamai節點,沒有使用限制】https://imageproxy.pimg.tw/resize?url=
【CloudFlare節點】https://images.weserv.nl/?url=
【CloudFlare節點】https://pic1.xuehuaimg.com/proxy/

PicGo的搭配使用

PicGo預設已經集成了部分圖床,其拖拽上傳、自動複製剪貼簿實在贏得了無數人的心。但是,對於一些冷門的圖床支援似乎就不太好,這時候你需要用自定義web圖床實現這一切:

我在上方介紹的圖床如果支援web端上傳,基本上就會寫一個post請求,你可以依葫蘆畫瓢填寫進去

這樣子你就可以實現較為絲滑的上傳圖片了:

【為了壓縮方便刪除了部分幀】

後言

實際上最保險的莫過於使用各大廠商的物件儲存,當然這筆錢不大好使。 你也可以用自己的VPS搭建Chevereto,當然前提是你有VPS