1. 功能簡介
curl
是用來請求 web 服務器的常用工具,作用是發出網絡請求並得到服務器端的返回數據。它支持多種協議,功能很強大,用於 web 服務的測試效果極佳
2. 參數列表
在終端使用命令 man curl
可以得到 curl
的詳細文檔,整理文檔得到常用的命令參數如下
2.1 HTTP 協議相關
參數 | 功能 |
---|---|
–http2 / --http1.1 / --http1.0 | 指定使用的 HTTP 協議版本 |
-4, --ipv4 / -6, --ipv6 | 指定 IP 地址協議 |
-H, --header < header > | 直接指定HTTP request 頭信息,通常會包括 Content-Type 等關鍵信息 |
-A, --user-agent < name > | 在 HTTP request 頭信息中聲明客戶端用戶代理 |
-L,–location | curl 自動重定向到新的網址 |
-e, --referer < URL > | 在 HTTP request 頭信息中聲明請求來源地,服務器利用這個可防止盜鏈 |
–limit-rate | 限制 HTTP 請求和迴應的帶寬,模擬慢網速的環境 |
-X, --request < command > | 指定 HTTP 請求方法,默認是 GET |
-F, --form <name=content> | 指定表單形式傳輸數據或者圖片等多媒體文件, 請求方法爲 POST |
–data-raw < data > | 發送 POST 請求的數據體,可用於發送 Json 格式數據 |
-i, --include | 顯示 Response 的 Header 信息以及響應數據 |
-b, --cookie < data > | 指定 curl 去給定的文件中讀取 Cookies 發送給服務器,該指令與 -c 可同時使用 |
-c, --cookie-jar < filename > | 指定curl 保存這次請求中服務器設置的Cookies 到指定文件 |
HTTP 請求方法對應 curl 參數
參數 | 功能 |
---|---|
-I, --head | 指定 HTTP 請求方法爲 HEAD |
-d, --data < data > | 指定 HTTP 請求方法爲 POST,併發送 POST 請求的數據體,可以指定一個文件傳遞給 curl |
-T | 指定 HTTP 請求方法爲 PUT |
-G, --get | 指定 HTTP 請求方法爲 GET |
2.2 其他常用
參數 | 功能 |
---|---|
-K,–config | curl 從指定的配置文件中讀取選項 |
-v | 顯示網絡通信的大致過程 |
–trace-ascii < fileName > | 顯示網絡通信的詳細過程,並將其輸出到指定文件 |
3. 使用示例
3.1 查看通信過程
顯示一次網絡通信的整個過程
- 向 www.baidu.com 發出 GET 請求,並顯示交互的報文
curl -v www.baidu.com
- 向 www.baidu.com 發出 GET 請求,並將交互的報文輸出到文件 dump.txt 中
curl --trace-ascii dump.txt www.baidu.com
3.2 POST 提交數據
- 向目標地址發出 POST 請求,請求攜帶的參數爲鍵值對
ids = "12,23"
,注意傳遞帶有空格逗號等分隔符的參數時需要用引號把參數包裹起來
curl -v -d 'ids = "12,23"' http://10.0.7.63:8807/match/del
- 向目標地址發出 POST 請求,請求體爲 Json 字符串,此時需要指定請求頭 Content-Type。如果不指定的話,默認使用 application/x-www-form-urlencoded 形式傳輸數據,服務端解析請求時可能會報錯
curl -X POST --data-raw '{"borrowerId": "12346309"}' 'http://10.0.7.63:8807/target/list' --header 'Content-Type: application/json'
- 向目標地址提交一個二進制文件,可以使用 --data-binary 選項來指定
curl --data-binary <file> http://example.com
3.3 其他
- 指定 user-agent,服務端通常會通過 user-agent 防爬蟲
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' http://www.baidu.com
- 指定跳轉來源
curl -v -e www.hh.com www.baidu.com
- 指定 GET 請求的參數,相當於拼接以下 URL 爲 https://www.baidu.com/?comment=hello world
curl -v -G -d 'comment=hello world' https://www.baidu.com
- 通過配置文件來指定 curl 參數
curl -K curl.options http://www.baidu.com
curl.options
文件內容如下:
-v
# ask curl to follow redirects
--location
# ask curl to do a HEAD request
--head
# ask curl to change the User-Agent in HTTP header
-A "something-is-an-agent"