
丹尼爾·斯坦伯格
curl是一個利用URL語法在命令行下工作的文件傳輸工具,支持文件上傳和下載。作爲cURL項目的創造人和負責人,作者結合自己的開發和使用經驗,爲我們提供了curl的詳盡指南。書中內容涵蓋cURL項目介紹、作爲命令行工具的用法、作爲函數庫的用法,等等。
做開發的時候,嫌Postman太大,啓動太慢,而且沒辦法在純控制檯環境運行,所以會用curl做一些簡單的get,post,但從沒系統的學習過curl。其實看完書知道curl真的很強大,還提供libcurl這樣的神器(其實是現有libcurl再有命令行工具)。 這本書權威性當然毋庸置疑,不過有些地方我覺得還是沒說透,可能要照顧面面俱到的問題吧。不過作爲手冊粗略瀏覽,瞭解有什麼,大致怎麼用即可,不理解,不記得的部分也沒事,想起來的時候直接查看幫助即可。 推薦這樣的讀物,比純手冊或者從入門到精通系列好多了
做技術的人都可以看看, 尤其是設計思想, 默認簡單,可配置化
不難,能學到些小 tips 以及開源維護的歷史
瞭解了cURL的發展史,以及前半部分的基本使用方法。本來就是當工具用的,也沒有深究後半部分的libcurl的使用。命令行的交互沒有界面直觀,再服務器上發請求,curl是很強大的,所以這個工具是基礎能力,需要掌握。
curl作者寫的。如果想用curl,直接看一下help文檔就行,沒必要讀這本書。不過這本書還是能讓我們瞭解,看着簡簡單單一個命令,裏面內容真是繁雜,方方面面都要考慮
一、查看網頁源碼 直接在curl命令後加上網址,就可以看到網頁源碼。我們以網址www.sina.com爲例(選擇該網址,主要因爲它的網頁代碼較短) $ curl www.sina.com 如果要把這個網頁保存下來,可以使用`-o`參數,這就相當於使用wget命令了。 $ curl -o [文件名] www.sina.com 二、自動跳轉 有的網址是自動跳轉的。使用`-L`參數,curl就會跳轉到新的網址。 $ curl -L www.sina.com 鍵入上面的命令,結果就自動跳轉爲www.sina.com.cn。 三、顯示頭信息 `-i`參數可以顯示http response的頭信息,連同網頁代碼一起。 $ curl -i www.sina.com 四、顯示通信過程 `-v`參數可以顯示一次http通信的整個過程,包括端口連接和http request頭信息。 $ curl -v www.sina.com 如果你覺得上面的信息還不夠,那麼下面的命令可以查看更詳細的通信過程。 $ curl --trace output.txt www.sina.com 五、發送表單信息 發送表單信息有GET和POST兩種方法。GET方法相對簡單,只要把數據附在網址後面就行。 $ curl example.com/form.cgi?data=xxx POST方法必須把數據和網址分開,curl就要用到--data參數 $ curl -X POST --data "data=xxx" example.com/form.cgi 如果你的數據沒有經過表單編碼,還可以讓curl爲你編碼,參數是`--data-urlencode`。 $ curl -X POST--data-urlencode "date=April 1" example.com/form.cgi 六、HTTP動詞 curl默認的HTTP動詞是GET,使用`-X`參數可以支持其他動詞。 $ curl -X POST www.example.com $ curl -X DELETE www.example.com 七、文件上傳 $ curl --form upload=@localfilename --form press=OK [URL] 八、Referer字段 有時你需要在http request頭信息中,提供一個referer字段,表示你是從哪裏跳轉過來的。 $ curl --referer http://www.example.com http://www.example.com 九、User Agent字段 這個字段是用來表示客戶端的設備信息。服務器有時會根據這個字段,針對不同設備,返回不同格式的網頁,比如手機版和桌面版。 iPhone4的User Agent是 Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7 curl可以這樣模擬: $ curl --user-agent "[User Agent]" [URL] 十、cookie 使用`--cookie`參數,可以讓curl發送cookie。 $ curl --cookie "name=xxx" www.example.com 至於具體的cookie的值,可以從http response頭信息的`Set-Cookie`字段中得到。 `-c cookie-file`可以保存服務器返回的cookie到文件,`-b cookie-file`可以使用這個文件作爲cookie信息,進行後續的請求。 $ curl -c cookies http://example.com $ curl -b cookies http://example.com 十一、增加頭信息 有時需要在http request之中,自行增加一個頭信息。`--header`參數就可以起到這個作用。 $ curl --header "Content-Type:application/json" http://example.com 十二、HTTP認證 有些網域需要HTTP認證,這時curl需要用到`--user`參數。 $ curl --user name:password example.com
作者就是curl的主力維護者,本書權威性毋庸置疑,內容也很好懂。不過這紙書價格可真不便宜,畢竟這麼薄。
因爲某些工作原因,迅速過了一遍libcurl的部分。基礎概念和思想講的還是很清楚的,對於理解和使用curl有很大幫助。不過如果要深入,還是要結合其中代碼和實例繼續研究。
這本書內容超出預期,如果看的時候不光是針對工具本身,而是帶上工具設計,從工具反觀服務端功能設計,收穫會更多一些。
可以作爲工具書來以備查閱,其中也有一些網絡相關的知識,建議快速瀏覽一遍,等需要的時候再來查閱!