Linux/Unix系统利用nc搭建HTTP请求调试工具

nc是一个强大的网络工具,可以用它来扫描端口,传输文件,远程克隆分区等等。详细信息可以参考这篇博文

除了上面的使用场景之外,还能用nc来模拟发送HTTP 请求

test@test-virtual-machine$ nc www.baidu.com 80
GET / HTTP/1.1
<---这里要 换行,根据HTTP协议规定,HTTP header和报文主体之间通过空行来分隔
HTTP/1.1 302 Moved Temporarily
Date: Thu, 10 May 2018 03:47:06 GMT
Content-Type: text/html
Content-Length: 225
Connection: Keep-Alive
Location: http://www.baidu.com/search/error.html
Server: BWS/1.1
X-UA-Compatible: IE=Edge,chrome=1
BDPAGETYPE: 3
Set-Cookie: BDSVRTM=0; path=/


302 Found

302 Found


a0d46eadd08a4c61268f5c8b1823b29e70957b7c Time : Fri Apr 20 10:34:36 CST 2018

这就模拟了一次HTTP的GET请求,但是在nc的交互中输入比较麻烦,但nc作为伟大Linux/Unix环境下的工具是支持重定向的,"<"符号解决您的烦恼。

事先把HTTP header保存到一个文件里,header.txt

HEAD / HTTP/1.1
Host: www.baidu.com

注意文件末尾要有空行

然后执行

test@test-virtual-machine$ nc www.baidu.com 80 < header.txt
HTTP/1.1 200 OK
Server: bfe/1.0.8.18
Date: Thu, 10 May 2018 03:49:25 GMT
Content-Type: text/html
Content-Length: 277
Last-Modified: Mon, 13 Jun 2016 02:50:40 GMT
Connection: Keep-Alive
ETag: "575e1f80-115"
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Pragma: no-cache
Accept-Ranges: bytes

这样一个HEAD请求就被发送了出去,你可以修改header.txt的内容,把method改成GET, POST,也可以加上报文主体,只要符合HTTP请求规范就行。

你可能感兴趣的:(Linux/Unix系统利用nc搭建HTTP请求调试工具)