跳到正文
V2EX·· 3 小时前AI 评分39

华强北 AirTag 多端查看定位方案及 API 开源

让华强北 AirTag 支持多端查看定位(Android\iOS\Web)

AI 导读

一名 V2EX 用户为华强北 AirTag 实现 Android、iOS 和 Web 多端查看定位,并开源 API 集成与 HTML 端。方案通过 FindMy.py 解密 iCloud 中的加密位置报告,再定时请求 Apple 接口获取位置;绑定 Tag 仍需 Apple 设备,Android 客户端未开源。

正文

摘要

华强北 AirTag 目前价格非常的低,成为了官方 AirTag 的平替,用来做物品防丢器是真的不错,例如没有定位功能的电动车、摩托车、钥匙串、通勤手提包、狗、老人家、小孩子等。

华强北 AirTag 和苹果官方的区别:从远程定位方面看,都是基于 FindMy 网络实现,因此远程定位大差不差,但官方版带精确查找,华强北的做不到。

官方价格是 249 元一个,华强北价格最便宜 8.8 就可以买到一个,批量货源更便宜可做到 5 元一个。

image

买回来的原版只能使用 iPhone 绑定和查看位置,iCloud 网页版也看不到,这就让很多使用安卓手机做主力机的用户无法使用这款小东西。

续航

这款东西我自己用了 3 年,一直在买新的,因为陆陆续续就有新物品需要定位,来来回回来了七八个,续航方面是绝对不能相信商家宣传的能用大半年,实则 2 个月左右就得换电池。

华强北 FindMy Tag 是固定周期主动向外广播 BLE 蓝牙包,苹果手机路过,被动接收这个广播包,然后把位置上传云端,Tag 本身不会感知附近有没有 iPhone ,不管有没有人,它都会定时唤醒发射蓝牙广告包。

因此耗电量取决于你买的那个 tag 的厂商在设计之初设置的广播频率,有些是 2 秒一次、有些 3~5 秒一次、有些更长时间,广播频率越高,更新位置就越快一些,耗电也就越快一些。

image

开搞

本次实现的多端,得益于这个项目: https://github.com/malmeloo/FindMy.py

项目的技术原理:

Apple Find My Network
        ↓
    FindMy.py
        ↓
Rolling Keys / 加密位置报告解密
        ↓
    后台定时刷新
        ↓
     cache.json
        ↓
     FastAPI
        ↓
  Nginx / HTTPS
        ↓
  Web / App / Client

通过这个项目,将 iCloud 中的「查找」里面的「物品」加密位置报告导出来,然后请求 Mac 系统中的一个 Apple 官方接口,来获取 Apple 服务器里面的位置信息,然后做成 Api 就可以了,有了 Api ,客户端做成什么都行了。

截图

手机网页版:

image

PC 网页版:

image

Android 版:

image

开源 Api

基于上面说的那个项目,做成了一个便捷 Api ,Api 定时请求 Apple 接口,获取新位置,返回 JSON

https://github.com/likeyun/findmy-api

项目做了一键安装脚本,快捷安装部署,运行后做一个反代,用域名做成 API 就行了。

不过有一步你需要做选择,就是这个过程需要登录 AppleId ,用来获取 iCloud 的物品数据进行解密,所以这一步我为了方便一些不想折腾的人,就将整个过程做成了一个客户端去导出物品加密信息。如果你不信任这个客户端,那么建议你还是直接用 ai 跑这个 https://github.com/malmeloo/FindMy.py 项目去导出你的物品信息。

image

其它说明

  • Apple 设备是必须的,例如 iPhone ,新买回来的 Tag 需要使用 Apple 设备绑定,加入到 iCloud 中
  • 使用场景:非 Apple 随身设备的用户,方便在其它非 Apple 设备查看 Tag 位置的人群
  • 本次开源项目只开源了 Api 集成和 html 端,Android 没有开源,我自己用,你可以自行开发自己的 Android

来源:V2EX · v2ex.com