开发多年的服务器高手们,无论你是PHP,NodeJS,Java,Python,Golang。都会遇到一个问题。
当客户端测试一个api接口出错时。
你在心里嘀咕?
- 他访问地址是不是拼写对了?
- 他的服务有没有到我的controller(route)里面?
- 他的参数对不对?
- 我返回的对吗?
。。。。。
当这一系列发生时,大家一顿暂停服务器,加一系列printf。
多次增加printf后,可能找到了问题。有需要把printf再次删除,但是这会非常耗时,非常的麻烦。
所以,我实在忍无可忍,写了一个抓包解析http协议的工具。
代码在 https://github.com/asmcos/sniffer
他的作用是抓包,解析http协议,将包的内容打印出来。
192.168.10.94->111.13.134.251:58684->80
hq.sinajs.cn
GET /rn=1616738020823&list=sh603983,sh603983_i,bk_new_qtxy HTTP/1.1
Accept-Language :[zh-CN,zh;q=0.9]
Connection :[keep-alive]
User-Agent :[Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4442.4 Safari/537.36]
Accept :[*/*]
Referer :[http://finance.sina.com.cn/realstock/company/sh603983/nc.shtml]
Accept-Encoding :[gzip, deflate]
111.13.134.251->192.168.10.94:80->58684
HTTP/1.1 200 OK
Content-Encoding :[gzip]
Cache-Control :[no-cache]
Content-Length :[3588]
Connection :[Keep-Alive]
Content-Type :[application/javascript; charset=GB18030]
并且我增加了 动态可配置参数
{
"name": "sniffer",
"device": "en0",
"port":80,
"serverurl":"http://127.0.0.1:1337/",
"clientDeviceid":"2",
"clientDevicekey":"43ffweqr3",
"jslength":1000,
"htmllength":0,
"dumpanystr":"text/plain",
"dumpanylen":200
}
这个配置可以有好几个功能,
- 动态配置 网卡
- 配置端口号,抓取你的服务器端口
- 配以配置将抓取的日志存放到服务器。
并且我提供了一个服务器,你可以直接存进去。 - 可以配置打印任意返回格式,和打印长度
例如繁琐的html,你就打印前1000个字节,基本就可以看出来返回对不对了。
存储这个数据的服务器,代码我也放在了github上
https://github.com/asmcos/AIDatas
这个是采用strapi搭建的
到这里,我还没有完成
我还在写另一个项目
analytics,日志分析器
日志分析器,类似awstats,他不但可以分析用户访问服务器的访问量。
还可以做 api 说明,将访问的api做中文对应说明。
有疑问加站长微信联系(非本文作者)