misiektoja/psn_monitor

GitHub: misiektoja/psn_monitor

一个用于实时追踪 PlayStation Network 玩家游戏活动并支持邮件通知与数据导出的 Python 命令行监控工具。

Stars: 39 | Forks: 7

# psn_monitor

GitHub Release PyPI Version GitHub Stars Python Versions License Last Commit Maintenance

用于实时监控 **Sony PlayStation (PSN) 玩家活动**的强大工具。 ### 🚀 快速安装 ``` pip install psn_monitor ```

psn_monitor_screenshot

## 功能 - **实时追踪** PlayStation 用户的游戏活动(包括检测用户何时上线/下线或玩游戏) - **用户活动的基本统计**(不同状态的持续时间、玩一款游戏所花费的时间、单次会话的总时长和游戏数量等) - **详细的用户信息**显示模式,提供全面的 PlayStation 资料洞察,包括 **PlayStation/PSN ID**、**在线状态**和**可游玩状态**、**平台信息**、**PS+ 订阅状态**、**认证状态**、**关于我**、**语言**、**好友关系**和**共同好友数量**、**个人资料 URL**、带有**最后游玩日期**和**总游戏时间**的**最近游玩的游戏**,以及可选的**奖杯摘要**和**最近获得的奖杯** - 针对各种事件的**电子邮件通知**(玩家上线/下线、开始/结束/更换游戏、错误) - **将所有用户活动**连同时间戳保存到 **CSV 文件**中 - **状态持久化** - 自动将最后状态保存到 JSON 文件中,以便在重启后恢复监控 - **智能会话连续性** - 处理短暂的离线中断并保留会话统计数据 - **灵活的配置** - 支持配置文件、dotenv 文件、环境变量和命令行参数 - 可以通过信号**控制正在运行的**脚本副本 - **函数式、过程式 Python**(极少的 OOP) ## 目录 1. [要求](#requirements) 2. [安装](#installation) * [从 PyPI 安装](#install-from-pypi) * [手动安装](#manual-installation) * [升级](#upgrading) 3. [快速开始](#quick-start) 4. [配置](#configuration) * [配置文件](#configuration-file) * [PSN NPSSO Code](#psn-npsso-code) * [用户隐私设置](#user-privacy-settings) * [时区](#time-zone) * [SMTP 设置](#smtp-settings) * [存储 Secrets](#storing-secrets) 5. [用法](#usage) * [用户信息显示模式](#user-information-display-mode) * [监控模式](#monitoring-mode) * [电子邮件通知](#email-notifications) * [CSV 导出](#csv-export) * [检查间隔](#check-intervals) * [信号控制 (macOS/Linux/Unix)](#signal-controls-macoslinuxunix) * [使用 GRC 为日志输出着色](#coloring-log-output-with-grc) 6. [更新日志](#change-log) 7. [许可证](#license) ## 要求 * Python 3.10 或更高版本 * 库:[PSNAWP](https://codeberg.org/YoshikageKira/psnawp)、`requests`、`python-dateutil`、`pytz`、`tzlocal`、`python-dotenv` 测试环境: * **macOS**:Tahoe、Sequoia、Sonoma、Ventura * **Linux**:Raspberry Pi OS (Trixie、Bookworm、Bullseye)、Ubuntu 24/25、Rocky Linux 8.x/9.x、Kali Linux 2026/2025/2024 * **Windows**:11、10 它应该也能在其他版本的 macOS、Linux、Unix 和 Windows 上运行。 ## 安装 ### 从 PyPI 安装 ``` pip install psn_monitor ``` ### 手动安装 将 *[psn_monitor.py](https://raw.githubusercontent.com/misiektoja/psn_monitor/refs/heads/main/psn_monitor.py)* 文件下载到所需位置。 通过 pip 安装依赖项: ``` pip install PSNAWP requests python-dateutil pytz tzlocal python-dotenv ``` 或者,从下载的 *[requirements.txt](https://raw.githubusercontent.com/misiektoja/psn_monitor/refs/heads/main/requirements.txt)* 安装: ``` pip install -r requirements.txt ``` ### 升级 如果是从 PyPI 安装的,升级到最新版本: ``` pip install psn_monitor -U ``` 如果您是手动安装的,请下载最新的 *[psn_monitor.py](https://raw.githubusercontent.com/misiektoja/psn_monitor/refs/heads/main/psn_monitor.py)* 文件以替换现有安装。 ## 快速开始 - 获取您的 [PSN npsso code](#psn-npsso-code) 并追踪 `psn_user_id` 的游戏活动: ``` psn_monitor -n "your_psn_npsso_code" ``` 或者,如果您是[手动安装](#manual-installation)的: ``` python3 psn_monitor.py -n "your_psn_npsso_code" ``` 获取所有支持的命令行参数/标志列表: ``` psn_monitor --help ``` ## 配置 ### 配置文件 大多数设置可以通过命令行参数进行配置。 如果您想持久化存储配置,请生成一个默认的配置模板并将其保存到名为 `psn_monitor.conf` 的文件中: ``` psn_monitor --generate-config > psn_monitor.conf ``` 编辑 `psn_monitor.conf` 文件并更改任何所需的配置选项(每个选项都提供了详细注释)。 ### PSN NPSSO Code 登录您的 [My PlayStation](https://my.playstation.com/) 账号。 在另一个标签页中,前往:[https://ca.account.sony.com/api/v1/ssocookie](https://ca.account.sony.com/api/v1/ssocookie) 复制 `npsso` code 的值。 使用以下方法之一提供 `PSN_NPSSO` secret: - 在运行时使用 `-n` / `--npsso-key` 传递 - 将其设置为[环境变量](#storing-secrets)(例如 `export PSN_NPSSO=...`) - 将其添加到 [.env 文件](#storing-secrets)(`PSN_NPSSO=...`)中以供持久使用 后备方案: - 将其硬编码在代码或配置文件中 Token 将在 2 个月后过期。该工具会在过期时发出警报。 如果您将 `PSN_NPSSO` 存储在 dotenv 文件中,您可以更新其值并向进程发送 `SIGHUP` 信号,以重新加载包含新 `npsso` 值的文件,而无需重启工具。更多信息请参见[存储 Secrets](#storing-secrets)和[信号控制 (macOS/Linux/Unix)](#signal-controls-macoslinuxunix)。 ### 用户隐私设置 为了监控 PlayStation 用户活动,需要在受监控的用户账号上启用适当的隐私设置。 用户应前往 [PlayStation 账号管理](https://www.playstation.com/acct/management)。 **隐私设置 → 个人信息 | 消息 → 在线状态和正在游玩** 中的值应设置为**仅限好友**或**任何人**。 ### 时区 默认情况下,使用 `tzlocal` 自动检测时区。您可以在 `psn_monitor.conf` 中手动设置: ``` LOCAL_TIMEZONE='Europe/Warsaw' ``` 您可以像这样获取 pytz 支持的所有时区列表: ``` python3 -c "import pytz; print('\n'.join(pytz.all_timezones))" ``` ### SMTP 设置 如果您想使用电子邮件通知功能,请在 `psn_monitor.conf` 文件中配置 SMTP 设置。 使用 `--send-test-email` 标志验证您的 SMTP 设置(该工具将尝试发送一封测试电子邮件通知): ``` psn_monitor --send-test-email ``` ### 存储 Secrets 建议将 `PSN_NPSSO` 或 `SMTP_PASSWORD` 等 secrets 存储为环境变量或 dotenv 文件。 在 **Linux/Unix/macOS/WSL** 系统上使用 `export` 设置环境变量: ``` export PSN_NPSSO="your_psn_npsso_code" export SMTP_PASSWORD="your_smtp_password" ``` 在 **Windows 命令提示符**上使用 `set` 代替 `export`,在 **Windows PowerShell** 上使用 `$env`。 或者,将它们持久地存储在 dotenv 文件中(推荐): ``` PSN_NPSSO="your_psn_npsso_code" SMTP_PASSWORD="your_smtp_password" ``` 默认情况下,该工具会自动在当前目录及其上层目录中搜索名为 `.env` 的 dotenv 文件。 您可以使用 `DOTENV_FILE` 或 `--env-file` 标志指定自定义文件: ``` psn_monitor --env-file /path/.env-psn_monitor ``` 您也可以使用 `DOTENV_FILE = "none"` 或 `--env-file none` 禁用 `.env` 自动搜索: ``` psn_monitor --env-file none ``` 作为后备方案,您也可以将 secrets 存储在配置文件或源代码中。 ## 用法 ### 用户信息显示模式 该工具提供了一个详细的用户信息显示模式,可显示全面的 PlayStation 资料洞察。此模式显示一次信息然后退出(它不会运行持续监控)。 要获取 PlayStation (PSN) 用户 ID(在以下示例中为 `psn_user_id`)的详细用户信息,请使用 `-i` 或 `--info` 标志: ``` psn_monitor -i ``` 如果您尚未设置 `PSN_NPSSO` secret,您可以使用 `-n` 标志: ``` psn_monitor -i -n "your_psn_npsso_code" ``` 这将显示: - PlayStation/PSN ID - 在线状态和可游玩状态 - 平台信息 - PS+ 订阅状态 - 认证状态 - 关于我 - 语言 - 好友关系和共同好友数量 - 个人资料 URL - 带有最后游玩日期和总游戏时间的最近游玩的游戏 要同时显示奖杯摘要和最近获得的奖杯列表,请添加 `--trophies` 标志: ``` psn_monitor -i --trophies ``` 要禁用获取最近游玩的游戏列表(执行速度更快),请使用 `--no-recent-games` 标志: ``` psn_monitor -i --no-recent-games ``` 您可以组合使用这两个标志: ``` psn_monitor -i --trophies --no-recent-games ```

