最近一段時間在看樸靈翻譯的《深入淺出nodejs》,裡面有提到一種脫離瀏覽器的客戶端網路通訊工具,curl命令,自己在電腦上試了一下,感覺非常好用,而且莫名的感覺這是一個非常強大的網路工具,一定會成為web開發者的一把小軍刀;因此就上網查了一下相關資料,並整理了一下相關的常用用法: 一、簡介 CUR ...
最近一段時間在看樸靈翻譯的《深入淺出nodejs》,裡面有提到一種脫離瀏覽器的客戶端網路通訊工具,curl命令,自己在電腦上試了一下,感覺非常好用,而且莫名的感覺這是一個非常強大的網路工具,一定會成為web開發者的一把小軍刀;因此就上網查了一下相關資料,並整理了一下相關的常用用法:
一、簡介
- CURL:本篇文章的標題即為 官網 上醒目定義的直譯:
command line tool and library for transferring data with URLs
; 支持的協議類型:支持幾乎全部的網路傳輸協議類型,你可能會質疑這裡的全部,無需解釋,直接貼上原文
Supports...
DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos), file transfer resume, proxy tunneling and more.本文不介紹工具的安裝,如需安裝教程,請自行移步 官網 或者 參考此篇
二、常用用法
不管是網站開發,還是其他的傳輸協議類型,回歸本質都是對數據的讀寫操作,即創建、查詢、加解密、傳輸、修改、刪除;其不同之處在於各種協議的基礎架構及協議類型的不同,從實現形式上來看,也就是傳輸控制欄位的不同,以及傳輸界面、交互的差異。下麵以網站開發的角度,類比http協議的8中http請求方式(get、post、put、delete、head、connnect、options、trace),從客戶端分別來進行各部分操作的說明:
1. 查詢:GET--查看網頁源碼
- 如查看百度首頁源碼:
curl www.baidu.com
該命令將發送請求,併在命令行顯示相應的結果,如下,:
如果查看還不能滿足你的需求,需要進一步將百度首頁源碼保存在本地進行學習查看:
curl -o name www.baidu.com
將下載目標網頁源碼到本地,並命名為‘name’:
- GET 的其他用法
curl -i www.baidu.com
------獲取請求結果,將響應頭、響應體同時在命令行輸出curl -I www.baidu.com
------獲取請求結果,僅僅將響應頭信息在命令行輸出curl -L baidu.com
------如目標網頁轉移位置,將自動進行重定向curl -v www.baidu.com
------在命令行輸出一次http請求的全過程,包括埠連接、請求頭、請求體、響應頭、響應體curl --trace out.txt www.baidu.com
------將整個請求的埠連接、請求信息、響應過程的全部信息保存至本地,並重命名為‘out.txt’curl www.baidu.com/s?wd=hbzyin
------用百度搜索關鍵字‘hbzyin’: 將在百度首頁查詢關鍵字‘hbzyin’,並將結果在命令行輸出
- GET 添加額外請求信息
curl --header "Content-Type=text.plain" yourwebsite.com
----增加請求頭/request headercurl --cookie "cookiename=xxx" yourwebsite.com
-----增加cookie信息至請求curl -c cookies-file yourwebsite.com
-----將請求響應的cookie信息保存至文件cookie-file中curl -b cookies-file yourwebsite.com
-----將請求響應的cookie信息保存至文件cookie-file中,併在後續請求中使用curl --referer yourwebsite.com www.baidu.com
------添加入口跳轉來源yourwebsite.con ,跳轉至目標網站百度curl --user-agent "your user angent" baidu.com
------添加客戶端設備信息;伺服器會根據該欄位,針對不同設備返回不同網頁格式。如手機和PC
2. 上傳數據:POST--向伺服器上傳信息
- 表單數據上傳:
curl -X POST --data "key=value" yourwebsite.com
------向目標網站發送post 請求,請求體為:'key=value' 表單數據url加密後上傳:
curl -X POST --data-urlencode "key=value" yourwebsite.com
--向目標網站發送url加密後的post請求,請求體為:‘key=value’此處 -X 為curl請求方式設置關鍵字, curl預設請求方式為get,添加-X參數後,可支持其他請求方式;請求方式必須大寫
3. 修改數據:PUT
curl -X PUT yourwebsite.com --data "data=somedata"
---向目標網站發送請求,請求體為:data=somedata
4. 刪除數據:DELETE
curl -X DELETE yourwebsite.com/deleteSource
--向目標網站發送刪除請求,請求地址: yourwebsite.com/deleteSource
5. 文件上傳:
curl --form formname=@localfilname --form press=OK yourwebsite.com
6. 參考文章
- 15 Practical Linux cURL Command Examples;
- CURL常用命令;
- CURL網站開髮指南;
- CURL英文官網;
-
以上主要從前端開發角度,對curl的一般用法進行了整理,對於網站開發或後端API開發,這都不失為一個簡介快速方便的工具;如果能進一步將項目開發的需要編寫成測試腳本,將為開髮帶來極大的快感!
--END