我在看获取原始、未解析的 HTTPS 响应的最直接方法通过 HTTPS 向 url 发出 GET 请求,并接收原始的、未解析的响应。
以下作品:
echo 'GET / HTTP/1.1
Host: google.com
' | openssl s_client -quiet -connect google.com:443 2>/dev/null
但是,我想将请求放入文本文件中并将cat
其传递给命令。
所以我创建了raw-http.txt
GET / HTTP/1.0
Host: google.com
需要明确的是,后面有一个空白Host: google.com
。
现在当我尝试时:
cat raw-http.txt | openssl s_client -quiet -connect google.com:443 2>/dev/null
它只是冻结很长时间然后响应^X%
。
为什么echo
在这里工作却cat
没有。我该怎么办?
答案1
之后有一个空白
应该有两个。
$ echo '"'; cat raw.txt; echo '"'
"
GET / HTTP/1.0
Host: google.com
"
$ cat raw.txt | openssl s_client -quiet -connect google.com:443 2>/dev/null
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>
至于您的echo
示例,它有一个额外的不需要的换行符,因此这将起作用:
echo 'GET / HTTP/1.1
Host: google.com
' | openssl s_client -quiet -connect google.com:443 2>/dev/null