curl 的用法指南

curl 的用法指南

轉自:http://www.ruanyifeng.com/blog/2019/09/curl-reference.html

作者: 阮一峰

日期: 2019年9月 5日

簡介

curl 是常用的命令行工具,用來請求 Web 服務器。它的名字就是客戶端(client)的 URL 工具的意思。

它的功能非常強大,命令行參數多達幾十種。如果熟練的話,完全可以取代 Postman 這一類的圖形界面工具。

img

本文介紹它的主要命令行參數,作為日常的參考,方便查閱。內容主要翻譯自《curl cookbook》。為了節約篇幅,下面的例子不包括運行時的輸出,初學者可以先看我以前寫的《curl 初學者教程》。

不帶有任何參數時,curl 就是發出 GET 請求。

$ curl https://www.example.com

上面命令向www.example.com發出 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' https://google.com

上面命令將User-Agent改成 Chrome 瀏覽器。

$ curl -A '' https://google.com

上面命令會移除User-Agent標頭。

也可以通過-H參數直接指定標頭,更改User-Agent

$ curl -H 'User-Agent: php/1.0' https://google.com

-b

-b參數用來向服務器發送 Cookie。

$ curl -b 'foo=bar' https://google.com

上面命令會生成一個標頭Cookie: foo=bar,向服務器發送一個名為foo、值為bar的 Cookie。

$ curl -b 'foo1=bar;foo2=bar2' https://google.com

上面命令發送兩個 Cookie。

$ curl -b cookies.txt https://www.google.com

上面命令讀取本地文件cookies.txt,里面是服務器設置的 Cookie(參見-c參數),將其發送到服務器。

-c

-c參數將服務器設置的 Cookie 寫入一個文件。

$ curl -c cookies.txt https://www.google.com

上面命令將服務器的 HTTP 回應所設置 Cookie 寫入文本文件cookies.txt

-d

-d參數用于發送 POST 請求的數據體。

$ curl -d'login=emma&password=123'-X POST https://google.com/login
# 或者
$ curl -d 'login=emma' -d 'password=123' -X POST  https://google.com/login

使用-d參數以后,HTTP 請求會自動加上標頭Content-Type : application/x-www-form-urlencoded。并且會自動將請求轉為 POST 方法,因此可以省略-X POST

-d參數可以讀取本地文本文件的數據,向服務器發送。

$ curl -d '@data.txt' https://google.com/login

上面命令讀取data.txt文件的內容,作為數據體向服務器發送。

–data-urlencode

--data-urlencode參數等同于-d,發送 POST 請求的數據體,區別在于會自動將發送的數據進行 URL 編碼。

$ curl --data-urlencode 'comment=hello world' https://google.com/login

上面代碼中,發送的數據hello world之間有一個空格,需要進行 URL 編碼。

-e

-e參數用來設置 HTTP 的標頭Referer,表示請求的來源。

curl -e 'https://google.com?q=example' https://www.example.com

上面命令將Referer標頭設為https://google.com?q=example

-H參數可以通過直接添加標頭Referer,達到同樣效果。

curl -H 'Referer: https://google.com?q=example' https://www.example.com

-F

-F參數用來向服務器上傳二進制文件。

$ curl -F 'file=@photo.png' https://google.com/profile

上面命令會給 HTTP 請求加上標頭Content-Type: multipart/form-data,然后將文件photo.png作為file字段上傳。

-F參數可以指定 MIME 類型。

$ curl -F 'file=@photo.png;type=image/png' https://google.com/profile

上面命令指定 MIME 類型為image/png,否則 curl 會把 MIME 類型設為application/octet-stream

-F參數也可以指定文件名。

$ curl -F 'file=@photo.png;filename=me.png' https://google.com/profile

上面命令中,原始文件名為photo.png,但是服務器接收到的文件名為me.png

-G

-G參數用來構造 URL 的查詢字符串。

$ curl -G -d 'q=kitties' -d 'count=20' https://google.com/search

上面命令會發出一個 GET 請求,實際請求的 URL 為https://google.com/search?q=kitties&count=20。如果省略--G,會發出一個 POST 請求。

如果數據需要 URL 編碼,可以結合--data--urlencode參數。

$ curl -G --data-urlencode 'comment=hello world' https://www.example.com

-H

-H參數添加 HTTP 請求的標頭。

$ curl -H 'Accept-Language: en-US' https://google.com

上面命令添加 HTTP 標頭Accept-Language: en-US

$ curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://google.com

上面命令添加兩個 HTTP 標頭。

$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login

上面命令添加 HTTP 請求的標頭是Content-Type: application/json,然后用-d參數發送 JSON 數據。

-i

-i參數打印出服務器回應的 HTTP 標頭。

$ curl -i https://www.example.com

上面命令收到服務器回應后,先輸出服務器回應的標頭,然后空一行,再輸出網頁的源碼。

-I

-I參數向服務器發出 HEAD 請求,然會將服務器返回的 HTTP 標頭打印出來。

$ curl -I https://www.example.com

上面命令輸出服務器對 HEAD 請求的回應。

