mirror of
https://gitee.com/lauix/HFish
synced 2025-05-10 20:08:12 +08:00
42 lines
997 B
Go
42 lines
997 B
Go
package httpx
|
|
|
|
import (
|
|
"net/http"
|
|
"github.com/elazarl/goproxy"
|
|
"strings"
|
|
"HFish/utils/is"
|
|
"HFish/core/rpc/client"
|
|
"HFish/core/report"
|
|
)
|
|
|
|
func Start(address string) {
|
|
proxy := goproxy.NewProxyHttpServer()
|
|
|
|
var info string
|
|
|
|
proxy.OnRequest().DoFunc(
|
|
func(r *http.Request, ctx *goproxy.ProxyCtx) (*http.Request, *http.Response) {
|
|
info = "URL:" + r.URL.String() + "&&Method:" + r.Method + "&&RemoteAddr:" + r.RemoteAddr
|
|
|
|
arr := strings.Split(r.RemoteAddr, ":")
|
|
|
|
// 判断是否为 RPC 客户端
|
|
if is.Rpc() {
|
|
go client.ReportResult("HTTP", "HTTP代理蜜罐", arr[0], info, "0")
|
|
} else {
|
|
go report.ReportHttp("HTTP代理蜜罐", "本机", arr[0], info)
|
|
}
|
|
|
|
return r, nil
|
|
})
|
|
|
|
//proxy.OnResponse().DoFunc(
|
|
// func(r *http.Response, ctx *goproxy.ProxyCtx) *http.Response {
|
|
// input, _ := ioutil.ReadAll(r.Body)
|
|
// info += "Response Info&&||kon||&&Status:" + r.Status + "&&Body:" + string(input)
|
|
// return r
|
|
// })
|
|
|
|
http.ListenAndServe(address, proxy)
|
|
}
|