Skip to content

SDK

本文档详细说明了 ProxyClient 库的所有公开接口及其使用方法。

基础接口

NewClient

创建一个新的代理客户端。

func NewClient(proxy *url.URL) (Dial, error)  

参数:

  • proxy: 代理服务器的 URL
    示例:
proxy, _ := url.Parse("http://localhost:8080")  
dial, err := proxyclient.NewClient(proxy)  
if err != nil {  
    panic(err)
}  

NewClientWithDial

使用自定义上游连接器创建代理客户端。

func NewClientWithDial(proxy *url.URL, upstreamDial Dial) (Dial, error)  

参数:

  • proxy: 代理服务器的 URL- upstreamDial: 上游连接器

示例:

proxy, _ := url.Parse("http://localhost:8080")  
customDial := func(ctx context.Context, network, address string) (net.Conn, error) {  
    dialer := net.Dialer{Timeout: 5 * time.Second}    
    return dialer.DialContext(ctx, network, address)
}  
dial, err := proxyclient.NewClientWithDial(proxy, customDial)  

NewClientChain

创建代理链。

func NewClientChain(proxies []*url.URL) (Dial, error)  

参数:

  • proxies: 代理服务器 URL 列表

示例:

proxy1, _ := url.Parse("socks5://localhost:1080")  
proxy2, _ := url.Parse("http://localhost:8080")  
dial, err := proxyclient.NewClientChain([]*url.URL{proxy1, proxy2})  

NewClientChainWithDial

使用自定义上游连接器创建代理链。

func NewClientChainWithDial(proxies []*url.URL, upstreamDial Dial) (Dial, error)  

参数:

  • proxies: 代理服务器 URL 列表
  • upstreamDial: 上游连接器

示例:

proxy1, _ := url.Parse("socks5://localhost:1080")  
proxy2, _ := url.Parse("http://localhost:8080")  
customDial := func(ctx context.Context, network, address string) (net.Conn, error) {  
    return net.Dial(network, address)
}  
dial, err := proxyclient.NewClientChainWithDial([]*url.URL{proxy1, proxy2}, customDial)  

RegisterScheme

注册新的代理协议。

func RegisterScheme(schemeName string, factory DialFactory)  

参数:

  • schemeName: 协议名称
  • factory: 协议工厂函数

示例:

proxyclient.RegisterScheme("MYPROXY", func(proxy *url.URL, upstreamDial Dial) (Dial, error) {  
    // 实现自定义代理协议  
    return func(ctx context.Context, network, address string) (net.Conn, error) {        // 实现连接逻辑  
        return nil, nil    
}, nil})  

SupportedSchemes

获取所有支持的代理协议。

func SupportedSchemes() []string  

示例:

schemes := proxyclient.SupportedSchemes()  
fmt.Println("Supported protocols:", schemes)  

工具函数

ParseProxyURLs

解析多个代理 URL 字符串。

func ParseProxyURLs(proxyURL []string) ([]*url.URL, error)  

参数:

  • proxyURL: 代理 URL 字符串列表

示例:

urls := []string{  
    "http://localhost:8080",   
    "socks5://localhost:1080",
}  
proxies, err := proxyclient.ParseProxyURLs(urls)  

DialWithTimeout

创建带超时的连接器。

func DialWithTimeout(timeout time.Duration) Dial  

参数:

  • timeout: 连接超时时间

示例:

dial := proxyclient.DialWithTimeout(5 * time.Second)  
conn, err := dial(context.Background(), "tcp", "example.com:80")