建网站的详细步骤,网站 反链,上海谷歌优化,网址大全目录
背景
实现思路
具体实现
Python 抓包
总结 资料获取方法 背景
测试群里经常看到客户端的同学反馈发现了偶现Bug#xff0c;但是来不及抓包#xff0c;最后不了了之#xff0c;最近出现得比较频繁#xff0c;所以写个小脚本解决这个问题。 实现思路
之前写过一个…目录
背景
实现思路
具体实现
Python 抓包
总结 资料获取方法 背景
测试群里经常看到客户端的同学反馈发现了偶现Bug但是来不及抓包最后不了了之最近出现得比较频繁所以写个小脚本解决这个问题。 实现思路
之前写过一个埋点工具辅助测试埋点的数据解决多个端的埋点需要打开不同的抓包软件并且需要肉眼去比对的的不便也是使用的抓包分析数据并在界面pyqt5展示的方式这一次主要是进行日志的管理保存请求记录所以实现的思路比较简单
抓包存日志做日志管理 具体实现
此前使用过优步的号称性能最好的golang日志管理包zap结合lumberjack对日志的管理特别的方便几个配置参数就能满足需求比如一键日志压缩压缩后1M只占20Kb。所以拿来即用
lumberjack常见的配置参数
参数含义Filename:// 日志文件路径MaxSize:// 每个日志文件保存的最大尺寸 单位MMaxBackups:// 日志文件最多保存多少个备份MaxAge:// 文件最多保存多少天Compress:// 是否压缩, 压缩后1M约占20Kb
Go build 成不同操作系统可执行文件
而且golang可以很简单的把代码编译成不同系统都能执行的程序或者二进制包。
Mac下编译Linux, Windows平台的64位可执行程序
$ CGO_ENABLED0 GOOSdarwin GOARCHamd64 go build test.go # Mac
$ CGO_ENABLED0 GOOSlinux GOARCHamd64 go build test.go # linux
$ CGO_ENABLED0 GOOSwindows GOARCHamd64 go build test.go # windows具体代码
package mainimport (fmtostimegithub.com/google/gopacketgithub.com/google/gopacket/pcapgo.uber.org/zapgo.uber.org/zap/zapcoregopkg.in/natefinch/lumberjack.v2
)var (device en0 // 指定监控网卡名称信息snapshotLen int32 10000000promiscuous falseerr errortimeout 30 * time.Secondhandle *pcap.Handle
)func main() {handle, err pcap.OpenLive(device, snapshotLen, promiscuous, timeout)filter : host test.baidu.com // 指定抓取域名err handle.SetBPFFilter(filter)defer handle.Close()log : initLog()packetSource : gopacket.NewPacketSource(handle, handle.LinkType())for packet : range packetSource.Packets() {applicationLayer : packet.ApplicationLayer()if applicationLayer ! nil {log.Info(string(applicationLayer.LayerContents()))}if err : packet.ErrorLayer(); err ! nil {fmt.Println(Error decoding some part of the packet:, err)}}
}func initLog() *zap.Logger {hook : lumberjack.Logger{Filename: ./logs/package.log, // 日志文件路径MaxSize: 10, // 每个日志文件保存的最大尺寸 单位MMaxBackups: 5, // 日志文件最多保存多少个备份MaxAge: 7, // 文件最多保存多少天Compress: true, // 是否压缩, 压缩后1M约占20Kb}encoderConfig : zapcore.EncoderConfig{TimeKey: time,LevelKey: level,NameKey: logger,MessageKey: msg,LineEnding: zapcore.DefaultLineEnding,EncodeLevel: zapcore.LowercaseLevelEncoder, // 小写编码器EncodeTime: zapcore.ISO8601TimeEncoder, // ISO8601 UTC 时间格式EncodeDuration: zapcore.SecondsDurationEncoder, //}// 设置日志级别atomicLevel : zap.NewAtomicLevel()atomicLevel.SetLevel(zap.InfoLevel)core : zapcore.NewCore(zapcore.NewConsoleEncoder(encoderConfig), // 编码器配置zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(hook)), // 打印到控制台和文件atomicLevel, // 日志级别)logger : zap.New(core)logger.Info(log 初始化成功)return logger
}Python 抓包
Python使用scapy也能很简单的完成抓包操作
from scapy.all import *def _print(_packet):指定抓包信息打印规则:param _packet: :return: return \n.join((\n.join(_packet.sprintf({Raw:%Raw.load%}).split(r\r\n)),))sniff(ifaceen0,prn_print,filterhost test.baidu.com # 指定过滤域名
)配上日志管理模块也能很快的完成实现。 总结
抓包日志管理。 资料获取方法
【留言777】 各位想获取源码等教程资料的朋友请点赞 评论 收藏三连
三连之后我会在评论区挨个私信发给你们~