--head參數等同于-I

$ curl --head https://www.example.com

-k

-k參數指定跳過 SSL 檢測。

$ curl -k https://www.example.com

上面命令不會檢查服務器的 SSL 證書是否正確。

-L

-L參數會讓 HTTP 請求跟隨服務器的重定向。curl 默認不跟隨重定向。

$ curl -L -d 'tweet=hi' https://api.twitter.com/tweet

–limit-rate

--limit-rate用來限制 HTTP 請求和回應的帶寬,模擬慢網速的環境。

$ curl --limit-rate 200k https://google.com

上面命令將帶寬限制在每秒 200K 字節。

-o

-o參數將服務器的回應保存成文件,等同于wget命令。

$ curl -o example.html https://www.example.com

上面命令將www.example.com保存成example.html

-O

-O參數將服務器回應保存成文件,并將 URL 的最后部分當作文件名。

$ curl -O https://www.example.com/foo/bar.html

上面命令將服務器回應保存成文件,文件名為bar.html

-s

-s參數將不輸出錯誤和進度信息。

$ curl -s https://www.example.com

上面命令一旦發生錯誤,不會顯示錯誤信息。不發生錯誤的話,會正常顯示運行結果。

如果想讓 curl 不產生任何輸出,可以使用下面的命令。

$ curl -s -o /dev/null https://google.com

-S

-S參數指定只輸出錯誤信息,通常與-s一起使用。

$ curl -s -o /dev/null https://google.com

上面命令沒有任何輸出,除非發生錯誤。

-u

-u參數用來設置服務器認證的用戶名和密碼。

$ curl -u 'bob:12345' https://google.com/login

上面命令設置用戶名為bob,密碼為12345,然后將其轉為 HTTP 標頭Authorization: Basic Ym9iOjEyMzQ1

curl 能夠識別 URL 里面的用戶名和密碼。

$ curl https://bob:12345@google.com/login

上面命令能夠識別 URL 里面的用戶名和密碼,將其轉為上個例子里面的 HTTP 標頭。

$ curl -u 'bob' https://google.com/login

上面命令只設置了用戶名,執行后,curl 會提示用戶輸入密碼。

-v

-v參數輸出通信的整個過程,用于調試。

$ curl -v https://www.example.com

--trace參數也可以用于調試,還會輸出原始的二進制數據。

$ curl --trace - https://www.example.com

-x

-x參數指定 HTTP 請求的代理。

$ curl -x socks5://james:cats@myproxy.com:8080 https://www.example.com

上面命令指定 HTTP 請求通過myproxy.com:8080的 socks5 代理發出。

如果沒有指定代理協議,默認為 HTTP。

$ curl -x james:cats@myproxy.com:8080 https://www.example.com

上面命令中,請求的代理使用 HTTP 協議。

-X

-X參數指定 HTTP 請求的方法。

$ curl -X POST https://www.example.com

上面命令對https://www.example.com發出 POST 請求。

參考鏈接

  • Curl Cookbook

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532764.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532764.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532764.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

怎么在html顯示已登錄狀態,jQuery Ajax 實現在html頁面實時顯示用戶登錄狀態

當網站是全靜態的html頁面時,而又希望網站會員在登錄之后并在所有頁面頭部顯示登錄狀態,如用戶名等,如果未登錄就是未登錄狀態,下面給大家來分享實現的方法。一、在html靜態頁面中加入div,并指定ID如:二、新…

互斥鎖、條件變量、信號量淺析

