演示 · 静态库

一个可以让客户端指向的库

并不存在的游戏、自制软件和金手指,作为 Lantern 静态库随本站一起提供:无需自己的服务器即可试用客户端。

其中有什么

Nintendo Switch、New 3DS、PS Vita 和 Android 上的虚构游戏,附带资料卡和专门绘制的图像;适用于 Switch、3DS 和 Linux 的自制软件,其中两个带有签名;Switch 格式的金手指。游戏、工作室和人物都是虚构的。

其中的文件是只有几字节文本的占位文件,自制软件的压缩包里只有一个 README:没有任何软件,也没有任何东西可以安装或运行。

让客户端指向它

把这个地址交给客户端。它先向站点请求 /.well-known/lantern,找不到后再读取 lantern.json:一个带有 static 的握手(规范 § 21),每页四项以便客户端遇到多页,以及按 SHA-256 提供的每个文件。

https://lantern.boreale.dev/demo/

lantern.json · v1/apps/switch/pages/1.json · v1/titles/switch/0100ABCD00010000.json

一致性测试套件在本站每次构建时都会检查它,它达到了 Lantern Static:

python3 conformance/run.py --static https://lantern.boreale.dev/demo/
…
Levels reached (SPEC.md § 17, draft 0.6): Lantern Static

从浏览器访问

提供本站的 GitHub Pages 会为每个文件返回 Access-Control-Allow-Origin: *:其他站点的页面可以用 fetch() 读取它。请求时不要带凭据,也不要加自定义标头(不要 Lantern-Platform:静态库的平台已写在路径里),否则浏览器会先发送预检请求,而 GitHub Pages 不会响应它。

const hello = await (await fetch("https://lantern.boreale.dev/demo/lantern.json")).json();

它的握手和文件不含任何跟踪:只有本站的页面会统计访问。 隐私

陷阱版本

旁边是一些故意弄坏的静态库,每个只有一处问题,用于测试客户端:与其 SHA-256 不符的文件、跑出自身文件夹或平台根目录的清单、更新的 schema、过大或嵌套过深的文档、无法验证的签名、小阶密钥。每个都写明客户端应当怎么做,一致性测试套件会全部拒绝它们。