開發(fā)多年的服務器高手們,無論你是PHP,NodeJS,Java,Python,Golang。都會遇到一個問題。
當客戶端測試一個api接口出錯時。
你在心里嘀咕?
- 他訪問地址是不是拼寫對了?
- 他的服務有沒有到我的controller(route)里面?
- 他的參數(shù)對不對?
- 我返回的對嗎?
。。。。。
當這一系列發(fā)生時,大家一頓暫停服務器,加一系列printf。
多次增加printf后,可能找到了問題。有需要把printf再次刪除,但是這會非常耗時,非常的麻煩。
所以,我實在忍無可忍,寫了一個抓包解析http協(xié)議的工具。
代碼在 https://github.com/asmcos/sniffer
他的作用是抓包,解析http協(xié)議,將包的內(nèi)容打印出來。
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]
并且我增加了 動態(tài)可配置參數(shù)
{
"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
}
這個配置可以有好幾個功能,
- 動態(tài)配置 網(wǎng)卡
- 配置端口號,抓取你的服務器端口
- 配以配置將抓取的日志存放到服務器。
并且我提供了一個服務器,你可以直接存進去。 - 可以配置打印任意返回格式,和打印長度
例如繁瑣的html,你就打印前1000個字節(jié),基本就可以看出來返回對不對了。
存儲這個數(shù)據(jù)的服務器,代碼我也放在了github上
https://github.com/asmcos/AIDatas
這個是采用strapi搭建的
到這里,我還沒有完成
我還在寫另一個項目
analytics,日志分析器
日志分析器,類似awstats,他不但可以分析用戶訪問服務器的訪問量。
還可以做 api 說明,將訪問的api做中文對應說明。

image