互斥鎖、條件變量、信號量淺析 互斥鎖與條件變量 條件變量是為了保證同步 條件變量用在多線程多任務同步的,一個線程完成了某一個動作就通過條件變量告訴別的線程,別的線程再進行某些動作(大家都在semtake的時候,就阻塞在哪里&a…

xpwifi熱點設置android,教你在XP電腦中開啟設置WiFi熱點使用的步驟

對于系統中網絡的連接問題是最重要的,那在處理不同的錯誤的情況中,對于無線網絡的設置也就是我們說的WiFi的使用也是會遇到問題的,那在操作的時候對于電腦中是怎么實現設置WiFi熱點的的,對于這個問題今天小編就來跟大家分享一下教…

C/C++ 指針詳解

指針詳解 參考視頻:https://www.bilibili.com/video/BV1bo4y1Z7xf/,感謝Bilibilifengmuzi2003的搬運翻譯及后續勘誤,也感謝已故原作者Harsha Suryanarayana的講解,RIP。 學習完之后,回看找特定的知識點,善…

android雙聯動列表,Android Fragment實現列表和內容聯動

在平板上經常能看到這種的情況:左邊是一個列表,右邊是列表項對應的內容,當點擊某一個列表時,右邊內容區也會隨之改變。下面使用fragment簡單的demo:思路:在mainactivity定義一個回調接口,并在列…

linux /proc 詳解

linux /proc 詳解 本文整理了一下 linux /proc下的幾個常用的目錄和文件,可供查閱,之后在學習工作中有別的用到的話會再補充。 /proc 簡介 Linux系統上的/proc目錄是一種文件系統,即proc文件系統。與其它常見的文件系統不同的是&#xff0…

android模擬器太卡,安卓模擬器安裝之后太卡怎么解決

用安卓模擬器玩游戲原理就是在電腦上安裝了一部手機,如果你的電腦配置不是非常高,能不卡頓嗎?遇到卡頓怎么解決?1、安裝最新版本的顯卡驅動。逍遙模擬器對于顯卡的性能要求很高,因此升級至最新版本的顯卡驅動,是確保逍遙模擬器流…

編程環境中Runtime(運行時)的三個含義

編程環境中Runtime(運行時)的三個含義 轉自:https://www.zhihu.com/question/20607178 知乎答主doodlewind 三個含義 實際上編程語境中的 runtime 至少有三個含義,分別是: 指「程序運行的時候」,即程序…

非常不錯的一款html5【404頁面】,不含js腳本可以左右擺動,原生JavaScript實現日歷功能代碼實例(無引用Jq)...

這篇文章主要介紹了原生JavaScript實現日歷功能代碼實例(無引用Jq),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下成品顯示,可左右切換月份html 代碼移動端日歷日一二三四五六css代碼*{margin: 0;pa…

12 [虛擬化] 進程抽象;fork,execve,exit

12 [虛擬化] 進程抽象;fork,execve,exit 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1N741177F5?p12 講義:http://jyywiki.cn/OS/2021/slides/8.slides#/ 本講概述 回到“…

計算機應用與基礎實踐怎么考,自考計算機基礎應用科目筆試和實踐性考試怎么考...

自考計算機基礎應用科目筆試和實踐性考試怎么考? 報考自考的考生有些專業的考生會在自己的課程科目中發現計算機基礎應用不僅有理論知識考試還有實踐性考試,那么自考計算機基礎應用科目的筆試和實踐性考試怎么考?自考計算機基礎應用科目筆試怎…

14 [虛擬化] 虛存抽象;Linux進程的地址空間

14 [虛擬化] 虛存抽象;Linux進程的地址空間 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1N741177F5?p14 講義:http://jyywiki.cn/OS/2021/slides/10.slides#/ 本講概述 程序 狀態機;…

瀏覽器是指在用戶計算機上,自考《網頁設計與制作》測試題及答案

自考《網頁設計與制作》測試題及答案學習是一個不斷積累的過程,為幫助考生們更好地復習《與制作》科目知識點,以下是搜索整理的一份自考《網頁設計與制作》測試題及答案,供參考練習,希望對大家有所幫助!想了解更多相關信息請持續關…

Ubuntu 18.04 安裝OpenCV C++

Ubuntu 18.04 安裝OpenCV C 構建并安裝 僅構建核心模塊 # 更新并安裝依賴 # 更新并安裝依賴 sudo apt update && sudo apt install -y cmake g wget unzip# 下載并解壓包 wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zip unzip opencv.zip…

html計算x的y,HTML5畫布:旋轉時計算x,y點

我開發了一個HTML5 Canvas應用程序,它涉及到讀取一個xml文件,該文件描述了需要在畫布上繪制的箭頭,直形和其他形狀的位置。的XML布局的HTML5畫布:旋轉時計算x,y點實施例:如果對象被旋轉它涉及計算一個點的位…

(2021) 20 [虛擬化] 進程調度

(2021) 20 [虛擬化] 進程調度 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1HN41197Ko?p20 講義:http://jyywiki.cn/OS/2021/slides/11.slides#/ 背景 — 機制與策略分離 機制:一個通用的、可定制…

計算機組裝過程英文版,計算機組裝與維護試題及答案(國外英文資料).doc

計算機組裝與維護試題及答案(國外英文資料)計算機組裝與維護試題及答案(國外英文資料)(1) choiceIn the following equipment, the input device is (b)A. b. b. c. c. c. d. d.In Windows 98, the combination of CTRL Alt Del is (c)A. cold start b. heat start c. interr…

make命令及makefile

make命令及makefile 轉自:https://www.ruanyifeng.com/blog/2015/02/make.html Make 命令教程 作者: 阮一峰 日期: 2015年2月20日 代碼變成可執行文件,叫做編譯(compile);先編譯這個&#…

局域網中計算機網絡密碼查看,Win10怎么查看電腦上已知的wifi網絡密碼

方法一:網絡和共享中心查詢1、在Windows 10桌面最左下角的【Windwos開始圖標上右鍵】,在彈出的菜單中點擊打開【網絡連接】,如下圖所示。2、在打開的網絡連接設置中,雙擊已經連接的【無線網絡名稱】,在彈出的【WLAN狀態…

(2021) 22 [持久化] 1-Bit的存儲

(2021) 22 [持久化] 1-Bit的存儲 南京大學操作系統課蔣炎巖老師網絡課程筆記。 視頻:https://www.bilibili.com/video/BV1HN41197Ko?p22 講義:http://jyywiki.cn/OS/2021/slides/12.slides#/ 背景 回顧 操作系統是什么?一組對象 一組API…