這件事情是這樣的,iN自己雖然不弄在家里弄NAS什么的,但是還是會有在家看視頻的需求的。同樣也很懶,懶得各種論壇搜索下載資源。因此就在家做了一個視頻站點,通過源搜刮的功能來收集視頻源。
這件事很多很多人都會做,也沒必要寫什么教程。
不過,有的時候會因為網(wǎng)絡(luò)封堵的問題導致一些視頻源不太通暢,這不最近幾天《慶余年2》在收集的時候由于這個劇太火,導致了源URL的宕機,丟在VPS上的服務(wù)器也就搜索不到任何資源了……
這件事實際上來源于各種服務(wù)API端口的限制。
怎么整?
我們是可以利用cloudflare的Worker來處理的。方法就是簡單的給我們的URL請求加個殼。
說下原理:
大部分基于各種URL的API通常都并不會很在意源請求地址是什么,但是往往很頻繁請求的源往往會被block掉。這就導致我們在通過web客戶端去調(diào)用的時候出現(xiàn)錯誤。
同樣,大多數(shù)基于WEB API的內(nèi)容是可以修改的,如果被修改后往往會引入不安全的問題。
對于這種現(xiàn)象,我們可以利用網(wǎng)絡(luò)工具給請求的目標加個“殼子”,確切說就是URL轉(zhuǎn)發(fā)——把我們要請求的URL地址發(fā)送到自己制作的一個Worker腳本中,然后再讓這個Worker腳本去請求真正的服務(wù),請求的結(jié)果再通過Worker返回我們自己的服務(wù)器中。
說到這里Worker的概念大家可以有一個模糊的框架了——Cloudflare Workers 是一種邊緣計算技術(shù),使開發(fā)者能夠在 Cloudflare 的全球網(wǎng)絡(luò)上運行 JavaScript 代碼。與傳統(tǒng)的服務(wù)器托管不同,Cloudflare Workers 允許在離用戶最近的地點執(zhí)行代碼,從而提高響應(yīng)速度和性能。
我們說的“加個殼”,實際上在網(wǎng)絡(luò)中屬于一種邊緣計算,利用Woker可以將數(shù)據(jù)處理和計算資源分布在網(wǎng)絡(luò)的邊緣節(jié)點,而不是集中在家里的NAS或者數(shù)據(jù)中心的的VPS中。
由于加了一個中間的處理層,我們就可以在源數(shù)據(jù)和服務(wù)之間再做一層判定來提高安全性。同時大部分Worker本身是不固定IP地址的,對于Web API的訪問也可以避免因為訪問過于頻繁封IP的問題。
要實現(xiàn)這個功能,這樣做:
前提條件:
1.你有一個cloudflare賬戶可以建立Worker
2.你有需要訪問的WEB API地址。
非充要條件:稍微會一點js腳本知識。
做法:
進入cloudflare控制臺,到Worker設(shè)置中建立一個新的Worker
給Worker命名:
這個名字就是一個好記的,你可以快速識別出來的標記名稱,訪問Worker的時候也是通過這個名字做標識的。
同時在代碼預覽中cloudflare會生成一個簡單的hello world腳本,讓我們部署好的Worker至少可以返回一些信息。
在這個界面沒有必要做任何其他修改,直接點擊部署按鈕我們就可以部署出一個Worker腳本。
在首次部署成功后,我們就可以利用編輯代碼的按鈕對剛剛建立的Worker進行代碼編輯
進入代碼編輯器中,cloudflare提供了一個簡單的代碼編寫環(huán)境,分三個部分
1:代碼編寫
2.請求發(fā)送
3.結(jié)果
例如iN今天做的視頻采集的Worker,只有幾行代碼:
原理很簡單,將請求到這個Worker上的URL參數(shù)讀取出來,然后替換給targetUrl,再經(jīng)過fetch(targetUrl)的方法取得原始的WEB API應(yīng)該返回的信息。這時候,就能拿到原始Web API的回復,再將回復原封不動的傳遞給我們自己的服務(wù)器或者NAS就可以了。
將原始API所需要的參數(shù)重網(wǎng)址部分,替換為我們自己的的Worker的地址,保留原始參數(shù)不變,就可以工作起來了。
原始API URL的形式: AAAAA/參數(shù)
Worker的主機:CCCCC
改變后的形式:CCCCC/參數(shù)
就這么簡單。
說好處:
首先是隱蔽了我們自己主機的地址,畢竟目前提供API的很多組織或個人還是不太可信的,沒必要讓對方知道我們自己的IP
其次,速度快,由于Worker是建立在CDN網(wǎng)絡(luò)中的,在全球各個位置都有自己的鏡像,因此對于Worker到目標的網(wǎng)絡(luò)距離要遠小于我們自己的主機到目標的距離。這就保證的訪問速度。
再次,目標API的內(nèi)容是可以審計的。在到達我們自己系統(tǒng)之前我們可以利用程序?qū)徲嬕幌路祷貎?nèi)容,然后再加入自己的系統(tǒng)。這樣的安全性可以提高一下。
最后說下費用:10萬次/日免費,對于一般家用和個人使用很難在一天內(nèi)發(fā)出10萬次的訪問量。目前使用了半年多的Worker還沒有因為這個功能付過費呢!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.