1. 程式人生 > >Linux下curl命令的使用

Linux下curl命令的使用

1.curl

     簡單來說,curl是一個用url方式,來和伺服器進行檔案傳輸和下載的工具。它不僅僅支援Http協議,還支援了其他的眾多的協議,例如DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP等。

2.curl工具格式和重要的選項

格式:

curl [options] [URL...]

重要選項:

-X method, --request method       #指定使用http的method,有GET/POST/PUT/DELETE等等,預設是GET方法
-d key=value, --data key=value    #指定HTTP請求中請求資料段,例如HTTP POST請求時需要傳遞給伺服器的資料,一個curl命令中,可以用多個-d選項,curl會將他們合併成key1=value1&key2=value2…
--data-urlencode key=value        #類似於-d key=value,但是會經過URL編碼
-F key=value, --form key=value    #模擬向伺服器提交表單form資料,curl會用multipart/form-data的格式傳遞給伺服器,而-d選項使用的是applica-tion/x-www-form-urlencoded,一個crul命令中,同樣可以有多個-F選項
-e url, --referer url             #在curl發起的http請求的請求頭中,設定referer資訊,向目標請求站點說明本次的http請求是來自那個http頁面
-H <header>, --header <header>    #為http請求設定請求頭資訊,例如,--header "Content-Type:application/json" -H Host:www.baididu.com
-A <agent string>, --user-agent<agent string>   #為http請求設定user-agent資訊,這個欄位是用來表示客戶端的裝置資訊。伺服器有時會根據這個欄位,針對不同裝置,返回不同格式的網頁
-u <user:password;options>, --user<user:password;options>   #為http請求設定使用者名稱和密碼
-o filename        #將curl返回的請求結果,寫入到filename檔案中
-b <name=data>, --cookie<name=data>, -b <cookie-file>, --cookie <cookie-file>  #為curl的http請求攜帶cookies資訊,可以在命令列用key=value設定,也可以從一個檔案中讀取
-c <cookie-file>, --cookie-jar <cookie-file>      #將伺服器返回的cookie資訊寫入到本地檔案中
-v, --verbose          #顯示curl的http請求的通訊過程,直接列印到終端上
--trace <file>         #將curl的http請求通訊過程寫入到檔案中
--trace-ascii <file>   #同--trace <file>類似,將curl的http請求通訊過程寫入到檔案中
-I           #只輸出HTTP響應報文的頭部
-i           #輸出HTTP響應報文的頭部以及響應正文
-s           #讓curl開啟靜默模式,即不輸出進度或錯誤等資訊
-L           #如果服務端返回3XX重定向,curl會繼續向新地址傳送請求
-x ip:port   #設定http請求的代理伺服器,若埠不指定,預設為1080

3.curl使用的例子

curl http://www.example.com
curl -o sina.output http://www.example.com
curl -s -o /dev/null http://www.example.com
curl -v http://www.example.com
curl --trace output.txt http://www.example.com
curl http://example.com/form.cgi?data=xxx
curl -X POST --data "data=xxx" http://example.com/form.cgi
curl -X POST --data-urlencode "date=April 1" http://example.com/form.cgi
curl --referer http://www.example.com http://www.example.com
curl --form 
[email protected]
--form press=OK http://www.example.com #利用curl上傳檔案 curl --cookie "name=xxx" www.example.com curl --header "Content-Type:application/json" http://example.com curl -X PUT -H "Accept: application/json" http://example.com/v1/user/add --basic -u user:passwd \ -F [email protected] \ -F message_name="adduser" \ -F host=hostname \ -F part_count=4 \ -F replication=5 \ -F part_rule=MOD \ -F cpu_num=20 \ -F mem_mb=10000 \ -F disk_mb=10000 \ -F token_pattern="token" \ curl -I -H "Host:www.example.com" www.example.com

備註:狹義地說,curl像是一個瀏覽器,但是比瀏覽器的支援的東西要多,因為它不僅支援Http協議,還支援其他很多的協議。

