本页面由机器翻译,仅供参考。如有出入,请以英文原文为准。
助手程序使用用户所选的内容提供方来解析 t256:<CID>[.suffix]。它在提供内容之前会验证原始字节,并将设置与内容访问分开。需要 Python 3.9 或更高版本;助手在运行时不依赖任何第三方库。只有浏览器测试才需要 Node.js 和 Playwright。
从已发布的 URI 解析器下载 browser-support/dist/t256-desktop.zip 并解压,或者克隆本仓库。请保持目录结构不变。
在仓库根目录下运行:
python3 browser-support/run.py serve --open
在提供方设置页面中,你可以添加、编辑、重新排序、停用、移除提供方并为其建立索引,导入/导出文件索引,以及查看或清除缓存的内容。初始时已选中 Hashbin 的公共内容来源 https://256t.us。检查提供方会验证粘贴的 URI 而不打开它,并列出在找到匹配之前遇到的提供方失败;如果没有任何匹配,则列出全部失败。诊断信息使用固定的描述和状态码;绝不会包含提供方路径、凭据值、原始网络错误或 GitHub CLI 的输出。页面加载器会在 error.failures 上提供同样的结构化诊断信息,公共解析器则会显示助手的失败信息以及成功回退的详情。如果在 Windows 上你的 Python 命令是 python,请用它代替 python3。如果要安装桌面注册,请把这个检出目录放在一个固定的位置。
打开一个 URI(会自动启动助手):
python3 browser-support/run.py open t256:AAAAAAAFaGVsbG8.txt
python3 browser-support/run.py settings
python3 browser-support/run.py stop
设置保存在 macOS 的 ~/Library/Application Support/t256、Windows 的 %LOCALAPPDATA%/t256,或 Linux 的 $XDG_CONFIG_HOME/t256(通常为 ~/.config/t256)中。可以在子命令之前使用 --state DIRECTORY,或使用 T256_HOME 来覆盖该位置。手动编辑 config.json 后请重启助手。
# 文件夹或已挂载的网络驱动器;以 CID 命名的文件无需索引。
python3 browser-support/run.py add documents folder /path/to/documents
python3 browser-support/run.py index documents
# HTTP(S) 基础 URL:获取时附加 /<CID>,不带后缀。
python3 browser-support/run.py add public http https://example.org/cids
# GitHub:目录中以 CID 命名的文件,使用现有的 GitHub CLI 登录。
python3 browser-support/run.py add github github owner/repository --directory cids --ref main --use-gh
# 或者指定令牌环境变量的名称(而不是它的值)。
python3 browser-support/run.py add private github owner/private-repository --token-env GH_TOKEN
# 克隆仓库会使用所选修订版本中已提交的内容,包括普通文件名。
# 请使用你现有的 Git/SSH 凭据进行克隆/拉取,然后让助手指向它。
python3 browser-support/run.py add clone git /path/to/clone --directory '' --ref HEAD
python3 browser-support/run.py index clone
python3 browser-support/run.py disable public
python3 browser-support/run.py enable public
python3 browser-support/run.py resolve t256:AAAAAAAFaGVsbG8.txt --output hello.txt
公共、私有和组织仓库使用的是授予用户凭据的访问权限。--api-url https://github.example/api/v3 支持 GitHub Enterprise。明确选择的凭据变量或 GitHub CLI 登录必须可用;缺少凭据会使该提供方失败,并让下一个所选提供方继续运行。如果两个选项都不设置,则允许公共访问,或在设置了 GH_TOKEN 时使用默认的 GH_TOKEN。API 提供方默认使用 cids/<CID>。如果要在远程使用普通文件名,请导入一个把完整 CID 映射到相对路径的 JSON 对象:
python3 browser-support/run.py import-index github cid-paths.json
可以从本地克隆或文件夹生成该映射(无需手动读取助手的状态文件),然后把它导入到具有相同文件布局的 GitHub 提供方中:
python3 browser-support/run.py export-index clone --output cid-paths.json
在设置中,使用文件夹、本地克隆或 GitHub 提供方旁边的 导入索引来选择同一个 JSON 文件。键是不带前缀的 CID;路径相对于文件夹或仓库根目录(导入的路径中要包含仓库内的目录)。设置页面的上传限制为 1000 KiB;更大的清单请使用上面的命令。导出索引会下载当前的映射。文件夹索引在所有操作系统上都使用正斜杠,因此导出的清单可以在其他桌面平台上复用。较早的 Windows 索引应在导出前重新建立。
编辑会保留提供方的名称、类型、顺序、启用状态、索引以及所有未显示的选项,同时更新其位置、修订版本、身份验证选择或超时设置。在更改了影响文件名或修订版本的设置后,请重新建立索引;使用 取消编辑可放弃草稿。目前 HTTP 超时作用于单个套接字操作,而不是整个下载的截止时间。超时必须为正数,且不超过 3600 秒。凭据变量名由字母、数字和下划线组成,并以字母或下划线开头。明确选择了身份验证的提供方必须使用 HTTPS。无效的设置会在替换已保存的配置之前被拒绝。
索引从不建立信任:返回的字节仍然必须与 CID 相匹配。更改文件或仓库修订版本后,请重新建立索引。本地克隆不会自动拉取。挂载的共享使用用户现有的挂载凭据。逃逸出所选根目录的符号链接会被拒绝。Git 索引会排除符号链接和子模块。HTTP 重定向只能停留在所配置的来源上;跨来源重定向会被拒绝,包括对需要身份验证的提供方。
默认的单个内容大小上限为 64 MiB;磁盘缓存预算为 256 MiB。这些限制可以在设置中修改。原始对象目前会缓冲在内存中;此版本面向资源有限的桌面环境,而不是数 GB 的媒体文件。每次读取缓存时都会进行验证,并按最近使用时间淘汰。对同一 CID 的并发请求会共享一次提供方获取和验证,即使对象超出了磁盘缓存预算也是如此。对不同 CID 的请求可以并行解析。提供方或文件索引的更改会开启新一代的获取,因此新的请求不会加入在旧设置下开始的工作。网关对原始资源支持单个 HTTP 字节范围请求,从而支持音频/视频的拖动播放和部分下载。在发送任何范围之前,会先获取并验证整个对象。经过转换的 HTML/CSS、格式错误或多段的范围请求,以及没有匹配校验器的条件范围请求,都会收到完整响应。停用某个提供方会保留之前已验证的缓存内容。如果要删除这些副本,请在设置中使用 清除缓存内容清除缓存。缓存用量也可以在那里查看;减小预算会立即淘汰最旧的副本。清除缓存后,提供方配置和文件索引仍会保留。
| 浏览器 | 页面加载器 / 网关 | 可选扩展 | 桌面导航 |
|---|---|---|---|
| Chrome / Edge | 已实现;已通过 Chromium 引擎检查 | Chromium 扩展包;原生消息 | 操作系统处理程序 |
| Brave / Opera | 已实现;品牌浏览器验证待完成 | Chromium 扩展包;验证待完成 | 操作系统处理程序 |
| Firefox | 已实现;Firefox 引擎检查在 CI 中运行 | Firefox 扩展包;原生消息 | 操作系统处理程序 |
| macOS 上的 Safari | 已实现;已通过 WebKit 引擎检查 | Safari Web 扩展源码;手动连接 URL | macOS 处理程序 |
引擎测试并不能确认已安装浏览器的协议提示、地址栏行为、扩展商店审核或 Safari 签名。这些需要进行下文所述的手动检查。浏览器扩展不会注册通用的 t256: 网络协议。网站/PWA 注册无法注册裸 t256: 或 web+t256:;下文当前进行中的 Web 处理程序计划使用一个可选的纯字母别名。
更新于 2026-10-14。三种机制都是正在进行的工作。已勾选的条目记录了已有的实现或已完成的调查;未勾选的条目是剩余工作。只有在已安装的浏览器中通过验收检查后,一种机制才算可以发布。仅凭引擎测试和生成的扩展包并不能确认这一结果。
| 机制 | 状态与已有工作 | 优点 | 局限 | 下一项交付 |
|---|---|---|---|---|
内容脚本把 t256: 链接改写为指向查看器/网关的链接;可选的地址栏关键字 |
进行中:实现与浏览器验证。 已有:显式点击后的资源适配、无需助手的查看器导航、可选择开启的动态链接适配、Chromium/Firefox 扩展包、Safari 转换源码、原生上下文菜单,以及经过验证的 CID/URI 关键字输入。 | 保留 RFC URI;可以适配现有链接和所选的页面资源;可以使用助手的私有/本地提供方。 | 需要访问页面的权限;动态监视目前只覆盖顶层文档中的链接。扩展商店/签名以及已安装 Firefox/Safari 的检查尚待完成。关键字是单独的地址栏操作。 | 增加对动态资源/框架的覆盖,并验证每个已安装的扩展包。 |
Web 协议处理程序,包括所请求的 web+t256: 写法 |
进行中:实现与浏览器验证。 已有:严格的别名转换,以及显式的网站注册/移除控件;引擎检查覆盖了传输和拒绝情况。 | 有效的别名无需扩展即可打开浏览器查看器;网站、Firefox 扩展和已安装的 Chromium PWA 注册是彼此独立的选项。 | web+t256: 不符合标准的协议名规则;别名与 RFC 不同。注册并不能启用自定义协议的子资源。Safari 需要另一种途径。 |
验证已安装浏览器中的授权/分派;增加已保存助手的选项、Firefox 清单处理以及可选的 PWA 支持。 |
由桌面助手在操作系统中注册 t256: |
进行中:实现与分发验证。 已有:macOS 应用包装、Windows 按用户的注册表注册、Linux 桌面条目、启动、原生消息以及卸载。 | 保留确切的协议名;可以使用用户所选的文件夹、挂载的共享、HTTP 基础地址和需认证的仓库打开内容;为 Safari 提供一条外部导航途径。 | 需要安装,并在出现提示时由浏览器批准。键入/粘贴到地址栏时的分派行为因浏览器而异。当前运行时需要固定路径上的 Python。不会把 t256: 变成浏览器的资源协议。 |
在全部三种操作系统上验证真实浏览器的分派以及干净的安装/移除;构建方便使用的平台安装包。 |
HTML 自定义处理程序规则允许 web+ 后跟小写 ASCII 字母,因此无论裸 t256 还是 web+t256 都无法通过标准的网站 API 注册。请保留 t256: 作为规范的 RFC 协议名。使用 web+tcontent: 作为可用的兼容别名;在发布别名链接之前先记录这一约定。精确支持 web+t256: 需要浏览器特定的例外或上游变更,这是一个调查项,而不是承诺会交付的功能。
桌面版 Firefox 和 Chromium 对符合条件的协议名支持 navigator.registerProtocolHandler();不要把 Chromium 的网站 API 描述为通常需要开启标志才能使用。Chrome 还记录了自 Chrome 96 起可用的已安装 PWA 协议处理程序。请在默认浏览器设置下,分别独立测试网站注册、扩展清单注册和 PWA 安装。
Safari 也可以通过 Safari Web 扩展适配页面链接,或者使用加载器/网关。操作系统助手是计划中让 Safari 使用确切协议名的主要外部途径;但它并不是唯一可行的 Safari 集成方式。
extensions/shared、build_extensions.py)构建 Chromium 和 Firefox 扩展以及 Safari 转换源码。t256 <CID>[.suffix] 在关键字模式下可用。接受裸 CID 和完整 URI,保留 CID 的大小写,在原生启动之前用共享的 RFC 解析器进行验证,并显示输入提示。单元测试覆盖了构建好的 Chromium 和 Firefox 后台脚本;已安装 Firefox 上的检查,以及 Chrome 的关键字 API,仍有待完成。验收标准:未修改的 t256: 锚点在激活后可以导航;在可用的地方,关键字模式接受裸 CID 和完整 URI;停用后动态适配会停止;复制/分享的链接不包含任何助手能力;不可用的内容会呈现有用的失败状态。验证内联和哈希 CID、混合大小写的 CID、复合后缀、无效输入、缺少助手、已撤销的授权以及隐私窗口。资源测试必须在使用前验证字节,并验证脚本的执行顺序。
web+t256: 的限制,并确定纯字母的 web+tcontent: 途径。规范 RFC 无需更改。web/protocol-handler.mjs 和公共解析器中实现共享的别名适配器和处理程序入口。只转换已识别别名的协议名,保留 CID 大小写,使用严格的 RFC 解析器,并且只对传输编码解码一次。单元测试覆盖了内联/哈希 ID、复合后缀、格式错误的编码、未知别名以及重复的 URI 参数。%s 片段模板,不带现有的查询参数或助手能力;支持 HTTPS 和安全的环回开发环境。保留功能检测、拒绝反馈和手动解析。引擎测试使用模拟的浏览器 API 检查了模板转发和显式调用。t256: 标识符。protocol_handlers 扩展清单途径,指向扩展查看器。把浏览器特定的清单字段与 Chromium/Safari 扩展包分开,并默认避免相互竞争的注册。protocol_handlers、限定作用域的处理程序 URL 以及清晰的安装/移除说明。把操作系统集成与网站注册分开测试;保证基础解析器无需安装 PWA 也能使用。对 Edge、Brave 和 Opera 进行实际探测,而不是沿用 Chrome 的支持声明。web+t256: 注册增加否定性的引擎检查(标准拒绝或 API 不可用)。Chromium 和 WebKit 检查在本地通过;Firefox 检查在 CI 中运行。不会绕过有效注册所需的授权。验收标准:点击有效的别名后,到达的是确切的规范标识符;无效的别名绝不会获取内容;注册需要显式操作;拒绝或移除注册后,回退方案仍然可用。在已安装的 Firefox/Chrome/Edge 中测试网站流程,并且只在受支持的地方测试 PWA/扩展流程。把地址栏结果与链接激活分开记录。不要把导航处理程序的成功算作对 fetch、图像或脚本协议的支持。
t256_helper/install.py 中为 macOS、Windows 和 Linux 实现按用户的协议注册,并实现助手自动启动和严格的 URI 解析。xdg-mime 的行为。记录挂载共享、启动器和原生宿主在依赖和沙盒访问方面的限制。验收标准:安装后,未经修改的 URI 会被路由到唯一一个正在运行的助手和一个经过验证的查看器,且不会出现启动循环;拒绝浏览器提示不会打开内容;卸载会保留用户设置,并尊重之后对处理程序所做的更改。验证内联/哈希内容,以及所选的文件系统、挂载共享、HTTP、Hashbin 和已授权的 GitHub 提供方。把操作系统导航测试与页面资源测试分开:资源加载使用加载器或经过转换的网关。
| 目标 | 扩展计划 | Web 处理程序计划 | 操作系统处理程序发布门槛 |
|---|---|---|---|
| macOS、Windows、Linux 上的 Chrome / Edge | 共享扩展包、原生宿主、关键字;在每个已安装的浏览器中测试 | HTTPS 网站别名;可选的 PWA,单独测试 | 在每种操作系统上实际测试点击/键入/粘贴的分派以及安装/移除 |
| macOS、Windows、Linux 上的 Firefox | 已签名的扩展包、原生宿主、关键字;实际的扩展测试 | HTTPS 网站别名;可选的扩展清单处理程序 | 在每种操作系统上实际测试分派、提示以及原生宿主的发现 |
| macOS、Windows、Linux 上的 Brave / Opera | 共享的 Chromium 源码;品牌浏览器的权限/商店测试 | 在默认设置下探测网站/PWA 支持 | 实际测试分派以及浏览器特定的原生宿主发现 |
| macOS 上的 Safari | 构建好的容器应用、链接适配以及手动/原生连接选项;目前没有关键字途径 | 功能检测和 HTTPS 回退;不承诺支持网站 API | LaunchServices、Safari 提示、签名/公证以及真实的 Safari 测试 |
交付顺序:关键字输入、显式的别名注册和扩展查看器回退已经实现;接下来验证已安装的浏览器/操作系统组合,并打包助手/Safari 应用。动态适配、Firefox 清单处理和 PWA 安装可以作为后续的独立增量。每完成一个增量就更新本清单,并附上其测试或手动检查的证据链接。每一种受支持的组合在被宣传为可以发布之前,都需要有记录在案的通过结果或有文档说明的局限。
在助手设置中授予页面的确切来源,然后复制其连接 URL。例如,本地开发网站可能使用 http://127.0.0.1:8080。连接会在助手重启时轮换;在设置中撤销某个来源,即可拒绝其之后的请求。再次授予该来源会创建一个新的连接 URL;先前已撤销的 URL 仍然无效。与之无关的提供方或存储编辑会保留那些仍被允许的来源的连接。连接是一种持有者能力:任何持有它的人都可以向你所选的提供方请求已知的 CID。不要把私有的连接 URL 嵌入到公开分发的源代码或分享链接中。
<img data-t256-src="t256:YOUR_IMAGE_CID.png" alt="Content image">
<link rel="stylesheet" data-t256-href="t256:YOUR_STYLESHEET_CID.css">
<script type="application/t256" data-t256-src="t256:YOUR_FIRST_SCRIPT_CID.js"></script>
<script type="application/t256" data-t256-src="t256:YOUR_SECOND_SCRIPT_CID.js"></script>
<script type="module">
import { T256Client } from './browser-support/web/loader.mjs';
const client = new T256Client(connectionUrlSuppliedByTheUser);
await client.hydrate(document);
const observer = client.observe(document, { onError: console.error });
// 拆除时:observer.disconnect(); client.dispose();
</script>
惰性声明可以避免与浏览器解析器之间的竞争。经典脚本按文档顺序依次运行;它们会在浏览器中再次验证,并以 blob 形式加载,不使用 eval。重复或重叠的水合(hydration)不会重新运行未改变的声明。样式表会在声明的脚本运行之前完成加载。动态的、选择加入的声明可以用 observe() 处理。加载事件受客户端超时的约束,dispose() 会取消待处理的获取/加载、断开观察器,并释放其拥有的 blob URL。已经开始执行的脚本无法撤销;返回给页面的 worker 必须由调用方终止。
对于模块,请在加载任何模块之前提供完整的依赖图:
为此请使用 <script src="./browser-support/web/loader.js"></script>,然后访问 window.T256Client。Firefox 要求在首次加载模块(包括加载器本身)之前提供其导入映射。ES 模块入口仍然适用于带有静态导入映射、经典脚本、图像或自包含模块的页面。
await client.imports({
't256:DEPENDENCY_CID.mjs': 't256:DEPENDENCY_CID.mjs',
'named-dependency': 't256:ANOTHER_DEPENDENCY_CID.mjs',
});
await client.script('t256:ENTRY_CID.mjs', { module: true });
const bytes = await client.bytes('t256:DATA_CID.json', { signal });
const worker = await client.worker('t256:WORKER_CID.js');
模块通过经过验证的网关以原始源码形式提供。导入映射是显式的;JavaScript 源码和计算得出的导入不会被改写。支持经典的、自包含的 worker;不支持模块 worker 的依赖图。不透明的 t256 语法没有相对引用的语义,因此依赖项必须使用完整的标识符或显式的导入映射名称。
页面正常的 CSP 仍然适用:需要允许加载器的来源、用于经典脚本/图像/worker 的 blob:,以及用于模块和样式表请求的助手来源。可以向加载器方法提供 CSP nonce。浏览器的本地网络权限和 CORS 检查会被保留。助手的 /demo.html 是一个可运行的示例。
用助手或设置页面打开一个 .html URI。网关会先验证原始 HTML,然后在浏览器解析之前,转换带有 URL 的属性、内联 CSS 以及导入映射中的值。srcset 和 imagesrcset 中的响应式图像候选项会作为完整 URL 进行转换,并保留 data URL 和描述符。外部 CSS 中的 url() 和带引号的 @import 引用也会被转换,包括 CSS 字符转义、转义的关键字以及带引号的续行。注释和普通的 CSS 字符串保持不变。这些都遵循标准的 CSS 转义语法。嵌套的 HTML 框架和 t256 导航链接会使用网关。原始 JavaScript 不会被修改。
经过转换的 HTML 和 CSS 必须是 UTF-8,并会被明确地以 UTF-8 提供。
现有页面可以使用以 t256 为目标的标准导入映射:
<script type="importmap">
{"imports":{"named-dependency":"t256:DEPENDENCY_CID.mjs"}}
</script>
<script type="module" src="t256:ENTRY_CID.mjs"></script>
HTML 和 SVG 内容文档具有沙盒化的不透明来源,即使直接导航到原始/raw 表示形式也是如此。它们可以运行自己选定的脚本,但无法读取助手的管理设置,也无法向提供方进行身份验证。它们的 CSP 把资源和连接的目标限制为网关。经过验证的源字节保留在 CID 缓存中;生成的 HTML/CSS 带有 X-T256-Representation: transformed 和 X-T256-Source-CID 标签,并且不会声称其哈希值等于该源 CID。
python3 browser-support/build_extensions.py
扩展包会创建在 browser-support/dist/extensions 下:
chromium 目录作为未打包的扩展加载。firefox/manifest.json。持久安装需要 Mozilla 签名或适当的托管部署。xcrun safari-web-extension-converter 转换 safari 目录,然后在 Xcode 中构建/签名容器应用。此扩展包使用复制过来的网站连接 URL,而不是 Python 原生消息。页面加载器/网关在没有 Safari 扩展的情况下也能工作。扩展使用 activeTab;它不会自动读取每一个网站。在浏览器查看器中打开会把经过验证的 URI 发送到所选的查看器(默认是公共 HTTPS 解析器),而不会调用原生宿主。不使用助手适配链接只会把当前的 t256: 锚点改写为指向该查看器。它不会获取内容、不会改写页面资源,也不需要助手连接或提供方授权。无效的 URI 保持不变并报告错误;现有的链接关系会被保留。只接受不含凭据、查询参数或片段的 HTTPS 或环回 HTTP 查看器 URL。URI 放在查看器的片段中传递,查看器会等待解析操作。导航之后,所选的查看器可以读取标识符和内联字节。这些操作包含在 Safari 转换源码中;已签名的 Safari 安装仍是一项发布检查。
持续适配本页链接还会在弹出窗口关闭后处理新的 HTML 锚点和更改过的 href 值。它分批扫描,不获取任何内容。重新打开弹出窗口即可查看其状态,或选择 停止适配新链接。停止后,已经适配的链接会保留,排队的工作会被取消,之后的页面编辑不会受到影响。离开页面会停止监视,包括通过浏览器往返缓存(back/forward cache)进行的导航;返回后需要再次启用。再次启动会替换之前的监视器。更改后的查看器会作用于之后处理的 t256: 链接;已经改写过的查看器链接保留其现有的目标。此选项覆盖顶层文档的 HTML 锚点。框架、shadow root 以及动态的图像/脚本/媒体仍是单独的计划项。
“适配本页的图像、媒体和链接”会在显式点击之后处理当前的图像(包括 srcset 和 picture 源)、音频/视频源、海报帧、字幕轨道、样式表和导航引用。源发生变化时,受影响的媒体元素会重新加载一次,以便重新选择资源。相同的 URI 在一次适配中共享一个元数据请求。在获取期间被页面更改的属性会保持不变,不可用的内容会报告助手的提供方诊断信息。它会刻意保留现有的 script 标签不变;如需执行顺序和模块支持,请使用页面加载器或网关。
Chrome/Firefox 的原生启动集成使用以下按用户的注册:
python3 browser-support/run.py install --browser chrome --extension-id YOUR_32_CHARACTER_EXTENSION_ID
python3 browser-support/run.py install --browser firefox --extension-id t256@256t.org
如需其他原生宿主位置,请使用 edge、brave 或 opera。安装的原生清单只允许指定的扩展。上下文菜单和 t256 地址栏关键字会通过网关打开内容。关键字需要浏览器的关键字激活操作;它并不会让地址栏中的裸 URI 被普遍识别。激活关键字后,输入一个 CID(例如 t256 AAAAAAAFaGVsbG8.txt)或完整的 URI。无效的标识符会显示输入提示,并且不会启动原生宿主。
python3 browser-support/run.py install
python3 browser-support/run.py uninstall
注册在 macOS 上使用 AppleScript .app,在 Windows 上使用按用户的 URL 协议注册表项,在 Linux 上使用桌面条目加 xdg-mime。它不需要管理员权限。Python 和此检出目录必须保留在安装时的路径上。卸载会保留提供方设置和缓存的字节。
macOS 包装程序在本地进行临时(ad-hoc)签名。它在安装时生成,不需要开发者签名身份。Safari 扩展的分发是另一个单独的、需要签名容器应用的流程。
本站的 URI 解析器无需安装即可提取内联内容,并验证来自启用了 CORS 的公共提供方的字节。它的可选连接字段可使用桌面解析器访问所选的私有/本地提供方。解析器还接受兼容别名 web+tcontent:<CID>[.suffix]。在解析或获取内容之前,它会把该协议名替换为 t256:;CID 的大小写保持不变,后缀遵循规范解析器的规范化规则。例如,web+tcontent:AAAAAAAFaGVsbG8.txt 会映射为 t256:AAAAAAAFaGVsbG8.txt。不接受其他任何别名,RFC 解析器/助手仍然要求使用 t256:。
在 HTTPS 解析器(或安全的本地助手页面)上选择 启用浏览器链接 以请求网站注册,然后在浏览器中批准。模板使用同一来源上的 resolve.html#uri=%s,不带现有的查询、连接或凭据。API 调用成功时报告的是“请求已发送”,而不是声称已经批准;确认和默认设置由浏览器控制。传入的链接会填充规范 URI 字段,并在访问提供方之前等待 解析并验证。本次访问可以选择现有的提供方和粘贴的助手连接。在此浏览器中记住连接 会显式地把经过验证的连接保存在本网站的浏览器存储中,并在之后的访问(包括通过别名导航)中恢复它。连接不会被自动保存,恢复连接也不会获取内容。重启助手后,请替换已记住的 URL;过期/已撤销的授权在获取时仍然会失败。忘记已记住的连接 会删除已保存的 URL 并清空该字段;要撤销提供方访问权限,需要在助手设置中移除本网站的授权。如果浏览器存储被阻止,手动输入连接和解析仍然可以使用。
在浏览器提供移除功能的地方使用 移除浏览器链接处理程序,或在浏览器设置中更改处理程序。不支持或被阻止的注册不影响手动解析的使用。PWA 和 Firefox 扩展清单注册是单独的待办计划项。引擎测试模拟了有效注册时的界面结果,并在不向用户浏览器注册处理程序的情况下演练了真实的无效协议名拒绝;已安装浏览器的授权和外部分派仍然是发布检查项。
HTML、JavaScript 和 SVG 的预览以文本形式显示。下载使用二进制媒体类型,保留经过验证的原始字节,并且无法在解析器页面的来源下创建 HTML/SVG 文档。位图预览使用单独的临时 URL。分享链接的片段中只包含 URI,绝不包含助手能力或提供方凭据。使用 取消获取 可以停止待处理的提供方或助手请求并重试。取消会清除过时的预览/下载链接,离开页面会释放其预览对象。在流式传输内容时超时的公共提供方会回退到下一个所选的提供方;调用方的取消会完全停止搜索。读取器会取消停滞的流并释放其锁。被取消的、发往助手的浏览器请求,可能会让一个已经开始的提供方获取继续运行,以供共享该获取的其他请求使用。
Hashbin 的本地文档规定,https://256t.us/<CID>[.<ext>] 用于提供公共的、不带 cookie 的字节;https://hashbin.org/api/content/<CID> 返回元数据。助手使用 https://256t.us/<CID>,并在本地应用后缀,包括复合后缀。HTTP 失败(包括 404/451/429)会参与提供方回退。发布/身份验证 API 不在这个只读解析器的范围之内。
这些命令适用于源码检出;可下载的小型运行时包省略了开发依赖和测试夹具。
PYTHONPATH=browser-support python3 -m unittest discover -s browser-support/tests -v
npm --prefix browser-support test
npm --prefix browser-support ci
browser-support/node_modules/.bin/playwright install chromium firefox webkit
npm --prefix browser-support run test:browsers
专用的工作流会在 macOS、Windows 和 Linux 上测试解析器/网关/原生消息分帧,并在 Chromium、Firefox 和 WebKit 上测试浏览器资源。测试使用本地提供方,而不是真实的私有仓库或凭据。
手动发布检查:点击和粘贴的 URI;浏览器启动提示;隐私窗口;提供方授权/撤销;断开连接的共享;GitHub 登录/SSO 和凭据续期;已签名的 Safari 扩展;Brave/Opera 品牌浏览器;在每种操作系统上的安装和移除。原生透明的 fetch('t256:…')、任意的动态导入、SVG 内部资源、多段媒体范围请求,以及上游浏览器引擎的实现,仍是未来的工作。