V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zchyit
V2EX  ›  问与答

一个开门 app 自动化

  •  
  •   zchyit · 43 天前 · 1672 次点击
    这是一个创建于 43 天前的主题,其中的信息可能已经有所发展或是发生改变。
    小区用了一个联网开门的东西,必须用他们的 app 。

    刚开始我抓包了他们提供给物业集成的 API ,跳过了全是广告的 app 。
    最近不知道怎么了,厂商停止了原有 app 的维护(换了一个广告更多的小程序),原先那套给物业的 API 也不能用了。

    又对小程序抓包,想用 IOS 捷径写一个开门脚本,最后发现开门动作是 WebSocket 发起的,IOS 捷径不支持。

    所以想问下 IOS 上有没有可以发送 WebSocket 的 app ,且可以被捷径调用的?
    一点办法没有的话,我是不是只能自己写个 app 了。。。
    第 1 条附言  ·  41 天前
    经过各种尝试,IOS 本地执行 JS 、Python ,云函数,本地服务器,最终选择了在家里的 NAS 跑一个 python 容器,手机用 Action 键触发捷径,发请求到 python 容器,触发容器来发 websocket 包开门。

    宽带是公网地址,延迟几乎可以忽略不计。
    22 条回复    2024-07-29 13:57:33 +08:00
    hkiJava
        1
    hkiJava  
       43 天前
    你可以用 qx,mitm 拦截域名,构造请求什么的
    StinkyTofus
        2
    StinkyTofus  
       43 天前   ❤️ 1
    写一个简单的网页连接 WebSocket 发送命令, 用捷径打开网页就好了。js 操作 WebSocket 还是挺简单的。
    InDom
        3
    InDom  
       43 天前
    补一下 #2 ,可以做成 pwa ,直接添加到桌面上,除了不能自动化,其他的跟捷径应该差不多。
    tool2dx
        4
    tool2dx  
       43 天前
    @StinkyTofus 一般都需要 cookie 认证或者签名算法吧,要不然这开门系统的安全性也太弱了。
    hideon
        5
    hideon  
       43 天前
    用小程序可能主要为了节约开发成本(跨平台),第二就是为了防止像楼主一样的吧(加强一些安全性)
    mogutouer
        6
    mogutouer  
       43 天前
    你如果家里有门铃可以开下面门的话,我是买了一个能接入米家的开关,藏在插座里面,把线接出来控制门铃那个按钮。

    然后设置离家 50 米自动开锁,连到快捷指令也可以 hey siri 开门,米家的 app 把快捷操作放出来也方便。
    Puteulanus
        7
    Puteulanus  
       43 天前
    JSBox 和 Pythonista 应该都支持,但两个都付费
    也可以用 Expo 搓一个 RN 的,有点类似不用付费和审核的微信小程序,前提是你熟悉 React 的话
    还有个办法是用云函数这种,转换成常规的 HTTP 调用,用捷径调云函数,云函数连 websocket 去开门
    Puteulanus
        8
    Puteulanus  
       43 天前
    @StinkyTofus
    @InDom 网页有跨域的问题吧
    zchyit
        9
    zchyit  
    OP
       43 天前
    @hkiJava qx 在用,但是 qx 抓包也抓不到 websocket 包,能实现吗?有没有相关的例子呢?
    @StinkyTofus 网页方案想过,需要服务器,增加了延迟(虽然不大,但是觉得不简洁)
    @mogutouer 这是个好办法,但是只能开单元门,小区门就不行了。
    @Puteulanus 只要有思路,我自信可以搞出来,毕竟 AI 可以提供很多帮助。JSBox 我试了,我判断是不支持 websocket 。Pythonista 要 68 ,没舍得。。。
    hkiJava
        10
    hkiJava  
       43 天前
    @zchyit #9 别用 qx 抓包,用 stream ,正则获取你要抓包的域名,关键点就在开门这个 http 请求的域名
    zchyit
        11
    zchyit  
    OP
       43 天前
    @hkiJava #10 我在电脑上用 Charles 抓的,都能抓到。
    stream 几年前用的,有一段时间总出问题,就卸载了。我装回来试试
    hkiJava
        12
    hkiJava  
       43 天前
    @zchyit #11 嗯 然后其实你纠结的点是广告,可以 qx 写规则去掉,应该比你说的方案工作量小
    Puteulanus
        13
    Puteulanus  
       43 天前
    @zchyit 我拿 JSBox 文档的代码测试是可以的 https://docs.xteko.com/#/network/socket ,你是说你的那个 App 的 websocket 试了不行吗?不过 JSBox 订阅跟 Pythonista 没差多少了

    Pythonista 淘宝能买到便宜的共享账号下载,挺强大个软件,用得舒服也可以考虑下付费
    它是老牌软件了,所以 ChatGPT 这种基本上都能直接写它的代码(训练的数据里估计包含了有网上的脚本)

    最简单的还是云函数转我觉得
    walkeronway
        14
    walkeronway  
       43 天前
    你之前发请求用的什么 APP ?我用的 APITester ,我看他可以使用 curl 命令或者 python 脚本来发送请求,你可以了解下看下行不行(我只发了 post 请求,没有试过这些),这个 APP 里面新建的请求是可以在捷径里面调用的
    yiroonli
        15
    yiroonli  
       43 天前
    哈哈,我这边的要在小程序打开的,好几个步骤,加载也有点慢。我自己也做了一个,点击启动就开门。
    [![9cf3dc4d65c366139c0b7c26930f9c88.jpeg]( https://us1.myximage.com/2024/07/26/9cf3dc4d65c366139c0b7c26930f9c88.jpeg)]( https://img.so/image/22ATV8)
    zchyit
        16
    zchyit  
    OP
       43 天前
    @Puteulanus #13 谢谢,我再在本地试试,主要还是跟喜欢一次性付费的东西。
    zchyit
        17
    zchyit  
    OP
       43 天前
    @walkeronway #14 apitester 可以发 websocket ,唯一不满足的就是 websocket 不能自动化执行,它得先建立连接,然后发送消息。 手动倒是没问题
    new123
        18
    new123  
       43 天前
    有软件 ishell 可以执行 python 脚本。 支持快捷指令。
    zchyit
        19
    zchyit  
    OP
       43 天前 via iPhone
    @new123 没找到,包括外区,名字对吗
    zchyit
        20
    zchyit  
    OP
       43 天前 via iPhone
    @new123 #18 是 ish 吗?看了下文档,
    Create a Shortcut that puts together the following steps.
    The Scripting "Open App" step to launch iSH.
    The Scripting "Wait" step to give the SSH server enough time to start.
    The Scripting "Run Script Over SSH" step to execute code in the iSH instance.
    A step to switch away from the iSH app. (Since iSH is no longer in front, the SSH server stops.
    第二步的 wait 让我觉得不简洁,我感觉自己多少有一点强迫症
    new123
        21
    new123  
       40 天前   ❤️ 1
    @zchyit 不好意思,好久没用了 名字打错了 a-shell 开源的。
    https://holzschu.github.io/a-Shell_iOS/
    zchyit
        22
    zchyit  
    OP
       40 天前
    @new123 #21 感谢,好用的很。完全本地执行,不用担心域名一堆连接问题了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1151 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:49 · PVG 07:49 · LAX 16:49 · JFK 19:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.