开发者生态
morning
Tapo(Rust/Python 库)现在使用 TP-Link 的 TPAP 协议
摘要
Your script has been switching a Tapo plug on and off for months. Then the plug quietly updates its firmware, and the next request comes back with 403 Forbidden . Nothing in your code changed. The cau...
the
and
Tapo
The
devices
has
for
switch
that
Rust
2026-10-07
1 阅读
约6分钟阅读
faithraven
字号:
您的脚本几个月来一直在打开和关闭 Tapo 插头。然后插头悄悄更新其固件,下一个请求返回 403 Forbidden 。您的代码中没有任何变化。原因是一个名为“第三方兼容性”的开关,隐藏在 Tapo 应用程序的“我”>“第三方服务”下。自固件 1.4.0 起,插头仅在开关打开时以过去的方式与第三方客户端通信。它一次又一次地绊倒人们。至少九期讲述了同样的故事,其中包括#441、#449 和#473。从 Tapo(我的 TP-Link Tapo 设备的非官方 Rust 和 Python 客户端)的 v0.11.1 开始,开关可以保持关闭状态,除了下面介绍的一些小例外。这是近四个月工作的重点,一周内发布了三个版本:9 月 28 日发布 v0.10.0,10 月 2 日发布 v0.11.0,10 月 4 日发布 v0.11.1。在此过程中,图书馆还获得了人们一直要求的一系列新设备和 Tapo 应用程序的两项功能。变更日志包含所有细节。这篇文章通过示例介绍了要点。这里的所有内容都适用于该库的 Rust 和 Python 版本。 Python 包是 Rust 包的薄包装,因此每个更改都会同时出现在两个包中,且版本号相同。下面的示例是 Rust 语言的,Python 调用反映了它们。这是三年来第三次安全变更悄悄地将第三方客户端锁定在 Tapo 设备之外。开关是第二次留下的。 2023 年:灯和插头。那年 2 月,来自卡塔尼亚大学和伦敦大学皇家霍洛威学院的三名研究人员报告了 Tapo 设备与应用程序通信方式中的四个缺陷,从 L530E 灯泡开始。范围内的人可以接管受害者的 Tapo 帐户并了解他们的 Wi-Fi 密码。几个月后,固件更新开始将设备的原始 AES 协议替换为新协议 KLAP。 TP-Link从未说过两者已连接,也没有宣布这一变化。 “这是错误还是故意的?如果是故意的,为什么?”一位论坛帖子问道,该帖子已被锁定,TP-Link 没有做出答复。每个第三方客户端(包括该库)都必须学习 KLAP。 2024 年:相机。 2023 年 11 月,维护 Tapo 摄像头 Home Assistant 集成的 Juraj Nyíri 报告了 TP-Link 的漏洞。 TP-Link 修复了该问题,到 2024 年 4 月,新固件上的摄像机已停止接受集成登录。 Nyíri 构建了一个通过 TP-Link 云的解决方法,并请求发布它的许可。 TP-Link 审查了代码并表示不行。相反,它在 2024 年 12 月,即第一份报告发布八个月后,发布了 Tapo 应用程序中的一个开关,可以重新打开旧的本地登录:第三方兼容性。该集成的发行说明称其为本地控制的胜利。 2025 年:插头和灯再次出现。 2025 年 10 月,固件 1.4.0 带来了另一个新协议 TPAP,并将插头放在同一交换机后面。随后,固件 1.4.1 至 1.4.3 于 2026 年上半年发布。这次,在关门之前,出路就已经存在了:自 2024 年 12 月以来,开关就一直在 Tapo 应用程序中。但默认情况下它是关闭的。 TP-Link 的常见问题解答称,该功能“默认情况下处于禁用状态以确保安全”,并且打开该功能“可能会降低设备的安全性”。当刚坏掉的插头的所有者在论坛上询问时,他们被告知 Home Assistant“不是 Tapo 产品官方支持的第三方平台”。 TPAP 本身从未被记录在案。该交换机是一种安全降级产品,具有友好的名称。打开它会恢复旧的登录名而不是新的登录名,并且新的登录名更好。下面详细介绍一下。在最新的 Tapo 固件上,第三方兼容性开关决定设备使用哪种协议。灯、插头、电源板或 H100 集线器在打开时会发出 KLAP 声音,在关闭时会发出 TPAP 声音。相机从来不说 KLAP。他们的旧协议是 AES SSL,其中一些在关闭开关时拒绝使用该协议。该库不支持 TPAP,因此它只能到达开关打开的设备。 v0.11.1 添加了 TPAP。现在,无论是通过 IP 地址还是通过 discovery_devices 连接,都可以在关闭电源的情况下使用需要的灯、插头、电源板、集线器和摄像头。您的代码无需更改:客户端确定设备使用哪种协议并通过该协议登录。值得了解的三件事: 错误的密码可能会锁定设备。登录失败次数过多后,TPAP 设备会暂时拒绝每次登录。该库将错误的密码报告为 TPAP_CREDENTIALS ,将锁定报告为 TPAP_AUTH_ATTEMPTS_LIMIT 。不要在循环中重试其中任何一个。相机集线器尚不支持 TPAP。无论开关是打开还是关闭,固件 1.7.5 上的 H200(v0.10 中的新增功能,见下文)都会宣布 AES SSL,并且磁带库通过该信息进行登录。有些相机还不支持 TPAP。这取决于型号及其固件。网络上的 C220 和 C510W
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