wget命令用來從指定的URL下載文件。wget很是穩定,它在帶寬很窄的狀況下和不穩定網絡中有很強的適應性,若是是因爲網絡的緣由下載失敗,wget會不斷的嘗試,直到整個文件下載完畢。若是是服務器打斷下載過程,它會再次聯到服務器上從中止的地方繼續下載。這對從那些限定了連接時間的服務器上下載大文件很是有用。html
命令格式:wget [選項] URL資源
web
1. 下載單個文件json
wget http://www.example.com/testfile.zip
下載的文件並保存在當前目錄,在下載的過程當中會顯示進度條,包含(下載完成百分比,已經下載的字節,當前下載速度,剩餘下載時間)瀏覽器
2. 下載並以不一樣的文件名保存服務器
wget -O myfile.zip http://www.example.com/testfile.zip
cookie
-O 自定義文件名
:重命名下載的文件若是不指定"-O" 選項,wget默認會以 url 路徑最後一個 "/
" 的後面所有字符爲下載的文件名,如wget http://www.example.com/testfile?id=123
,下載後的文件名就爲 testfile?id=123
網絡
3. 斷點續傳app
wget -c http://www.example.com/testfile.zip
curl
-c
:繼續接着執行上次未下載完的任務當下載的文件特別大或者網絡緣由,文件沒有下載完鏈接就已經被斷開,使用 -c
選項能夠在網絡鏈接恢復時接着上次的下載任務繼續下載,而不須要重頭開始下載文件工具
wget默認重試20次鏈接下載文件,若是網絡一直有問題下載可能失敗。若是須要的話,你可使用--tries
增長重試次數。例如設置最多重試40次:wget --tries=40 http://www.example.com/testfile.zip
4. 後臺下載
wget -b http://www.example.com/testfile.zip
-b
:之後臺運行的方式下載對於下載很是大的文件不能及時下載完時,能夠進行後臺下載。後臺下載時會在當前下載目錄下建立一個 "wget-log" 文件記錄下載日誌,可使用 tail -f wget-log
命令查看下載進度
5. 帶寬控制和下載配額
wget --limit-rate=下載速度 http://www.example.com/testfile.zip
--limit-rate=下載速度
:限定不超過指定的下載速度。例如:--limit-rate=300k當你執行wget的時候,它默認會佔用所有可能的寬帶下載,可是當你準備下載一個大文件,而你還須要下載其它文件時就有必要限速了。
若是還須要限制下載配額,可以使用選項 "-Q 下載配額
",下載數據超過了指定配額會中止下載。注意,該選項對於單個文件下載無效,只適用於多文件下載或遞歸下載,例如:wget -Q 10m -i dowload.txt
,若是不指定下載配額會下載download.txt文件包含的全部url,若是指定了下載配額爲10m,下載數據超過了10m會中止後面url的下載(一個文件正在下載過程當中下載數據超過了下載配額會繼續完成該文件的下載不會當即中止下載)。
6. 多文件下載
wget -i url文件
-i url文件
:從指定文件獲取要下載的URL地址若是有多個url資源須要下載,那麼能夠先生成一個文件,把下載地址的url按行寫入該文件,而後使用 "-i" 選項指定該文件就能夠批量下載了
7. 密碼認證下載
wget --http-user=USER --http-password=PASS http://www.example.com/testfile.zip
--http-user=USER
:設置 http 用戶名爲 USER--http-password=PASS
:設置 http 密碼爲 PASS--ftp-user=USER
:設置 ftp 用戶名爲 USER--ftp-password=PASS
:設置 ftp 密碼爲 PASS對於須要證書作認證的網站,就只能利用其餘下載工具了,例如curl
8. 遞歸下載
wget -r http://www.example.com/path1/path2/
-r
:遞歸在下整個站點(www.example.com)資源-nd
:遞歸下載時不建立一層一層的目錄,把全部的文件下載到當前目錄;不指定該選項默認按照資源在站點位置建立相應目錄-np
:遞歸下載時不搜索上層目錄,只在當前路徑path2下進行下載;不指定該選項默認搜素整個站點-A 後綴名
:指定要下載文件的後綴名,多個後綴名之間使用逗號進行分隔-R 後綴名
:排除要下載文件的後綴名,多個後綴名之間使用逗號進行分隔-L
:遞歸時不進入其它主機。不指定該選項的話,若是站點包含了外部站點的連接,這樣可能會致使下載內容無限大示例,只下載path2路徑下的全部pdf和png文件,不建立額外目錄全都保存在當前下載目錄下:
wget -r -nd -np -A pdf,png http://www.example.com/path1/path2/
curl命令是一個利用URL規則在命令行下工做的文件傳輸工具。它支持文件的上傳和下載,因此是綜合傳輸工具,但按傳統,習慣稱curl爲下載工具。做爲一款強力工具,curl支持包括HTTP、HTTPS、ftp等衆多協議,還支持POST、cookies、認證、從指定偏移處下載部分文件、用戶代理字符串、限速、文件大小、進度條等特徵。作網頁處理流程和數據檢索自動化,curl能夠祝一臂之力。
1. 單個文件下載
curl [-o 自定義文件名|-O] http://www.example.com/index.html
-o 自定義文件名
:把服務器響應輸出到指定文件-O
:與-o
選項做用同樣,區別在於以 url 路徑最後一個"/"以後的部分做爲文件名若是這兩個選項都不寫,curl 默認會把服務器響應內容輸出到終端
2. 斷點續傳
curl -O -C 偏移量 http://www.example.com/testfile.zip
-C 偏移量
:從指定的偏移量處繼續下載,偏移量以字節爲單位若是讓curl自動推斷出正確的續傳位置可使用 "-
" 代替偏移量,例如:curl -O -C - http://www.example.com/testfile.zip
3. 帶寬控制和下載配額
curl -O --limit-rate 下載速度 http://www.example.com/testfile.zip
--limit-rate 下載速度
:限定不超過指定的下載速度。例:--limit-rate 500k--max-filesize 下載配額
:指定最大可下載文件大小1. 自動跳轉
curl -L http://www.example.com
-L
:自動跳轉到重定向連接(Location)有些連接訪問時會自動跳轉(響應狀態碼爲3xx),-L
參數會讓 HTTP 請求跟隨服務器的重定向。例如:訪問 "http://a.com" 會重定向到 "http://b.com",使用"-L"選項會返回 "http://b.com" 的響應內容
2. 顯示響應頭信息
curl -i http://www.example.com
-i
:輸出包含響應頭信息-I
:輸出僅包含響應頭信息,不包含響應內容3. 顯示通訊過程
curl -v http://www.example.com
-v
:顯示一次http通訊的整個過程,包括端口鏈接和http request頭信息若是還須要查看額外的通訊信息,還可使用選項 "--trace 輸出文件
" 或者 "--trace-ascii 輸出文件
",例如:curl --trace-ascii output.txt http://www.example.com
,打開文件 "output.txt"能夠查看結果。
4. 指定http請求方式
curl -X 請求方式 http://www.example.com/test
-X 請求方式
:指定http請求方式(GET|POST|DELETE|PUT等)。默認是"GET"5. 添加http請求頭
curl -H 'kev:value' http://www.example.com/test
-H 'kev:value'
:添加http請求頭。例:-H 'Content-Type:application/json'
添加多個請求頭,-H
選項重複屢次便可。例如:curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' http://www.example.com/test
6. 傳遞請求參數
curl -X POST -d '參數' http://www.example.com/test
-d '參數'
:指定POST請求體。參數形式能夠是 "k1=v1&k2=v2", 也能夠是json串--data-urlencode '參數'
:與 -d
相同,區別在於會自動將發送的數據進行 URL 編碼使用 -d
參數之後,HTTP 請求會自動加上標頭"Content-Type:application/x-www-form-urlencoded
",而且會自動將請求轉爲 POST 方法,所以能夠省略 "-X POST
"。若是要發送的請求體爲json串,須要指定"Content-Type:application/json",例如:curl -d '{"user":"zhangsan", "password":"123456"}' -H 'Content-Type:application/json' http://www.example.com/login
參數較多時,能夠下把參數數據保存到本地文本中,而後從文本中讀取參數數據。例如:
curl -d '@requestData.txt' -H 'Content-Type:application/json' http://www.example.com/login
若是要以GET請求方式發送表單數據,能夠直接把參數直接追加url以後。例如:
curl http://www.example.com/login?user=zhansan&password=123456
7. 文件上傳
curl -F 'file=@文件' https://www.example.com/test
-F 'file=@文件'
:模擬http表單向服務器上傳文件。更多參數形式:file=@文件;name1=value1;name2=value2
文件上傳時 -F
選項默認會給 HTTP 請求頭加上 Content-Type: multipart/form-data
,默認文件MIME類型爲 application/octet-stream
指定上傳文件 MIME 類型。下面示例指定MIME類型爲"image/png"
curl -F 'file=@photo.png;type=image/png' https://google.com/profile
指定上傳文件名。下面示例中原始文件名爲"photo.png",可是服務器接收到的文件名爲 "me.png"
curl -F 'file=@photo.png;filename=me.png' https://google.com/profile
8. 設置來源網址
curl -e '源網址' https://www.example.com
-e '源網址'
或 --referer '源網址'
:設置來源網址,即http請求頭的 Referer
字段。和 -H
選項直接設置請求頭 "Referer" 字段等效9. 設置客戶端用戶代理
curl -A '代理信息' https://www.example.com
-A '代理信息'
或 --user-agent '代理信息'
:設置客戶端用戶代理,即http請求頭的 User-Agent
字段。和 -H
選項直接設置請求頭 "User-Agent" 字段等效將"User-Agent"改爲 Chrome 瀏覽器,示例:
curl -A 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Mobile Safari/537.36' https://www.example.com
移出 "User-Agent" 請求頭,示例:
curl -A '' https://www.example.com
10. 設置cookie
curl -b '參數' https://www.example.com
-b '參數'
或 --cookie '參數'
:設置cookie參數。參數形式能夠是 key1=value1;key2=value2...
,也能夠是一個文件-c 文件
:把服務器響應的cookie信息寫入到文件中至於具體的cookie的值,能夠從http response頭信息的 "Set-Cookie" 字段中獲得,能夠保存服務器返回的cookie信息到文件,再用這文件做爲下次請求的cookie信息,以下:
curl -c cookies.txt http://example.com
curl -b cookies.txt http://example.com
11. 設置服務器認證的用戶名和密碼
curl -u 'user[:password]' https://www.example.com
-u 'user[:password]'
:設置服務器認證的用戶名和密碼。只有用戶名時,執行curl後提示輸入密碼wget 是一個獨立的下載程序,無需額外的資源庫,它也容許你下載網頁中或是 FTP 目錄中的任何內容, 能享受它超凡的下載速度,簡單直接。
curl是一個多功能工具,是libcurl這個庫支持的。它能夠下載網絡內容,但同時它也能作更多別的事情。
從用途方面,wget傾向於網絡文件下載;curl傾向於網絡接口調試,至關於一個無圖形界面的 PostMan 工具