curl基本用法
curl 是一種命令行工具,作用是發出網絡請求,然后獲取數據,顯示在"標準輸出"(stdout)上面。
以下是博主整理的一些關于curl命令的基本用法。
| -A/--user-agent <string> | 設置用戶代理發送給服務器 | 
| -b/--cookie <name=string/file> | cookie字符串或文件讀取位置 | 
| -c/--cookie-jar <file> | 操作結束后把cookie寫入到這個文件中 | 
| -C/--continue-at <offset> | 斷點續轉 | 
| -D/--dump-header <file> | 把header信息寫入到該文件中 | 
| -e/--referer | 來源網址 | 
| -f/--fail | 連接失敗時不顯示http錯誤 | 
| -o/--output | 把輸出寫到該文件中 | 
| -O/--remote-name | 把輸出寫到該文件中,保留遠程文件的文件名 | 
| -r/--range <range> | 檢索來自HTTP/1.1或FTP服務器字節范圍 | 
| -s/--silent | 靜音模式。不輸出任何東西 | 
| -T/--upload-file <file> | 上傳文件 | 
| -u/--user <user[:password]> | 設置服務器的用戶和密碼 | 
| -w/--write-out [format] | 完成后輸出什么 | 
| -x/--proxy <host[:port]> | 在給定的端口上使用HTTP代理 | 
| -#/--progress-bar | 進度條顯示當前的傳送狀態 | 
示例:
基本用法
# curl http://www.baidu.com
保存訪問的網頁
重定向:
# curl http://www.baidu.com >> linux.html
使用 -o 參數:
# curl -o linux.html http://www.baidu.com
當然也可以使用 -O 參數保存網頁中的文件(注意:一定要指定具體的文件)
# curl -O http://www.baidu.com/hello.sh
測試網頁返回值
# curl -o /dev/null -s -w %{http_code} www.baidu.com
顯示網頁返回狀態碼,200表示成功。
詳細可見博主另外一篇:https://www.cnblogs.com/liuxia912/p/10960116.html
指定proxy服務器以及其端口
curl支持通過內置option:-x支持設置代理
# curl -x 192.168.0.1:10086  http://www.baidu.com
				
cookie
很多網站可以通過cookie來記錄session信息,curl可以通過內置命令來保存和使用cookie信息。
保存http的response里面的cookie信息。內置option:-c(小寫)
# curl -c cookie.txt http://www.baidu.com
						
執行之后,cookie信息就被保存到
								cookie.txt
							文件里面了。
保存http的response里面的header信息。內置option:-D
# curl -D cookied.txt http://www.baidu.com
						
同上。(注:-c與-D產生的cookie文件并不一致)
cookie使用
很多網站使用cookie去鑒定用戶訪問權限,curl通過內置option:-b
# curl -b cookiec.txt http://www.baidu.com
						
模擬瀏覽器訪問
在某些特定情況下,我們需要模擬訪問的瀏覽器以及版本,使用內置option:-A進行訪問
# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.baidu.com
				
這樣服務器端就會認為是使用IE8.0去訪問的。
偽造referer(盜鏈)
很多服務器在收到請求的時候,會去check referer(源網頁)。curl使用內置option:-e可以指定referer
# curl -e "www.baidu.com" http://mail.linux.com
				
這樣就會讓服務器其以為你是從www.baidu.com點擊某個鏈接過來的
下載文件
使用內置option:-o下載
# curl -o tieba1.jpg http:www.baidu.com/tieba1.JPG
						
使用內置option:-O下載
# curl -O http://www.baidu.com/tieba1.JPG
						
循環下載
# curl -O http://www.baidu.com/tieba[1-5].JPG
						
下載重命名
# curl -O http://www.baidu.com/{hello,bb}/tieba[1-5].JPG
						
由于下載的時候有名字重合的地方,會產生覆蓋。
# curl -o #1_#2.JPG http://www.baidu.com/{hello,bb}/tieba[1-5].JPG
						
