以下是一些比較進階的 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:password@proxy.server.address:port/
https_proxy=http://username:password@proxy.server.address:port/
ftp_proxy=http://username:password@proxy.server.address:port/
 
 
 
arrow
arrow
    文章標籤
    ubuntu linux wget
    全站熱搜

    Gimmy 發表在 痞客邦 留言(0) 人氣()