通过 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
。