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


39

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

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

Answers:


51

如果要使用curl,这应该可以工作:

curl -D - https://www.google.com/

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

curl -iv --raw https://www.google.com/

如果您希望对结果使用较少的寻呼机,则还需要禁用进度条(-s):

curl -ivs --raw https://www.google.com/ | less

根据您要执行的操作,这可能会或可能不会成为问题。

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


13

这是一个简单的方法

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

' | openssl s_client -quiet -connect google.com:443 2>/dev/null

请注意,某些服务器(例如github.com)仅适用于HTTP/1.0
Steven Penny,

4

不是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 }'

您知道这是否可以保留\r\n响应中的字符吗?
Acorn 2012年

@Acorn-首先,并非所有的Web服务器都会\r\n以一行结尾作为响应。我不认为这在任何情况下都可以保留,但是如果这对您很重要,我会在答案中添加一种获取结果的方法。
克里斯·

1
$ GET -e https://www.google.com

在Debian / Ubuntu上,发行版属于软件包lwp-request

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.