问题描述

我想访问一个需要用户名/密码的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

使用cURL和用户名和密码?的更多相关文章

  1. TortoiseGit:记住用户名和密码

    1.背景: 我们在使用 tortoisegit 工具时会无可避免的经常性 pull 和 push,这时通常要输入用户名和密码,由于麻烦,就有人提出了记住用户名和密码的需求... ... 2.设置: [ ...

  2. git push不用重复输入用户名和密码(解决方案)

    每次git push都要输入用户名和密码,有点麻烦,就上网搜了下解决方案. 网上的解决方案有的讲得不清晰,逐个试了后,总结下两种有效的解决方案.   方案一: 1.在计算机安装盘(即一般为C盘)下找到 ...

  3. c#与JavaScript实现对用户名、密码进行RSA非对称加密

    博主最近手上这个项目呢(就是有上百个万恶的复杂excel需要解析的那个项目,参见博客:http://www.cnblogs.com/csqb-511612371/p/4885930.html),由于是 ...

  4. svn客户端重新设置用户名和密码

    在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...

  5. 安装WAMP 及 修改MYSQL用户名 、 密码

    1,下载并安装WAMP 2,启动服务后,找到MYSQL--MYSQL console--弹出命令窗口(刚开始没有初始用户名跟密码,可直接回车执行) 3,首先输入 use mysq;l---然后修改用户 ...

  6. MySQL5.6忘记root用户名和密码

    首先我们要做的是关闭数据库,还好这个只是一个开发库,要是生产库的话使用另外一种方法修改root用户名和密码,我在另一篇文章有记载 然后我们跳过网络,跳过授权表,这个时候只有本机可以登录了,外部机器就不 ...

  7. svn清除已保存的用户名和密码

    在项目中使用SVN是必须的,我们一般将用户名和密码进行保存处理,这样做的好处在于每次都不用输入了,方便快捷.但是当我们想用另外一个svn账号时,这时候该怎么办呢,看下图,让提示框重新出来. 找到这个页 ...

  8. 系统无法开始服务器进程。请检查用户名和密码。 (Exception from HRESULT: 0x8000401A)

    开始-运行-cmd,输入aspnet_regiis.exe -i 重新注册iis 或者 出现以下错误:检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-0000 ...

  9. TortoiseGit 连接oschina不用每次输入用户名和密码的方法

    每次git clone 和push 都要输入用户名和密码.虽然安全,但在本机上每次都输有些麻烦,如何记住用户名和密码呢? 在网上看了各种方法,太杂,很多可能环境不一样,一直行不通.最后找到一种有效的方 ...

随机推荐

  1. python中函数参数

    默认参数注意点 优点:灵活,当没有指定与形参对应的实参时就会使用默认参数 缺陷: 例子: >>> def h(m, l=[]):                    #默认参数时列 ...

  2. Nagios安装与部署

    Nagios概述: Nagios是一款开源免费(也有收费版的Nagios XI)的监控工具,可以用以监控Windows.Linux.Unix.Router.Switch,可以监控指定主机的物理基础资源 ...

  3. Unity项目学习笔记

    1.TCP和IP IP:主要作用是在复杂的网络环境中将数据包发送给的最终的目标地址. 端口号:系统会分给系统端口号  一般知名的端口号在0-1023之间,而我们经常使用的自定义/动态分配的端口号则一般 ...

  4. 为localhost添加https

    1.按照https://stackoverflow.com/a/7184031/4619958来做 其中,CommonName填写localhost 2.在ssl.conf里头加上 <Direc ...

  5. 移动端UI自动化Appium测试——Android系统下使用uiautomator viewer查找元素

        在利用Appium做自动化测试时,最重要的一步就是获取对应的元素值,根据元素来对对象进行对应的操作,如何获得对象元素呢?Appium Server Console其实提供了一个界面对话框&qu ...

  6. 使用原生javascript实现jquery的$(function(){ })

    在使用jquery的时候,经常用到$(function(){})方法或者是$(document).read(function(){})来作为页面dom节点加载完成之后javascript的执行入口,现 ...

  7. UVa OJ 458

     The Decoder  Write a complete program that will correctly decode a set of characters into a valid m ...

  8. css实现行内文字垂直居中

    之前本人一直使用浮动.相对定位.绝对定位和display:table等css的方法进行定位.网上得知flex可实现弹性布局,符合未来发展趋势,随尝试. 1:让盒子行内文字垂直居中,解决思路是讲文字的行 ...

  9. new操作符具体干了什么

    function Func(){ }; var newFunc=new Func (); new共经过了4个阶段 1.创建一个空对象 var obj=new Object(); 2.设置原型链 把 o ...

  10. Android Platform Version 和 API Level对照

    Platform Version API Level VERSION_CODE Notes Android 5.1 22 LOLLIPOP_MR1 Platform Highlights Androi ...