天天看點

curl用法詳解

前言

昨天現場的浏覽器崩潰了,樓主苦逼,就臨時用了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

接着看下下面的使用示例:

// 使用-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