http post请求的抓包

main
zhengbaoyang 8 years ago
parent a990253ee4
commit baf79e0b3f
  1. 31
      dump.go
  2. 11
      mitm.go

@ -30,36 +30,21 @@ func httpDump(reqDump []byte, resp *http.Response) {
}
fmt.Println(Green("Request:"), respStatusStr)
req, _ := ParseReq(reqDump)
// for k, v := range req {
// fmt.Println(k, ":::::", v)
// }
fmt.Printf("%s %s %s\n", Blue(req.Method), req.RequestURI, respStatusStr)
fmt.Printf("%s %s %s\n", Blue(req.Method), req.Host+req.RequestURI, respStatusStr)
for headerName, headerContext := range req.Header {
fmt.Printf("%s: %s\n", Blue(headerName), headerContext)
}
fmt.Printf("req:---->%#v\n", req)
if req.Method == "POST" {
fmt.Println(Green("URLEncoded form"))
fmt.Println(reqDump)
body, err := ioutil.ReadAll(req.Body)
fmt.Println(Green("POST Param:"))
err := req.ParseForm()
if err != nil {
fmt.Println("readall ", err)
logger.Println("parseForm error:", err)
} else {
for k, v := range req.Form {
fmt.Printf("\t%s: %s\n", Blue(k), v)
}
}
fmt.Println(string(body))
// err := req.ParseForm()
// if err != nil {
// logger.Println("parseForm error:", err)
// } else {
// for k, v := range req.Form {
// fmt.Printf("%s: %s\n", Blue(k), v)
// }
// }
// values, _ := ParsePostValues(reqDump)
// for k, v := range values {
// fmt.Printf("%s: %s\n", Blue(k), v)
// }
}
fmt.Println(Green("Response:"))
for headerName, headerContext := range resp.Header {

@ -101,8 +101,14 @@ func (hw *HandlerWrapper) DumpHTTPAndHTTPs(resp http.ResponseWriter, req *http.R
req.Header.Del("Proxy-Connection")
req.Header.Set("Connection", "Keep-Alive")
var reqDump []byte
var err error
ch := make(chan bool)
// handle connection
reqDump, err := httputil.DumpRequest(req, true)
go func() {
reqDump, err = httputil.DumpRequestOut(req, true)
ch <- true
}()
if err != nil {
logger.Println("DumpRequest error ", err)
}
@ -177,7 +183,10 @@ func (hw *HandlerWrapper) DumpHTTPAndHTTPs(resp http.ResponseWriter, req *http.R
}
if *hw.MyConfig.Monitor {
<-ch
go httpDump(reqDump, respOut)
} else {
<-ch
}
}

Loading…
Cancel
Save