wget 下載工具的進階用法
在 Linux 系統管理中,wget 無疑是最受歡迎的非互動式網路下載工具之一。對於初學者而言,wget 或許只是用來下載檔案的簡單指令;但對於系統管理員與開發者來說,掌握其進階選項,能大幅提升自動化腳本的穩定性與效率。本文将深入探討 wget 的進階應用場景,幫助你從「會用」邁向「精通」。
斷線續傳與背景下載
在網路環境不穩定的情況下,大檔案下載常因中斷而前功盡棄。wget 內建的續傳功能(Resume)是解決此問題的最佳方案。使用 -c 參數,wget 會檢查伺服器是否支援續傳,若支援則從上次斷點繼續下載,而非重新開始。
# 下載一個 10GB 的 ISO 映像檔,若中途斷線可繼續
wget -c https://example.com/ubuntu-22.04.iso
此外,當你需要下載多個檔案且不希望佔用終端機介面時,背景下載(Background Download)顯得尤為重要。結合 -b 參數,wget 會將輸出訊息重定向至 wget-log 檔案中,讓你在後台安心處理其他工作。
# 啟動背景下載,進度資訊會寫入 wget-log
wget -b https://example.com/large-archive.tar.gz
# 隨時查看下載進度
tail -f wget-log
模擬瀏覽器與協定支援
許多現代網站或雲端儲存服務(如 AWS S3、Google Drive)會檢測 User-Agent 字串,拒絕非瀏覽器的請求,或者要求特定的 HTTP 標頭。透過 --user-agent 參數,我們可以偽裝 wget 的行為,使其看起來像來自 Chrome 或 Firefox 的瀏覽器請求,從而繞過簡單的防爬蟲機制。
# 偽裝為 Chrome 瀏覽器進行下載
wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" \
https://example.com/restricted-file.zip
對於需要驗證的資源,wget 支援基本的 HTTP 認證。使用 --http-user 和 --http-password 參數,你可以直接提供憑證,避免手動輸入密碼的麻煩,特別適合用於 CI/CD 流程中的自動化部署。
# 使用基本認證下載私有資源
wget --http-user=admin --http-password=secret123 \
https://secure-server.com/data/config.tar.gz
遞迴下載與檔案過濾
當你需要下載整個網站結構或特定目錄下的所有檔案時,-r(recursive)參數是關鍵。然而,預設的遞迴下載可能會下載不必要的內容,如 CSS、JS 或圖片。透過 --accept 和 --reject 參數,你可以精確控制要下載的檔案類型。
# 遞迴下載網站,僅接受 PDF 檔案,拒絕其他類型
wget -r --accept=pdf --reject=html,css,js,txt \
https://example.com/documents/
另一個實用的技巧是限制下載深度。使用 -l 參數指定遞迴層數,可以防止 wget 無限爬取整個網站,避免佔用過多頻寬與磁碟空間。
# 僅下載當前目錄與下一層子目錄中的 PDF 檔案
wget -r -l 2 --accept=pdf \
https://example.com/docs/
常見問題與解決方案
Q1:下載時出現 "Connection refused" 或 "DNS resolution failed" 錯誤?
這通常不是 wget 的問題,而是網路連線或 DNS 設定問題。請先確認網路連線正常,並嘗試使用 nslookup 或 dig 檢查域名解析。若確定是 DNS 問題,可嘗試在 /etc/resolv.conf 中新增 nameserver 8.8.8.8 使用 Google DNS。
Q2:如何跳過 SSL 憑證驗證?
在某些內部測試環境或自簽憑證的情況下,wget 會因憑證無法驗證而拒絕下載。雖然不建議在生產環境使用,但可透過 --no-check-certificate 參數強制跳過檢查。
# 跳過 SSL 憑證驗證(僅限測試環境使用)
wget --no-check-certificate https://insecure-server.com/file.zip
小結
wget 不僅是一個簡單的下載工具,更是一個強大的網路互動利器。透過熟練運用 -c 續傳、-b 背景執行、--user-agent 偽裝以及遞迴過濾等進階選項,你可以輕鬆應對各種複雜的下載需求。無論是自動化腳本、大檔案傳輸,還是特定格式的檔案抓取,wget 都能提供穩定且高效的解決方案。建議您在實際操作中多嘗試組合不同參數,以發揮其最大潛力。