动态

详情 返回 返回

使用 curl 發送請求 - 动态 详情

在這裏插入圖片描述

簡介

  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"
user avatar nihaojob 头像 koogua 头像
点赞 2 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.