TypeScript · 项目报告

deedy/qr-data-transfer

该仓库暂未提供 GitHub 项目描述。

已完成 打开 GitHub
D
425星标
81Fork
0Issue
未知许可证

分析结果

项目分析

QRFerry 是一个基于浏览器的“动态二维码流”文件传输工具:发送端把文件编码成连续变化的 QR 码帧,接收端用手机摄像头访问 /scan 扫描并重建文件。整个过程在浏览器内完成,文件不会上传到应用服务器,适合离线、隔离网络或不方便联网的设备间传输。项目使用 TypeScript,核心 QR 渲染、扫描和 RaptorQ 编解码依赖 WebAssembly。

适用领域 浏览器端文件传输 / 二维码通信 / 离线/隔空数据传输 / 隐私保护工具 / WebAssembly / 前端工程 / 纠删码与数据恢复 / Air-gapped 数据交换
配置难度 中高。作为使用者,基本流程较简单,只需打开网页、选择文件和扫描二维码;但要稳定使用 Turbo 60 或 1 Mbps 实验模式,需要理解屏幕刷新、摄像头帧率、双通道扫描和环境条件。作为开发者,项目涉及 TypeScript、浏览器媒体 API、WebAssembly、二维码容量、RaptorQ 纠删码和性能测试,二次开发门槛较高。
商业价值 该项目的商业价值主要体现在安全隔离环境下的轻量级单向文件传输、隐私优先的本地传输体验,以及作为光学数据通道技术验证原型。它可用于安全工具、企业内外网隔离数据交换、应急运维、离线设备配置和教育演示。不过当前更像技术原型或开发者工具,若要商业化,需要补充明确许可证、用户体验优化、移动端兼容性验证、安全威胁模型、审计报告和大规模场景下的可靠性测试。
01

技术亮点

  • 文件不上传到服务器,发送和接收逻辑完全在浏览器内运行,隐私友好
  • 使用 RaptorQ 喷泉码,接收端可中途加入、乱序接收、丢弃模糊帧,并在收集足够符号后恢复文件
  • 每帧带 CRC-32,完整对象、压缩载荷和原始文件均有校验,可靠性设计较完整
  • 尝试 Brotli quality 11 和 gzip level 9 压缩,只在节省光学传输字节时使用更小结果
  • QR 帧使用 raw byte mode,避免 Base45 等文本编码带来的膨胀
  • 支持 Turbo 15、Turbo 30、Turbo 60 和实验性约 1 Mbps 光学传输配置
  • Turbo 60 采用双 V30-L 通道交替刷新,使每个通道在显示过渡期间保持相对稳定
  • 渲染使用 fast_qr WebAssembly,扫描使用 ZXing-C++ WebAssembly,FEC 使用 RFC 6330 RaptorQ WebAssembly
  • 测试覆盖端到端校验、帧损坏拒绝、乱序/擦除恢复、真实 QR 渲染与扫描、容量检查、生产构建和 SSR
02

目标用户

  • 需要在无网络或隔离网络环境中传文件的开发者
  • 安全/隐私敏感场景下不希望文件经过服务器的用户
  • 研究二维码高速传输、光学信道传输的工程师
  • 前端和 WebAssembly 技术爱好者
  • 需要在电脑屏幕与手机之间临时传输小文件的用户
  • 安全实验室、运维、应急响应人员
03

配置要求

  • Node.js 版本要求 >= 22.13.0
  • 现代浏览器,需支持 WebAssembly、摄像头访问、Fullscreen API 等能力
  • 接收端需要后置摄像头权限
  • Turbo 60 和 1 Mbps 实验模式需要发送端全屏播放
  • 双通道模式需要接收端开启 Dual lane 选项
  • 高吞吐模式建议手机横屏、靠近屏幕并保持稳定
  • 需要较好的屏幕刷新率、亮度和摄像头对焦条件
  • 项目开发不需要 Python 环境;如后续添加 Python 工具,README 建议使用 uv 管理环境和依赖
04

适用场景

  • 从一台无法联网的电脑向手机传输配置文件、密钥片段、日志或小型文档
  • 在不使用云盘、IM、邮件的情况下完成临时文件转移
  • 在内外网隔离环境中通过屏幕和摄像头进行单向数据传递
  • 演示基于二维码的光学数据通道和 RaptorQ 纠删码恢复能力
  • 作为浏览器端 QR 编码、扫描、FEC 纠错、WebAssembly 性能优化的参考项目
  • 在安全培训或 CTF 场景中展示 air-gapped 数据传输方式
05

部署与配置

  • 安装 Node.js >= 22.13.0
  • 克隆仓库:git clone https://github.com/deedy/qr-data-transfer.git
  • 进入项目目录:cd qr-data-transfer
  • 安装依赖:npm install
  • 启动开发服务器:npm run dev
  • 在发送设备浏览器打开根页面 / 并选择文件
  • 在接收手机浏览器打开 /scan,并授予后置摄像头权限
  • 开始 QR 动画流传输,保持二维码完整进入手机扫描框
  • 等待 RaptorQ 恢复和整文件校验达到 100% 后保存文件
06

风险与注意事项

  • 项目未声明 license,商用或二次分发前需要确认授权风险
  • 二维码高速光学传输对屏幕刷新率、摄像头质量、环境光、距离、对焦和手持稳定性敏感
  • 1 Mbps 档位属于实验室配置,实际吞吐可能明显低于标称值
  • 大文件传输可能耗时较长,且受浏览器内存、设备性能和相机帧率限制
  • 移动端浏览器对摄像头、全屏、性能调度的实现差异可能影响体验
  • WebAssembly 模块加载失败或兼容性问题会导致核心功能不可用
  • 仅适合近距离、可见屏幕的单向传输,不适合后台自动化或远程批量传输
  • 虽然文件不上传服务器,但屏幕上可见的二维码流可能被旁观摄像头录制,敏感数据仍需注意物理环境安全

历史记录

热榜历史快照

2026-08-07 第25名 新收录 · github_search
2026-08-06 第25名 新收录 · github_search
2026-08-05 第22名 新收录 · github_search
2026-08-04 第25名 新收录 · github_search
2026-08-03 第24名 新收录 · github_search
2026-08-02 第23名 新收录 · github_search