讓 wget 下載 cloudflare 的 IPFS 檔案時避開 429 Too Many Requests 錯誤

wget 指令

 

為了讓 IPFS 進行分享的圖片能存續在網路上,流浪貓是以 wget 搭配 crontab 腳本的方式定時自動下載並維持檔案熱度。而 tor 雖然能繞過 cloudflare 封鎖流量過於頻繁的 IP,但透過洋蔥網路分享的檔案不一定對 IPFS 檔案留存有所幫助。

 



簡單來說,在多數讀者都是以正常網路來瀏覽文章的情況下,Tor 網路於 IPFS 節點所留下的檔案備份,可能因地理位置差異的關係,反而對於提昇效率和存續沒有幫助。翠腦液化習

 

如果要避開 cloudflare 的限制 (429 Too Many Requests),同時維持檔案熱度,其實只要將下載間隔拉長到三分鐘以上,並讓它一天執行一次即可。畢竟我們的目的只是要維持檔案熱度,而不是要它來做壞事。

 

除了延長下載間隔的方式之外,本文將一併介紹讓 wget 偽裝成一般瀏覽器、模仿網路爬蟲、下載整個網站與特定副檔名、指定存檔位置與產生紀錄檔 (log) 的方法。

 

 

延長 wget 下載間隔

參考以下的指令,將下載檔案的時間差距延長至 120 秒,搭配 --random-wait 指令,可讓時間隨機延長或縮短 1.5 倍,也就是會在 60~180 秒之間執行。

 

wget --wait 120 --random-wait

 

 

讓 wget 偽裝成一般瀏覽器

使用 wget 下載檔案的時候,伺服器通常會紀錄使用者的軟體 (User-Agents) 與版本等資訊。如果不希望對方發現自己所採用的軟體,或伺服器端封鎖了 wget 的使用者的話,可以自行指定 wget 使用者代理的方式來偽裝。

 

wget --user-agent="Mozilla/5.0 (X11; Linux x86_64) KHTML, like Gecko"

 

 

指定存檔位置,下載後立即刪除

如果需要保留檔案,則用 -P 指定目錄存檔。若不需要留下檔案的話,可用 --delete-after 讓它下載後自動刪除。

 

wget -P /home/user/download --delete-after

 

 

模仿網路爬蟲,僅檢查存在而不下載檔案

wget --spider 

 

 

下載整個網站

將目標網站的內容全數下載,儲存在硬碟中成為離線網站。

 

wget --mirror --convert-links -p -P ./folder URL

--mirror
-p 一併下載網頁所需的檔案
--convert-links 自動將超連結轉換為本機連結
-P ./my_folder 指定存檔位置

 

 

下載網站中特定類型的檔案

這個指令對政府網站非常有用,因為國家部會的網站如果沒有高手主導設計,往往就是一坨東拼西湊的大便。如何在這糞坑中找資料,成為了台灣公部門與私人企業的一大挑戰。

 

而文獻回顧和整理資料時,我們往往只需要 pdf 檔。因此可以用下面的指令來尋找網站中特定類型的檔案。

 

wget -A pdf -r -l 1 URL

-A 指定檔案類型,可用 , 分隔
-r 遞迴子目錄
-l 遞迴深度 1

 

 

紀錄下載過程 (log)

如果需要紀錄 wget 的下載過程,可以參考以下指令。

 

wget --output-file=/home/logfile

 

 

 

延伸閱讀

更多洋蔥路由器 Tor 教學

用 curl 和 wget 命令列批次、定時下載檔案列表

uGet - 批次下載圖片、檔案且支援剪貼簿與續傳的下載工具

解決 IPFS 上傳後找不到檔案的問題 (504 time out)

更多 IPFS

加快與維持 IPFS 檔案下載速度的幾種方式

Wget 指令手冊

 

 

 

留言

這個網誌中的熱門文章

寶鐘瑪琳中之人前世照片、年齡分析