使用以下命令测试简单的 HTTP 请求nc
:
$ printf 'GET / HTTP/1.1\r\nHost: mozilla.org\r\nAccept: */*\r\n\r\n' | nc mozilla.org 80
HTTP/1.1 301 Moved Permanently
Content-Type: text/html
Date: Thu, 10 Mar 2016 23:07:31 GMT
Location: https://www.mozilla.org/
Connection: Keep-Alive
Content-Length: 0
但大多数主机不会产生任何输出。使用该-v
选项结果是肯定的:
Connection to stackoverflow.com.com 80 port [tcp/http] succeeded!
Connection to reddit.com 80 port [tcp/http] succeeded!
使用-D
选项给出一行:
nc: Permission denied
这是什么原因呢?
答案1
您可能需要-q 1
(或 2 或 3 或其他),否则nc
将在远程服务器发出响应之前退出。
-D
可能需要root
.
答案2
您还可能会丢失一些标头。
例如,httpbin.org/get
需要Accept:
标头,而其他网站可能需要存在其他标头才能触发响应。