1. 程式人生 > >curl模擬GET/POST請求、ab壓力測試

curl模擬GET/POST請求、ab壓力測試

curl

在Linux中curl是一個利用URL規則在命令列下工作的檔案傳輸工具,可以說是一款很強大的http命令列工具。它支援檔案的上傳和下載,是綜合傳輸工具,但按傳統,習慣稱url為下載工具。 常見引數介紹:

-A/--user-agent <string>          設定使用者代理髮送給伺服器
-b/--cookie <name=string/file>    cookie字串或檔案讀取位置
-c/--cookie-jar <file>            操作結束後把cookie寫入到這個檔案中
-C/--continue-at <
offset> 斷點續轉 -D/--dump-header <file> 把header資訊寫入到該檔案中 -d/--data <data> HTTP POST方式傳送資料 -e/--referer 來源網址 -f/--fail 連線失敗時不顯示http錯誤 -H/--header <line> 自定義頭資訊傳遞給伺服器 -o/--output 把輸出寫到該檔案中 -O/--remote-name 把輸出寫到該檔案中,保留遠端檔案的檔名 -r/--range <
range> 檢索來自HTTP/1.1或FTP伺服器位元組範圍 -s/--silent 靜音模式。不輸出任何東西 -T/--upload-file <file> 上傳檔案 -u/--user <user[:password]> 設定伺服器的使用者和密碼 -w/--write-out [format] 什麼輸出完成後 -x/--proxy <host[:port]> 在給定的埠上使用HTTP代理 -X/--request <
command> 指定什麼命令 -v 顯示請求互動的詳細資訊 * 表示 curl 任務; > 傳送的資訊; < 返回的資訊 -#/--progress-bar 進度條顯示當前的傳送狀態

curl GET請求

  • curl -v 127.0.0.1:8080/login Method:GET
    在這裡插入圖片描述
  • curl -v 127.0.0.1:8080/upload Method:GET
    在這裡插入圖片描述
  • curl -v 127.0.0.1:8080/static/images/favicon.ico >> favicon.ico Method: GET (獲取檔案資料儲存到檔案中)
    在這裡插入圖片描述

curl POST請求

  • curl -v 127.0.0.1:8080/login -X POST -d "username=liuyh73&&password=acwab" Method:POST
    在這裡插入圖片描述
    如果post資訊為json格式的資料,則可以使用-H引數來宣告請求的Content-Type:
curl -v 127.0.0.1:8080/login -X POST -H "Content-Type:application/json" -d '"username": "liuyh73", "password":"acwab"'
  • curl -v 127.0.0.1:8080/upload -F "[email protected]:/mygo/src/github.com/liuyh73/go-web-form/static/images/favicon.ico" Method:POST
    在這裡插入圖片描述

ab(apache benchmark)

-n  即requests,用於指定壓力測試總共的執行次數。
-c  即concurrency,用於指定的併發數。
-t  即timelimit,等待響應的最大時間(單位:秒)。
-b  即windowsize,TCP傳送/接收的緩衝大小(單位:位元組)。
-p  即postfile,傳送POST請求時需要上傳的檔案,此外還必須設定-T引數。
-u  即putfile,傳送PUT請求時需要上傳的檔案,此外還必須設定-T引數。
-T  即content-type,用於設定Content-Type請求頭資訊,例如:application/x-www-form-urlencoded,預設值為text/plain。
-v  即verbosity,指定列印幫助資訊的冗餘級別。
-w  以HTML表格形式列印結果。
-i  使用HEAD請求代替GET請求。
-x  插入字串作為table標籤的屬性。
-y  插入字串作為tr標籤的屬性。
-z  插入字串作為td標籤的屬性。
-C  新增cookie資訊,例如:"Apache=1234"(可以重複該引數選項以新增多個)。
-H  新增任意的請求頭,例如:"Accept-Encoding: gzip",請求頭將會新增在現有的多個請求頭之後(可以重複該引數選項以新增多個)。
-A  新增一個基本的網路認證資訊,使用者名稱和密碼之間用英文冒號隔開。
-P  新增一個基本的代理認證資訊,使用者名稱和密碼之間用英文冒號隔開。
-X  指定使用的和埠號,例如:"126.10.10.3:88"。
-V  列印版本號並退出。
-k  使用HTTP的KeepAlive特性。
-d  不顯示百分比。
-S  不顯示預估和警告資訊。
-g  輸出結果資訊到gnuplot格式的檔案中。
-e  輸出結果資訊到CSV格式的檔案中。
-r  指定接收到錯誤資訊時不退出程式。
-h  顯示用法資訊,其實就是ab -help。
  • 安裝:CentOS環境sudo yum -y install httpd-tools
    在這裡插入圖片描述
  • ab -c 100 -n 10000 localhost:8080/login
    在這裡插入圖片描述
    在這裡插入圖片描述