import "code.google.com/p/go.net/proxy"
proxy包提供了多种代理网络的协议。
var Direct = direct{}
Direct是一个直接的代理:它直接建立网络连接。
type Auth struct { User, Password string }
Auth包含认证的参数,特定的Dialer可能会需要这些参数。
type Dialer interface { // Dial方法通过代理与指定地址建立连接 Dial(network, addr string) (c net.Conn, err error) }
Dialer代表一个创建连接的途径。
func FromEnvironment() Dialer
FromEnvironment返回一个由与代理相关的环境变量指定的Dialer。
func FromURL(u *url.URL, forward Dialer) (Dialer, error)
FromURL返回一个使用指定的网址和下层Dialer创建网络连接的Dialer。
func SOCKS5(network, addr string, auth *Auth, forward Dialer) (Dialer, error)
SOCKS5返回一个使用下层Dialer、可选的用户名和密码、与指定地址建立Socks5连接的Dialer,参见RFC 1928。
type PerHost struct {
// 内含隐藏或非导出字段
}
PerHost定向连接到一个默认的Dialer,除非请求的域名匹配一系列例外。
func NewPerHost(defaultDialer, bypass Dialer) *PerHost
NewPerHost返回一个PerHost,该PerHost根据连接是否匹配配置的规则的某一条,将连接重定向到defaultDialer或bypass。
func (p *PerHost) AddIP(ip net.IP)
AddIP指定一个会使用bypass的IP地址。注意只有呼叫一个字面的IP地址时,该规则才生效。采用命名域名的连接,永远不会匹配IP。
func (p *PerHost) AddNetwork(net *net.IPNet)
AddNetwork指定一个会使用bypass的IP范围(IP子网)。 注意只有呼叫一个字面的IP地址时,该规则才生效。采用命名域名的连接,永远不会匹配IP。
func (p *PerHost) AddHost(host string)
AddHost指定一个会使用bypass的域名。
func (p *PerHost) AddZone(zone string)
AddZone指定一个会使用bypass的DNS后缀。zone为"example.com" 会匹配"example.com" 及其所有子域名。
func (p *PerHost) AddFromString(s string)
AddFromString解析一个包含逗号分隔的值、指定将使用bypass代理的域名的字符串。每个值可以是IP地址、CIDR范围、DNS后缀(*.example.com)或者域名(localhost)。
func (p *PerHost) Dial(network, addr string) (c net.Conn, err error)
Dial在指定的网络network上通过defaultDialer或者bypass连接地址addr。
func RegisterDialerType(scheme string, f func(*url.URL, Dialer) (Dialer, error))
RegisterDialerType接受一个URL协议和一个从采用该协议的URL和下层Dialer生成Dialer的函数。注册的协议会被FromURL函数使用。