zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类
    入门设计模式之桥梁模式
    入门设计模式之外观模式
    入门设计模式之策略
    入门设计模式之观察者
    入门设计模式之模板
    入门设计模式之原型
    入门设计模式之工厂
    几分钟几张图教你学会如何使用UML
    入门设计模式之建造者
  • 原文地址:https://www.cnblogs.com/seasonzone/p/7527218.html
Copyright © 2011-2022 走看看