新学的nc小技巧

最近遇到不少转发上的问题, 很大部分是因为一些不太常见的客户端请求. 正常的请求我们可以直接curl模拟, 但是有些异常的, 比如 某些header内容为空, 我们就很难模拟. 这时候可能就需要用上nc来模拟了. 当然它不仅仅可以用来模拟http请求. 下面介绍两个新学的 技巧.

模拟http请求发送

模拟一个POST请求. 直接使用指令nc 127.0.0.1 8080, 然后徒手敲命令;)

当然我们也可以提前把内容写到一个文本文件里面, 然后用管道传给nc

1
2
# 发送request.txt中的内容到本地的8080端口
cat request.txt | nc 127.0.0.1 8080

这里还会有一个问题, 我希望nc发送完后等待一段时间再退出, 可以这么搞:

1
2
# 发送request.txt中的内容到本地的8080端口, 并等待10秒
(cat request.txt; sleep 10) | nc 127.0.0.1 8080

这样我们就可以通过修改request.txt文件构造不同的request了.

自定义发送端口

一般应用发送数据的端口是由操作系统随机选择的, 但是有时候在debug的时候可能需要强制使用某个端口, 这时候可以用上nc-p指令. 这个在排查四层转发问题的时候还是蛮好用的.