我想访问一个需要用户名/密码的URL。我想用curl访问它。现在我正在做的事情是:
curl http://api.somesite.com/test/blah?something=123
我得到一个错误。我想我需要在上面的命令中指定用户名和密码。
我该怎么做呢?
我想访问一个需要用户名/密码的URL。我想用curl访问它。现在我正在做的事情是:
curl http://api.somesite.com/test/blah?something=123
我得到一个错误。我想我需要在上面的命令中指定用户名和密码。
我该怎么做呢?
当前回答
在某些API中它可能不起作用(比如rabbitmq)。
还有其他选择:
curl http://username:password@example.com
curl http://admin:123456@example.com
上面的格式也可以在浏览器中使用。
其他回答
使用-u标志来包含用户名,curl将提示输入密码:
curl -u username http://example.com
你也可以在命令中包含密码,但你的密码将在bash历史中可见:
curl -u username:password http://example.com
简单地说,最安全的方法是使用环境变量来存储/检索凭据。因此,curl命令如下:
curl -Lk -XGET -u "${API_USER}:${API_HASH}" -b cookies.txt -c cookies.txt -- "http://api.somesite.com/test/blah?something=123"
然后调用您的restful api,并将API_USER和API_HASH的Base64编码值传递给http WWW_Authentication头。lk只是告诉curl遵循http 30x重定向并使用不安全的tls处理(即忽略ssl错误)。而double——只是bash语法中停止处理命令行标志的糖。此外,-b cookie .txt和-c cookie .txt标记处理cookie, -b发送cookie, -c本地存储cookie。
手册中有更多认证方法的示例。
或者同样的东西,但是语法不同
curl http://username:password@api.somesite.com/test/blah?something=123
要在脚本中安全地传递密码(即防止它与ps auxf或logs一起出现),您可以使用- k -标志(从stdin读取配置)和heredoc:
curl --url url -K- <<< "--user user:password"
curl -X GET -u username:password {{ http://www.example.com/filename.txt }} -O