简而言之:为 parsecd 添加授权检查
CoreParsecLocation 是一个示例应用,演示了第三方应用如何在没有用户同意或许可的情况下访问用户的精确位置。parsecd/CoreParsec 还提供诸如本地化搜索建议、知识卡片和临时用户 ID 等信息。值得庆幸的是,我认为目前该用户 ID 不会被持久化或重复使用。
在例行的 Frameworks 探索中,我注意到一个到 parsecd 的活动 NSXPCConnection。经过几天的摆弄,我发现只要我伪造了正确的头部信息,parsecd 就会响应来自任何应用的搜索查询。在这种情况下,我使用了 SPPARSession 类,它会为 Spotlight 建立一个会话。
起初,我以为 PARResponse 对象只会返回一个 GeoIP 位置(这本身并不是很有用)。然而,在尝试了大量搜索查询后,我发现搜索“restaurants”会导致 parsecd 获取用户的精确位置。然后它通过 PARReponse 对象将位置信息返回给我。
parsec 还会返回其他信息,例如本地化新闻结果和搜索建议。我认为这些信息目前不包含任何可识别用户身份的信息。提交后,我计划进一步探索这些附加响应。
parsecd 多久询问一次新位置,但在测试期间,我没有在状态栏中看到位置指示器。Dynamic(可在此处找到:https://github.com/mhdhejazi/Dynamic)。利用 parsecd 并不需要该库,但它能让在没有公开头文件的情况下使用第三方 API 变得更加容易。parsecd 在没有连接时是否会返回位置信息。