关于远程浏览器的技术猜想

  baikapala

国外类似远程浏览器操作的网站 https://www.rabb.it(需要翻墙)

猜想工作流程?

  1. 用户打开远程浏览器服务器地址,远程浏览器服务器返回一个页面,该页面中会有一个多媒体标签,用于显示远程浏览器界面;

  2. 浏览器监听客户端鼠标和按键操作事件,并记录鼠标位置,通过websocket发送给远程浏览器;

  3. 远程浏览器通过模拟工具,自动将发送过来的操作步骤应用到浏览器界面上

  4. 客户端浏览器通过视频流可实时的查看到网站页面

如何实现的问题?

  1. 远程浏览器是否如何实现的?远程浏览器是安装到什么上面的?是否是通过Docker实时虚拟出来的系统?

  2. 如何保证用户只能看到操作到这个远程浏览器,而不会使用到这个系统上的其他内容?另外这个系统的安全性如何控制?

  3. 远程浏览器是如何自动化响应用户操作的?如何保证自动化操作的准确性和稳定性?

  4. 通过远程浏览器操作有一定的延迟,在网络状况不是特优的情况下如何保证用户的操作体验?

  5. 如何处理比较复杂的用户操作,比如文件上传,图形绘画等?是不是对一些比较复杂的页面,交互性比较高的网站不适用?

国内相关产品的描述

钛星数安的Web防护系统
官网:http://www.tistarsec.com/

  1. 技术架构上更加先进,采用的docker container,比vm颗粒度更细,资源占用更少。

  2. website代码实时分析,及时发现并阻止恶意攻击。

  3. 支持常用文件在线阅览,屏蔽浏览器下载、复制、打印功能,确保核心数据安全。

  4. 采用最新WebRTC技术,实现流媒体的高性能播放

推测实现方案

  1. 通过docker虚拟出容器系统,容器系统中只能显示远程浏览器,容器系统和浏览器需要经过高度的改造和优化;

  2. 远程浏览器可针对不同的网站或者网页定制操作权限,比如限制复制粘贴打印等功能;

  3. 容器系统中会对用户的操作输入进行分析,根据权限控制决定是否执行,或者防止一些攻击风险;

  4. 通过WebRTC通信技术实现远程浏览器界面的实时录屏播放。

已确认的技术和功能

  1. 使用的浏览器是firefox Nightly https://www.mozilla.org/zh-CN/firefox/channel/desktop/#nightly

  2. 使用的系统是Ubuntu的某一个发行版,而且是经过改造的,系统可以一键还原

  3. 使用Docker虚拟出系统

  4. 使用WebRTC通信技术让本地浏览器实时展示远程浏览器

  5. 其他的一些附加功能:比如根据URL或者网站页面绑定用户的操作权限、分析用户的输入有没有风险、根据操作指令自动化执行浏览器、本地复制粘贴操作、上传文件同步到远程浏览器等。

总结

实现方案不算太复杂,而且最终产品的实用性也不是非常高。需要一批对各领域都有一定传精的团队成员,比如浏览器、linux、安全、流媒体传输等。
有兴趣的可以自己尝试实现一下。

以前,我总以为自己是菜鸟,也总想着早起的鸟儿有虫吃。直到有一天我想飞,才愕然的发现自己没有翅膀和羽毛,我竟然是菜虫!早起的虫儿被鸟吃……原来,百足应该厚积薄发!