這樣在hello/tieba1.JPG的文件下載下來就會變成hello_tieba1.JPG,其他文件依此類推,從而有效的避免了文件被覆蓋
分塊下載
有時候下載的東西會比較大,這個時候我們可以分段下載。使用內置option:-r
# curl -r 0-100 -o
								tieba1_part1.JPG http://www.baidu.com/tieba1.JPG
						
# curl -r 100-200 -o
								tieba1_part2.JPG http://www.baidu.com/tieba1.JPG
						
# curl -r 200- -o
								tieba1_part3.JPG http://www.baidu.com/tieba1.JPG
						
# cat tieba1_part* > tieba1.JPG</pre>
						
通過ftp下載
curl可以通過ftp下載文件,curl提供兩種從ftp中下載的語法
# curl -O -u 用戶名:密碼 ftp://www.baidu.com/tieba1.JPG
# curl -O ftp://用戶名:密碼@www.baidu.com/tieba1.JPG
顯示下載進度條
# curl -# -O http://www.baidu.com/tieba1.JPG
						
斷點續傳
如果在下載tieba1.JPG的過程中突然掉線了,可以使用以下的方式續傳
# curl -C -O http://www.baidu.com/tieba1.JPG
				
上傳文件
curl不僅僅可以下載文件,還可以上傳文件。通過內置option:-T來實現
# curl -T tieba1.JPG -u 用戶名:密碼 ftp://www.baidu.com/img/
顯示抓取錯誤
# curl -f http://www.baidu.com/error
				
