嘿 Siri 前往香港|如何通过 Siri 控制路由器代理

昨晚洗澡的时候想着在电视上看部港区 Netflix 的电影,因为有喊 Siri 播放音乐的习惯,我就想能不能通过 Siri 直接切换节点,那岂不是特别方便。今天就实践了下,感觉还挺方便,写个教程分享下。

省流助手:

  1. 路由器、旁路由、或者 Mac 网关使用的是 Clash。(openclash、shellclash、MerlinClash、ClashX Rro、Clash For Windows 都可以)
  2. Mac Surge 作为网关也可以,操作基本一致。

🧠 基本思路

  1. iPhone、Mac、HomePod 都支持 Siri 且 Siri 也支持快捷指令 ‎Shortcuts。
  2. ‎快捷指令支持 http 请求功能,Clash 和 Surge 也都有 restful API。
  3. 所以只用写一个 http 请求的快捷指令就能控制路由器的节点或开关代理了

✅ 通过 Siri 控制 Clash 配置

💻 获取 Clash 请求信息(推荐使用 chrome 浏览器)

截屏2021-12-13 下午1.54.59

openclash 默认就有 Yacd 和 Dashboad 控制面板,ShellClash 也是默认有的。如果你不知道 Clash 程序的控制面板在哪里:你可以先检查你在的 Clash 配置开启,然后打开默认的控制面板或是 Yacd 的面板填入信息即可。

截屏2021-12-13 下午2.05.15

Host 是你 Clash 网关设备局域网的 IP,端口在你的 Clash 文件里的 external-controller,密钥是配置文件里的 secret。

截屏2021-12-13 下午2.07.27

比如我打开就是这样,我点击节点选择便可以切换节点,或是选择全球直连则意味着关闭代理。

截屏2021-12-13 下午2.09.46

打开开发者工具(推荐使用 Chrome 浏览器,Mac 快捷按键是: Cmd+Opt+I,Windows Linux 是: F12,Ctrl+Shift+I )

截屏2021-12-13 下午2.13.37

然后在右边👉选择 Network-Fetch/XHR。

截屏2021-12-13 下午2.23.14

然后切换下节点,右边就能看到网络请求了。我们点开那个最长的(我这里分组名为「节点选择」是中文所以看起来乱码的,Request Method:PUT 为的请求就对了,你的如果分组名是英文则直接对应的英文分组名,看起来则不是乱码)。复制 Request URL: 后面那个 url,下面会用到。

下面 Request Headers 的 Authorization: Bearer 123456 也会用到,不过这里其实就后台控制密码,没有设置后台密码的这里则没有。

如果你想通过 Siri 操作的不是节点选择,而是别的比如 “自动选择”、“国外媒体”等也是同样的操作。

🔧 创建 Siri 快捷指令

IMG_1453 2

打开快捷指令 App,选择 + 号,点击 添加操作,搜索 url 选择获取 URL 内容。

IMG_1457 2

在第一栏的 URL 里填上上一步的“Request URL”链接,然后点击内容展开。

IMG_1464
  1. 方法我们选择 PUT

  2. 添加头部

    键填写:Authorization,文本:Bearer 123456(这个 123456 是我 clash 后台控制密码,如果你 Clash 后台没有设置密码这步可以不填)

  3. 添加请求体(选择文本)

    键填写:name,文本:你的节点的名称(我这里是:台湾 01 [ H1 ],完全复制 clash 面板的里任意节点名字即可,带 emoji 也直接复制,「🎯 全球直连 」这种也可以)

IMG_1466

最后修改默认的「获取 URL 内容」为你想要的 Siri 关键词,再点击右上角 X 即可。我这里是“切换到台湾”,你可以改成你喜欢习惯的。

🔒 如何验证:

截屏2021-12-13 下午3.06.52

点开捷径选择执行(播放按钮▶︎)没有任何返回即为成功。(有返回则一般为错误信息)

截屏2021-12-13 下午3.09.44

在 clash 控制面板可以看到切换到了指定节点。

🍇 如何创建更多

IMG_1470
  1. 选择做好的快捷指令复制。
  2. 修改请求体里的节点名和 Siri 关键词即可。

🪢 总结:

我自己用下来还挺方便的,因为 Siri 会通过 iCloud 同步快捷指令,所以任意局域网设备都能完成这个操作包括 HomePod。

如果你想参考我的可以点击这里,只能参考哦,你还是得自己修改,如果大家不会 surge 版本我后面可以考虑写一下。其实大家如果用一套 Clash 配置模版的话这个倒是可以通用的,因为就局域网 IP 地址不一样。