curl 使用指北

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"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章