桌面 App(墙裂建议网不好的用户使用)xjtu-app-tauri-universal

tl;dr

本应用采用最新一代的网络加速技术,降低丢包率,墙裂建议网不好的用户使用。下载链接见左侧菜单或本帖。

我最近有一个想法

tuic 这个基于 QUIC、支持 BBR 的代理软件嵌入到客户端中
通过使用 tauri 理论上这是可行的,tuic-client 的 rust 代码加到 tauri 的 rust 部分,然后 webview 配置 proxy_url 使用这个 socks5 代理


我目前通过 binary sidebar, 在桌面平台实现了这个功能,移动平台由于不支持嵌入二进制文件,需要像上面说的,把代码加到 rust 部分

刚才在 Windows 上面代理也搞起来了

未做:

  1. 默认的 webviewwindow 单窗口访问 xjtu.app(而不是用 iframe)
  2. 顶部加一个类似浏览器导航栏(前进后退按钮、地址栏)(multiwebview, 可能会白屏)
  3. 嵌入 tuic 代码使得移动端也可以用
  4. 给 Mac 编译

下载玩: :joystick:

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 当前还没实现网络加速的功能,你也可以测测 :straight_ruler: 你的
https://assets.xjtu.app/pool/xjtu-app-tauri-universal_=VERSION=_arm64.apk

FAQ

如何得知流量确实是走的代理?

  1. 速度稍快了一些(慢得可接受了 :laughing:
  2. 管理员在后台查到 last IP 是 Manassas 的 IP
  3. 点击 https://myip.xjtu.app 查询我的 IP

这个应用就像浏览器,但是没有前进后退按钮,怎么用啊??

  1. 买一个这种 5 按钮(专业·电竞级)鼠标,用侧键导航

  2. 键盘导航 Alt+
    Alt+

  3. 点击 navbar 上面可以点的东西,例如点网站图标返回主页

程式碼

5 Likes

emm 怎么使用?

奇怪,我 Windows 虚拟机里安装后直接就打开网站主页的

可以打开任务管理器,找一下看有没有 tcc 开头的进程吗?

不行的话直接下载这个并运行

然后再打开 xjtu-app-tauri-universal

这个小东东在本机打开一个监听 :4848 端口的 socks5 代理(所以也可用 Firefox 浏览器配置使用该代理)(为什么端口号是 4848,因为 4 月 8 日是交大的生日:birthday:


没有 :clown_face:


:confounded:

换个网络/OS 环境试一下?感觉像是流量被劫持?我已经把证书和用户名密码硬编码到了二进制文件里,而且在两台 windows 环境上测试可用。

:herb:,好神奇,越发感觉自己亟需电子扫盲了。

更新了 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

试了一下,还是直连 :sweat_smile:


有精力的小哥哥可以帮我看看:eyes:是什么原因吗?

不用看了,我找到原因了:
虽然 tauri 文档里/源码里没写不支持在 Android 上设置 webview 的 socks5 代理,但向上查找其依赖的 wry 的源码,赫然发现不支持 Android。这下 GG 了 只能用别的方式在 Android 实现透过隧道访问网站的效果了:

  1. 已知只要把 app 放在前台(不被 freeze, wierd, as putting N4A on the background and the proxy still works),tuic-client 的 socks5 server 是好的,监听在 :4801
  2. 将 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 )
  3. 弄一个 tokio::net::TcpListener:4802 (tcp level, not HTTP level, the same way as when request is HTTP CONNECT )
  4. 接收到的所有请求都通过 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