4.關於使用curl命令的-d引數攜帶HTTP request的請求體(request body)的一些問題
HTTP Requset請求頭中的Content-Type是用來說明請求體的MIME型別的,預設是application/x-www-form-urlencoded型別。curl -d引數是用攜帶POST/PUT請求的請求體內容的,有如下幾種支援的格式:
(1)

curl -d "param1=value1&param2=value2" -X POST http://localhost:3000/data
備註:Content-Type預設為application/x-www-form-urlencoded,所以使用param1=value1&param2=value2格式時,可省略。
(2)
curl -d "param1=value1&param2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/data
備註:使用param1=value1&param2=value2格式時,也可以顯式地指出application/x-www-form-urlencoded.
(3)
curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://localhost:3000/data
備註:使用json格式的資料,一定要顯式地指明Content-Type為application/json.
(4)
curl -d "@data.txt" -X POST http://localhost:3000/data
備註:將param1=value1&param2=value2格式的資料單獨放入檔案,然後通過-d "@filename"來引入
(5)
curl -d "@data.json" -H "Content-Type: application/json" -X POST http://localhost:3000/data
備註:將json格式的資料單獨放入檔案,然後通過-d "@filename"來引入

學習資料參考於:

https://gist.github.com/subfuzion/08c5d85437d5d4f00e58

http://www.ruanyifeng.com/blog/2011/09/curl.html

相關推薦

Linuxcurl命令的使用

1.curl      簡單來說,curl是一個用url方式,來和伺服器進行檔案傳輸和下載的工具。它不僅僅支援Http協議,還支援了其他的眾多的協議,例如DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDA

Linux常用命令之sed學習總結

linux sed sed命令 正則表達式 sed總結 Sed功能說明:Sed是linux下一個強大的文本文件處理工具,通過對文件增加、刪除、查找、查詢操作,配合正則表達式以實現工作中的各種需求。同時也是一名運維人員必須掌握的核心技能。---------------------------

linuxcat命令詳解

