socks: code.as/core/socks Index | Files

package socks

import "code.as/core/socks"

Package socks implements a SOCKS (SOCKS4, SOCKS4A and SOCKS5) proxy client.

A complete example using this package:

package main

import (
	"code.as/core/socks"
	"fmt"
	"net/http"
	"io/ioutil"
)

func main() {
	dialSocksProxy := socks.DialSocksProxy(socks.SOCKS5, "127.0.0.1:1080")
	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

Package Files

socks.go

Constants

const (
    SOCKS4 = iota
    SOCKS4A
    SOCKS5
)

Constants to choose which version of SOCKS protocol to use.

func DialSocksProxy Uses

func DialSocksProxy(socksType int, proxy string) func(string, string) (net.Conn, error)

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".

Package socks imports 4 packages (graph) and is imported by 5 packages. Updated 2018-09-06. Refresh now. Tools for package owners.