以下是一些比較進階的 wget 用法與範例,適合比較有經驗的程式設計者或系統管理者使用。
■ 偽裝瀏覽器
正常使用 wget 時下載檔案時,其 user agent 會顯示 wget 的版本資訊:
wget https://blog.gtwang.org/gtwang-url-128.png
這個資訊會記錄在網頁伺服器的紀錄檔中:
66.249.79.20 – – [25/Aug/2017:09:42:44 +0800] "GET /gtwang-url-128.png HTTP/1.1" 200 5289 "-" "Wget/1.14 (linux-gnu)"
網頁伺服器可以很容易靠著 user agent 辨識出這個連線是由 wget 所發出來的。
如果想要將 wget 偽裝成一般的瀏覽器,可以修改 user agent 的設定:
wget –user-agent="Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko" https://blog.gtwang.org/gtwang-url-128.png
這樣其所發出的 http 請求就會跟一般的瀏覽器幾乎相同:
66.249.79.20 – – [25/Aug/2017:09:44:53 +0800] "GET /gtwang-url-128.png HTTP/1.1" 200 5289 "-" "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
■ 模仿 Spider
wget 的 –spider 功能可以模仿網路的 spider,只檢查指定的檔案字否存在,但是不下載任何資料:
wget –spider http://releases.ubuntu.com/16.04.3/ubuntu-16.04.3-desktop-amd64.iso
輸出為:
■ 下載整個網站
如果要把整個網站都下載下來(砍站),可以使用 –mirror 參數:
wget –mirror -p –convert-links -P ./my_folder http://edition.cnn.com/
這樣就會將 http://edition.cnn.com/ 整個網站的內容全部下載下來,放在 ./my_folder 目錄下。以下是這裡使用到的參數意義:
-
–mirror:下載整個網站。
-
-p:自動下載顯示網頁所需要的所有相關檔案。
-
–convert-links:自動將下載網頁中的超連結,轉換為本地的連結。
-
-P ./my_folder:將下載的檔案放在 ./my_folder 目錄下。
■ 設定下載資料大小上限
如果在使用 wget 下載很多個檔案時,會有硬碟空間不足的疑慮,可以使用 -Q 參數來指定累積下載資料的大小上限,如果下載資料的大小總和超過這個值的時候,就會停止下載:
wget -Q5m -i url.txt
這個例子會下載 url.txt 檔案中所列的檔案,若下載的資料超過 5MB 時,就會停止下載動作。
■ 遞迴下載特定類型檔案
如果要從網站上下載特定類型的檔案,可以使用 -r 遞迴下載,並且配合 -A指定下載的檔案類型,例如從網站上下載所有的 PDF 檔:
wget -r -A.pdf http://www.example.com/
■ 代理伺服器(Proxy)
若要讓 wget 透過代理伺服器抓取資料,可以在 ~/.wgetrc 這個設定檔中加入代理伺服器的設定:
use_proxy=yes
http_proxy=http://proxy.yoyodyne.com:18023/
這樣在使用 wget 就會自動使用這裡的代理伺服器了。
如果不想更改 ~/.wgetrc 設定檔,也可以直接在執行 wget 時用 -e 參數來指定代理伺服器:
wget -e use_proxy=yes \
-e http_proxy=http://proxy.yoyodyne.com:18023/ \
http://www.example.com/
以下是各種代理伺服器的設定方式,以及帳號與密碼的寫法:
use_proxy=on
http_proxy=http://username:[email protected]:port/
https_proxy=http://username:[email protected]:port/
ftp_proxy=http://username:[email protected]:port/
來源出處:https://blog.gtwang.org/linux/linux-wget-command-download-web-pages-and-files-tutorial-examples/