案例

pypush:Apple 推送协议的 Python 客户端

以与平台无关的 Python 重新实现 Apple 私有推送通知服务(APNs)协议的客户端:它以 Apple 设备身份完成激活,连接 APNs courier 服务器,生成限定于应用的令牌并接收推送通知。项目最初是作者 iMessage 逆向研究的概念验证,但当前重写版暂时移除了 IDS 和 iMessage 支持。它在 Apple 官方客户端之外使用 Apple 的服务。

使用条件与局限

  • 审阅对象为 2026-03-15 的 main 最新提交,与 PyPI 上的 v2.0.2 版本一致。README 警告重写版尚不稳定,许多功能已被暂时移除,3.0.0 之前不应期待稳定。IDS、iMessage、GrandSlam 和 CloudKit 包都是空占位,因此早期的 iMessage 成果不在此版本中。
  • 激活和连接会通过项目所称的 Apple 内部 API 访问 Apple 线上的激活服务器和 APNs 服务器,处于 Apple 官方客户端之外;README 指出部分 API 可能需要设备标识符。Apple 对这些服务的条款另行适用。本条目不记录任何账号、标识符或凭据,也特意不链接测试资源中的证书文件。
  • 需要 Python 3.9+ 及 anyio、httpx(HTTP/2)和 cryptography;cli 附加依赖会加入 Frida、Rich 和 Typer。命令行可在指定主题上监听通知;其代理模式用于观察 Mac 自身的 APNs 流量,会用 Frida 附加到本机 apsd 守护进程,需要关闭系统完整性保护(SIP)并以 root 运行。
  • 拉取请求的 CI 在 Linux、macOS 和 Windows 上以 Python 3.9–3.12 运行 Ruff 和 pytest。测试会向 Apple 服务器激活、建立 APNs 连接,并通过限定令牌往返一条沙盒通知,因此依赖线上服务,而非离线协议样本。本次来源核查未运行测试、激活或连接。
  • LICENSE 为 Server Side Public License v1,包元数据将其归类为 Other/Proprietary;README 称项目已被 Beeper 收购,许可问题需联系 Beeper。所审阅来源未确立任何 AI 或 REA 的使用。

关于此条目

类型
案例
类别
独立重建案例
关联
独立重建项目
目标
协议

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · JJTech0130/pypush · 修订 71aa2e4
  2. pyproject.toml GitHub · JJTech0130/pypush · 修订 71aa2e4
  3. LICENSE GitHub · JJTech0130/pypush · 修订 71aa2e4
  4. pypush GitHub · JJTech0130/pypush · 修订 71aa2e4
  5. pypush/apns/__init__.py GitHub · JJTech0130/pypush · 修订 71aa2e4
  6. pypush/apns/lifecycle.py GitHub · JJTech0130/pypush · 修订 71aa2e4
  7. pypush/apns/protocol.py GitHub · JJTech0130/pypush · 修订 71aa2e4
  8. pypush/cli/__init__.py GitHub · JJTech0130/pypush · 修订 71aa2e4
  9. tests/test_apns.py GitHub · JJTech0130/pypush · 修订 71aa2e4
  10. .github/workflows/lint.yml GitHub · JJTech0130/pypush · 修订 71aa2e4
  11. https://github.com/JJTech0130/pypush/releases/tag/v2.0.2
  12. https://pypi.org/project/pypush/2.0.2/

同分区更多条目:协议

协议分区全部 28 项资源协议案例(10)