Sunny网络中间件 和 Fiddler 类似。 是可跨平台的网络分析组件
可用于HTTP/HTTPS/WS/WSS/TCP/UDP网络分析 为二次开发量身制作
支持 获取/修改 HTTP/HTTPS/WS/WSS/TCP/TLS-TCP/UDP 发送及返回数据
支持 对 HTTP/HTTPS/WS/WSS 指定连接使用指定代理
支持 对 HTTP/HTTPS/WS/WSS/TCP/TLS-TCP 链接重定向
支持 gzip, deflate, br 解码
支持 WS/WSS/TCP/TLS-TCP/UDP 主动发送数据
package mainimport ("fmt""github.com/qtgolang/SunnyNet/SunnyNet""github.com/qtgolang/SunnyNet/public""time")var Sunny = SunnyNet.NewSunny()func main() {//绑定回调函数Sunny.SetGoCallback(HttpCallback, TcpCallback, WSCallback, UdpCallback)//绑定端口号并启动Sunny.SetPort(2023).Start()//避免程序退出time.Sleep(24 * time.Hour)}func HttpCallback(Conn *SunnyNet.HttpConn) {if Conn.Type == public.HttpSendRequest {//发起请求//这里可以对请求数据修改if Conn.Request.Body != nil {Body, _ := io.ReadAll(Conn.Request.Body)_ = Conn.Request.Body.Close()//这里可以对Body修改Body = []byte("Hello Sunny Request")Conn.Request.Body = io.NopCloser(bytes.NewBuffer(Body))//直接响应,不让其发送请求//Conn.StopRequest(200, "Hello Word")}fmt.Println(Conn.Request.URL.String())} else if Conn.Type == public.HttpResponseOK {//请求完成if Conn.Response.Body != nil {Body, _ := io.ReadAll(Conn.Response.Body)_ = Conn.Response.Body.Close()//这里可以对Body修改Body = []byte("Hello Sunny Response")Conn.Response.Body = io.NopCloser(bytes.NewBuffer(Body))}} else if Conn.Type == public.HttpRequestFail {//请求错误}}func WSCallback(Conn *SunnyNet.WsConn) {//捕获到数据可以修改,修改空数据,取消发送/接收fmt.Println(Conn.Url)}func TcpCallback(Conn *SunnyNet.TcpConn) {//捕获到数据可以修改,修改空数据,取消发送/接收fmt.Println(Conn.Pid, Conn.LocalAddr, Conn.RemoteAddr, Conn.Type, Conn.GetBodyLen())}func UdpCallback(Conn *SunnyNet.UDPConn) {//在 Windows 捕获UDP需要加载驱动,并且设置进程名//其他情况需要设置Socket5代理,才能捕获到UDP//捕获到数据可以修改,修改空数据,取消发送/接收if public.SunnyNetUDPTypeReceive == Conn.Type {fmt.Println("接收UDP", Conn.LocalAddress, Conn.RemoteAddress, len(Conn.Data))}if public.SunnyNetUDPTypeSend == Conn.Type {fmt.Println("发送UDP", Conn.LocalAddress, Conn.RemoteAddress, len(Conn.Data))}if public.SunnyNetUDPTypeClosed == Conn.Type {fmt.Println("关闭UDP", Conn.LocalAddress, Conn.RemoteAddress)}}
代码:
https://gitee.com/qtr/SunnyNet
https://esunny.vip/