手动 HTTP(S) 请求

And*_*rea 10 linux https http

我正在寻找一种工具(可能在 Linux 上),可以让我手动发出 HTTP 或 HTTPS 请求。通过手动,我的意思是:我应该能够为它提供一个看起来像的文本文件

POST /foo HTTP/1.1
Host: www.example.com
Accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-gb,en;q=0.5
Content-Type: text/plain
Content-Length: 11

Hello world
Run Code Online (Sandbox Code Playgroud)

和目标 URL (www.example.com/foo),并将请求发送到该 URL。最多,如果 Content_Length 标头是自动计算的,那将是有用的。

我将能够使用 Python 中的 httplib 之类的库编写这样的工具,但我需要它的真正原因是在此类库出现问题时进行手动调查。

Chr*_*son 10

wget有一个 --post-file 选项,它应该适合你。

编辑:此外,还有Ncat,您可以以与 Randolf Richardson 的 telnet 建议类似的方式使用它,除了它还支持 SSL/HTTPS:

ncat -C --ssl www.example.com 443 < input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

  • 如果需要 HTTPS,请使用 openssl 而不是 netcat: openssl s_client -connect &lt;address&gt;:443 (6认同)

Ran*_*son 6

对于 HTTP(不是 HTTPS),想到的“wget”命令的一种替代方法是使用 telnet,如下所示:

  • telnet 主机名 80 <input.txt> output.txt

文件“input.txt”是您希望以主机提供给主机的预设命令列表,文件“output.txt”将存储响应。