Documentation
¶
Overview ¶
Package socks implements a SOCKS (SOCKS4, SOCKS4A and SOCKS5) proxy client.
A complete example using this package:
package main import ( "git.tcp.direct/kayos/socks" "fmt" "net/http" "io/ioutil" ) func main() { dialSocksProxy := socks.Dial("socks5://127.0.0.1:1080?timeout=5s") tr := &http.Transport{Dial: dialSocksProxy} httpClient := &http.Client{Transport: tr} bodyText, err := TestHttpsGet(httpClient, "https://h12.io/about") if err != nil { fmt.Println(err.Error()) } fmt.Print(bodyText) } func TestHttpsGet(c *http.Client, url string) (bodyText string, err error) { resp, err := c.Get(url) if err != nil { return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { return } bodyText = string(body) return }
Index ¶
Constants ¶
const ( SOCKS4 = iota SOCKS4A SOCKS5 )
Constants to choose which version of SOCKS protocol to use.
Variables ¶
var ( ErrImproperProtocolResponse = errors.New("SOCKS server does not respond properly") ErrRejectedOrFailed = errors.New("socks connection request rejected or failed") ErrIdentdFailed = errors.New("socks connection request rejected because SOCKS server cannot connect to identd on the client") ErrIdentMismatch = errors.New("socks connection request rejected because the client program and identd report different user-ids") ErrUnknownFailure = errors.New("socks connection request failed, unknown error") )
Functions ¶
func Dial ¶
Dial returns the dial function to be used in http.Transport object. Argument proxyURI should be in the format: "socks5://user:password@127.0.0.1:1080?timeout=5s". The protocol could be socks5, socks4 and socks4a.
func DialSocksProxy ¶
DialSocksProxy returns the dial function to be used in http.Transport object. Argument socksType should be one of SOCKS4, SOCKS4A and SOCKS5. Argument proxy should be in this format "127.0.0.1:1080".
func DialWithConn ¶
DialWithConn returns the dial function to be used in http.Transport object. Argument proxyURI should be in the format: "socks5://user:password@127.0.0.1:1080?timeout=5s". The protocol could be socks5, socks4 and socks4a. DialWithConn will use the given connection to communicate with the proxy server.
Types ¶
This section is empty.