Skip to content

Commit

Permalink
feat: new release of 0.6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
zema1 committed Apr 10, 2023
1 parent 9563bc2 commit 55c0e88
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 42 deletions.
18 changes: 17 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# 更新记录

## [0.6.0] - 2023-04-10

### 新增

- 降低 JDK 依赖到 Java 4, 目前兼容 Java 4 ~ Java 19 全版本
- 新增 Tomcat Weblogic Resin Jetty 等中间件的自动化测试, 下列版本均测试通过:
- Tomcat 4,5,6,7,8,9,10
- Weblogic 10,12,14
- Jboss 4,6
- Jetty 9,10,11
- 更换一个更圆润的图标, 感谢 [@savior-only](https://github.com/savior-only)

## 修复

- 修复 GUI 版本在高版本 Edge 下启动缓慢的问题

## [0.5.0] - 2023-03-14

### 新增
Expand All @@ -23,7 +39,7 @@

### 新增

- 支持自定义连接方法,如 GET, PATCH
- 支持自定义连接方法,如 GET, PATCH
- 支持配置上游代理, 仅支持 socks5
- 增加英文文档和变更记录

Expand Down
50 changes: 26 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,54 +11,51 @@

</div>

![experience](./tests/img/experience.gif)
![experience](./tests/img/suo5.gif)

[中文](./README.md) | [English](./README_EN.md)

----

`suo5` 是一个全新的 HTTP 代理隧道,基于 `HTTP/1.1``Chunked-Encoding`
构建。相比 [Neo-reGeorg](https://github.com/L-codes/Neo-reGeorg) 等传统隧道工具, `suo5` 的性能可以达到其数十倍。查看 [性能测试](./tests)
构建。相比 [Neo-reGeorg](https://github.com/L-codes/Neo-reGeorg) 等传统隧道工具, `suo5`
的性能可以达到其数十倍。查看 [性能测试](./tests)

其主要特性如下:

- 一条连接实现数据的双向发送和接收,性能堪比 TCP 直连
- 同时支持全双工与半双工模式,并可自动选择最佳的模式
- 支持在 Nginx 反向代理的场景中使用
- 支持在负载均衡场景使用
- 自有数据序列化协议,数据经过加密传输
- 同时支持全双工与半双工模式,传输性能接近 FRP
- 支持在 Nginx 反向代理和负载均衡场景使用
- 完善的连接控制和并发管理,使用流畅丝滑
- 服务端基于 `Servlet` 原生实现,JDK6~JDK19 全版本兼容
- 同时提供提供命令行和图形化界面,方便不同用户使用
- 支持 Tomcat Jetty Weblogic Resin 等主流中间件
- 支持 Java4 ~ Java 19 全版本
- 同时提供提供命令行和图形化界面

具体原理参考 [https://koalr.me/posts/suo5-a-hign-performace-http-socks/](https://koalr.me/posts/suo5-a-hign-performace-http-socks/)
原理介绍 [https://koalr.me/posts/suo5-a-hign-performace-http-socks/](https://koalr.me/posts/suo5-a-hign-performace-http-socks/)

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

## 安装运行

前往 [Releases](https://github.com/zema1/suo5/releases) 下载编译好的二进制,其中带 `gui` 的版本是界面版,不带 `gui` 的为命令行版。所有编译由 Github Action 自动构建,请放心使用。
前往 [Releases](https://github.com/zema1/suo5/releases) 下载编译好的二进制,其中带 `gui` 的版本是界面版,不带 `gui`
的为命令行版。所有编译由 Github Action 自动构建,请放心使用。

使用时需上传 [suo5.jsp](./assets/) 到目标环境中并确保可以执行。

### 界面版

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

![gui.png](tests/img/gui.jpg)

### 命令行

```text
NAME:
suo5 - A super http proxy tunnel
USAGE:
suo5 [global options] command [command options] [arguments...]
VERSION:
v0.4.0
v0.6.0
COMMANDS:
help, h Shows a list of commands or help for one command
Expand Down Expand Up @@ -89,6 +86,7 @@ $ ./suo5 -t https://example.com/proxy.jsp
```

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

```bash
$ ./suo5 -m GET -t https://example.com/proxy.jsp
```
Expand All @@ -106,32 +104,36 @@ $ ./suo5 -t https://example.com/proxy.jsp -t http://172.0.3.2/code/proxy.jsp
```

### 特别提醒

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

## 常见问题

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

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

**半双工** 在部分场景下不支持 `全双工` 模式(比如有反代),可以退而求其次做半双工,即发送一个请求构建一个下行的隧道,同时用短链接发送上行数据一次来完成双向通信。
**全双工** 仅需发送一个 HTTP 请求即可构建出一个 HTTP 隧道, 实现 TCP 的双向通信。可以理解成这个请求既是一个上传请求又是一个下载请求,只要连接不断开
,就会一直下载,一直上传, 便可以借此做双向通信。

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

2. `suo5``Neo-reGeorg` 怎么选?

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


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

## 接下来

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

## 参考

- [https://github.com/L-codes/Neo-reGeorg](https://github.com/L-codes/Neo-reGeorg)
- [https://github.com/BeichenDream/Chunk-Proxy](https://github.com/BeichenDream/Chunk-Proxy)

## 其他

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

![wechat](https://user-images.githubusercontent.com/20637881/229296623-24a7cc5d-8f33-4120-ae77-bbe2610ce5bb.jpg)
26 changes: 11 additions & 15 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

</div>

![experience](./tests/img/experience.gif)
![experience](./tests/img/suo5.gif)

[中文](./README.md) | [English](./README_EN.md)

Expand All @@ -23,16 +23,14 @@ Compared to traditional tunneling tools like [Neo-reGeorg](https://github.com/L-

Its key features include:

- Bidirectional data transmission through a single connection
- Support for both full-duplex and half-duplex modes, and automatically selects the best mode
- Supports use in Nginx reverse proxy scenarios
- Own data serialization protocol, with encrypted data transmission
- Robust connection control and concurrency management, smooth and silky
- Implementation based on native `Servlet`, with full compatibility across JDK6~JDK19 versions.
- Both command line and graphical interfaces are provided

The reference the
principle: [https://koalr.me/posts/suo5-a-hign-performace-http-socks/](https://koalr.me/posts/suo5-a-hign-performace-http-socks/)
- Simultaneously supports full duplex and half duplex modes, with transmission performance similar to FRP.
- Supports usage in Nginx reverse proxy and load balancing scenarios.
- Perfect connection control and concurrency management for smooth and seamless usage.
- Supports common middleware such as Tomcat, Jetty, Weblogic, Resin, etc.
- Supports all versions of Java4 to Java 19.
- Provides both command line and graphical interfaces simultaneously.

The principle: [https://koalr.me/posts/suo5-a-hign-performace-http-socks/](https://koalr.me/posts/suo5-a-hign-performace-http-socks/)

## Install and run

Expand Down Expand Up @@ -115,14 +113,12 @@ modified to connect as well.

2. `suo5` vs `Neo-reGeorg`?

If the target is a Java site, you can use `suo5` to build an http tunnel, and in most cases `suo5` is more stable and
faster than `neo`. However, `neo` provides a variety of server support, and also
supports some features that `suo5` is currently developing, such as load balancing, and also has more flexible customization.
If the target is a Java-based website, in most cases, `suo5` is more stable and faster than `neo`. However, `neo` provides a wide range of server-side support, good compatibility, and also supports some features that `suo5` is still developing. Additionally, `neo` also supports more flexible customization.

## Next

- [x] support for configuring upstream socks proxy
- [ ] Support load balancing scenarios
- [x] Support load balancing scenarios
- [ ] Support for .net

## Reference
Expand Down
2 changes: 1 addition & 1 deletion gui/wails.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"info": {
"companyName": "",
"productName": "suo5-gui",
"productVersion": "0.5.0",
"productVersion": "0.6.0",
"copyright": "All rights reserved",
"comments": "Built using Wails (https://wails.app)"
}
Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func main() {
app := cli.NewApp()
app.Name = "suo5"
app.Usage = "A super http proxy tunnel"
app.Version = "v0.5.0"
app.Version = "v0.6.0"

defaultConfig := ctrl.DefaultSuo5Config()

Expand Down
Binary file added tests/img/suo5.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 55c0e88

Please sign in to comment.