HFish/core/protocol/httpx/http.go
2019-10-28 22:25:40 +08:00

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)
}