可能是東半球最好的 Curl 學習指南,強烈建議收藏!
簡介
curl
是常用的命令列工具,用來請求 Web
伺服器。它的名字就是客戶端(client)的 URL
工具的意思。
它的功能非常強大,命令列引數多達幾十種。如果熟練的話,完全可以取代 Postman
這一類的圖形介面工具。
使用例項
本文介紹它的主要命令列引數,作為日常的參考,方便查閱。內容主要翻譯自 《curl cookbook》。為了節約篇幅,下面的例子不包括執行時的輸出,初學者可以先看我以前寫的 《curl 初學者教程》。
不帶有任何引數時,curl
就是發出 GET
請求。
$ curl
上面命令向 發出
GET
請求,伺服器返回的內容會在命令列輸出。
-A
-A 引數指定客戶端的使用者代理標頭,即 User-Agent
。curl
的預設使用者代理字串是 curl/[version]
。
$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
上面命令將 User-Agent
改成 Chrome
瀏覽器。
$ curl -A ''
上面命令會移除 User-Agent
標頭。你也可以透過 -H
引數直接指定標頭,更改 User-Agent
。
$ curl -H 'User-Agent: php/1.0'
-b
-b
引數用來向伺服器傳送 Cookie
。
$ curl -b 'foo=bar'
上面命令會生成一個標頭 Cookie: foo=bar
,向伺服器傳送一個名為 foo
、值為 bar
的 Cookie
。
$ curl -b 'foo1=bar' -b 'foo2=baz'
上面命令傳送兩個 Cookie
。
$ curl -b cookies.txt
上面命令讀取本地檔案 cookies.txt
,裡面是伺服器設定的 Cookie
(參見 -c
引數),將其傳送到伺服器。
-c
-c
引數將伺服器設定的 Cookie
寫入一個檔案。
$ curl -c cookies.txt
上面命令將伺服器的 HTTP
回應所設定 Cookie
寫入文字檔案 cookies.txt
。
-d
-d
引數用於傳送 POST
請求的資料體。
$ curl -d'login=emma&password=123'-X POST # 或者 $ curl -d 'login=emma' -d 'password=123' -X POST /login
使用 -d
引數以後,HTTP
請求會自動加上標頭 Content-Type : application/x-www-form-urlencoded
。並且會自動將請求轉為 POST
方法,因此可以省略 -X POST
。
-d
引數可以讀取本地文字檔案的資料,向伺服器傳送。
$ curl -d '@data.txt' /login
上面命令讀取 data.txt
檔案的內容,作為資料體向伺服器傳送。
--data-urlencode
--data-urlencode
引數等同於 -d
,傳送 POST
請求的資料體,區別在於會自動將傳送的資料進行 URL
編碼。
$ curl --data-urlencode 'comment=hello world' /login
上面程式碼中,傳送的資料 hello world
之間有一個空格,需要進行 URL
編碼。
-e
-e
引數用來設定 HTTP
的標頭 Referer
,表示請求的來源。
$ curl -e '?q=example'
上面命令將 Referer
標頭設為 ?q=example
。
-H
引數可以透過直接新增標頭 Referer
,達到同樣效果。
$ curl -H 'Referer: ?q=example'
-F
-F
引數用來向伺服器上傳二進位制檔案。
$ curl -F 'file=@photo.png' /profile
上面命令會給 HTTP
請求加上標頭 Content-Type: multipart/form-data
,然後將檔案 photo.png
作為 file
欄位上傳。
-F
引數可以指定 MIME
型別。
$ curl -F 'file=@photo.png;type=image/png' /profile
上面命令指定 MIME
型別為 image/png
,否則 curl
會把 MIME
型別設為 application/octet-stream
。
-F
引數也可以指定檔名。
$ curl -F 'file=@photo.png;filename=me.png' /profile
上面命令中,原始檔名為 photo.png
,但是伺服器接收到的檔名為 me.png
。
-G
-G
引數用來構造 URL
的查詢字串。
$ curl -G -d 'q=kitties' -d 'count=20' /search
上面命令會發出一個 GET
請求,實際請求的 URL 為 /search?q=kitties&count=20
。如果省略 --G
,會發出一個 POST
請求。
如果資料需要 URL
編碼,可以結合 --data--urlencode
引數。
$ curl -G --data-urlencode 'comment=hello world'
-H
-H
引數新增 HTTP
請求的標頭。
$ curl -H 'Accept-Language: en-US'
上面命令新增 HTTP
標頭 Accept-Language: en-US
。
$ curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy'
上面命令新增兩個 HTTP
標頭。
$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' /login
上面命令新增 HTTP
請求的標頭是 Content-Type: application/json
,然後用 -d
引數傳送 JSON
資料。
-i
-i
引數列印出伺服器回應的 HTTP
標頭。
$ curl -i
上面命令收到伺服器回應後,先輸出伺服器回應的標頭,然後空一行,再輸出網頁的原始碼。
-I
-I
引數向伺服器發出 HEAD
請求,然會將伺服器返回的 HTTP
標頭列印出來。
$ curl -I
上面命令輸出伺服器對 HEAD
請求的回應。
--head
引數等同於 -I
。
$ curl --head
-k
-k
引數指定跳過 SSL
檢測。
$ curl -k
上面命令不會檢查伺服器的 SSL
證照是否正確。
-L
-L
引數會讓 HTTP
請求跟隨伺服器的重定向。curl
預設不跟隨重定向。
$ curl -L -d 'tweet=hi'
--limit-rate
--limit-rate
用來限制 HTTP
請求和回應的頻寬,模擬慢網速的環境。
$ curl --limit-rate 200k
上面命令將頻寬限制在每秒 200K
位元組。
-o
-o
引數將伺服器的回應儲存成檔案,等同於 wget
命令。
$ curl -o example.html
上面命令將 儲存成
example.html
。
-O
-O
引數將伺服器回應儲存成檔案,並將 URL
的最後部分當作檔名。
$ curl -O /foo/bar.html
上面命令將伺服器回應儲存成檔案,檔名為 bar.html
。
-s
-s
引數將不輸出錯誤和進度資訊。
$ curl -s
上面命令一旦發生錯誤,不會顯示錯誤資訊。不發生錯誤的話,會正常顯示執行結果。
如果想讓 curl
不產生任何輸出,可以使用下面的命令。
$ curl -s -o /dev/null
-S
-S
引數指定只輸出錯誤資訊,通常與 -s
一起使用。
$ curl -s -o /dev/null
上面命令沒有任何輸出,除非發生錯誤。
-u
-u
引數用來設定伺服器認證的使用者名稱和密碼。
$ curl -u 'bob:12345' /login
上面命令設定使用者名稱為 bob
,密碼為 12345
,然後將其轉為 HTTP
標頭 Authorization: Basic Ym9iOjEyMzQ1
。
curl
能夠識別 URL
裡面的使用者名稱和密碼。
$ curl
上面命令能夠識別 URL
裡面的使用者名稱和密碼,將其轉為上個例子裡面的 HTTP
標頭。
$ curl -u 'bob' /login
上面命令只設定了使用者名稱,執行後,curl
會提示使用者輸入密碼。
-v
-v
引數輸出通訊的整個過程,用於除錯。
$ curl -v
--trace
引數也可以用於除錯,還會輸出原始的二進位制資料。
$ curl --trace -
-x
-x
引數指定 HTTP
請求的代理。
$ curl -x socks5://james:cats@myproxy.com:8080
上面命令指定 HTTP
請求透過 myproxy.com:8080
的 socks5
代理發出。
如果沒有指定代理協議,預設為 HTTP
。
$ curl -x james:cats@myproxy.com:8080
上面命令中,請求的代理使用 HTTP
協議。
-X
-X
引數指定 HTTP
請求的方法。
$ curl -X POST
上面命令對 發出 POST
請求。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69908604/viewspace-2658760/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python入門學習這篇夠了,強烈建議收藏!Python
- 可能是東半球最好的多執行緒講義!執行緒
- 強烈建議《Java實用系統開發指南》再版Java
- 9大效能最佳化經驗總結,強烈建議收藏!
- 東半球最好用的SSL證書續期工具
- 可能是東半球最全的RxJava使用場景小結RxJava
- 神器 Nginx 的學習手冊 ( 建議收藏 )Nginx
- 強烈建議出下一個版本
- 必備連結【強烈建議留存】
- 【乾貨分享】可能是東半球最全的.NETCore跨平臺微服務學習資源NetCore微服務
- 2022年最強大資料面試寶典(全文50000字,強烈建議收藏)大資料面試
- 程式設計師編寫技術文章需要的四個輔助神器 ,強烈建議收藏 !程式設計師
- 【強烈推薦】可能是最適合你的 Java 學習路線和方法Java
- 強烈建議社群文件選單進行改進!
- 個個身懷絕技,搭建個人部落格,最想推薦的10大框架,強烈建議收藏框架
- MySQL的InnoDB引擎強烈建議使用自增主鍵的原因MySql
- 簡單易懂的 React useState() Hook 指南(長文建議收藏)ReactHook
- 給Python學習者的檔案讀寫指南(含基礎與進階,建議收藏)Python
- [需求建議]強烈希望OneThink開發不要中斷
- 【Python】國內的pythoner強烈建議使用豆瓣的pypi源Python
- 學習 OpenStack 的新指南和教程的六個建議
- Python新手必備學習的4大階段,建議收藏Python
- 東半球最強法務部:任天堂和同人遊戲的「情感糾葛」遊戲
- 強烈建議兌換圖書那增加按“所需銀子”排序排序
- 3D 建模軟體哪家強?沒有最好只有更合適,小白建議學習這3個3D
- 強烈推薦|值得收藏的幾個圖片網站網站
- 【建議收藏】好用的API大全API
- 37個最好的學習新東西的網站(譯)網站
- 強烈推薦Python新手學習之——字典Python
- 史上最全:PostgreSQL DBA常用SQL查詢語句(建議收藏學習)SQL
- 2020學習前端開發有前途嗎?(建議收藏)前端
- Java學習建議Java
- FLEX學習建議Flex
- 乾貨!這可能是最全的IntelliJ IDEA For Mac快捷鍵說明,建議收藏!IntelliJIdeaMac
- ★tiny-rate 東半球最小的評級元件☆元件
- 1000行MySQL學習筆記,人手一份,建議收藏!MySql筆記
- 【建議收藏】swoft的最佳實踐
- [轉]Spring Boot讀取配置檔案常用方式[強烈建議閱讀]Spring Boot