相当于什么
curl -u username:password ...
Run Code Online (Sandbox Code Playgroud)
在PowerShell中Invoke-RestMethod?我试过这个:
$securePwd = ConvertTo-SecureString "password" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($username, $securePwd)
Invoke-RestMethod -Credential $credential ...
Run Code Online (Sandbox Code Playgroud)
但它返回401,未经授权.
这有关使用卷曲用户名和密码的问题,对我来说最理想的答案:
curl -u "user:pw" https://example.com 将pw放入进程列表中curl "https://user:pw@example.com" 将pw放入进程列表中curl -u "user:$(cat ~/.passwd)" https://example.com 将pw放入进程列表中curl -u user https://example.com 提示pwcurl --netrc-file ~/.netrc https://example.com 需要一个文件#4是安全的,但我可能每天运行这个命令数百次,所以这很乏味.#5接近安全,但是具有root访问权限的人可以读取该文件.
该卷曲手册页说(注意粗体文本):
-u/--user <user:password>指定用于服务器身份验证的用户名和密码.覆盖
-n/--netrc和--netrc-optional.如果您只是提供用户名(不输入冒号),curl将提示输入密码.
如果您使用启用SSPI的curl二进制文件并执行NTLM身份验证,则可以 通过使用以下选项指定单个冒号来强制curl从您的环境中获取用户名和密码:
-u :.
我已经尝试在环境中设置$USER和$PASSWORD(以及$CURLOPT_PASSWORD其他),但是cURL在调用时不会选择其中任何一个curl -u : https://example.com(如果没有它也没有-u :).
我不是在做NTLM,所以这不起作用.除非我错过了什么.
有没有办法将凭证传递给curl环境?
(解决方法转到答案)
我有一个用bash编写的脚本,并在Linux(CentOS 7)和MacOS上进行了测试.该脚本用于cURL与符合REST API的数据平台(XNAT)进行交互.
我希望Windows用户可以在git-bash中使用与Git for Windows打包相同的脚本.不幸的是,cURL在git-bash中使用时似乎存在问题.
我做的第一个用途cURL是检索一个JSESSION cookie:
COOKIE=`curl -k -u $USERNAME https://theaddress/JSESSION`
Run Code Online (Sandbox Code Playgroud)
在Linux上,这会要求用户输入密码并存储cookie COOKIE.在git-bash中,发出命令会挂起,直到使用" ctrl + C"来中断它.奇怪的是,此时显示了密码的查询消息,但为时已晚,脚本已终止.
我有一个怀疑,这可能与做CR或LF问题,但不能找到一些信息,我明白对此.
任何指针都会受到欢迎!
谢谢
编辑: 如果我在命令中传递密码,上面的命令似乎正常工作:
COOKIE=`curl -k -u $USERNAME:$PASSWORD https://theaddress/JSESSION`
Run Code Online (Sandbox Code Playgroud)
但是,正如此处所指出的: 使用cURL和用户名和密码? 我宁愿避免让用户输入他们的密码作为命令参数.
所以现在的问题是" cURL当我使用第一个命令时,为什么不提示输入密码?" 当在Windows上的git-bash中时,该命令在Linux或MacOS中的行为与预期相同:
COOKIE=`curl -k -u $USERNAME https://theaddress/JSESSION`
Run Code Online (Sandbox Code Playgroud) 我想从终端登录远程网站,这需要用户名和密码才能登录.
所以我首先尝试登录到Stack Exchange站点之一.根据此答案,您可以使用-u username:password添加凭据.
所以我尝试了以下方法:
USERNAME="mine@gmail.com"
PASSWORD="myPassword"
URL="https://sustainability.stackexchange.com/"
curl $URL -u $USERNAME:$PASSWORD
Run Code Online (Sandbox Code Playgroud)
但是生成的网站不是登录用户看到的页面,而是非验证用户看到的页面,其显示了注册按钮.
我觉得它只适用于您在尝试访问时显示的弹出窗口中输入凭据的情况.
那么如何从终端内登录这些案例呢?