CURL的使用詳解

CURL的使用詳解

發(fā)起GET請求

  1. 命令后直接跟地址

    curl 'https://www.baidu.com'
    
  2. 請求中拼接查詢參數

    curl -G -d 'key=value' 'https://www.baidu.com'
    

    這里就等于在瀏覽器地址欄里訪問 https://www.baidu.com?key=value

    如果需要對value進行url編碼捉兴,那么可以這樣寫:

    curl -G --data-urlencode 'key=value' 'https://www.baidu.com'
    

    注意川蒙,如果沒有-G參數的話讨惩,會發(fā)起一個POST請求为狸,-d指定的參數會被使用form表單的形式提交

  3. 保存響應信息到一個指定文件

    curl -o response.txt 'https://www.baidu.com'
    
  4. 請求中增加header

    curl 'https://www.baidu.com/' \
    -H 'Host: www.baidu.com' \
    -H 'Accept-Language: zh-cn' \
    -H 'Referer: https://www.baidu.com/'
    
    

發(fā)起POST請求

  1. 發(fā)起一個最簡單的POST請求

    curl -X POST 'https://www.baidu.com'
    
  2. 使用form表單的形式提交數據

    curl -d 'username=123&password=123' -X POST 'https://www.baidu.com'
    

    -d 后面的內容就是request body

    增加了-d 這個參數背苦,會默認的設置 header Content-Typeapplication/x-www-form-urlencoded

    甚至在設置了-d 以后互捌,-X POST 這個參數也可以省略掉潘明,請求方式默認會使用POST 方式

    curl -d 'username=123&password=123' 'https://www.baidu.com'
    
  3. form表單數據拆開,更易閱讀

    curl 'https://www.baidu.com' \
    -d 'username=123' \
    -d 'password=123' 
    

    多個參數的時候秕噪,可以每個參數用一個單獨的-d 來指定

  4. 使用JSON格式提交數據

    curl 'https://www.baidu.com' \
    -H 'Content-Type: application/json' \
    -d '{"username": "123", "password": "123"}'
    

    -H: 首先使用-H 指定提交的數據為json格式

    -d: 是指定提交的內容钳降,這里是一個json格式的字符串

  5. 從文件中加載提交數據

    curl -d '@data.txt' 'https://www.baidu.com'
    

    -d 參數中使用 @符號來指定一個文件名,告訴curl加載這個文件的內容來作為請求的數據腌巾。

  6. 對提交的數據進行URL編碼

    上面講到的 -d 參數是不會對請求的數據做任何處理的遂填,但是有的時候我們可能會提交一些待特殊字符的參數,例如網址澈蝙、空格瓢捉、問號等等丹莲,這個時候就需要對請求數據進行url編碼,curl已經提供了先編碼再提交的功能,只需要吧-d 替換為 --data-urlencode 怔毛。--data-urlencode的其他用法與 -d完全一樣。

    curl 'https://www.baidu.com' \
    --data-urlencode 'username=123' \
    --data-urlencode 'password=123' 
    
  7. 上傳文件

    curl -F 'file=@image.png' 'https://www.baidu.com'
    

    -F :利用這個參數指定要上傳的文件塘安,同時參數還會自動的設置header中的Content-Typemultipart/form-data

  8. 上傳文件的同時指定MIME類型

    curl -F 'file=@image.png;type=image/png' 'https://www.baidu.com'
    
  9. 上傳文件农曲,修改上傳文件的文件名

    curl -F 'file=@image.png;filename=otherName.png' 'https://www.baidu.com'
    

cookies自動保存與發(fā)送

curl -c cookies.txt 'https://www.baidu.com' \
--data-urlencode 'username=123' \
--data-urlencode 'password=123'


curl -b cookies.txt 'https://www.baidu.com'

-c 會自動的把cookies保存到 cookies.txt 文件中

-b 會自動的把cookies.txt 中的內容當做cookies放到請求中

User Agent修改

  1. 利用 -A 參數修改

    使用 -A 參數可以直接修改 User-Agent

    #模擬Firefox
    curl 'https://www.baidu.com' \
    -A 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'
    
    #模擬Chrome
    curl 'https://www.baidu.com' \
    -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
    
    #模擬Safari
    curl 'https://www.baidu.com' \
    -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15'
    
  2. 通過 -H 修改

    curl 'https://www.baidu.com' \
    -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15'
    

修改 Referrer

修改Referrer也有兩種方法,一種是通過-e 直接修改厉斟,另一種是通過 -H 在header中修改

curl 'https://www.baidu.com' \
-e 'https://www.baidu.com'

curl 'https://www.baidu.com' \
-H 'Referer: https://www.baidu.com'

響應重定向

默認情況下curl不響應重定向挚躯,也就是在響應碼為 3XX 的時候不會執(zhí)行重定向,需要指定-L 參數才會響應擦秽。

curl -L 'https://www.baidu.com'

靜默模式

curl -s 'https://www.baidu.com'

