# SunnyNet **Repository Path**: life_is_sweet/SunnyNet ## Basic Information - **Project Name**: SunnyNet - **Description**: Sunny网络中间件 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 29 - **Created**: 2025-01-27 - **Last Updated**: 2025-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sunny网络中间件 --- > Sunny网络中间件 和 Fiddler 类似。 是可跨平台的网络分析组件 ```log 可用于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 主动发送数据 ``` --- * # 由于代码主要是做DLL使用,部分功能未封装给Go使用(例如添加证书,添加证书使用规则),请自行探索! * # 编译请使用 TDM-GCC

BUG 反馈

QQ群:751406884

二群:545120699

网址:https://esunny.vip/

--- ###

各语言,示例文件以及抓包工具 下载地址

https://wwxa.lanzouu.com/b02p4aet8j

密码:4h7r

--- - > GoLang使用示例代码 ```golang package main import ( "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.ConnHTTP) { if Conn.Type() == public.HttpSendRequest { //fmt.Println(Conn.URL()) //发起请求 //直接响应,不让其发送请求 //Conn.StopRequest(200, "Hello Word") } else if Conn.Type() == public.HttpResponseOK { //请求完成 //log.Println("Call", Conn.URL()) } else if Conn.Type() == public.HttpRequestFail { //请求错误 /* fmt.Println(Conn.Request.URL.String(), Conn.GetError()) */ } } func WSCallback(Conn SunnyNet.ConnWebSocket) { Conn.Context() //fmt.Println(Conn.Url) } func TcpCallback(Conn SunnyNet.ConnTCP) { if Conn.Type() == public.SunnyNetMsgTypeTCPAboutToConnect { //即将连接 mode := string(Conn.Body()) info.Println("PID", Conn.PID(), "TCP 即将连接到:", mode, Conn.LocalAddress(), "->", Conn.RemoteAddress()) //修改目标连接地址 //Conn.SetNewAddress("8.8.8.8:8080") return } if Conn.Type() == public.SunnyNetMsgTypeTCPConnectOK { info.Println("PID", Conn.PID(), "TCP 连接到:", Conn.LocalAddress(), "->", Conn.RemoteAddress(), "成功") return } if Conn.Type() == public.SunnyNetMsgTypeTCPClose { info.Println("PID", Conn.PID(), "TCP 断开连接:", Conn.LocalAddress(), "->", Conn.RemoteAddress()) return } if Conn.Type() == public.SunnyNetMsgTypeTCPClientSend { info.Println("PID", Conn.PID(), "发送数据", Conn.LocalAddress(), Conn.RemoteAddress(), Conn.Type(), Conn.BodyLen(), Conn.Body()) return } if Conn.Type() == public.SunnyNetMsgTypeTCPClientReceive { info.Println("PID", Conn.PID(), "收到数据", Conn.LocalAddress(), Conn.RemoteAddress(), Conn.Type(), Conn.BodyLen(), Conn.Body()) return } } func UdpCallback(Conn SunnyNet.ConnUDP) { if Conn.Type() == public.SunnyNetUDPTypeSend { //客户端向服务器端发送数据 info.Println("PID", Conn.PID(), "发送UDP", Conn.LocalAddress(), Conn.RemoteAddress(), Conn.BodyLen()) //修改发送的数据 //Conn.SetBody([]byte("Hello Word")) return } if Conn.Type() == public.SunnyNetUDPTypeReceive { //服务器端向客户端发送数据 info.Println("PID", Conn.PID(), "接收UDP", Conn.LocalAddress(), Conn.RemoteAddress(), Conn.BodyLen()) //修改响应的数据 //Conn.SetBody([]byte("Hello Word")) return } if Conn.Type() == public.SunnyNetUDPTypeClosed { info.Println("PID", Conn.PID(), "关闭UDP", Conn.LocalAddress(), Conn.RemoteAddress()) return } } ```