使用cURL和用戶名和密碼?


問題描述

我想訪問一個需要用戶名/密碼的URL。我想嘗試用 curl 來訪問它。現在我正在做一些事情:

curl http://api.somesite.com/test/blah?something=123 

我收到一個錯誤。我想我需要指定一個用戶名和密碼以及上述命令。

我怎樣才能做到這一點?

最佳解決方案

使用-u標志來包含用戶名,並且curl將提示輸入密碼:

curl -u username http://example.com 

您也可以在命令中包含密碼,但您的密碼將在bash歷史記錄中顯示:

curl -u username:password http://example.com 

次佳解決方案

做得更安全

curl --netrc-file my-password-file http://example.com 

…作為傳遞普通用戶/密碼字符串在命令行是一個壞主意。

密碼文件的格式是(根據man curl):

machine host.domain.com login myself password secret 

(“machine”,“login”和“password”都是關鍵字;實際信息是這些關鍵字之后的內容)。

第三種解決方案

您也可以通過寫入發送用戶名:

curl -u USERNAME http://server.example 

然后,Curl會詢問您的密碼,密碼將不會顯示在屏幕上(或者您需要復制/粘貼該命令)。

第四種方案

或同樣的事情,但語法不同

curl http://username:password@api.somesite.com/test/blah?something=123 

第五種方案

簡單而言,最安全的方式是使用環境變量來存儲/檢索您的憑據。因此一個 curl 命令如:

curl -Lk -XGET -u "${API_USER}:${API_HASH}" -b cookies.txt -c cookies.txt -- "http://api.somesite.com/test/blah?something=123" 

然后調用您的休息api並通過API_USERAPI_HASH的Base64編碼值的http WWW_Authentication標頭。 -Lk只是告訴curl遵循http 30x重定向並使用不安全的tls處理(即忽略ssl錯誤)。而雙--只是bash語法糖停止處理命令行標志。此外,-b cookies.txt-c cookies.txt標志處理Cookie與-b發送cookie和-c存儲cookie本地。

本手冊有更多的examples of authentication方法。

第六種方案

讓密碼最小不要彈出你的.bash_history

curl -u user:$(cat .password-file) http://example-domain.tld 

參考文獻

 https://gxnotes.com/article/68616.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM