roku

📺 局域网Roku设备智能遥控中心

基于Python的安全CLI工具,通过本地网络ECP API实现Roku设备发现、遥控与桥接控制,支持Telegram远程指令,适合家庭媒体自动化场景。

收藏
9.7k
安装
2.4k
版本
v2.0.0
CLS 安全性认证2026-04-30
点击查看完整报告 >

使用说明

Roku CLI 是一款针对 Roku 流媒体设备设计的命令行控制工具,基于 TypeScript/Node.js 开发(安全审查显示底层依赖 Python 脚本实现),通过局域网 ECP(External Control Protocol)API 与设备进行通信。该工具提供了从基础遥控到高级自动化的完整解决方案,使用户能够通过终端、HTTP 接口甚至 Telegram 机器人实现对电视设备的精准控制。

核心用法方面,工具支持设备自动发现与别名管理,用户可通过 roku discover 快速扫描局域网内设备并保存别名,后续操作无需记忆 IP 地址。基础功能包括发送遥控按键(方向键、播放控制、电源等)、文字输入、应用启动和内容搜索。交互模式提供了沉浸式的终端遥控体验,支持键盘直接操控。最具特色的是 HTTP 桥接服务,可将 CLI 转换为常驻后台的 REST API 服务(支持 systemd/launchd),允许通过 curl 或第三方自动化工具发送指令;同时支持 Telegram 机器人集成,通过环境变量配置 TOKEN 后即可实现移动端远程控制。

显著优点体现在其架构的灵活性与安全性设计。采用环境变量存储敏感信息(如 Telegram Token、设备 IP),避免硬编码风险;命令映射通过白名单字典(BUTTON_MAP)严格校验,防止注入攻击;支持用户级服务部署(--user 标志),无需 root 权限即可运行守护进程。别名系统同时支持设备和应用映射,极大简化了复杂指令的输入。桥接模式的 Token 认证机制为本地 API 提供了基础安全保障。

潜在缺点与局限性不容忽视。首先,来源等级为 T3(个人开发者维护),虽代码质量达到 A 级安全标准,但长期维护稳定性存疑。其次,依赖的 roku Python 包版本未在文档中锁定,存在供应链更新风险。功能上严格限定于局域网环境,无法跨网络控制设备。命名管道和 Unix socket 使用固定的 /tmp/ 路径,可能与其他应用冲突或面临本地权限问题。此外,交互模式依赖终端输入,对于非技术用户存在一定学习曲线。

适合的目标群体主要包括:拥有 Roku 设备的智能家居爱好者,希望通过脚本实现自动化控制(如定时开关机、自动播放特定内容);家庭媒体中心管理员,需要集中管理多台 Roku 设备;开发者希望将 Roku 控制集成到现有自动化工作流或 CI/CD 流程中;以及希望通过 Telegram 实现手机远程遥控的技术用户。

使用风险方面,虽然代码本身无恶意行为,但用户需注意:Telegram Token 若泄露可能导致设备被未授权控制;固定路径的 IPC 机制(命名管道和 socket)在 multi-user 系统中可能产生权限冲突;桥接服务默认监听本地端口,若配置不当(如绑定 0.0.0.0)可能扩大攻击面。此外,ECP API 本身无加密,建议在可信局域网内使用,避免在公共 WiFi 环境下暴露设备控制接口。

安全解读

核心用法

Roku CLI 是一款基于 TypeScript 开发的命令行工具,通过 Roku 官方 ECP(External Control Protocol)API 实现局域网内设备控制。主要功能包括:

  • 设备发现:自动扫描网络中的 Roku 设备并保存别名
  • 远程控制:模拟实体遥控器按键(方向、播放、音量等)
  • 应用管理:列出已安装应用、启动指定应用(如 Netflix、Plex)
  • 文本输入:支持虚拟键盘文字输入
  • 内容搜索:调用 Roku 系统搜索功能
  • 交互模式:终端内使用方向键实时控制
  • HTTP 桥接:将 CLI 封装为本地 HTTP 服务,支持外部系统集成

显著优点

1. 功能完整:覆盖 Roku 官方 API 全部核心能力,包括相对少见的搜索和文本输入功能
2. 别名系统:通过 discover --savealias 命令简化多设备管理,避免重复输入 IP

3. 桥接模式创新bridge install-service 可将 CLI 转为常驻系统服务(launchd/systemd),对外暴露 REST API,便于 Home Assistant 等智能家居平台集成

4. TypeScript 实现:相比同类 Python 工具,类型安全和 npm 分发更友好

5. 零配置优先:自动发现机制降低上手门槛

潜在局限

1. 网络限制严格:必须与被控设备处于同一局域网,不支持跨网络或互联网远程控制(除非配合 VPN)
2. 无官方 Roku 认证:作为第三方工具,存在因 Roku 固件更新导致 API 行为变更的风险

3. 桥接服务局限:HTTP 桥接仅绑定本地回环地址(127.0.0.1),需额外反向代理才能实现外部访问

4. 无 GUI 辅助:纯 CLI 设计对非技术用户不够直观

5. Token 管理简单:桥接模式的 Bearer Token 为命令行参数传递,存在 shell 历史泄露风险

适合人群

  • 智能家居自动化爱好者(需将 Roku 集成到现有工作流)
  • 习惯命令行效率的技术用户
  • 需要批量管理多台 Roku 设备的场景(办公室、民宿等)
  • 开发 Home Assistant 插件或自定义遥控界面的开发者

常规风险

1. 本地网络信任假设:ECP API 使用明文 HTTP,若局域网被入侵,攻击者可截获或伪造遥控指令
2. 服务权限问题:桥接服务若以 --user 安装虽无需 sudo,但 Token 仍存储在用户配置中,多用户系统需注意隔离

3. 依赖维护:依赖 python-roku 等第三方库,需关注上游安全更新(当前无已知 CVE)

4. 无内置日志审计:桥接模式未提及访问日志,难以追踪异常调用来源

评估结论

A级评分项目,代码结构清晰,无危险函数使用,适合在可信家庭网络环境中部署使用。

roku 内容

手动下载zip · 7.3 kB
README.mdtext/markdown
请选择文件