![获取原始、未解析的 HTTPS 响应的最直接方法](https://linux55.com/image/42825/%E8%8E%B7%E5%8F%96%E5%8E%9F%E5%A7%8B%E3%80%81%E6%9C%AA%E8%A7%A3%E6%9E%90%E7%9A%84%20HTTPS%20%E5%93%8D%E5%BA%94%E7%9A%84%E6%9C%80%E7%9B%B4%E6%8E%A5%E6%96%B9%E6%B3%95.png)
通过 HTTPS 向 url 发出 GET 请求并获取原始的、未解析的响应的最直接方法是什么?
这可以通过curl来实现吗?如果是这样,您需要使用哪些选项?
답변1
如果你想使用curl
,这应该可以:
curl -D - https://www.google.com/
但请注意,这并不完全是原始响应。例如分块传输编码在响应中将不可见。使用--raw
解决了这个问题,详细模式 ( -v
) 也很有用,并-i
在响应正文之前显示标头:
curl -iv --raw https://www.google.com/
如果你想在结果上使用 less 之类的分页器,还需要禁用进度条 ( -s
):
curl -ivs --raw https://www.google.com/ | less
根据您想要执行的操作,这可能会或可能不会成为问题。
您得到的是所有 HTTP 响应标头和请求 URL 处的文档。
답변2
这是想到的一个简单方法
echo 'GET / HTTP/1.1
Host: google.com
' | openssl s_client -quiet -connect google.com:443 2>/dev/null
답변3
它不是curl
,但它应该在几乎所有的 Unices 上可用:
wget -S --spider https://encrypted.site
如果状态消息令您困扰:
wget -S --spider https://encrypted.site 2>&1 | awk '/^ /'
如果你想要 CRLF 行结尾:
wget -S --spider https://encrypted.site 2>&1 | awk '/^ / { sub(/$/,"\r"); print }'
답변4
$ GET -e https://www.google.com
在 Debian/Ubuntu 发行版上属于该软件包lwp-request
。