我想访问一个需要用户名/密码的URL。我想用curl访问它。现在我正在做的事情是:

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

我得到一个错误。我想我需要在上面的命令中指定用户名和密码。

我该怎么做呢?


当前回答

你也可以这样发送用户名:

curl -u USERNAME http://server.example

然后Curl将要求您输入密码,并且密码将不会在屏幕上显示(或者如果您需要复制/粘贴该命令)。

其他回答

如果你的服务器支持基本认证,你可以这样做:

printf 'header="Authorization: Basic %s"' "$(base64 --wrap=0 credentials)"|
curl --config - https://example.org

凭据是存储用户名和密码的文件,格式为username:password。

该解决方案的好处:

不需要转义特殊字符 适用于任何密码,即使它包含空格、引号、反斜杠或其他特殊字符,因此它也可以安全地用于不控制输入的脚本 在带有内置printf的shell中,登录数据不会显示在进程列表中

如果你的shell没有printf作为内置命令,你可以这样做,以避免登录数据出现在进程列表中:

{ printf 'header="Authorization: Basic '; base64 --wrap=0 credentials; printf '"'; }|
curl --config - https://example.org
curl -X GET -u username:password  {{ http://www.example.com/filename.txt }} -O

你可以使用命令,

curl -u user-name -p http://www.example.com/path-to-file/file-name.ext > new-file-name.ext

HTTP密码将被触发。

参考: http://www.asempt.com/article/how-use-curl-http-password-protected-site

或者同样的东西,但是语法不同

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

通常CURL命令指的是

curl https://example.com\?param\=ParamValue -u USERNAME:PASSWORD

如果您没有任何密码或想跳过命令提示符来要求输入密码,请将密码部分留空。

即curl https://example.com\?param\=ParamValue -u USERNAME: