1. 程式人生 > >可能是東半球最好的 Curl 學習指南,強烈建議收藏!

可能是東半球最好的 Curl 學習指南,強烈建議收藏!

file


本文首發於:微信公眾號「運維之美」,公眾號 ID:Hi-Linux。

「運維之美」是一個有情懷、有態度,專注於 Linux 運維相關技術文章分享的公眾號。公眾號致力於為廣大運維工作者分享各類技術文章和釋出最前沿的科技資訊。公眾號的核心理念是:分享,我們認為只有分享才能使我們的團體更強大。如果你想第一時間獲取最新技術文章,歡迎關注我們!

公眾號作者 Mike,一個月薪 3000 的雜工。從事 IT 相關工作 15+ 年,熱衷於網際網路技術領域,認同開源文化,對運維相關技術有自己獨特的見解。很願意將自己積累的經驗、心得、技能與大家分享交流,篇篇乾貨不要錯過喲。如果你想聯絡到我,可關注公眾號獲取相關資訊。


簡介

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

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

使用例項

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

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

$ curl https://www.example.com

上面命令向 www.example.com

發出 GET 請求,伺服器返回的內容會在命令列輸出。

-A

-A 引數指定客戶端的使用者代理標頭,即 User-Agentcurl 的預設使用者代理字串是 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、值為 barCookie

$ curl -b 'foo1=bar' -b 'foo2=baz' 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 '[email protected]' https://google.com/profile

上面命令會給 HTTP 請求加上標頭 Content-Type: multipart/form-data,然後將檔案 photo.png 作為 file 欄位上傳。

-F 引數可以指定 MIME 型別。

$ curl -F '[email protected];type=image/png' https://google.com/profile

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

-F 引數也可以指定檔名。

$ curl -F '[email protected];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:[email protected]/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:[email protected]:8080 https://www.example.com

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

如果沒有指定代理協議,預設為 HTTP

$ curl -x james:[email protected]:8080 https://www.example.com

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

-X

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

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

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

參考連結

  • Curl Cookbook

> 來源:阮一峰的網路日誌 > > 原文:http://t.cn/AiRQUQlz > > 題圖:來自谷歌圖片搜尋 > > 版權:本文版權歸原作者所有 > > 投稿:歡迎投稿,郵箱: [email protected]

相關推薦

可能東半球最好Curl 學習指南強烈建議收藏

本文首發於:微信公眾號「運維之美」,公眾號 ID:Hi-Linux。 「運維之美」是一個有情懷、有態度,專注於 Linux 運

Python爬蟲學習路線強烈建議收藏這十一條

    前言 (一)如何學習Python 學習Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變數、資料結構、語法等,基礎過的很快,基本上1~2周時間就能過完了,我當時是在這兒看的基礎:Pyt

Excel 各種密碼的破解大全建議收藏

本文介紹在 Excel 的多個檔案版本中破解各類密碼,包含檔案的檢視、只讀密碼,工作表、工作簿的保護密碼,以及 VBA 工程密碼。內容非常全面,建議你收藏。檔案作者加密碼是防止資料被檢視,修改,所以,檔案密碼破解僅供於學習參考,請尊重作者版權,不要斷人財路。   下面的有些操作不易撤銷,為了

【程式設計師江湖】更多內容請關注微信公眾號:程式設計師江湖 | 收穫BAT頭條網易等大廠研發offer的校招老司機專注於分享校招乾貨與技術文章。包括但不限於:求職準備網申技巧筆經面經簡歷指南等內容。更有Java學習指南,技術面試知識點等方面的文章偶爾

程式設計師江湖 更多內容請關注微信公眾號:程式設計師江湖 | 收穫BAT頭條網易等大廠研發offer的校招老司機,專注於分享校招乾貨與技術文章。包括但不限於:求職準備,網申技巧,筆經面經,簡歷指南等內容。更有Java...

