A SOCKS (SOCKS4, SOCKS4A and SOCKS5) Proxy Package for Go
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Matt Baer 5be269b4e6 Move socks package to code.as/core/socks 5 years ago
spec Add spec of SOCKS protocols. 11 years ago
.gitignore Initial commit 11 years ago
LICENSE Add the license file. 11 years ago
README.md Move socks package to code.as/core/socks 5 years ago
socks.go Move socks package to code.as/core/socks 5 years ago

README.md

SOCKS

GoDoc

SOCKS is a SOCKS4, SOCKS4A and SOCKS5 proxy package for Go, forked from h12w/socks and patched so it’s go getable.

Quick Start

Get the package

go get -u "code.as/core/socks"

Import the package

import "code.as/core/socks"

Create a SOCKS proxy dialing function

dialSocksProxy := socks.DialSocksProxy(socks.SOCKS5, "127.0.0.1:1080")
tr := &http.Transport{Dial: dialSocksProxy}
httpClient := &http.Client{Transport: tr}

Example

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"

	"code.as/core/socks"
)

func main() {
	dialSocksProxy := socks.DialSocksProxy(socks.SOCKS5, "127.0.0.1:1080")
	tr := &http.Transport{Dial: dialSocksProxy}
	httpClient := &http.Client{Transport: tr}
	resp, err := httpClient.Get("http://www.google.com")
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()
	if resp.StatusCode != http.StatusOK {
		log.Fatal(resp.StatusCode)
	}
	buf, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(string(buf))
}

Alternatives

http://godoc.org/golang.org/x/net/proxy