BrowserView: 开源的云端浏览器,隔离公共互联网,远程访问外网服务

寻找了很久很久的云端浏览器,终于无意间发现了 BrowserView,但是通过试用发现延迟和显示性能太低,无法满足常规的使用需求,但是提高性能已经在软件的开发路线中。

比较看重的一个使用场景是,如果有家用 NAS 在家用 NAS 中部署云端浏览器,就可以通过套娃浏览器直接访问路由器的局域网 IP,当然通过端口隐射也能实现,还不需要耗费 NAS 的资源去部署这个软件。同时作为远程浏览器避免内网的应用程序被公开访问的安全隔离也是极为重要的一个安全用例。

构建您自己的自定义 web 浏览器并将其部署到任何地方,甚至是在云中!

BrowserView 是一个开源项目,它让你构建自己的浏览器,您可以定制,并提供 web 应用程序。它通过提供一个自由和开放的平台和 API 允许您构建没有图形界面的 Chrome,利用 DevTools API 的全部威力,Chrome 扩展,node . js 和前端使用这个无图形界面浏览器作为常规浏览器。您可以通过 web 传递这些体验,作为一个 web 应用程序,就像一个真正的浏览器,或者作为一个可下载的电子应用程序。Webview 是一个术语,指的是提供浏览器标签功能的组件,如 Android 的Webview,或 electronic 的< Webview >标签或遗留的 "Chrome Apps" < Webview > 标签。

从技术上讲,BrowserView (以前的名字是 Robot Head, Open Browser Platform, BrowserGap 等)是一个用户界面和后端,它把无图形界面 Chrome 变成了一个普通的浏览器,除了浏览器运行在云上而不是你的设备上。只有 UI 前端可以在你的设备上运行,就在你的普通浏览器上(甚至支持 iOS Safari 至 iphone4),除此之外,你还可以在 Chrome 上构建你无法使用 Chrome 扩展 api 或 Chrome DevTools 协议的东西。

通常不可能的事情变成了可能。

BrowserView 可以用来建立各种扩展到正常的浏览器体验,而不需要通过 Chrome 网络商店。

这是因为浏览器以无图形界面模式运行,并由 DevTools(基于字符串的 websocket 协议)控制,它与一个简单的前端 UI 交互。

你可以通过建立一个真正开放的浏览器扩展库(使用更强大的 DevTools API 而不是 Chrome 扩展 API)来扩展这个项目,人们可以在他们的远程浏览器中运行,或者你可以在这里的工作基础上建立你自己的扩展。

为什么使用 BrowserView 而不是 Chrome 扩展?


Chrome 扩展 API 非常有限。你不能运行一个服务器,你不能使用 UDP,你不能以任何你喜欢的方式画在 UI 顶部,你不能拦截和处理模式对话框(如警报,提示,等等),你不能以编程方式响应权限请求,或文件对话框。另外,每一个 Chrome 扩展都需要通过扩展商店发布。

这个平台让你可以使用 Chrome 无图形界面模式,Node.JS 的全部功能来构建丰富的 Chrome 体验扩展。开发工具协议和 Chrome 扩展。它只是更强大,更开放,更自由,因为没有特定的公司限制,保持可访问和发布代码。

与此同时,这并不是 Chrome 扩展 API 的替代品,而是更进一步。您可以构建 Chrome 扩展并将其安装到远程浏览器中。没有必要不使用 Chrome 扩展。

为什么使用 BrowserView 而不是 Puppter(或 selenium,或 phantomjs 等等)?


主要是因为它比自动化浏览器的协议强大得多。PPTR (和其他的)基本上只是原始 DevTools 协议的简单包装器,它们没有任何前端。因此,如果您想使用 PPTR 交付丰富的浏览器插件,那么您需要构建自己的前端。Robot Head 在很多方面扩展了基本的 DevTools 协议。

例如,PPTR(等)没有任何简单的方法来处理多个浏览器标签页面,有许多事情需要打开多个标签(应用程序之间的交互、社交登录、弹出窗口)。这个项目处理所有的记录和状态,使与多个标签的交互变得简单。

此外,PPTR(等)是围绕特定的用例(测试和人工自动化)设计的,他们在这方面做得很出色,但是超出了这些界限,他们就成为了限制因素。这个项目是一个开放的协议,旨在支持更多的要求用例,包括构建 web 应用程序的全部功能,抛开很多优势情况下,在 PPTR 中网站不会正确访问。我们可以通过 BrowserView 发布一个前端(可通过web访问),但它的行为完全像一个浏览器。仅使用 PPTR 是不可能的。

