惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
V
V2EX
博客园 - 叶小钗
雷峰网
雷峰网
小众软件
小众软件
量子位
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
Martin Fowler
Martin Fowler
G
Google Developers Blog
博客园_首页
博客园 - Franky
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享

竹林里有冰的博客

Nuxt SSG 博客的尾斜杠到底怎么加? | 竹林里有冰的博客 小米 Xiaomi Book Pro 14 (Ultra X7) Linux 兼容性实测 | 竹林里有冰的博客 国内(大陆)版小米 FCM 熄屏断连:Rootless 环境下的尝试与可能的解决方案 | 竹林里有冰的博客 我没法访问 dl.google.com —— 记一次 TUN 下的网络 debug | 竹林里有冰的博客 Vercel 的缓存控制,你注意过吗? | 竹林里有冰的博客 小记 —— Caddy 在 Layer 4 上的流量代理实践 | 竹林里有冰的博客 你的域名后缀拖慢你的网站速度了嘛?——再谈 DNS 冷启动 | 竹林里有冰的博客 DNS 冷启动:小型站点的“西西弗斯之石” | 竹林里有冰的博客 HTTP/2 Server Push 已事实性“死亡”,我很怀念它 | 竹林里有冰的博客 Nuxt Content v3 中数组字段的筛选困境与性能优化 | 竹林里有冰的博客 后 OCSP 时代,浏览器如何应对证书吊销新挑战 | 竹林里有冰的博客 初试 Github Action Self-hosted Runner,想说爱你不容易 | 竹林里有冰的博客 DNS 解析延迟毁了我的图床优化 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(下):告别 DOM 操作,拥抱 AST 与函数式渲染 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(上):从暴力刷新、分块更新到 Morphdom 的华丽变身 | 竹林里有冰的博客 node-sass 迁移至 dart-sass 踩坑实录 | 竹林里有冰的博客 前端中的量子力学——一打开 F12 就消失的 Bug | 竹林里有冰的博客 2025 年,如何为 web 页面上展示的视频选择合适的压缩算法? | 竹林里有冰的博客 el-image 和 el-table 怎么就打架了?Stacking Context 是什么? | 竹林里有冰的博客 2025年,前端如何使用 JS 将文本复制到剪切板? | 竹林里有冰的博客 ssh 拯救世界——通过 ssh 隧道在内网服务器执行 APT 更新 | 竹林里有冰的博客 Cudy TR3000 吃鹅(daed)记 | 竹林里有冰的博客 使用 Cloudflare Workers 监控 Fedora Copr 构建状态 | 竹林里有冰的博客 基于 Cloudflare Workers 实现的在线服务状态检测告警系统 | 竹林里有冰的博客 构建部署在 Cloudflare Workers 上的 TG Bot | 竹林里有冰的博客 2024年,Firefox 是唯一还在坚持执行在线的 SSL 证书吊销状态检查的主流浏览器 | 竹林里有冰的博客 小爱课程表适配不完全指北——以 ZJUT 本科正方教务系统为例 | 竹林里有冰的博客 将博客从 waline v2 更新到 waline v3 | 竹林里有冰的博客 给家里云装上 Fedora 41 KDE 后,我是如何配置的 | 竹林里有冰的博客 为 Hexo 添加 follow 认证 | 竹林里有冰的博客
使用 Root 后的安卓手机获取向日葵智能插座 C2 的开关 api | ...
竹林里有冰 · 2023-11-01 · via 竹林里有冰的博客

之前看到 https.gs 上的一篇文章,发现可以抓取向日葵智能插座 C1Pro 的开关 api,并实现局域网或公网的控制。这样一来,我们其实就不需要依赖于向日葵自己家的 App 去实现智能插座的开关操作,还是比较方便的。今年趁着双十一,直接低价拿下来带有计电功能的 C2,便也来试一试能不能抓到接口。

首先,拿到插座以后肯定还是下载向日葵的官方 App,完成 wifi 的链接,这里就不再赘述。

向日葵的操作界面向日葵的操作界面

然后就可以打开我们的抓包软件。需要注意的是,原博客中抓到的接口是 http 协议,但这个接口在新版的 App 上已经变为了 https 协议,因此我们需要找一台 Root 过后的安卓机去抓包。抓包的步骤没什么好说的,用 Root 权限给本地安装自己的 CA 证书,然后打开抓包模式,在向日葵的 App 那边开关几次插座,回来就能看到这一段时间内的请求。

HttpCanary 操作界面HttpCanary 操作界面

点开可以看到,这是一个 GET 请求,一共有如下几个参数

  • status 这是状态设置,设置为 1 时为打开指令,0 为关闭指令
  • sn 这个应该是设备码
  • key 应该是用来操作设备的密钥
  • _api 操作类型,我只关心插座的打开关闭,所以设为 set_plug_status 即可
  • time 奇奇怪怪的而参数,也不是 unix 时间戳,反正照抄就行了
  • index 原博说是用来给插排操作指定第几个孔位的,我们智能插座直接设置为 0 即可

理论上你用抓出来的 url 已经可以实现公网访问了,但我测试下来并不行,可能是向日葵那边的服务器做了别的校验,比如说判断了 ua 之类的?不过无所谓,我本来就是打算局域网内操作。

登陆路由器后台,寻找疑似智能插座的设备,一般很容易就能找到。

路由器后台管理界面路由器后台管理界面

使用 nmap 命令扫对应 ip 开放的端口。不知道是不是巧合,我和原博扫出来的端口都是 6767 端口。

扫描端口扫描端口

将上面抓到的 url 的域名换成 ip:port,https 协议改成 http 协议,在浏览器中直接访问,获得了 0 的状态码,插座也正常开关。

浏览器操作测试浏览器操作测试