是否有一个命令行 HTTP 代理可以输出到 STDOUT,以便我可以将其与 Unix 管道一起使用?
我想做这样的事:
- 在命令行启动代理:
$ proxy -p 8888 | grep "Text I'm interested in" > ~/my_log.txt
- 配置我的浏览器以使用端口 8888 上的 HTTP 代理。
- 浏览互联网。浏览时,HTML 被 grep 并保存到 my_log.txt
- CTRL-C当我完成的时候。
更新:我之前没有想过这个问题,但是解决方案需要正确处理 gzip/deflated 的内容。
答案1
您可以跳过代理,只使用带有 -A 选项和过滤器的 tcpdump 吗?
# capture everything destined for port 80
tcpdump -qni eth0 -s 0 -A port 80
# capture everything destined for port 80 on 192.168.32.1
tcpdump -qni eth0 -s 0 -A port 80 and host 192.168.32.1
# capture everything destined for port 80 and display only the interesting bit.
tcpdump -qni eth0 -s 0 -A port 80 | grep "Text I'm interested in"
答案2
你可以这样做ngrep。
ngrep -q -W byline "Text I'm interested in" port 80 > ~/my_log.txt
答案3
使用 polipo
polipo logLevel=0xFF
执行polipo -v | grep logLevel
可以看到:
logLevel 整数 0x7 日志级别(最大 = 0xFF)。
答案4
它不能完全满足您的开箱即用需求,但我认为修改后的 SimpleHTTPServer 版本可以满足您的需求。
python -m SimpleHTTPServer <port>
它目前允许您在 PWD 之外运行 HTTP 服务器,并将访问日志返回到 STOUT。