linux使用curl傳送http get與post請求
1. curl傳送get請求
curl http://11.120.12.89:6666/sengMsg?phone=18790987654\&name=lily&msg=aaa
注意:有多個引數時需要把&轉義一下,否則獲取不到之後引數會報錯
2. curl傳送post請求
post請求型別application/x-www-form-urlencoded,使用-d引數以後,HTTP 請求會自動加上標頭Content-Type : application/x-www-form-urlencoded。並且會自動將請求轉為 POST 方法,因此可以省略-X POST。
curl http://11.120.12.89:6666/sengMsg -X POST -d "parameterName1=parameterValue1¶meterName2=parameterValue2"
-d引數可以讀取本地文字檔案的資料,向伺服器傳送
$ curl -d '@data.txt' https://google.com/login
post請求型別application/json
curl http://11.120.12.89:6666/sengMsg -X POST -H "Content-Type:application/json" -d '{"parameterName1":"parameterValue1","parameterName2":"parameterValue2"}'
使用POST介面上傳檔案,@後傳檔案
curl http://11.120.12.89:6666/sengMsg -F raw=@/tmp/raw.data -v
引數 說明
-d 請求攜帶的引數,多個引數使用&分隔
-X 指定請求的方法,POST外還可以指定PUT等請求方法
-H 指定請求頭,例如 -H "Content-type:application/json"多個請求頭傳遞多-H即可
-v 顯示詳細的請求資訊
-F 傳輸檔案,指定 MIME 型別,指定檔名
-O 把輸出寫到該檔案中,保留遠端檔案的檔名
-u 通過服務端配置的使用者名稱和密碼授權訪問
-A 指定客戶端的使用者代理標頭,即User-Agent,curl 的預設使用者代理字串是curl/[version]。
-b 向伺服器傳送 Cookie
-c 將伺服器設定的 Cookie 寫入一個檔案
-d 傳送 POST 請求的資料體
–data-urlencode –data-urlencode引數等同於-d,傳送 POST 請求的資料體,區別在於會自動將傳送的資料進行 URL 編碼。
-e 設定 HTTP 的標頭Referer,表示請求的來源
-F 向伺服器上傳二進位制檔案
-G 構造 URL 的查詢字串
-i 打印出伺服器迴應的 HTTP 標頭
將下載的資料寫入到檔案,必須使用檔案的絕對地址:
curl https://www.linuxcool.com/abc.txt --silent -O
訪問需要授權的頁面時,可通過-u選項提供使用者名稱和密碼進行授權:
[root@linuxcool ~]# curl -u root https://www.linuxprobe.com/ Enter host password for user 'root':
-A引數指定客戶端的使用者代理標頭,即User-Agent。curl 的預設使用者代理字串是curl/[version]。將User-Agent改成 Chrome 瀏覽器。
$ 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' https://google.com
移除User-Agent標頭
$ curl -A '' https://google.com
-b引數用來向伺服器傳送 Cookie,生成一個標頭Cookie: foo=bar,向伺服器傳送一個名為foo、值為bar的 Cookie。
讀取本地檔案cookies.txt,裡面是伺服器設定的 Cookie
$ curl -b 'foo=bar' https://google.com $ curl -b 'foo1=bar' -b 'foo2=baz' https://google.com $ curl -b cookies.txt https://www.google.com
-c引數將伺服器設定的 Cookie 寫入一個檔案。將伺服器的 HTTP 迴應所設定 Cookie 寫入文字檔案cookies.txt。
$ curl -c cookies.txt https://www.google.com
–data-urlencode引數等同於-d,傳送 POST 請求的資料體,區別在於會自動將傳送的資料進行 URL 編碼。傳送的資料hello world之間有一個空格,需要進行 URL 編碼。
$ curl --data-urlencode 'comment=hello world' https://google.com/login
-e引數用來設定 HTTP 的標頭Referer,表示請求的來源。將Referer標頭設為https://google.com?q=example。
curl -e 'https://google.com?q=example' https://www.example.com
-H引數可以通過直接新增標頭Referer,達到同樣效果。
curl -H 'Referer: https://google.com?q=example' https://www.example.com
-F引數用來向伺服器上傳二進位制檔案。給 HTTP 請求加上標頭Content-Type: multipart/form-data,然後將檔案photo.png作為file欄位上傳。
$ curl -F '[email protected]' https://google.com/profile
-F引數可以指定 MIME 型別。指定 MIME 型別為image/png,否則 curl 會把 MIME 型別設為application/octet-stream。
$ curl -F '[email protected];type=image/png' https://google.com/profile
-F引數也可以指定檔名。原始檔名為photo.png,但是伺服器接收到的檔名為me.png。
$ curl -F '[email protected];filename=me.png' https://google.com/profile
-G引數用來構造 URL 的查詢字串。上面命令會發出一個 GET 請求,實際請求的 URL 為https://google.com/search?q=kitties&count=20。如果省略–G,會發出一個 POST 請求。
$ curl -G -d 'q=kitties' -d 'count=20' https://google.com/search
如果資料需要 URL 編碼,可以結合–data–urlencode引數。
$ curl -G --data-urlencode 'comment=hello world' https://www.example.com
-i引數打印出伺服器迴應的 HTTP 標頭。命令收到伺服器迴應後,先輸出伺服器迴應的標頭,然後空一行,再輸出網頁的原始碼。
$ curl -i https://www.example.com
-I引數向伺服器發出 HEAD 請求,然會將伺服器返回的 HTTP 標頭打印出來。令輸出伺服器對 HEAD 請求的迴應。–head引數等同於-I。
$ curl -I https://www.example.com $ curl --head https://www.example.com
-k引數指定跳過 SSL 檢測。
$ curl -k https://www.example.com
上面命令不會檢查伺服器的 SSL 證書是否正確。
-L引數會讓 HTTP 請求跟隨伺服器的重定向。curl 預設不跟隨重定向。
$ curl -L -d 'tweet=hi' https://api.twitter.com/tweet--limit-rate--limit-rate
用來限制 HTTP 請求和迴應的頻寬,模擬慢網速的環境。
$ curl --limit-rate 200k https://google.com
參考:https://blog.csdn.net/qq_35456400/article/details/108790518