Skip to content

Repository files navigation

ChinaTelecomMonitor

中国电信手机话费、流量、语音通话监控工具。纯 Python 实现,无需 Docker,一个脚本搞定全量查询 + 多渠道通知推送。

功能亮点

  • 全量数据查询 — 余额、欠费、本月消费、费用明细、通话用量(含分类)、通用/专用/总流量、流量包明细、共享套餐用量
  • 登录风控保护 — 连续失败 5 次自动停止,防止账号被风控锁定
  • 9 种通知推送渠道 — SMTP / PushPlus / Server酱 / Bark / Telegram / 企业微信 / 钉钉 / 飞书 / 自定义 Webhook,配置驱动,填了就推送、不填就跳过,可同时启用多个
  • 灵活输出控制 — 全局默认 + 每号独立覆盖,按需开关任意字段,输出内容完全由配置文件定义
  • 数据完整性补全 — 当 API 未返回通用/专用流量总量时,自动从流量包明细反算补全
  • 全中文配置 — JSON 配置文件全部使用中文键名,直观易读,零学习成本
  • Token 持久化 — 登录凭证自动缓存,避免频繁登录触发风控
  • 多号批量查询 — 配置文件一次配好,双击 BAT 即可查全部
  • 零依赖快速部署 — 纯 Python,双击 BAT 或定时任务即可运行;也支持 Docker 容器化部署
  • 可扩展架构 — 通知推送采用统一入口 + 渠道分发模式,新增渠道只需添加一个函数;输出字段通过配置映射表驱动,新增查询项只需扩展映射即可
  • I/O 密集型并发 — 多账号查询使用 asyncio.gather 并发,速度快

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 配置账号

cp telecom_config.example.json telecom_config.json

编辑 telecom_config.json,填入手机号、服务密码,按需调整输出设置:

{
  "输出设置": {
    "通用流量": 1,
    "专用流量": 1,
    "总流量": 1,
    "通话分类": 0
  },
  "手机号": [
    { "号码": "18000000000", "服务密码": "your_password" }
  ]
}

服务密码为电信 6 位数字服务密码,非登录密码。如忘记可在电信 APP 或拨打 10000 重置。

3. 运行查询

# 从配置文件读取所有号码
python telecom_query.py

# 单号查询
python telecom_query.py --phone 18000000000 --password your_password

# JSON 格式完整数据输出
python telecom_query.py --json

# 强制显示流量包明细
python telecom_query.py --packages

Windows 用户

双击 查询话费.bat 即可查询配置文件中的所有号码。

输出示例

以下手机号已脱敏处理,实际输出显示完整号码。

手机号:180****5334  城市:江西南昌
  余额:¥280.62
  本月消费:¥41.90
  通用流量:已用 0 KB / 总 40.00 GB
  专用流量:已用 5.22 GB / 总 540.00 GB
  总流量:已用 5.22 GB / 总 580.00 GB
  查询时间:2026-05-22 19:36:58

手机号:180****5393  城市:江西南昌
  余额:¥15.30
  本月消费:¥29.00
  通用流量:已用 3.14 GB / 总 40.00 GB
  专用流量:已用 1.20 GB / 总 30.00 GB
  总流量:已用 4.34 GB / 总 70.00 GB
  查询时间:2026-05-22 19:36:58

输出字段配置

telecom_config.json 中的 输出设置 控制每个字段是否显示,全局默认 + 每号独立覆盖,灵活度远高于固定输出脚本。

字段说明

字段 默认 说明
城市 1 所在省市
余额 1 账户余额
欠费 0 欠费金额
本月消费 1 当月已产生费用
费用明细 0 套餐/增值业务等逐项构成
通话已用 0 已用/总量(分钟)
通话剩余 0 剩余分钟数
通话分类 0 省内/国内等分类明细
通用流量 1 通用流量已用/总量
专用流量 1 专用流量已用/总量
总流量 1 总流量已用/总量
流量包明细 0 每行一条流量包
账单提示 0 账单周期等提示
查询时间 1 查询时间戳

1 = 显示,0 = 隐藏。在号码的 输出设置 中覆盖即可独立定制。

自定义输出示例

{
  "输出设置": {
    "通用流量": 1,
    "专用流量": 1,
    "总流量": 1,
    "通话分类": 0
  },
  "手机号": [
    {
      "号码": "18000000000",
      "服务密码": "your_password",
      "输出设置": {
        "费用明细": 1,
        "流量包明细": 1
      }
    }
  ]
}

该号码会额外显示费用明细和流量包明细,其余字段继承全局默认值。

扩展说明