其他
| -a/--append | 上傳文件時,附加到目標文件 | 
| --anyauth | 可以使用"任何"身份驗證方法 | 
| --basic | 使用HTTP基本驗證 | 
| -B/--use-ascii | 使用ASCII文本傳輸 | 
| -d/--data <data> | HTTP POST方式傳送數據 | 
| --data-ascii <data> | 以ascii的方式post數據 | 
| --data-binary <data> | 以二進制的方式post數據 | 
| --negotiate | 使用HTTP身份驗證 | 
| --digest | 使用數字身份驗證 | 
| --disable-eprt | 禁止使用EPRT或LPRT | 
| --disable-epsv | 禁止使用EPSV | 
| --egd-file <file> | 為隨機數據(SSL)設置EGD socket路徑 | 
| --tcp-nodelay | 使用TCP_NODELAY選項 | 
| -E/--cert <cert[:passwd]> | 客戶端證書文件和密碼 (SSL) | 
| --cert-type <type> | 證書文件類型 (DER/PEM/ENG) (SSL) | 
| --key <key> | 私鑰文件名 (SSL) | 
| --key-type <type> | 私鑰文件類型 (DER/PEM/ENG) (SSL) | 
| --pass <pass> | 私鑰密碼 (SSL) | 
| --engine <eng> | 加密引擎使用 (SSL). "--engine list" for list | 
| --cacert <file> | CA證書 (SSL) | 
| --capath <directory> | CA目 (made using c_rehash) to verify peer against (SSL) | 
| --ciphers <list> | SSL密碼 | 
| --compressed | 要求返回是壓縮的形式 | 
| --connect-timeout <seconds> | 設置最大請求時間 | 
| --create-dirs | 建立本地目錄的目錄層次結構 | 
| --crlf | 上傳是把LF轉變成CRLF | 
| --ftp-create-dirs | 如果遠程目錄不存在,創建遠程目錄 | 
| --ftp-method [multicwd/nocwd/singlecwd] | 控制CWD的使用 | 
| --ftp-pasv | 使用 PASV/EPSV 代替端口 | 
| --ftp-skip-pasv-ip | 使用PASV的時候,忽略該IP地址 | 
| --ftp-ssl | 嘗試用 SSL/TLS 來進行ftp數據傳輸 | 
| --ftp-ssl-reqd | 要求用 SSL/TLS 來進行ftp數據傳輸 | 
| -F/--form <name=content> | 模擬http表單提交數據 | 
| -form-string <name=string> | 模擬http表單提交數據 | 
| -g/--globoff | 禁用網址序列和范圍使用{}和[] | 
| -G/--get | 以get的方式來發送數據 | 
| -h/--help | 幫助 | 
| -H/--header <line> | 自定義頭信息傳遞給服務器 | 
| --ignore-content-length | 忽略的HTTP頭信息的長度 | 
| -i/--include | 輸出時包括protocol頭信息 | 
| -I/--head | 只顯示文檔信息 | 
| -j/--junk-session-cookies | 讀取文件時忽略session cookie | 
| --interface <interface> | 使用指定網絡接口/地址 | 
| --krb4 <level> | 使用指定安全級別的krb4 | 
| -k/--insecure | 允許不使用證書到SSL站點 | 
| -K/--config | 指定的配置文件讀取 | 
| -l/--list-only | 列出ftp目錄下的文件名稱 | 
| --limit-rate <rate> | 設置傳輸速度 | 
| --local-port<NUM> | 強制使用本地端口號 | 
| -m/--max-time <seconds> | 設置最大傳輸時間 | 
| --max-redirs <num> | 設置最大讀取的目錄數 | 
| --max-filesize <bytes> | 設置最大下載的文件總量 | 
| -M/--manual | 顯示全手動 | 
| -n/--netrc | 從netrc文件中讀取用戶名和密碼 | 
| --netrc-optional | 使用 .netrc 或者 URL來覆蓋-n | 
| --ntlm | 使用 HTTP NTLM 身份驗證 | 
| -N/--no-buffer | 禁用緩沖輸出 | 
| -p/--proxytunnel | 使用HTTP代理 | 
| --proxy-anyauth | 選擇任一代理身份驗證方法 | 
| --proxy-basic | 在代理上使用基本身份驗證 | 
| --proxy-digest | 在代理上使用數字身份驗證 | 
| --proxy-ntlm | 在代理上使用ntlm身份驗證 | 
| -P/--ftp-port <address> | 使用端口地址,而不是使用PASV | 
| -Q/--quote <cmd> | 文件傳輸前,發送命令到服務器 | 
| --range-file | 讀取(SSL)的隨機文件 | 
| -R/--remote-time | 在本地生成文件時,保留遠程文件時間 | 
| --retry <num> | 傳輸出現問題時,重試的次數 | 
| --retry-delay <seconds> | 傳輸出現問題時,設置重試間隔時間 | 
| --retry-max-time <seconds> | 傳輸出現問題時,設置最大重試時間 | 
| -S/--show-error | 顯示錯誤 | 
| --socks4 <host[:port]> | 用socks4代理給定主機和端口 | 
| --socks5 <host[:port]> | 用socks5代理給定主機和端口 | 
| -t/--telnet-option <OPT=val> | Telnet選項設置 | 
| --trace <file> | 對指定文件進行debug | 
| --trace-ascii <file> | Like --跟蹤但沒有hex輸出 | 
| --trace-time | 跟蹤/詳細輸出時,添加時間戳 | 
| --url <URL> | Spet URL to work with | 
| -U/--proxy-user <user[:password]> | 設置代理用戶名和密碼 | 
| -V/--version | 顯示版本信息 | 
| -X/--request <command> | 指定什么命令 | 
| -y/--speed-time | 放棄限速所要的時間。默認為30 | 
| -Y/--speed-limit | 停止傳輸速度的限制,速度時間'秒 | 
| -z/--time-cond | 傳送時間設置 | 
| -0/--http1.0 | 使用HTTP 1.0 | 
| -1/--tlsv1 | 使用TLSv1(SSL) | 
| -2/--sslv2 | 使用SSLv2的(SSL) | 
| -3/--sslv3 | 使用的SSLv3(SSL) | 
| --3p-quote | like -Q for the source URL for 3rd party transfer | 
| --3p-url | 使用url,進行第三方傳送 | 
| --3p-user | 使用用戶名和密碼,進行第三方傳送 | 
| -4/--ipv4 | 使用IP4 | 
| -6/--ipv6 | 使用IP6 | 
總結
 
                            
                        - 上一篇: 「newbee-mall新蜂商城开源啦」
- 下一篇: netcat
