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) fmt.Println(Green("Request:"), respStatusStr)
req, _ := ParseReq(reqDump) req, _ := ParseReq(reqDump)
// for k, v := range req { fmt.Printf("%s %s %s\n", Blue(req.Method), req.Host+req.RequestURI, respStatusStr)
// fmt.Println(k, ":::::", v)
// }
fmt.Printf("%s %s %s\n", Blue(req.Method), req.RequestURI, respStatusStr)
for headerName, headerContext := range req.Header { for headerName, headerContext := range req.Header {
fmt.Printf("%s: %s\n", Blue(headerName), headerContext) fmt.Printf("%s: %s\n", Blue(headerName), headerContext)
} }
fmt.Printf("req:---->%#v\n", req)
if req.Method == "POST" { if req.Method == "POST" {
fmt.Println(Green("URLEncoded form")) fmt.Println(Green("POST Param:"))
fmt.Println(reqDump) err := req.ParseForm()
body, err := ioutil.ReadAll(req.Body)
if err != nil { 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:")) fmt.Println(Green("Response:"))
for headerName, headerContext := range resp.Header { 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.Del("Proxy-Connection")
req.Header.Set("Connection", "Keep-Alive") req.Header.Set("Connection", "Keep-Alive")
var reqDump []byte
var err error
ch := make(chan bool)
// handle connection // handle connection
reqDump, err := httputil.DumpRequest(req, true) go func() {
reqDump, err = httputil.DumpRequestOut(req, true)
ch <- true
}()
if err != nil { if err != nil {
logger.Println("DumpRequest error ", err) logger.Println("DumpRequest error ", err)
} }
@ -177,7 +183,10 @@ func (hw *HandlerWrapper) DumpHTTPAndHTTPs(resp http.ResponseWriter, req *http.R
} }
if *hw.MyConfig.Monitor { if *hw.MyConfig.Monitor {
<-ch
go httpDump(reqDump, respOut) go httpDump(reqDump, respOut)
} else {
<-ch
} }
} }

Loading…
Cancel
Save