forever ron localhost root sta testing 幫助 查看 一點 1、cat 顯示文件連接文件內容的工具; cat 是一個文本文件查看和連接工具。查看一個文件的內容,用cat比較簡單,就是cat 後面直接接文件名。 比如: de>[[

linuxalias命令具體解釋

margin san 登錄 white gre con 變量 每次 ext linux下alias命令具體解釋 用途說明 設置命令的別名。在linux系統中假設命令太長又不符合用戶的習慣,那麽我們能夠為它指定一個別名。盡管能夠為命令建立“鏈接” 解決長文件名

linuxyum命令出現Loaded plugins: fastestmirror

tle enable yum test enabled net post sdn http linux下yum命令出現Loaded plugins: fastestmirror yum install的時候提示:Loaded plugins: fastestmirror

linuxwget命令,支持斷點續傳,ftp、http、https等協議

strong 工作 等待 命名 wget命令 source cmd itl 操作 轉載的地址:http:[email protected]/* *//blog/static/32097310201171833420905/ 今天操作遠端機器的時候發現少一個安裝

LinuxDiff命令

普通 命令 圖形化 標準輸入 們的 sina 工具 文件 內容 一般正常比較兩個文件用vimdiff,算是直接進入vim界面,如果比較兩個文件夾下面的文件,可以用diff,註意,這裏只會比較文件夾下面的同名文件,他會列出不一樣的點. 參考Linux下Diff命令使用方法 d

Linux基礎命令(一)

linux find 實戰操作 每天積累知識就會有成長,只要付出在不久的將來一定會有收獲,可能回來的晚點,但是一定要貴在堅持,今天第一次發博客,如不出意外情況我每天都會發的,這個是我總結的find命令的一些實戰,希望我總結的知識點在今後會對大家有幫助。find -name "*a" #以a

Linuxfind命令的使用

find為什麽要使用find命令? Linux系統中有著成千上萬的文件,如果你想要找到自己想要的文件,一款查找軟件是必不可少的,而locate是根據其生成的數據庫進行查找,雖然速度會略快,但非實時查找,有些新的文件或目錄是匹配不到的,而且locate是模糊匹配,而find命令為實時查找,且為精確匹配,如

linuxvim命令詳解

但是 左移 功能 命令 file lips 查找替換 括號匹配 所想 高級一些的編輯器,都會包含宏功能,vim當然不能缺少了,在vim中使用宏是非常方便的::qx 開始記錄宏,並將結果存入寄存器xq 退出記錄模式@x 播放記錄在x寄存器中的宏命令稍微

【轉載】Linuxchkconfig命令詳解

name scrip 再次 http 缺省 重新 禁止 level pool chkconfig命令主要用來更新(啟動或停止)和查詢系統服務的運行級信息。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接。 使用語法:chkconfig [--

linux 命令

print code col top clas class span log lin 1 find / -name 文件名 -type d 查找目錄 2 3 find / -name 文件名 -print 查找文件名 1 service 程序

linuxfile命令使用技巧

file命令使用1. windows以不同的擴展名來區分不同的文件,例如:.exe .png等2. linux下對擴展名沒有明確的要求有時就會遇到各種坑,當我們不知道是一個壓縮文件,用一些命令查看的時候,會出現各種亂碼[[email protected] ~]# cat text |he

linuxiptables命令的應用與詳解

iptables 一、iptables的規則表和鏈。 表(tables)提供特定的功能,iptables內置了4個表,即filter表、nat表、mangle表和raw表,分別用於實現包過濾,網絡地址轉換、包重構(修改)和數據跟蹤處理。 鏈(chains)是數據包傳播的路徑,每一條鏈其實就是眾多規則中的

Linux命令之clear和reset

linux clear reset 清除屏幕 1) clear : 刷新屏幕 保留歷史命令記錄 說明:此命令本質上是讓終端向後翻一頁 當向上滾動鼠標時,還是可以看到之前的命令操作記錄 2) reset : 重新初始化屏幕,清除歷史命令操作記錄本文出自 “梵高說我腦子有病” 博客,謝絕

Linux常用命令總結

命令註:本文檔只記錄最常用的命令以及命令下的參數,更多的命令請參考linux文檔或使用命令help、man、info 進行對應查詢常用文件目錄操作指令ls 參數 文件 顯示文件或目錄(文件為空時,代表顯示當前目錄) -l 列出文件詳細信息l(list)

linuxexpect命令實現批量ssh免密

輸入 left 防止 輸出 one 時間 line jdb eof 有時候我們需要批量發送ssh命令給服務器,但是有可能有些服務器是新加入的,還沒有配置ssh免密,這個時候就會提示我們輸入yes/no 或者password等,expect腳本命令就是用於在提示這些的時候

linuxyum命令出現Loaded plugins: fastestmirror Determining fastest mirrors

找到 plugin mir con test lin fast load min 今天yum install的時候出問題了,找了半天才找到一個可行的解決辦法 fastestmirror是yum的一個加速插件,這裏是插件提示信息是插件不能用了。 不能用就先別用唄,禁用掉,先y

linuxhistory命令顯示歷史指令記錄的使用方法

語法 tex 系統 linux下 命令 過程 相關 不堪 中間 linux下history命令顯示歷史指令記錄的使用方法 History命令主要用於顯示歷史指令記錄內容, 下達歷史紀錄中的指令 。1>History命令語法: [test@li

Linuxrar 命令壓縮和解壓詳解

保持 介紹 詳細 註意 壓縮 rar 縮進 command 解壓縮 例1:添加文件或目錄到壓縮檔案中,使用a命令。例如把文件files1添加到abc.rar中,使用a或m命令,a命令把file1文件添加到abc.rar檔案中保持原有的file1文件不變,m命令移動file1