前言
昨天現場的瀏覽器崩潰了,樓主苦逼,就臨時用了curl測試了下圖片請求接口。今天總結下。
一.what?
curl is a tool to transfer data from or to a server
curl是用在命令行和腳本進行傳輸數據到服務器或者從服務器傳輸數據的工具。
二.特性
- 支持廣泛的協議,如:ftp、http、https、pop3、scp、sftp、telent等
- 支持SSL證書,HTTP中各方法、cookies、head、authentication
- 免費開源軟件
三.常用應用場景
- 請求、驗證、測試鏈接
- 支持連接超時、保活時間設置,支持下載上傳速率的配置,支持重試機制等
- 測試restful接口
- 上傳、下載文件
四.用法
語法:curl [options] [URL...]
參數:
| 參數 | 描述 |
|---|---|
| -V | 顯示當前的curl版本 |
| -# | 對發送和接收進行簡單的進度bar展示 |
| -0 | 強制使用HTTP 1.0協議 |
| -1 | 強制使用TLS version 1.x |
| -4 | 解析域名為ipv4地址(域名有多個ip時) |
| -a | FTP/SFTP上傳文件時,curl將追加到目標文件,而非覆蓋 |
| -A | 設置用戶代理 |
| -b | 設置cookies |
| --basic | 使用HTTP Basic authentication |
| --compressed | 使用curl支持的壓縮算法請求壓縮的響應, 如果請求的響應不是壓縮的,curl拋出異常 |
| --connect-timeout | 設置連接超時時間 |
| -d | 用於post請求時表單提交數據, 請求類型將被設置為:application/x-www-form-urlencoded |
| -e | 發送"Referer Page"到服務器 |
| -F | form表單提交 |
| -G | 使用get請求發送 -d參數指定的數據 |
| -H | 增加Head頭 |
| -i | 在輸出Head頭(響應) |
| -I | 只輸出Head頭(響應) |
| --interface | 指定使用的網絡接口 |
| -k | 允許curl使用非安全的ssl連接並且傳輸數據(證書不受信) |
| -K | 后接參數文件,參數文件中可以定義HTTP請求的相關的內容(URL、HEAD、DATA) |
| --keepalive-time | 設置連接的保活時間 |
| -L | curl自動重定向(3xx) |
| --limit-rate | 特指最大的傳輸速率 |
| -m | 設置整個操作的允許消耗的最大時間,對於在延時網絡下的批量操作有利 |
| --max-filesize | 允許下載文件的最大大小 |
| -N | 禁用輸出流緩沖區 |
| --no-keepalive | 連接不保活 |
| -o | 將響應數據輸出到指定文件,后接文件參數 |
| --retry | 發生瞬時錯誤時,curl將重試執行數據傳輸 |
| --retry-delay | 延遲重試 |
| --trace | dump出輸入輸出數據至文件 |
| -v | 獲取更多輸入輸出相關的內容,對於debug非常有用 |
| -y或者--speed-time | 如果在speed-time期間,下載比speed-limit這個更慢,則下載廢止 |
| -Y或者--speed-limit | 如果在speed-time期間,下載比speed-limit這個更慢,則下載廢止 |
接着看下下面的使用示例:
// 使用-k參數忽略證書不受信問題,-b參數指定cookies,-i參數輸出響應頭
curl -ki -b "JSESSIONID=011F1B99963D28CF91E90C99A51B1E34; _i18n_locale=zh_CN" --compressed https://10.33.42.149/fas/human/uploadPic.action
// -d參數指定post表單的數據, -o參數指定響應內容輸出到指定文件
curl -kv -d "name=daniel skill=lou" https://10.33.42.149:443/cas/login -o output
// -1指定tls版本1.x,-H指定請求頭
curl -1 -ki -e "https://10/33.42.149" -H "X-Custom-Header:lxy" https://10.33.42.149:443/cas/login
// -L指定自動重定向
curl -kvL http://10.33.42.149
// -K指定請求的參數配置文件
curl -kvK ex
// -e指定Referer
curl -kv -e "https://10/33.42.149" -H "X-Custom-Header:lxy" https://10.33.42.149:443/cas/login
