github.com/coreos/goproxy@v0.0.0-20190513173959-f8dc2d7ba04e/examples/goproxy-sslstrip/sslstrip.go (about)

     1  package main
     2  
     3  import (
     4  	"github.com/elazarl/goproxy"
     5  	"log"
     6  	"flag"
     7  	"net/http"
     8  )
     9  
    10  func main() {
    11  	verbose := flag.Bool("v", false, "should every proxy request be logged to stdout")
    12  	addr := flag.String("addr", ":8080", "proxy listen address")
    13  	flag.Parse()
    14  	proxy := goproxy.NewProxyHttpServer()
    15  	proxy.OnRequest().HandleConnect(goproxy.AlwaysMitm)
    16  	proxy.OnRequest().DoFunc(func (req *http.Request, ctx *goproxy.ProxyCtx) (*http.Request, *http.Response) {
    17  		if req.URL.Scheme == "https" {
    18  			req.URL.Scheme = "http"
    19  		}
    20  		return req, nil
    21  	})
    22  	proxy.Verbose = *verbose
    23  	log.Fatal(http.ListenAndServe(*addr, proxy))
    24  }