telnet 通过身份验证访问网站

Zim*_*uba 2 authentication telnet

我正在尝试使用基本身份验证访问httpbin.org。我必须输入用户名和密码。在命令终端(linux)中使用 telnet 我至少执行:

telnet httpbin.org 80 
HEAD /basic-auth/user/passwd HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

它给出了 401 状态代码(未经授权)。

我现在想以某种方式使用用户名和密码访问它(在 Base64 中,输入为用户名:密码)。我以什么方式做到这一点?我试过了(在 401 状态码之后)

HEAD /username:password HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

(但这给出了 404 状态代码)

Dop*_*oti 7

HTTP 基本身份验证同时使用用户名和密码的 base-64 编码。对于 的用户名testuser和密码hunter2,您将采用字符串testuser:hunter2和 base64 编码。那会给你字符串dGVzdHVzZXI6aHVudGVyMg==

你问,你如何得到这种编码?大多数 POSIX 系统都已openssl安装,在这种情况下,您可以使用echo -n "testuser:hunter2" | openssl base64 -base64. 该-n是超重要的,否则您还可以包括newline在编码,这将给你一个不正确编码的字符串(如口令不以新行字符结尾一般)。

然后您可以通过以下方式进行交易telnet

telnet hostname.example.com 80
GET / HTTP/1.1
Authorization: Basic dGVzdHVzZXI6aHVudGVyMg==
Run Code Online (Sandbox Code Playgroud)