家里的老电脑想重新利用有什么好办法呢?
网上技术文章天天讲“旧电脑怎么发挥余热”:装个轻量 Linux、关动画、换 LXDE/XFCE、把内存压到极致……看起来很对。
但现实往往是:你只要打开浏览器,羸弱的硬件面对现代网页,全部白搭。
- 一堆站点强依赖现代 JS、ES2020+、WebAssembly、Service Worker
- HTTPS/TLS 协议栈升级,老系统握手直接失败
- 前端框架把“首屏渲染”做成了“跑一个小型应用”
- 老机器 CPU/内存/GPU 任意一项短板,体验就直接崩盘
在Github上找到了一个项目,他换了个思路:别让旧电脑跑现代网页,让一台“服务端机器”跑现代 Chromium,把画面以图片流的方式传给旧浏览器显示,旧机器只负责输入鼠标键盘。
这个方案就是:Browservice。(github.com)
0. 效果预览
这是在windows 2000 Advanced Server+IE6下打开知乎的截图,完美渲染

当然在win11+EDGE下也可以跑

官网说可以看YouTube视频,但是国内视频平台似乎不行

听歌也没声音,但是能看见播放进度条前进和歌词滚动的动效,非常丝滑
http://bd.kuwo.cn/mpage/pcbaiduhz/phoneDown.html?version=ar759 (二维码自动识别)
browservice是在服务器端用现代浏览器把网页渲染好,然后以图片形式发给客户端,让古董浏览器也可以解析,所以总是能够看见正在下载图片

既然是图片,当然可以通过调低质量来节约带宽和旧客户端那本来就可怜的CPU

这次是用win2000+火狐狸12.0(win2000支持的最后版本)+browservice访问淘宝,也可以正常打开
但是CPU占用有点高(只给虚拟机分配了1个vCPU)

1. Browservice 是什么?
Browservice 不能把 HTML/CSS 变成老浏览器能懂的东西。它干的事更“粗暴”:
- 服务端跑一个现代 Chromium(通过 CEF),把网页渲染成图像(PNG/JPEG)
- 客户端用一个极老的浏览器(IE4/IE5/IE6/IE8,老 Firefox/Chrome 都行)打开一个网页应用
- 客户端每隔一段时间拉取最新图像,并把鼠标键盘事件回传给服务端
- 于是你在 IE6 上“像远程桌面一样”操作现代网页,但本质是浏览器画面流 + 事件回传
好处:旧机不需要跑现代 JS,也不需要支持现代 TLS(甚至可以完全不接公网)。
2. 为什么这比“装轻量 Linux”更有效?
因为轻量系统解决的是“系统开销”,解决不了现代网页的计算量。
现代网页的重负担主要来自浏览器层:
- JS 执行
- DOM/布局/重绘
- 字体渲染、图片解码、视频解码
- 复杂的网络安全栈
把旧机的系统换成再轻,也只是让浏览器“死得慢一点”。而 Browservice 是直接把最重的部分(浏览器渲染 + JS)搬到服务器上,让旧机只做“显示器 + 键鼠”。
3. 我的目标:内网折腾,新版Windows 当服务端,旧 Windows 当客户端
我这次选择的是:
- 服务端:Windows(10/11 或 Windows Server 都行),官方也支持Linux做服务端
- 客户端:旧 Windows(XP/7 甚至更老)
- 场景:内网、复古折腾、老机不出网
Browservice 官方也强调:服务端/客户端之间连接默认不加密,必须在可信网络里用,或者自己用反代/隧道做安全封装。(github.com)
下载browservice的windows 64位安装包,目前最新版是0.9.12.2,可以看见项目作者3周前还做了更新

4. 最小化部署:把所有内容都放在 D:\browservice
假设你已经把 browservice.exe 放在 D:\browservice。
4.1 启动脚本(最小可用)
创建:D:\browservice\run\start_browservice.cmd
@echo off
setlocal EnableExtensions
set "BS_HOME=D:\browservice"
set "BS_DATA=%BS_HOME%\data\cefdata"
set "BS_TMP=%BS_HOME%\tmp"
set "BS_LISTEN=0.0.0.0:8080"
if not exist "%BS_DATA%" mkdir "%BS_DATA%"
if not exist "%BS_TMP%" mkdir "%BS_TMP%"
set "TEMP=%BS_TMP%"
set "TMP=%BS_TMP%"
cd /d "%BS_HOME%"
browservice.exe --vice-opt-http-listen-addr=%BS_LISTEN% --data-dir="%BS_DATA%"
endlocal
两个关键参数:
--vice-opt-http-listen-addr=0.0.0.0:8080:允许内网其它机器访问(默认只监听 127.0.0.1)
--data-dir=...:把 cookies/cache/会话数据放到你指定目录(否则默认类似隐身模式,停了就丢)
启动后,客户端用旧浏览器访问:
http://<服务端内网IP>:8080/
5. 第一个坑:Windows 沙箱报错 Access denied(0x5)
日志里最扎眼的一条是:
Sandbox cannot access executable D:\browservice\browservice.exe
Access is denied (0x5)
这不是 Browservice 本身的问题,而是 Chromium/CEF 的 Windows 沙箱(AppContainer)对可执行文件访问检查失败。Chromium 侧对应代码会做权限检查,失败就报这个错。(chromium.googlesource.com)
解决办法:给 D:\browservice 目录补上 AppContainer 相关的读/执行权限。
创建fix_acl.cmd
@echo off
setlocal EnableExtensions
set "BS_HOME=D:\browservice"
rem S-1-15-2-1 = ALL APPLICATION PACKAGES
rem S-1-15-2-2 = ALL RESTRICTED APPLICATION PACKAGES
icacls "%BS_HOME%" /grant *S-1-15-2-1:(RX) *S-1-15-2-2:(RX) /T >nul 2>&1
if errorlevel 1 (
echo [WARN] ACL 授权失败,建议以管理员身份运行本脚本。
) else (
echo [OK] ACL updated for AppContainer sandbox.
)
endlocal
以管理员运行一次后,沙箱错误就消失了。
6. 第二个坑:防火墙阻止内网访问(最小“打洞”)
服务端监听 0.0.0.0:8080 只是第一步,Windows 防火墙默认会挡入站。
我自己定的安全边界是:
- 只放行 browservice.exe
- 只放行 TCP/8080
- 只允许这几个网段访问:
192.168.0.x ~ 192.168.3.x(我自己的内网地址)
PowerShell 命令(管理员)
New-NetFirewallRule `
-DisplayName "Browservice Inbound TCP 8080 (LAN only)" `
-Direction Inbound -Action Allow -Protocol TCP -LocalPort 8080 `
-RemoteAddress "192.168.0.0/22" `
-Program "D:\browservice\browservice.exe" `
-Profile Domain,Private192.168.0.0/22覆盖192.168.0.0 ~ 192.168.3.255
- 绑定到具体程序(D:\browservice\browservice.exe)更安全
7. 最后的感受:这才是“旧电脑发挥余热”的正确打开方式
折腾轻量 Linux 没错,但它解决的是“系统轻”,不是“网页重”。
如果你的目标是:
让一台古董机能访问现代网页、还能保持复古操作手感(IE6、老 Firefox 的 UI),那 Browservice 这种“渲染上移、客户端只显示”的思路,反而是非常工程化、非常有效的解法。
它不是让古董机变强,而是让古董机承认自己只是终端。