输出字段由脚本内的 FIELD_MAP 映射表驱动,新增查询项只需:

  1. parse_query_data() 中解析新字段
  2. FIELD_MAP 中注册中文字段名 → 英文 key 的映射
  3. DEFAULT_OUTPUT 中设置默认开关

无需修改输出逻辑,配置即可生效。通知推送采用同样的扩展模式,新增渠道只需在 send_notify() 中添加对应分发函数。

通知推送

在配置文件中添加 通知推送 段,设置 "启用": true 后,脚本会在查询完成后自动推送结果。

基础配置

{
  "通知推送": {
    "启用": true
  }
}
  • 启用:是否开启通知推送(默认 false

支持的推送渠道

填入对应字段即可自动启用,不填则跳过。支持同时启用多个渠道。

渠道 配置字段 说明
SMTP 邮件 SMTP服务器 SMTP端口 SMTP_SSL 发件邮箱 邮箱密码或授权码 收件邮箱 最通用的推送方式
PushPlus PushPlus令牌 微信推送,填令牌即可
Server酱 Server酱密钥 微信推送,支持 Turbo 版
Bark Bark设备码 iOS 推送
Telegram Telegram机器人Token Telegram用户ID Telegram Bot 推送
企业微信 企业微信机器人Key 机器人 Webhook 推送
钉钉 钉钉机器人Token 钉钉机器人密钥 支持签名验证
飞书 飞书机器人Key 机器人 Webhook 推送
自定义 Webhook 自定义Webhook地址 自定义Webhook方法 自定义Webhook请求体 通用兜底,支持模板变量 $title $content

推送配置示例

{
  "通知推送": {
    "启用": true,
    "推送渠道": {
      "SMTP服务器": "smtp.qq.com",
      "SMTP端口": 465,
      "SMTP_SSL": true,
      "发件邮箱": "your@qq.com",
      "邮箱密码或授权码": "your_auth_code",
      "收件邮箱": "receiver@example.com"
    },
    "可选渠道": {
      "PushPlus令牌": "your_pushplus_token",
      "企业微信机器人Key": "your_wecom_key"
    }
  }
}

Docker 部署

项目根目录下提供 Dockerfile,可直接打包为镜像运行。配置文件和 Token 缓存通过挂载目录 /app/data 持久化。

构建与运行:

# 构建镜像
docker build -t telecom-monitor .

# 运行(挂载配置文件目录)
docker run --rm \
  -v /path/to/your/config:/app/data \
  telecom-monitor

telecom_config.json 放在宿主机挂载目录中,脚本会自动从 /app/data/telecom_config.json 读取。Token 缓存也会保存在该目录下。也可通过 -e TELECOM_DATA_DIR=/other/path 指定其他数据目录。

定时任务(cron):

# 每天早上 8 点自动查询并推送
0 8 * * * docker run --rm -v /path/to/your/config:/app/data telecom-monitor

青龙面板适配

详见 QINGLONG.md

核心优势:

电信脚本基于纯 API 登录,无需 Playwright 浏览器,比移动脚本更适合青龙面板环境。

快速步骤:

  1. 在青龙「依赖管理」安装 requests pycryptodome
  2. telecom_query.py 上传到青龙「脚本管理」
  3. 在同目录创建 telecom_config.json(参考 telecom_config.example.json
  4. 在青龙「定时任务」中新建任务,命令填 task telecom_query.py

Token 缓存在 data/tokens.json,首次登录后后续直接复用,无需重复输入密码。
登录连续失败 5 次会自动停止,防止账号被风控锁定。

运行时文件

脚本运行时会在数据目录下生成以下文件(已在 .gitignore 中排除):

telecom_tokens/
├── tokens.json      # 登录 Token 缓存
└── fail_count.json  # 登录失败计数(风控保护)

项目结构

TelecomMonitor/
├── telecom_query.py              # 主脚本(查询 + 通知推送)
├── telecom_config.example.json   # 配置文件模板(脱敏)
├── telecom_config.json           # 实际配置(需自建,含敏感信息)
├── Dockerfile                    # Docker 打包配置
├── requirements.txt              # Python 依赖
├── 查询话费.bat                  # Windows 快捷启动
├── .gitignore
└── README.md

致谢

感谢 gsons/boxjs 仓库提供的电信接口数据与分析。

免责声明

本项目仅供个人学习和研究使用。请勿用于任何商业或非法用途。使用本工具所产生的任何后果由使用者自行承担。请合理使用,避免频繁调用对电信服务器造成压力。

License

MIT

About

中国电信手机话费、流量、语音通话监控工具,纯 Python 实现

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages