安全性
页面从 droid.devpier.dev 提供,但模拟器和网关运行在你的 Mac 上。你打开的任何网页都可能尝试连接到你 Mac 上的程序,因此网关会检查每个连接。
仅限回环地址
Section titled “仅限回环地址”网关仅在 127.0.0.1 上监听。它不接受来自本地网络或互联网的连接。其他计算机无法访问它。
当页面打开 WebSocket 时,浏览器会发送 Origin 头。网关仅接受以下来源:
https://droid.devpier.devhttp://127.0.0.1:<port>http://localhost:<port>
来源不在列表中或无来源的连接会以代码 4003 关闭。其他网站的页面无法控制你的模拟器,即使猜到了端口。
- 每次网关启动时,都会创建一个新的随机令牌:32 个随机字节,编码为 43 个字符的 base64url 字符串。
- 网关在
#后附上端口和令牌打开页面:https://droid.devpier.dev/app/#port=<port>&token=<token>。浏览器不会将#后的内容发送到 Web 服务器,因此令牌不会到达droid.devpier.dev。 - 页面将端口和令牌保存在浏览器的本地存储中,以便你可以重新加载页面,并从地址栏移除它们。
- 每个连接的第一条消息必须携带令牌。如果令牌错误,网关会回复
bad-token错误并以代码4001关闭连接。 - 网关重启后,旧令牌将失效。请打开它打印的新链接。
网站不会连接到你的 Mac
Section titled “网站不会连接到你的 Mac”Chrome 的本地网络权限和网关的来源检查都是基于站点而非路径的。因此文档页面与 /app/ 上的模拟器页面共享同一权限。为限制其影响:
- 只有
/app/上的模拟器页面才会连接到网关。首页和这些文档页面不会连接,因此阅读它们不会触发权限提示。 - 该网站不加载任何第三方脚本、样式、字体或媒体。所有内容均从
droid.devpier.dev提供。 - 令牌是第二道检查:
droid.devpier.dev上没有令牌的页面无法使用网关。
网关在未经询问的情况下,不会安装 Android SDK 包或创建设备。它会在终端中询问 [y/N],默认答案为否。Android SDK 许可证需要你自行接受。
连接关闭代码
Section titled “连接关闭代码”| 代码 | 含义 |
|---|---|
4000 |
第一条消息不是 hello。 |
4001 |
令牌错误。 |
4002 |
页面和网关使用不同的协议版本。 |
4003 |
来源不被允许。 |
在 github.com/twosugar/android-emu-web 提交 issue。