diff --git a/dump.go b/dump.go index 4a458f0..b7f5cee 100644 --- a/dump.go +++ b/dump.go @@ -6,6 +6,7 @@ import ( "compress/flate" "compress/gzip" "fmt" + "io" "io/ioutil" "math" "net/http" @@ -28,32 +29,38 @@ func httpDump(reqDump []byte, resp *http.Response) { respStatusStr = Red("<--" + strconv.Itoa(respStatus)) } fmt.Println(Green("Request:"), respStatusStr) - ParseReq(reqDump) - /*req, _ := ParseReq(reqDump) - for k, v := range req { - fmt.Println(k, ":::::", v) - }*/ - /*fmt.Printf("%s %s %s\n", Blue(req.Method), req.RequestURI, 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) for headerName, headerContext := range req.Header { fmt.Printf("%s: %s\n", Blue(headerName), headerContext) - }*/ - /*if req.Method == "POST" { - fmt.Println(Green("URLEncoded form")) + } - err := req.ParseForm() + fmt.Printf("req:---->%#v\n", req) + if req.Method == "POST" { + fmt.Println(Green("URLEncoded form")) + fmt.Println(reqDump) + body, err := ioutil.ReadAll(req.Body) 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("readall ", err) } + 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 { fmt.Printf("%s: %s\n", Blue(headerName), headerContext) @@ -92,7 +99,13 @@ func httpDump(reqDump []byte, resp *http.Response) { fmt.Printf("%s%s%s\n", Black("####################"), Cyan("END"), Black("####################")) } -func ParseReq(b []byte) error { - str := string(b) - +func ParseReq(b []byte) (*http.Request, error) { + // func ReadRequest(b *bufio.Reader) (req *Request, err error) { return readRequest(b, deleteHostHeader) } + fmt.Println(string(b)) + fmt.Println("-----------------------") + var buf io.ReadWriter + buf = new(bytes.Buffer) + buf.Write(b) + bufr := bufio.NewReader(buf) + return http.ReadRequest(bufr) } diff --git a/gomitmproxy.go b/gomitmproxy.go index c358b15..7641918 100644 --- a/gomitmproxy.go +++ b/gomitmproxy.go @@ -31,8 +31,12 @@ func main() { conf.Log = flag.String("log", "./error.log", "log file path") conf.Monitor = flag.Bool("m", false, "monitor mode") conf.Tls = flag.Bool("tls", false, "tls connect") + help := flag.Bool("h", false, "help") flag.Parse() + if *help { + flag.PrintDefaults() + } var err error logFile, err = os.Create(*conf.Log) if err != nil {