使用快捷指令捷径实现自动亲邻开门

由于最近快递只能送到小区门口,大大增加了出入小区的频次,也越来越发觉每次掏出门禁、刷门禁这个动作很繁琐,特别是在拿了很多东西的情况下。

因此希望通过更便捷的方式打开小区门禁,我选择通过iOS的“快捷指令/捷径”。

实现思路:抓包开门请求,使用快捷指令/捷径模拟请求。

尝试一

第一个想到的是抓小程序的请求链接。在WiFi中设置好电脑的代理地址和端口,打开Charles进行抓包,会有下面四个关键请求:

# 请求1,初次登录,换取sessionId
https://mobileapi.qinlinkeji.com/api/wxmini/v3/appuser/checkLogin?sessionId=undefined

# 请求2,刷新首页
https://mobileapi.qinlinkeji.com/api/wxmini/v3/appuser/refresh?sessionId=wxmini:XXXXX

# 请求3,获取最近使用的小区门禁
https://mobileapi.qinlinkeji.com/api/doorcontrol/queryUserDoorByCache?sessionId=wxmini:XXXXX

# 请求4,打开指定门禁
https://mobileapi.qinlinkeji.com/api/open/doorcontrol/v2/open?sessionId=wxmini:XXXXX

这四个请求都为POST方式。当然,请求时需要带上相关参数,具体抓包可见。

对我们有价值的是请求4,使用“快捷指令/捷径”模拟请求4即可。

刚做完的时候还是好用的,但是到了第二天,就发现无法正常开门,猜测到是sessionId过期了。通过搜寻,找到一个可以使sessionId不过期的方法,应该是定期向亲邻服务器模拟请求2,使当前使用的sessionId出于活跃状态。

但我不推荐这样做,原因:1.我没尝试;2.就算有用,你还需要有个服务定期请求,也增加了不必要的浪费。

尝试二

在抓小程序无果后,想到了能不能抓取亲邻开门App的请求。App相比小程序,更加自由,认证方式也比较简单,我猜sessionId应该也能保持很久吧?

在WiFi中设置好电脑的代理地址和端口,打开Charles进行抓包,运行亲邻开门App。

奇怪的是无论怎么操作都没有抓到任何请求,这应该是App强制跳过了代理。

解决方法也很简单,使用系统VPN进行代理转发。我这里使用的是Surge,新建一个代理规则,默认走代理,代理服务器的IP和端口,填写电脑的代理地址和端口。测试一下,能抓到请求了。

关键请求和小程序类似,我就不再列举,开门请求为:

# 开门请求
https://mobileapi.qinlinkeji.com/api/open/doorcontrol/v2/open?appChannel=2&macAddress=FC19CA012345&sessionId=app:XXXXX

其中macAddress的值为门禁的mac地址,sessionId为App的登录session。

目前session一直有效中。

已创建好的“快捷指令/捷径”在 https://sharecuts.cn/shortcut/5342 ,或直接扫描下方二维码添加。

发表评论

电子邮件地址不会被公开。 必填项已用*标注