psn_monitor_info

### 监控模式 要监控特定用户的活动,只需输入 PlayStation (PSN) 用户的 ID(在以下示例中为 `psn_user_id`): ``` psn_monitor ``` 如果您尚未设置 `PSN_NPSSO` secret,您可以使用 `-n` 标志: ``` psn_monitor -n "your_psn_npsso_code" ``` 默认情况下,该工具会在以下位置查找名为 `psn_monitor.conf` 的配置文件: - 当前目录 - 主目录 (`~`) - 脚本目录 如果您按照[配置](#configuration)中的说明生成了配置文件,但以其他名称或保存在其他目录中,您可以使用 `--config-file` 标志指定其位置: ``` psn_monitor --config-file /path/psn_monitor_new.conf ``` 该工具将一直运行直到被中断(`Ctrl+C`)。使用 `tmux` 或 `screen` 来保持持久化。 您可以通过运行多个脚本实例来监控多个 PSN 玩家。 该工具会自动将其输出保存到 `psn_monitor_.log` 文件中。可以通过 `PSN_LOGFILE` 配置选项在设置中进行更改,或者通过 `DISABLE_LOGGING` / `-d` 标志完全禁用。 该工具还会将时间戳和最后状态(每次更改后)保存到 `psn__last_status.json` 文件中,因此最后状态在工具重启后仍然可用。 ### 电子邮件通知 要在用户上线或下线时启用电子邮件通知: - 将 `ACTIVE_INACTIVE_NOTIFICATION` 设置为 `True` - 或使用 `-a` 标志 ``` psn_monitor -a ``` 要在用户开始、停止或更改所玩的游戏时获得通知: - 将 `GAME_CHANGE_NOTIFICATION` 设置为 `True` - 或使用 `-g` 标志 ``` psn_monitor -g ``` 要在发生错误时禁用发送电子邮件(默认启用): - 将 `ERROR_NOTIFICATION` 设置为 `False` - 或使用 `-e` 标志 ``` psn_monitor -e ``` 请确保您之前已经定义了 SMTP 设置(请参见 [SMTP 设置](#smtp-settings))。 电子邮件示例:

