Go HTTP 标准库不走系统代理,因此我们通过 Fiddler
抓包的时候,是抓不到标准库发送的请求的。因此我们需要设置其代理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| func fiddler() error { proxy, err := url.Parse("http://127.0.0.1:8866") if err != nil { return err } client := &http.Client{ Transport: &http.Transport{ Proxy: http.ProxyURL(proxy), }, } req, err := http.NewRequest("GET", "https://www.baidu.com", nil) if err != nil { return err } resp, err := client.Do(req) if err != nil { return err } defer resp.Body.Close() return nil }
|
执行 fiddler()
我们可以在 Fiddler
里面抓到访问 https://www.baidu.com
的请求。其中 8866
为 Fiddler
的监听端口,可以通过 Fiddler
设置。
顺带一提,我们可以通过 import "golang.org/x/sys/windows/registry"
获取系统代理
1 2 3 4 5 6 7 8 9 10 11
| key, err := registry.OpenKey( registry.CURRENT_USER, `SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings`, registry.QUERY_VALUE) if err != nil { panic(err) } val, _, err := key.GetStringValue("ProxyServer") if err != nil { panic(err) }
|