程式設計師江湖(更多內容請關注微信公眾號:程式設計師江湖 | 收穫BAT頭條網易等大廠研發offer的校招老司機專注於分享校招乾貨與技術文章。包括但不限於:求職準備網申技巧筆經面經簡歷指南等內容。更有Java學習指南,技術面試知識點等方面的文章偶爾分

Spring與SpringMVC原始碼解析 本專欄主要講解Spring和SpringMVC的實現原理。 Spring是最流行的Java框架之一。本專欄文章主要包括IOC的實現原理分析,AOP的實現原理分析,事務的實現原始碼分析等

從入門到入土:Lambda完整學習指南包教包會

什麼是Lambda表示式 Lambda表示式是Java SE 8中一個重要的新特性。lambda表示式允許你通過表示式來代替功能介面。lambda表示式就和方法一樣,它提供了一個正常的引數列表和一個使用這些引數的主體(body,可以是一個表示式或一個程式碼塊)。Lambda表示式還增強了集合庫。 Java L

寫給 Android 開發的小程序布局指南Flex 布局

反向 android 容易 一起 些許 意思 移動 之間 img 一、序 Hi,大家好,我是承香墨影! 最近在做小程序,驗證一些方向,開發效率確實很快,就是各種微信的審核有點費勁,但是總歸是有辦法解決的。 想要開發一款小程序,其實和我們正常寫一款 App 類似,你需要有精

零基礎學習python編程不可錯過的學習總結小白福利

不執行 方式 true hat 出現 結合 conda tab鍵 底層 一 軟件使用 1 第一句Python 在C盤根目錄下,創建1.tx文本,打開並輸入如下內容保存。 #!/usr/bin/env python #-*- coding:utf8 -*- print("人

最簡單、最省錢、最有效、最優雅的 Win 7、 Win 10 重灌系統指南你值得擁有

轉自:https://mp.weixin.qq.com/s? 01 什麼情況下需要重灌系統   這個問題真想交給你們自己來回答,一定有超多槽點噠~!重灌系統的原因有很多,S姐總結一下,大概有這麼幾個原因:   ① 升級更換系統,比如 XP 升到 Win 7

百度T7阿里P8資深架構師整理了最新架構師學習體系分享給大家

不管是開發、測試、運維,每個技術人員心裡都有一個成為技術大牛的夢,畢竟“夢想總是要有的,萬一實現了呢”!正是對技術夢的追求,促使我們不斷地努力和提升自己。 然而“夢想是美好的,現實卻是殘酷的”,很多同學在實際工作後就會發現,夢想是成為大牛,但做的事情看起來跟大牛都不沾邊  

python神級程式設計師寫了一篇Matplotlib繪圖終極指南輕鬆視覺化

  原文地址:https://www.jianshu.com/p/9fd7a6992741 python的意思是用外語打招呼 Matplotlib 是最常用的 2D 繪相簿之一,也是一款很實用的資料視覺化工具,但是有時候你畫出的圖很難正好符合心意。比如說你可能遇到下面這些

python零基礎系統學習步驟安排建議收藏

學習Python程式設計技術的流程與步驟,自學與參加培訓學習都適用。 一、清楚學習目標 無論是學習什麼知識,都要有一個對學習目標的清楚認識。只有這樣才能朝著目標持續前進,少走彎路,從學習中得到不斷的提升,享受python學習計劃的過程。 雖然目前的程式語言有很多,但是基礎語法上的概念,本

spring @Scheduled註解使用誤區強烈建議同胞們看

在使用spring @Scheduled註解時很多人都為cron表示式無法進行配置進行煩惱吧,為何不像quartz般能在applicationContext中進行配置。 告訴大家其實是能applicationContext進行配置。 xml: <context

Python大牛寫的爬蟲學習路線分享給大家

第一步,學會自己安裝python、庫和你的編輯器並設定好它 我們學習python的最終目的是要用它來達到我們的目的,它本身是作為工具的存在,我們一定要掌握自己的工具的各類設定,比如安裝、環境配置、庫的安裝,編輯器的設定等等。 當然也可以用比如Anaconda來管理你的版本

推薦|深度學習領域引用最多的20篇論文建議收藏

作者:Pedro Lopez,資料科學家,從事金融與商業智慧深度學習是機器學習和統計學交叉領域的

PHP是世界上最好的程式語言有例子說明

在民政局婚姻登記大廳裡,一對中年男女準備辦理離婚手續。男人填好表格簽下自己的名字後,默地把這張紙遞給女人。女人默不作聲接過紙,狠狠剜了男人一眼,然後出人意料地把登記表狠狠撕成碎片。 男人大驚:“咱們不是說好了嗎,你這是幹什麼?”女人一聲冷笑說:“你還欠我7萬元。你把賬還了

十幾位資深架構師整理了最新架構師學習體系分享給大家

不管是開發、測試、運維,每個技術人員心裡都有一個成為技術大牛的夢,畢竟“夢想總是要有的,萬一實現了呢”!正是對技術夢的追求,促使我們不斷地努力和提升自己。 然而“夢想是美好的,現實卻是殘酷的”,很多同學在實際工作後就會發現,夢想是成為大牛,但做的事情看起來跟大

Ubuntu 16.04+CUDA 9.1+cuDNN v7+OpenCV 3.4.0+Caffe+PyCharm 完全安裝指南國內最全(適用CUDA 9.0)

   原創部落格,轉載請說明出處!   (本人第一篇部落格,用心之作,有用求贊)     首先得感謝一篇部落格的作者yhao:點選開啟連結 (http://blog.csdn.net/yhaolpz/article/details/71375762) 他提供了很詳細的基於

學習Java必備網站建議收藏

社區 ext 考試 類型 cto ora 進入 免費 實用工具 在進入今天的主題前,先給大家分享一個資源非常豐富的網站。 學習Java必備網站,建議收藏! http://www.bangongziyuan.com/ 對,就是辦公資源在線網站,為什麽給大家分享這個網站呢?因為

精講響應式WebClient第6篇-請求失敗自動重試機制強烈建議你看一看

![精講響應式WebClient第6篇-請求失敗自動重試機制](https://img2020.cnblogs.com/other/1815316/202008/1815316-20200826092554662-1026877669.png) 本文是精講響應式WebClient第6篇,前篇的blog訪問地