Capturing Go Traffic

Environment

Product
Product Version 1.0.0 and above
3rd-party tool Go
Supported OS macOS, Linux, Windows

Description

Fiddler captures different traffic but I cannot capture localhost HTTP traffic generated from a Go application.

Solution

Fiddler Everywhere respects global variables like HTTP_PROXY which are also used by the HttpProxy and useProxy in the Go language.

However, a known limitation is that the above Go methods won't respect the proxy variables for traffic going through localhost or 127.0.0.1.

... As a special case, if req.URL.Host is "localhost" or a loopback address (with or without a port number), then a nil URL and nil error will be returned.

To overcome the above limitation, you can explicitly overwrite the hosts file in your operating system and provide a custom alias for the localhost traffic.

For example:

Open the hosts file on macOS

open ~/etc/hosts

or open the hosts file on Windows

start c:/Windows/System32/Drivers/etc/hosts

Then add an alias like local for the localhost address 127.0.0.1

127.0.0.1 local

Finally, open your Go application and substitute any mentions of localhost or 127.0.0.1 with the new alias local.