簡介
cURL 是一個通過 URL 傳輸數據的,功能強大的命令行工具。cURL 可以與 Chrome Devtool 工具配合使用,把瀏覽器發送的真實請求還原出來,附帶認證信息,脱離瀏覽器執行,方便開發者重放請求、修改參數調試,編寫腳本。也可以單獨使用,根據自己的需求構造請求調整參數,構造多種接口測試場景。
環境安裝
學習 curl 命令之前,需要先了解 Chrome Devtool 工具。
ChromeDevTools
Chrome DevTools(Chrome 開發者工具)是內嵌在 Chrome 瀏覽器裏的一組用於網頁製作和調試的工具。在測試的過程中,也常常用作一個簡單的抓包工具。操作步驟如下所示: (1)選擇右上角 Chrome 菜單,然後選擇更多工具 -> 開發者工具 (2)右鍵,選擇檢查/審查元素
在 Network 面板中可以查看通過網絡來請求來的資源的詳細信息
cURL 常見用法
從瀏覽器 copy
1)右鍵左側數據,選擇 Copy -> copy as curl ,即可把請求內容轉化為 cURL 命令。 2)將命令 copy 在 gitbash 或 bash 上並運行,則會看到返回信息。 3)對上面命令進行細化,加入 -v 參數可以打印更詳細的內容,用2>&1將標準錯誤重定向到標準輸出,發送此命令將得到細化後的內容 細化後的命令如下:
curl 'https://home.testing-studio.com/' -H \
'authority: home.testing-studio.com' -H 'pragma: no-cache'\
-H 'cache-control: no-cache' -H 'upgrade-insecure-requests: 1'\
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0)\
AppleWebKit/537.36 (KHTML, like Gecko)\
Chrome/80.0.3987.116 Safari/537.36' \
-H 'sec-fetch-dest: document' \
-H 'accept: text/html,application/xhtml+xml,\
application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,\
application/signed-exchange;v=b3;q=0.9' \
-H 'sec-fetch-site: none' -H 'sec-fetch-mode: navigate' \
-H 'sec-fetch-user: ?1' \
-H 'accept-language: en,zh-CN;q=0.9,zh;q=0.8' \
--compressed -v 2>&1
其他常用命令
發起 GET 請求:
-
curl "https://httpbin.testing-studio.com/get" -H "accept: application/json"
發起 POST 請求:
curl -X POST "https://httpbin.testing-studio.com/post" -H "accept: application/json"
Proxy 的使用:
curl -x 'http://127.0.0.1:8080' "https://httpbin.testing-studio.com/get"
curl 命令常用參數
| 參數 | 含義 |
|---|---|
| -H | 消息頭設置 |
| -u | 用户認證 |
| -d | 表示來自於文件 |
| --data-urlencode | 對內容進行 url 編碼 |
| -G | 把 data 數據當成 get |
| -o | 寫文件 |
| -x | http 代理、socks5 代理 |
| -v | 打印更詳細日誌 |
| -s | 關閉一些提示輸出 |
| --help | 查看幫助 |
curl 實戰演練
通過幾個小實戰演練,瞭解一些常用參數的用法。(1)篡改請求頭信息,將 User-Agent 改為 ‘testing-studio’。
curl -H "User-Agent:testing-studio" "http://www.baidu.com" -v
可以看到請求中的 User-Agent 成功改為了 testing-studio。
* Trying 14.215.177.39...* TCP_NODELAY set* Connected to www.baidu.com (14.215.177.39) port 80 (#0)> GET / HTTP/1.1> Host: www.baidu.com> Accept: */*> User-Agent:testing-studio
(2)在企業微信中通過 curl 命令創建標籤,這是一個 post 請求,通過 --data 參數傳遞 tagname 和 tagid。
# token為個人生成,需要替換
curl -H "Content-Type: application/json" -X POST \
--data '{"tagname": "hogwarts","tagid": 13}' \
https://qyapi.weixin.qq.com/cgi-bin/tag/create?access_token=$token
(3)認證,通過 put 上傳到 ElasticSearch ,使用 --user 進行用户認證。
# ES_HOST index id content 均為變量,需替換
curl -X PUT "$ES_HOST/$index/_doc/$id?pretty" \
--user username:password \
-H 'Content-Type: application/json' \
-d "$content"