-s 會隱藏掉錯誤信息和進度條码荔,但是會打印響應信息。

如果也想把響應信息省略掉感挥,那么可以使用下面的命令

curl -s -o /dev/null 'https://www.baidu.com'

-o /dev/null 會丟棄響應body

如果想靜默模式的情況下缩搅,打印請求出現的錯誤,可以使用下面的命令

curl -S -s -o /dev/null 'https://www.baidu.com'

-S-s 一起用的時候链快,仍然會隱藏進度條誉己,但是當請求錯誤的時候,會打印錯誤信息域蜗。

限速

#限制訪問速度為1k
curl --limit-rate 1k 'https://www.baidu.com'

#限制訪問速度為1byte
curl --limit-rate 1 'https://www.baidu.com'

打印請求Headers

curl -v -s -o /dev/null --stderr - 'https://www.baidu.com' | grep '^>'

-v 會打印出詳細的調試信息巨双, -o /dev/null 把響應body丟棄

--stderr - 把標準的錯誤輸出轉發(fā)到標準輸出,這樣就可以使用grep 命令來做篩選了霉祸。

篩選出>開頭的行筑累,就是請求Headers

只打印響應碼

curl -w '%{response_code}' -s -o /dev/null 'https://www.baidu.com'

不驗證ssl證書

curl -k 'https://www.baidu.com'

打印響應Headers

  1. 只用-i 這樣會既打印Header信息又打印Body信息

    curl -i https://www.baidu.com
    
  1. 只打印Header信息

    curl -s -o /dev/null -D - https://www.baidu.com
    

    -s :作用是不展示進度條

    -o /dev/null :作用是把輸出的body丟棄

    -D - :作用是把headers信息轉存到一個文件中,這里的- 代表標準輸出

    下面這個命令看似也是只打印了header

    curl -I https://www.baidu.com
    

    但是實際這個命令是發(fā)送的HEAD請求丝蹭,而不是GET或者POST慢宗,從返回的頭信息上也可以看出來。

    image-20210721092350110

    下面的返回長度有 2443,上面的返回長度只有277镜沽。

    另外敏晤,如果是一些resful風格接口,只支持GET或者POST缅茉,這時候使用-I的時候就會報404錯誤

    image-20210721092602331
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末嘴脾,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子蔬墩,更是在濱河造成了極大的恐慌译打,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拇颅,死亡現場離奇詭異奏司,居然都是意外死亡,警方通過查閱死者的電腦和手機樟插,發(fā)現死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門韵洋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岸夯,你說我怎么就攤上這事麻献。” “怎么了猜扮?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵勉吻,是天一觀的道長。 經常有香客問我旅赢,道長齿桃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任煮盼,我火速辦了婚禮短纵,結果婚禮上,老公的妹妹穿的比我還像新娘僵控。我一直安慰自己香到,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布报破。 她就那樣靜靜地躺著悠就,像睡著了一般。 火紅的嫁衣襯著肌膚如雪充易。 梳的紋絲不亂的頭發(fā)上梗脾,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音盹靴,去河邊找鬼炸茧。 笑死瑞妇,一個胖子當著我的面吹牛,可吹牛的內容都是我干的梭冠。 我是一名探鬼主播辕狰,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼妈嘹!你這毒婦竟也來了柳琢?” 一聲冷哼從身側響起绍妨,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤润脸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后他去,有當地人在樹林里發(fā)現了一具尸體毙驯,經...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年灾测,在試婚紗的時候發(fā)現自己被綠了爆价。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡媳搪,死狀恐怖铭段,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情秦爆,我是刑警寧澤序愚,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站等限,受9級特大地震影響爸吮,放射性物質發(fā)生泄漏。R本人自食惡果不足惜望门,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一形娇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧筹误,春花似錦桐早、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丽惶,卻和暖如春炫七,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钾唬。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工万哪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侠驯,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓奕巍,卻偏偏與公主長得像吟策,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子的止,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內容

  • 一檩坚、安裝: (大多數 Linux 發(fā)行版都預先安裝了 curl 包,不需要自行安裝) Ubuntu:sudo ap...
    哎呦666閱讀 24,207評論 0 1
  • CURL是PHP的一個擴展诅福,利用該擴展可以實現服務器之間的數據或文件傳輸匾委,用來采集網絡中的html網頁文件、其他服...
    趙客縵胡纓v吳鉤霜雪明閱讀 6,595評論 0 7
  • 本文轉載自curl 的用法指南-阮一峰 簡介 ??curl 是常用的命令行工具氓润,用來請求 Web 服務器赂乐。它的名字...
    殉道者之花火閱讀 6,370評論 0 3
  • 在Linux中curl是一個利用URL規(guī)則在命令行下工作的文件傳輸工具,可以說是一款很強大的http命令行工具咖气,習...
    mysimplebook閱讀 6,684評論 0 0
  • -A 指定客戶端用戶代理標頭挨措,User-Agentcurl -A 'Mozilla/5.0 (Windows N...
    TZX_0710閱讀 302評論 0 1