使用 netcat 对 HTTP 请求的空响应

使用 netcat 对 HTTP 请求的空响应

使用以下命令测试简单的 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:标头,而其他网站可能需要存在其他标头才能触发响应。

相关内容