# pypush：Apple 推送协议的 Python 客户端

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

- 类型：案例
- 目标：协议
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-19
- 收录于：2026-10-27
- 原始资源：<https://github.com/JJTech0130/pypush>
- 一手来源：<https://github.com/JJTech0130/pypush/blob/71aa2e4442061596f75e6b02dfad613330127b5b/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/pypush-apns-protocol-case/>
- 记录 JSON：<https://awesomerea.org/resources/pypush-apns-protocol-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/pypush-apns-protocol-case/index.md)

## 使用条件与局限

- 审阅对象为 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。

## 一手来源

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

## 同分区更多条目：协议

- [PixMob 红外逆向工程：在家控制活动手环](https://awesomerea.org/zh/resources/pixmob-ir-protocol-case/index.md) · 案例
- [OpenDrop：Apple AirDrop 的开源重新实现](https://awesomerea.org/zh/resources/opendrop-airdrop-reimplementation-case/index.md) · 案例
- [bluefluff：逆向分析 Furby Connect 的蓝牙低功耗协议](https://awesomerea.org/zh/resources/bluefluff-furby-connect-ble-case/index.md) · 案例
- [pyatv：逆向工程实现的 Apple TV 与 AirPlay 协议客户端](https://awesomerea.org/zh/resources/pyatv-apple-tv-airplay-protocols-case/index.md) · 案例
- [BudsPro-Headtracking：通过 Samsung 串口协议获取 Galaxy Buds Pro 头部追踪数据](https://awesomerea.org/zh/resources/budspro-headtracking-case/index.md) · 案例
- [Even G2 协议：逆向分析 Even Realities G2 智能眼镜的 BLE 通信](https://awesomerea.org/zh/resources/even-g2-ble-protocol-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
