Documentation
¶
Index ¶
- Constants
- Variables
- func NewFullChunkedReadWriter(id string, reqBody io.WriteCloser, serverResp io.ReadCloser) io.ReadWriteCloser
- func NewHalfChunkedReadWriter(ctx context.Context, id string, client *http.Client, method, target string, ...) io.ReadWriteCloser
- func NewHeartbeatRW(rw RawReadWriteCloser, id, redirect string) io.ReadWriteCloser
- func NewSwitchableCookieJar(hintKey []string) http.CookieJar
- func RandString(n int) string
- func Run(ctx context.Context, config *Suo5Config) error
- type ClientConnectCloseEvent
- type ClientConnectionEvent
- type ClientEventHandler
- type ConnectedEvent
- type ConnectionType
- type HttpMultiplexHalf
- type MultiPlexer
- type RawReadWriteCloser
- type Suo5Config
- type SwitchableCookieJar
- type TransportType
- type TunnelConn
- type WebsocketMultiplex
Constants ¶
View Source
const ( HeaderKey = "Accept-Language" HeaderValueChecking = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6" HeaderValueFull = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.6,en-US;q=0.5" HeaderValueHalf = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.5,en-US;q=0.4" HeaderValuePlexChecking = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.1" HeaderValuePlexHalf = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.6,en-US;q=0.2" )
View Source
const ( ActionCreate byte = 0x00 ActionData byte = 0x01 ActionDelete byte = 0x02 ActionHeartbeat byte = 0x03 )
Variables ¶
View Source
var (
SessionId = ""
)
View Source
var UAList = []string{
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 11.6; rv:92.0) Gecko/20100101 Firefox/92.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.4.14 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.6.3 Chrome/120.0.6099.291 Electron/28.3.3 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.5.3 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64; rv:127.0) Gecko/20100101 Firefox/127.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2.1 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 OPR/109.0.0.0",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.5.12 Chrome/120.0.6099.283 Electron/28.2.3 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3.1 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:127.0) Gecko/20100101 Firefox/127.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.5.8 Chrome/120.0.6099.283 Electron/28.2.3 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.4.13 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.4.16 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.5.3 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.4.16 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
}
Functions ¶
func NewFullChunkedReadWriter ¶
func NewFullChunkedReadWriter(id string, reqBody io.WriteCloser, serverResp io.ReadCloser) io.ReadWriteCloser
NewFullChunkedReadWriter 全双工读写流
func NewHalfChunkedReadWriter ¶
func NewHalfChunkedReadWriter(ctx context.Context, id string, client *http.Client, method, target string, serverResp io.ReadCloser, baseHeader http.Header, redirect string) io.ReadWriteCloser
NewHalfChunkedReadWriter 半双工读写流, 用发送请求的方式模拟写
func NewHeartbeatRW ¶ added in v0.7.0
func NewHeartbeatRW(rw RawReadWriteCloser, id, redirect string) io.ReadWriteCloser
func NewSwitchableCookieJar ¶ added in v1.3.1
func RandString ¶
Types ¶
type ClientConnectCloseEvent ¶
type ClientConnectionEvent ¶
type ClientEventHandler ¶
type ClientEventHandler struct {
Inner server.Handler
OnNewClientConnection func(event *ClientConnectionEvent)
OnClientConnectionClose func(event *ClientConnectCloseEvent)
}
type ConnectedEvent ¶
type ConnectedEvent struct {
Mode ConnectionType `json:"mode"`
}
type ConnectionType ¶
type ConnectionType string
const ( Undefined ConnectionType = "undefined" AutoDuplex ConnectionType = "auto" FullDuplex ConnectionType = "full" HalfDuplex ConnectionType = "half" )
type HttpMultiplexHalf ¶ added in v1.4.0
type HttpMultiplexHalf struct {
// contains filtered or unexported fields
}
func NewHttpMultiplexHalf ¶ added in v1.4.0
func NewHttpMultiplexHalf(rootCtx context.Context, config *Suo5Config, client *http.Client, serverResp io.ReadCloser) *HttpMultiplexHalf
func (*HttpMultiplexHalf) Close ¶ added in v1.4.0
func (s *HttpMultiplexHalf) Close()
func (*HttpMultiplexHalf) Release ¶ added in v1.4.0
func (s *HttpMultiplexHalf) Release(id string)
func (*HttpMultiplexHalf) Spawn ¶ added in v1.4.0
func (s *HttpMultiplexHalf) Spawn(id string) (*TunnelConn, error)
func (*HttpMultiplexHalf) Wait ¶ added in v1.4.0
func (s *HttpMultiplexHalf) Wait()
type MultiPlexer ¶ added in v1.4.0
type MultiPlexer interface {
Spawn(id string) (*TunnelConn, error)
Release(id string)
Wait()
Close()
}
type RawReadWriteCloser ¶ added in v0.7.0
type RawReadWriteCloser interface {
io.ReadWriteCloser
WriteRaw(p []byte) (n int, err error)
}
type Suo5Config ¶
type Suo5Config struct {
Method string `json:"method"`
Listen string `json:"listen"`
Target string `json:"target"`
NoAuth bool `json:"no_auth"`
Username string `json:"username"`
Password string `json:"password"`
Mode ConnectionType `json:"mode"`
Transport TransportType `json:"transport"`
BufferSize int `json:"buffer_size"`
Timeout int `json:"timeout"`
Debug bool `json:"debug"`
UpstreamProxy string `json:"upstream_proxy"`
RedirectURL string `json:"redirect_url"`
RawHeader []string `json:"raw_header"`
DisableHeartbeat bool `json:"disable_heartbeat"`
DisableGzip bool `json:"disable_gzip"`
EnableCookieJar bool `json:"enable_cookiejar"`
ExcludeDomain []string `json:"exclude_domain"`
// 负载均衡用
MaxRetry int `json:"max_retry"`
DirtyBodySize int `json:"dirty_body_size"`
RequestInterval int `json:"request_interval"`
MaxRequestSize int `json:"max_request_size"`
TestExit string `json:"-"`
ExcludeGlobs []glob.Glob `json:"-"`
Offset int `json:"-"`
Header http.Header `json:"-"`
OnRemoteConnected func(e *ConnectedEvent) `json:"-"`
OnNewClientConnection func(event *ClientConnectionEvent) `json:"-"`
OnClientConnectionClose func(event *ClientConnectCloseEvent) `json:"-"`
GuiLog io.Writer `json:"-"`
}
func DefaultSuo5Config ¶
func DefaultSuo5Config() *Suo5Config
func (*Suo5Config) HeaderString ¶ added in v1.3.0
func (s *Suo5Config) HeaderString() string
func (*Suo5Config) Parse ¶ added in v1.3.0
func (s *Suo5Config) Parse() error
type SwitchableCookieJar ¶ added in v1.3.1
func (*SwitchableCookieJar) Cookies ¶ added in v1.3.1
func (f *SwitchableCookieJar) Cookies(u *url.URL) []*http.Cookie
func (*SwitchableCookieJar) SetCookies ¶ added in v1.3.1
func (f *SwitchableCookieJar) SetCookies(u *url.URL, cookies []*http.Cookie)
type TransportType ¶ added in v1.4.0
type TransportType string
const ( TransportHTTP TransportType = "http" TransportWebsocket TransportType = "websocket" TransportHTTPMultiplex TransportType = "http-multiplex" )
type TunnelConn ¶ added in v1.4.0
type TunnelConn struct {
// contains filtered or unexported fields
}
func (*TunnelConn) Close ¶ added in v1.4.0
func (s *TunnelConn) Close() error
func (*TunnelConn) ReadUnmarshal ¶ added in v1.4.0
func (s *TunnelConn) ReadUnmarshal() (map[string][]byte, error)
type WebsocketMultiplex ¶ added in v1.4.0
type WebsocketMultiplex struct {
// contains filtered or unexported fields
}
func NewWebsocketMultiplex ¶ added in v1.4.0
func NewWebsocketMultiplex(rootCtx context.Context, wsConn *websocket.Conn, config *Suo5Config) *WebsocketMultiplex
func (*WebsocketMultiplex) Close ¶ added in v1.4.0
func (s *WebsocketMultiplex) Close()
func (*WebsocketMultiplex) Release ¶ added in v1.4.0
func (s *WebsocketMultiplex) Release(id string)
func (*WebsocketMultiplex) Spawn ¶ added in v1.4.0
func (s *WebsocketMultiplex) Spawn(id string) (*TunnelConn, error)
func (*WebsocketMultiplex) Wait ¶ added in v1.4.0
func (s *WebsocketMultiplex) Wait()
Click to show internal directories.
Click to hide internal directories.