如果愿意,可以将 PPTR 连接到用 BrowserView 创建的远程浏览器,这样就可以同时使用 BrowserView 协议和 PPTR 协议。

为什么使用 BrowserView 而不是 Electron?

Electron 需要你下载一个大的软件包。这确实提供了良好的本地集成,同时,人们批评简单 Electron 应用程序的下载大小、性能和内存需求。如果您主要想使用 electron 实现 webview 和 Node.JS 功能,那么您完全可以构建在 BrowserView 之上,通过云浏览器提供相同的服务。与此同时,如果你连上了一个可下载的应用,那就不成问题。这不一定是 Electron 的替代物,但它可以作为 Electron 的补充。例如,你可以在云中运行这个应用程序,并使用 BrowserView 作为前端提供体验,而不是让人们下载你的大型 Electron 应用程序。事实上,我们正在构建这个服务!

您甚至可以将整个应用程序打包为 Electron 应用程序,这样您就可以下载自己的自定义浏览器了!

一个可能的简单用例就是:为了安全而隔离的远程浏览器


BrowserView 可以用作一个简单的远程浏览器隔离应用程序。

如果你想要托管或者本地部署一个基于云端的互联网隔离应用程序也可以联系我

其他很酷的用例

  • 建立一个插件来记录和回放任何序列的用户动作,以创建完全可复制的“ web 宏”,人们可以共享。正在开发这个功能!

  • 开放网络的 “webview” 标签。webview 标签连接到远程浏览器,并提供 webview 标签的所有功能(如在 Electron 或 Android 中)。

  • 开放网络的“浏览器”标签页面。浏览器标记连接到远程浏览器,并提供浏览器的所有功能,包括多个选项卡、历史记录、地址栏等。

  • 一种允许你在云中运行 Electron 应用程序,但在浏览器上连接它们的服务。你在云中运行的 Electron 应用的 UI。因此,将任何 Electron 应用程序转换成一个 docker 容器和服务器,在云中运行,并与客户端的前端进行接口。项目正在开发这个功能,它叫做 CloudChamber !

使用方法

下载软件代码并在您自己的机器上 (在家里,或在 VPS、VPC 或公有云中) 进行部署和自我托管。

例如在 Debian 操作系统

sudo apt update && sudo apt -y upgrade
sudo apt install -y curl git wget
git clone https://github.com/dosycorp/browsergap.ce.git
cd browsergap.ce
./setup_machine.sh
npm test

或者使用 Docker 构建镜像

sudo apt update && sudo apt -y upgrade
sudo apt install -y curl git wget
git clone https://github.com/dosycorp/browsergap.ce.git
cd browsergap.ce
./buld_docker.sh
./run_docker.sh 

或者从镜像仓库拉取镜像并启动 Docker

docker pull dosyago/browsergapce:1.0
curl -o chrome.json https://raw.githubusercontent.com/dosycorp/browsergap.ce/master/chrome.json
sudo su -c "echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/00-local-userns.conf"
sudo su -c "echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/01-network-ipv4.conf"
sudo sysctl -p
sudo docker run -d -p 8002:8002 --security-opt seccomp=$(pwd)/chrome.json browsergapce:1.0

然后访问 http://<你的 IP>:8002 就能看到云中浏览器

或者

通过 https://free.cloudbrowser.xyz 免费试用

或者 https://hk.cloudbrowser.xyz (亚太地区访问该地址会更流畅)

开发路线

没有特定顺序

  • 自动化,如记录和重放任何用户行为(已经以一种基本的和半可用的方式存在)

  • 提供 UI 来安装 chrome 扩展

  • 为不存在的 chromedriver / devtools 扩展域 API 构建一个替代品

  • 扩展和发布前端和后端 API,使人们能够轻松地在其上构建插件

  • 改善延迟和屏幕性能

曾经使用的项目名称

Bodyless 🎉 ✔️

Horseman 🐴 💀 👨 ✔️

Bogeyhead ???

BrowserGap

Open Browser Platform

DeFAANGED Headful Chrome

EarTrumpet: 强大的音量控制 APP,设置每个软件的音量,支持多音频设备输出