tl;dr
本应用采用最新一代的网络加速技术,降低丢包率,墙裂建议网不好的用户使用。下载链接见左侧菜单或本帖。
我最近有一个想法
将 tuic 这个基于 QUIC、支持 BBR 的代理软件嵌入到客户端中
通过使用 tauri 理论上这是可行的,tuic-client 的 rust 代码加到 tauri 的 rust 部分,然后 webview 配置 proxy_url 使用这个 socks5 代理
我目前通过 binary sidebar, 在桌面平台实现了这个功能,移动平台由于不支持嵌入二进制文件,需要像上面说的,把代码加到 rust 部分
刚才在 Windows 上面代理也搞起来了
未做:
- 默认的 webviewwindow 单窗口访问 xjtu.app(而不是用 iframe)
- 顶部加一个类似浏览器导航栏(前进后退按钮、地址栏)(multiwebview, 可能会白屏)
- 嵌入 tuic 代码使得移动端也可以用
- 给 Mac 编译
下载玩: 
0.1.6
Windows:
https://assets.xjtu.app/pool/xjtu-app-tauri-universal_=VERSION=_x64-setup.exe
很小,只有 ~6.6M
Linux:
https://assets.xjtu.app/pool/xjtu-app-tauri-universal_=VERSION=_amd64.AppImage
Android: 2025-02-26T16:00:00Z 当前还没实现网络加速的功能,你也可以测测
你的
https://assets.xjtu.app/pool/xjtu-app-tauri-universal_=VERSION=_arm64.apk
FAQ
如何得知流量确实是走的代理?
- 速度稍快了一些(慢得可接受了
)
- 管理员在后台查到 last IP 是 Manassas 的 IP
- 点击 https://myip.xjtu.app 查询我的 IP
这个应用就像浏览器,但是没有前进后退按钮,怎么用啊??
-
买一个这种 5 按钮(专业·电竞级)鼠标,用侧键导航
-
键盘导航 Alt+ ←
Alt+ →
-
点击 navbar 上面可以点的东西,例如点网站图标返回主页
程式碼
5 Likes
奇怪,我 Windows 虚拟机里安装后直接就打开网站主页的
可以打开任务管理器,找一下看有没有 tcc
开头的进程吗?
不行的话直接下载这个并运行
然后再打开 xjtu-app-tauri-universal
这个小东东在本机打开一个监听 :4848 端口的 socks5 代理(所以也可用 Firefox 浏览器配置使用该代理)(为什么端口号是 4848,因为 4 月 8 日是交大的生日
)
换个网络/OS 环境试一下?感觉像是流量被劫持?我已经把证书和用户名密码硬编码到了二进制文件里,而且在两台 windows 环境上测试可用。
更新了 v0.1.5
Stay tuned for an Android App.
有兴趣的同学,可以研究一下怎么给 Discourse 导航栏加两个按钮:前进、后退
1 Like
更新了 v0.1.6
今天完成了把 tuic-client 代码移植到 tauri 里。在桌面端测得可用,在移动和联通网络下测试效果很不错。
adb shell netstat -tunlp|grep 4848
- 这次用
obfstr::obfstr!()
做了 compile-time string constant obfuscation
- 由于不再外挂二进制文件,结束主进程时不再存在二进制文件进程没有被结束的问题了
对于移动端:
虽然能看到进程,但 tauri app 内依然是直连,在 Firefox Nightly about:config
搜索 proxy 配置 socks5 代理,有时候可走代理,有时候压根打不开网页。
也许是有什么东东没同步到 Android 项目里?
rm -r src-tauri/gen/android
pnpm tauri android dev
试了一下,还是直连 
有精力的小哥哥可以帮我看看
是什么原因吗?
不用看了,我找到原因了:
虽然 tauri 文档里/源码里没写不支持在 Android 上设置 webview 的 socks5 代理,但向上查找其依赖的 wry 的源码,赫然发现不支持 Android。这下 GG 了 只能用别的方式在 Android 实现透过隧道访问网站的效果了:
- 已知只要把 app 放在前台(不被 freeze, wierd, as putting N4A on the background and the proxy still works),tuic-client 的 socks5 server 是好的,监听在
:4801
- 将 webview 的 url 改成
http(s)://127.0.0.1:4802
( tauri ignore cert error https://192.168.11.149:4843 which is a caddy reverse proxy )
- 弄一个
tokio::net::TcpListener
放 :4802
(tcp level, not HTTP level, the same way as when request is HTTP CONNECT )
- 接收到的所有请求都通过 tuic-client 发到
xjtu.app:443
并传递响应
Note: forward HTTP GET has been implemented as of https://github.com/fokx/tauri-app/commit/f3efddfac39a64b06003abe533e20a350add2bfe, works for Discourse on Desktop, not work on Android.
Plan B:
split proxy and webview into two apps
Native Android Webview with socks5 in Kotlin