Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ suo5 Public
forked from zema1/suo5

一款高性能 HTTP 代理隧道工具 | A high-performance http proxy tunneling tool

License

Notifications You must be signed in to change notification settings

evilmao/suo5

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Suo5

一款高性能 HTTP 代理隧道工具

License Workflow Status Workflow Status Latest release

experience

中文 | English


suo5 是一个全新的 HTTP 代理隧道,基于 HTTP/1.1Chunked-Encoding 构建。相比 Neo-reGeorg 等传统隧道工具, suo5 的性能可以达到其数十倍。查看 性能测试

其主要特性如下:

  • 同时支持全双工与半双工模式,传输性能接近 FRP
  • 支持在 Nginx 反向代理和负载均衡场景使用
  • 完善的连接控制和并发管理,使用流畅丝滑
  • 支持 Tomcat Jetty Weblogic WebSphere Resin 等主流中间件
  • 支持 Java4 ~ Java 19 全版本, 兼容性拉满
  • 同时提供提供命令行和图形化界面

原理介绍 https://koalr.me/posts/suo5-a-hign-performace-http-socks/

免责声明:此工具仅限于安全研究,用户承担因使用此工具而导致的所有法律和相关责任!作者不承担任何法律责任!

安装运行

前往 Releases 下载编译好的二进制,其中带 gui 的版本是界面版,不带 gui 的为命令行版。所有编译由 Github Action 自动构建,请放心使用。

使用时需上传 suo5.jsp 到目标环境中并确保可以执行。

界面版

界面版基于 wails 实现,依赖 Webview2 框架。Windows 11 和 MacOS 已自带该组件,其他系统会弹框请允许下载安装,否则无法使用。

gui.png

命令行

USAGE:
   suo5 [global options] command [command options] [arguments...]

VERSION:
   v0.9.0

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --target value, -t value                               set the remote server url, ex: http://localhost:8080/tomcat_debug_war_exploded/
   --listen value, -l value                               set the listen address of socks5 server (default: "127.0.0.1:1111")
   --method value, -m value                               http request method (default: "POST")
   --redirect value, -r value                             redirect to the url if host not matched, used to bypass load balance
   --no-auth                                              disable socks5 authentication (default: true)
   --auth value                                           socks5 creds, username:password, leave empty to auto generate
   --mode value                                           connection mode, choices are auto, full, half (default: "auto")
   --ua value                                             the user-agent used to send request (default: "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.1.2.3")
   --header value, -H value [ --header value, -H value ]  use extra header, ex -H 'Cookie: abc'
   --timeout value                                        http request timeout in seconds (default: 10)
   --buf-size value                                       set the request max body size (default: 327680)
   --proxy value                                          use upstream proxy, support both socks5 and http(s), eg: socks5://127.0.0.1:7890
   --debug, -d                                            debug the traffic, print more details (default: false)
   --no-heartbeat, --nh                                   disable heartbeat to the remote server which will send data every 5s (default: false)
   --no-gzip, --ng                                        disable gzip compression, which will improve compatibility with some old servers (default: false)
   --help, -h                                             show help
   --version, -v                                          print the version

命令行版本与界面版配置完全一致,可以对照界面版功能来使用,最简单的只需指定连接目标

$ ./suo5 -t https://example.com/proxy.jsp

使用 GET 方法发送请求,有时可以绕过限制

$ ./suo5 -m GET -t https://example.com/proxy.jsp

自定义 socks5 监听在 0.0.0.0:7788,并自定义认证信息为 test:test123

$ ./suo5 -t https://example.com/proxy.jsp -l 0.0.0.0:7788 --auth test:test123

负载均衡场景下将流量转发到某一个固定的 url 解决请求被分散的问题 (需要尽可能的在每一个后端服务中上传 suo5)

$ ./suo5 -t https://example.com/proxy.jsp -r http://172.0.3.2/code/proxy.jsp

特别提醒

User-Agent (ua) 的配置本地端与服务端是绑定的,如果修改了其中一个,另一个也必须对应修改才能连接上。

常见问题

  1. 什么是全双工和半双工?

    全双工 仅需发送一个 HTTP 请求即可构建出一个 HTTP 隧道, 实现 TCP 的双向通信。可以理解成这个请求既是一个上传请求又是一个下载请求,只要连接不断开 ,就会一直下载,一直上传, 便可以借此做双向通信。

    半双工 在部分场景下不支持 全双工 模式(比如有反代),可以退而求其次做半双工,即发送一个请求构建一个下行的隧道,同时用短链接发送上行数据一次来完成双向通信。

  2. suo5Neo-reGeorg 怎么选?

    如果目标是 Java 的站点,可以使用 suo5 来构建 http 隧道,大多数情况下 suo5 都要比 neo 更稳定速度更快。但 neo 提供了非常多种类的服务端支持,兼容性很好,而且也支持一些 suo5 当前还在开发的功能,也支持更灵活的定制化。

接下来

  • 支持配置上游 socks 代理
  • 支持负载均衡的场景
  • 支持 .Net 的类型

参考

其他

扫码加我拉进讨论群,请备注申请理由为:问题反馈与讨论,否则不通过

wechat

About

一款高性能 HTTP 代理隧道工具 | A high-performance http proxy tunneling tool

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 41.3%
  • Java 39.0%
  • Vue 11.5%
  • JavaScript 5.2%
  • TypeScript 2.5%
  • HTML 0.4%
  • CSS 0.1%