最近一个项目,要捕捉HTTP请求和响应的数据,由于通讯双方都不好控制,所以打算配个HTTP代理来抓取数据。

先尝试了nginx和squid,发现两者都无法记录响应内容,这是什么原因?

仔细想了想,估计是网站上很多静态文件,尺寸大,很多还不是文本,在日志里记录响应内容确实是弊大于利,至于动态页面,在代码层面可以记录更多细节。所以,代理软件的日志里记录响应内容就显得很鸡肋了。

想到这点,我就没继续尝试其他的代理软件了。时间有限,也没找到专门的工具,所以继续想办法。

既然默认的日志不记录,要不尝试抓包?

于是尝试了下tcpdump,可它输出数据太原始,后期处理成本很高。而且我要的是长期稳定的方案,tcpdump更像用于分析网络异常,作为长期方案似乎不合适。

放弃了tcpdump后,自然就想到用node.js写个小程序做中转。

只是,使用外部程序的话,中间多一次通讯,便多一层风险。万一程序挂了,那就影响本来的通讯了。所以这种方式暂定为下策,继续寻求其他方案。

不用外部程序,nginx自带模块又没有直接提供这功能,就试下伟大的LUA了(未婚男程序员的福音)。

(待续)