psn_monitor_email_notifications

### CSV 导出 如果您想将 PSN 用户的所有报告活动保存到 CSV 文件中,请设置 `CSV_FILE` 或使用 `-b` 标志: ``` psn_monitor -b psn_user_id.csv ``` 如果该文件不存在,将会被自动创建。 ### 检查间隔 如果您想自定义轮询间隔,请使用 `-k` 和 `-c` 标志(或相应的配置选项): ``` psn_monitor -k 30 -c 120 ``` * `PSN_ACTIVE_CHECK_INTERVAL`、`-k`:用户在线时的检查间隔(秒) * `PSN_CHECK_INTERVAL`、`-c`:用户离线时的检查间隔(秒) ### 信号控制 (macOS/Linux/Unix) 该工具实现了多个信号处理程序,允许在无需使用新的配置选项/标志重启工具的情况下更改工具的行为。 支持的信号列表: | 信号 | 描述 | | ----------- | ----------- | | USR1 | 切换用户上线或下线时的电子邮件通知 (-a) | | USR2 | 切换用户开始/停止/更换游戏时的电子邮件通知 (-g) | | TRAP | 加用户在线时的玩家活动检查计时器(增加 30 秒) | | ABRT | 减少用户在线时的玩家活动检查计时器(减少 30 秒) | | HUP | 从 .env 文件重新加载 secrets | 使用 `kill` 或 `pkill` 发送信号,例如: ``` pkill -USR1 -f "psn_monitor " ``` 由于 Windows 仅支持有限数量的信号,此功能仅在 Linux/Unix/macOS 上可用。 ### 使用 GRC 为日志输出着色 您可以使用 [GRC](https://github.com/garabik/grc) 来为日志着色。 添加到您的 GRC 配置(`~/.grc/grc.conf`)中: ``` # 监控日志文件 .*_monitor_.*\.log conf.monitor_logs ``` 现在将 [conf.monitor_logs](https://raw.githubusercontent.com/misiektoja/psn_monitor/refs/heads/main/grc/conf.monitor_logs) 复制到您的 `~/.grc/` 目录中,当使用 `grc` 工具时,日志文件应该会有漂亮的颜色。 示例: ``` grc tail -F -n 100 psn_monitor_.log ``` ## 更新日志 详情请参见 [RELEASE_NOTES.md](https://github.com/misiektoja/psn_monitor/blob/main/RELEASE_NOTES.md)。 ## 许可证 在 GPLv3 许可下授权。请参见 [LICENSE](https://github.com/misiektoja/psn_monitor/blob/main/LICENSE)。
标签:ESC4, OSINT, PlayStation, Python, 二进制发布, 开源工具, 数据统计, 无后门, 状态监控, 端口扫描, 逆向工具