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 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.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/

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: