获取原始、未解析的 HTTPS 响应的最直接方式

Aco*_*orn 52 curl https

通过 HTTPS 向 url 发出 GET 请求并获取原始未解析响应的最直接方法是什么?

这可以通过 curl 实现吗?如果是这样,您需要使用哪些选项?

Mik*_*her 67

如果你想使用curl,这应该工作:

curl -D - https://www.google.com/
Run Code Online (Sandbox Code Playgroud)

但是请注意,这并不完全是原始响应。例如,分块传输编码在响应中将不可见。使用--raw解决了这个问题,详细模式 ( -v) 也很有用,它-i在响应正文之前显示标题:

curl -iv --raw https://www.google.com/
Run Code Online (Sandbox Code Playgroud)

如果你想在结果上使用像less这样的寻呼机,还需要禁用进度条(-s):

curl -ivs --raw https://www.google.com/ | less
Run Code Online (Sandbox Code Playgroud)

根据您要执行的操作,这可能是也可能不是问题。

您得到的是所有 HTTP 响应标头和所请求 URL 处的文档。


phe*_*mer 16

这是一个想到的简单方法

echo 'GET / HTTP/1.1
Host: google.com

' | openssl s_client -quiet -connect google.com:443 2>/dev/null
Run Code Online (Sandbox Code Playgroud)


Chr*_*own 6

它不是curl,但它应该在几乎所有的 Unices 上都可用:

wget -S --spider https://encrypted.site
Run Code Online (Sandbox Code Playgroud)

如果状态消息打扰您:

wget -S --spider https://encrypted.site 2>&1 | awk '/^  /'
Run Code Online (Sandbox Code Playgroud)

如果你想要 CRLF 行结尾:

wget -S --spider https://encrypted.site 2>&1 | awk '/^  / { sub(/$/,"\r"); print }'
Run Code Online (Sandbox Code Playgroud)