proxysocks

module
v0.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 25, 2022 License: MIT

README

proxysocks

Go Proxy Protocol Library

Install

go get github.com/Cherrysaber/proxysocks

Easy to Go

socks5
import "github.com/Cherrysaber/proxysocks/socks5"
...
func server(){
    ln,err := socks5.Listen("tcp", ":1080",nil)
    if err != nil { panic(err) }
    // hostPort为client请求代理的地址
    conn,hostPort,err := ln.Accept()
    if err != nil { panic(err) }
    go relay(conn,hostPort)... // 代理连接
}
func client(){
    // 通过socks5协议代理www.google.com:443
    conn,err := socks5.Dial("tcp","your_server.com:1234","www.google.com:443",nil)
    if err != nil { panic(err) }
    conn.Write([]byte("GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n"))
    ...
}
shadowsocks
import "github.com/Cherrysaber/proxysocks/shadowsocks"
...
func server(){
    ln,err := shadowsocks.Listen("tcp", ":1234","method","password")
    if err != nil { panic(err) }
    // hostPort为client请求代理的地址
    conn,hostPort,err := ln.Accept()
    if err != nil { panic(err) }
    go relay(conn,hostPort)... // 代理连接
}
func client(){
    // 通过shadowsocks协议代理www.google.com:443
    conn,err := shadowsocks.Dial("tcp","your_server.com:1234","www.google.com:443","method","password")
    if err != nil { panic(err) }
    conn.Write([]byte("GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n"))
    ...
}
trojan
import "github.com/Cherrysaber/proxysocks/trojan"
...
func server(){
    tlsConfig := &tls.Config{...} // 配置tls
    auth := trojan.NewAuthPasswordSlice([]string{"password"}, true) // trojan认证方式
    ln,err := trojan.Listen("tcp", ":443", auth, tlsConfig)
    if err != nil { panic(err) }
    // network为client请求代理的协议tcp or udp
    // hostPort为client请求代理的地址
    conn, network, hostPort, err := ln.Accept()
    if err == nil { ... //代理连接 }
    if err, ok := err.(trojan.AuthFailure); ok {
        // 认证失败返回AuthFailure错误
        // 重定向连接到网页
        // []byte(err) 为 trojan 已经读取的数据流
        go Redirect(conn, []byte(err))
        continue
    } 
    ... // 处理其他错误
}
func client(){
    // 通过trojan协议代理www.google.com:443
    tlsConfig := &tls.Config{...} // 配置tls
    conn,err := trojan.Dial("tcp", "your_server.com:443", "www.google.com:443", "password", tlsConfig)
    if err != nil { panic(err) }
    conn.Write([]byte("GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n"))
    ...
}
  • 所有包实现和net库一致接口Dial,Listen...
  • 高聚合低耦合,基本只使用官方标准库,其余逻辑都内部自实现

ToDo

  • Socks5
  • Shadosocks
  • Trojan
  • Vmess
  • Websocket

Directories

Path Synopsis
Package socks5 SOCKS protocol version 5 is defined in RFC 1928.
Package socks5 SOCKS protocol version 5 is defined in RFC 1928.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL