我想使用 netcat 作为代理来记录对文件的 http 请求和响应,然后跟踪这些请求和响应以检查流量。想想 wireshark。
尝试以下操作,其中“fifo”是命名管道,“in”和“out”是文件,netcat 代理在端口 8080 上,服务器在端口 8081 上。
当为真时;执行 cat fifo | nc -l -p 8080 | tee -a in | nc localhost 8081 | tee -a out 1>fifo;完成
问题:
Netcat 在第一次请求后停止响应(while 循环被忽略?)。
如果 8081 上的服务器不可用, Netcat 将失败并显示消息
localhost [127.0.0.1] 8081 (tproxy) : Connection refused
。问题:当发出请求时,是否可以“懒惰地”连接到 8081?即,我不想在启动 netcat 时运行 8081。
答案1
酶联免疫吸附试验可以使用 --sh-exec 参数轻松完成此操作。
以下命令将允许您实时查看 TCP 连接的两个方向,并允许多个连接。example.com
对于 上收到的每个连接, 都会建立一次到 的连接localhost:8080
。
ncat -lkv localhost 8080 -c 'tee /dev/stderr | ncat -v example.com 80 | tee /dev/stderr'
如果您希望将日志记录到文件而不是实时显示,请将这两个tee
命令更改为。您还可以删除以禁用详细输出,只留下传输的数据打印到终端。tee -a ./file
-v
-k, --keep-open Accept multiple connections in listen mode
-l, --listen Bind and listen for incoming connections
-v, --verbose Set verbosity level (can be used several times)
-c, --sh-exec <command> Executes the given command via /bin/sh
请参阅ncat --help
或man ncat
了解更多详细信息。
答案2
使用索卡特,你不需要管道和 fifo