联通余量提醒

ChinaUnicom

联通余量(v4)
GitHub:https://github.com/ChinaTelecomOperators/ChinaUnicom

因为开发者懒 如果你要更换当前使用的账号 请自行清空所有数据(青龙清除环境变量和.dat文件) 保证无脏数据后 再使用

由于不可抗力, 如果自动登录方式无法使用, 请参考以下方式使用 token_online 续命:

自动抓包

最新版模块已加回联通手厅重写(可自动抓取并保存 appId, token_online, cookie)

手动抓包

使用官方客户端, 抓包 https://m.client.10010.com/mobileService/onLine.htm

取出请求中的 token_online 和 appId 的值, 填入/写入本脚本需要使用的地方.

如: BoxJs 字段 或 青龙/Node.js 中.

简单来说, 就是把官方的几个字段扒下来 塞进去. 目前使用 token_online 和 appId 续登录状态的逻辑还能用, 先一起苟着吧…

以 Surge 为例(其他抓包工具同理, 自己去学怎么看这个 url 对应的请求体, 别问):

注意看下面三张图里的内容: 1. 是请求的 URL 2. 是告诉你看 请求体 里的内容, 不要傻乎乎地去找 请求头 . 其他抓包工具同理, 自己去学怎么看这个 url 对应的请求体, 别问




抓包后, 可在 BoxJs 中查看, 并复制粘贴到其他地方使用

总有人不看文档, 加一个传送门 青龙等,不使用短信验证码登录

关于请求超时

  • 自己处理 m.client.10010.com 的分流
  • 修改请求超时参数 默认为 15s

IOS等

安装

Surge

使用模块

https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010.sgmodule

Shadowrocket

使用模块

⚠️ Shadowrocket 不支持跳转 可能有问题 使用下面这个👇🏻

https://mirror.ghproxy.com/https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010.shadowrocket.sgmodule

如果 mirror.ghproxy.com 寄了 可以自己换别的 github 加速服务

Stash

使用覆写

https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010.stoverride

Loon

⚠️  感谢 @Surui 的反馈 Loon 上存在无法进行短信登录的问题 因为开发者比较懒(脚本逻辑都一致, 需要抓包比较跟别的 app 的差异是什么) 所以决定摆烂
请 Loon 用户使用别的方式进行登录并复制数据到 Loon

使用插件

https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010.loon.plugin

QuanX

以该 app 最新配置的语法为准, 自行配置. 请勿全部复制粘贴然后问为啥不能用.
  1. 重写
    1. 一键安装(如果你使用的是 v1.0.29 (670) 及以上版本)
      1. quantumult-x:///add-resource?remote-resource=%7B%22rewrite_remote%22%3A%5B%22https%3A%2F%[2Fgithub.com](http://2fgithub.com/)%2FChinaTelecomOperators%2FChinaUnicom%2Freleases%2Fdownload%2FPrerelease-Alpha%2F10010.qx.conf%2Ctag%3D10010v4%22%5D%7D
      2. 或 https://quantumult.app/x/open-app/add-resource?remote-resource={"rewrite_remote"%3A["https%3A%2F%2Fgithub.com%2FChinaTelecomOperators%2FChinaUnicom%2Freleases%2Fdownload%2FPrerelease-Alpha%2F10010.qx.conf%2Ctag%3D10010v4"]}
    2. 手动安装
      1. 安装路径: 风车 > 重写 > 引用
      2. 重写路径: https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010.qx.conf
  2. 手动添加定时任务
    [task_local]
    */5 * * * * https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010.js
    

    配置

    BoxJs

    自己把 BoxJs 配好 再进行后续操作 请自行 Google
    
    服了 能不能先把前置工作做好 再来质疑脚本有没有问题

喂饭: 这是 BoxJs

自行 Google QuanX 安装/信任证书 Surge 安装/信任证书 等教程 把 BoxJs 配好

什么叫配好

先来个 没配好的 例子:

群里天天有人发这样的图来问 能不能好好看文档操作
打开 https://boxjs.com/query/boxdata 和 https://boxjs.com/query/data/@ChinaUnicom.10010v4 有正确的 JSON 数据

如果你没 安装并信任证书 有可能你能正常打开 http://boxjs.com 但是无法访问 https://boxjs.com

你可能需要手动操作

QX 用户请用 BoxJs 的 重写 别开 http backend 不然你会一直纳闷为啥 https://boxjs.com 无法访问

⚠️ 某些 QX 懒人配置 自带了 http backend 的配置. 请自己查看
目前 BoxJs 官方模块/覆写中 只有 Stash 加了 MITM 现在应该都有了

请自行添加 boxjs.com 到 hostname 中

示例:

Surge/Shadowrocket

[MITM]
hostname = boxjs.com

QuanX

[mitm]
hostname = boxjs.com

HTTP API 设置

请自行了解 HTTP API 的概念, 执行脚本需要使用(比如 Surge). 请在 Surge 中开启 HTTP API(需要关闭 HTTPS), 并在 BoxJs 中配置 HTTP API . 其他应用请参考对应的文档

截图1:

或这样的

截图2:

Surge 配置示例

如图设置 不要开 HTTPS 不要开 HTTPS 不要开 HTTPS 如果开了 HTTPS 就会出现👆🏻截图1 的情况



或者


什么叫配好了 HTTP API

以能在 BoxJs 中手动执行远程脚本/ BoxJs 代码编辑器中执行填写的脚本内容为准

如果你看到这里 有很多疑问 可以先 Google 或 去 对应的工具(如 BoxJs)/代理 app 的群组 里寻求帮助. 请勿在 折腾啥 群组内疯狂提出 非脚本相关的问题.
例如, 你可以尝试以下途径

  1. 在 BoxJs 群组询问 BoxJs 相关的问题 https://t.me/NobyDa_Chat
  2. 在 Surge/Stash/Shadowrocket/Quantumult X 等 app 对应的讨论群中, 询问与 安装并信任证书/ HTTP API 等 app 相关的问题
  3. 只在 折腾啥 群组内, 提出脚本相关的问题(附上系统环境/app/日志/配置/截图/录屏等信息)

在 BoxJs 里 添加 订阅

https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/boxjs.json

如图, 请设置联通域名的分流

在 BoxJs 里进行对应的配置

自己找到 联通余量(v4) 这个应用 或 在该设备浏览器中打开 https://boxjs.com/#/app/ChinaUnicom.10010v4 进行配置

其他通用配置说明

通知模板变量列表

例: 你在配置页面新建了一个名为 某某某 的配置. 通知模板变量列表中会新增 [某某某.已用] [某某某.剩余] [某某某.总] [某某某.用量] 4 项

即可设置通知模板:

[时长] 跳 [所有通用.用量] 免 [所有免流.用量] 某某某用了 [某某某.用量]

通用剩 [通用有限.剩余] 免流剩 [免流有限.剩余] 某某某还剩 [某某某.剩余]

今免 [所有免流.今日用量] 今用 [所有通用.今日用量]

将渲染成

30分钟 跳 1G 免 0M 某某某用了 1G

通用剩 99G 免流剩 0M 某某某还剩 29G

今免 10G 今用 1M

以下是完整对照列表

{
  "[免流不限.已用]": "40.32G",
  "[免流不限.剩余]": "0M",
  "[免流不限.总]": "0M",
  "[免流不限.用量]": "1.96G",
  "[免流不限.今日用量]": "0M",

  "[免流有限.已用]": "0M",
  "[免流有限.剩余]": "5G",
  "[免流有限.总]": "5G",
  "[免流有限.用量]": "0M",
  "[免流有限.今日用量]": "0M",

  "[所有免流.已用]": "40.32G",
  "[所有免流.剩余]": "5G",
  "[所有免流.总]": "5G",
  "[所有免流.用量]": "1.96G",
  "[所有免流.今日用量]": "0M",

  "[通用不限.已用]": "0M",
  "[通用不限.剩余]": "0M",
  "[通用不限.总]": "0M",
  "[通用不限.用量]": "0M",
  "[通用不限.今日用量]": "0M",

  "[通用有限.已用]": "6.23G",
  "[通用有限.剩余]": "33.77G",
  "[通用有限.总]": "40G",
  "[通用有限.用量]": "263.21M",
  "[通用有限.今日用量]": "0M",

  "[所有通用.已用]": "6.23G",
  "[所有通用.剩余]": "33.77G",
  "[所有通用.总]": "40G",
  "[所有通用.用量]": "263.21M",
  "[所有通用.今日用量]": "0M",

    "[原始通用.已用]": "1.31G",
    "[原始通用.用量]": "0M",
    "[原始通用.今日用量]": "0M",
    "[原始免流.已用]": "4.28G",
    "[原始免流.用量]": "1000M",
    "[原始免流.今日用量]": "1000M",

  "[时长]": "16小时",
  "[套餐]": "冰激凌专属5G套餐(钉钉版)99元",
  "[联通时间]": "2023-01-13 14:00:24",
  "[日期时间]": "2023/1/13 14:00:23",
  "[时间]": "14:00:23"
}

Bark 设置说明

使用 Bark 通知 可实现更多通知效果: 推送铃声, 推送图标, 时效性通知, 复制推送内容等. 具体功能请参考 Bark 的设置说明.

假设你 Bark 的链接为 https://api.day.app/XXXXXXXXX/ 你的 key 为 XXXXXXXXX

可在 BoxJs 里设置 Bark 推送 为 https://api.day.app/XXXXXXXXX/[推送标题]/[推送内容]?group=10010&autoCopy=1&isArchive=1&icon=https%3A%2F%2Fraw.githubusercontent.com%2Fanker1209%2Ficon%2Fmain%2Fzglt.png&sound=shake&level=timeSensitive

[推送标题] [推送内容] 会被自动替换. 其他参数请参考 Bark 的设置说明.

小组件

选择1: 我的组件 完全使用自定义模板

原理: 优先从 获取实时数据, 如果失败则从 http://boxjs.com/query/data/@ChinaUnicom.10010v4.vars 获取缓存数据.

BoxJs 的缓存数据是由定时任务更新的


Untitled

Scriptable 脚本:

  1. 依赖: https://raw.githubusercontent.com/im3x/Scriptables/v2-dev/Scripts/「小件件」开发环境.js
  2. 本体: https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010-scriptable.js

选择2: 花猫佬的小组件 美观大方 兼容联通


https://t.me/CatStudyCase

Android

Termux

安装

clone 安装依赖 示例如下:

pkg update
pkg install nodejs
# 使用 wget 下载这几个文件 或 自行下载
wget https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/package.json
wget https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010.js
wget https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010_send_sms.js
wget https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010_sms_sign.js

npm i

​
termux-notification
若按照 Termux:API https://wiki.termux.com/wiki/Termux:API 完成了安装配置, 脚本将调用 termux-notification 发送通知
定时任务/自启动
可参考 Termux:Boot https://wiki.termux.com/wiki/Termux:Boot Termux-services https://wiki.termux.com/wiki/Termux-services 里的 cronie 配置

💡
注意: 可能需要 cd 到 js 文件的目录下, 并设置环境变量 `TERMUX_VERSION`

一个群友的例子:

~/cc $ crontab -l
# cd 到 js 文件的目录下
# 并设置环境变量 TERMUX_VERSION
*/5 * * * * cd /data/data/com.termux/files/home/cc && TERMUX_VERSION=0.118.0 node 10010.js >> ~/cc/log.txt

然后参考 Node.js 通用配置完成登录/配置

其他通用配置说明

青龙等

[必看!!!] sendNotify.js 导致的无法使用的问题(请自查此文件)

有些人用的 sendNotify.js 有问题 里面某些通知渠道的方法里没有写 else resolve...例如  aibotkNotify 
如果你遇到运行到第一次发通知后就不执行了 请自查 sendNotify.js

⚠️ 上面这段你可能没看懂. 如果你看到这样的情况, 只会执行到这里

你的通知可能是长这样的…

那么说的就是你这种情况

比如 你的 sendNotify.js 里有一段是这样的:

正常的应该是

你们怎么一点基础都没…喂饭了 自己改

else {
  resolve()
}
青龙更新后 sendNotify.js 可能会被覆盖. 保险起见 可下载一个可用的 sendNotify.js 跟脚本执行文件放在一个目录下 https://t.me/c/1771725356/467864 或 https://t.me/zhetengsha_group/467864

拉文件

发送短信验证码

ql raw https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010_send_sms.js

短信验证码登录

ql raw https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010_sms_sign.js

默认操作如果无法进行短信验证码登录, 请尝试带 `(方式2)` 的操作
经群友提醒 如果登录不了可以尝试用官方营业厅app获取短信验证码 然后进行下一步

发送短信验证码(方式2)

ql raw https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010_send_sms2.js

短信验证码登录(方式2)

ql raw https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010_sms_sign2.js

查询

ql raw https://github.com/ChinaTelecomOperators/ChinaUnicom/releases/download/Prerelease-Alpha/10010.js

联通可能半夜维护导致数据异常 建议不要24小时跑. `任务定时`可设为  `*/5 7-21 * * *`

https://crontab.guru/#*/5_7-21_*_*_*

这种就是没拉成功js文件 拉了个报错的网页文件 自己检查青龙配置里的github加速服务/网络环境

找到刚刚拉到的文件 修改定时

使用短信验证码登录

  1. 配置手机号的环境变量 ChinaUnicom_10010v4_mobile
  2. 执行 发送短信登录验证码
  3. 配置短信登录验证码的环境变量 ChinaUnicom_10010v4_code
  4. 执行 短信登录验证码登录

    不使用短信验证码登录

    自己配置 TokenOnline AppId 手机号(mobile) 服务密码(password) 等对应的环境变量

总有人不自己看文档, 再加一下传送门:

  1. 配置方法 👉🏻 所有环境变量说明
  2. 应该使用什么环境变量名

手动执行一次

⚠️ 之后记得删掉 TokenOnline

⚠️ 之后记得删掉 TokenOnline

⚠️ 之后记得删掉 TokenOnline

还是有人看不懂

意思就是不要设置一个固定的值 比如 TokenOnline

因为本脚本不会更新环境变量

你设了一个固定的 TokenOnline 就会每次都用这个固定的 TokenOnline

维护在线状态等逻辑得到的新 TokenOnline 也不会在下次被用到

多账号设置方式

参考 Node.js 通用配置说明 中的 多账号设置方式 来设置对应的环境变量

点击查看

不同账号使用自定义的通知

见 Node.js 通用配置说明 中的 多账号设置方式 里的 不同账号使用自定义通知 说明
点击查看

所有环境变量说明

有人不会设环境变量…喂个饭 自己学一下青龙操作好吗

如图 自己对照需要设置的环境变量的 名称 , 设置一个对应的 值. 备注自己写

通用配置说明

通知模板变量列表

例: 你在配置页面新建了一个名为 某某某 的配置. 通知模板变量列表中会新增 [某某某.已用] [某某某.剩余] [某某某.总] [某某某.用量] 4 项

即可设置通知模板:

[时长] 跳 [所有通用.用量] 免 [所有免流.用量] 某某某用了 [某某某.用量]

通用剩 [通用有限.剩余] 免流剩 [免流有限.剩余] 某某某还剩 [某某某.剩余]

今免 [所有免流.今日用量] 今用 [所有通用.今日用量]

将渲染成

30分钟 跳 1G 免 0M 某某某用了 1G

通用剩 99G 免流剩 0M 某某某还剩 29G

今免 10G 今用 1M

以下是完整对照列表

{
  "[免流不限.已用]": "40.32G",
  "[免流不限.剩余]": "0M",
  "[免流不限.总]": "0M",
  "[免流不限.用量]": "1.96G",
  "[免流不限.今日用量]": "0M",

  "[免流有限.已用]": "0M",
  "[免流有限.剩余]": "5G",
  "[免流有限.总]": "5G",
  "[免流有限.用量]": "0M",
  "[免流有限.今日用量]": "0M",

  "[所有免流.已用]": "40.32G",
  "[所有免流.剩余]": "5G",
  "[所有免流.总]": "5G",
  "[所有免流.用量]": "1.96G",
  "[所有免流.今日用量]": "0M",

  "[通用不限.已用]": "0M",
  "[通用不限.剩余]": "0M",
  "[通用不限.总]": "0M",
  "[通用不限.用量]": "0M",
  "[通用不限.今日用量]": "0M",

  "[通用有限.已用]": "6.23G",
  "[通用有限.剩余]": "33.77G",
  "[通用有限.总]": "40G",
  "[通用有限.用量]": "263.21M",
  "[通用有限.今日用量]": "0M",

  "[所有通用.已用]": "6.23G",
  "[所有通用.剩余]": "33.77G",
  "[所有通用.总]": "40G",
  "[所有通用.用量]": "263.21M",
  "[所有通用.今日用量]": "0M",

    "[原始通用.已用]": "1.31G",
    "[原始通用.用量]": "0M",
    "[原始通用.今日用量]": "0M",
    "[原始免流.已用]": "4.28G",
    "[原始免流.用量]": "1000M",
    "[原始免流.今日用量]": "1000M",

  "[时长]": "16小时",
  "[套餐]": "冰激凌专属5G套餐(钉钉版)99元",
  "[联通时间]": "2023-01-13 14:00:24",
  "[日期时间]": "2023/1/13 14:00:23",
  "[时间]": "14:00:23"
}

Bark 设置说明

使用 Bark 通知 可实现更多通知效果: 推送铃声, 推送图标, 时效性通知, 复制推送内容等. 具体功能请参考 Bark 的设置说明.

假设你 Bark 的链接为 https://api.day.app/XXXXXXXXX/ 你的 key 为 XXXXXXXXX

可在 BoxJs 里设置 Bark 推送 为 https://api.day.app/XXXXXXXXX/[推送标题]/[推送内容]?group=10010&autoCopy=1&isArchive=1&icon=https%3A%2F%2Fraw.githubusercontent.com%2Fanker1209%2Ficon%2Fmain%2Fzglt.png&sound=shake&level=timeSensitive

[推送标题] [推送内容] 会被自动替换. 其他参数请参考 Bark 的设置说明.

Node.js通用配置说明

多账号设置方式

复制出一个新文件 文件名为 _liubang_10010.js

即为 另一个账号 liubang

它将读取 10010v4-liubang-box.dat 里的配置

它使用的所有环境变量前缀对应变化

例如从 ChinaUnicom_10010v4_mobile 对应的变为 liubang_10010v4_mobile

同理 短信验证码相关的文件也改成 _liubang_10010_sms_sign.js 和 _liubang_10010_send_sms.js

🆕 为方便直接无脑拉取, 在主账号外, 新增 a, b, c, d 四个账号的全部文件
  • release 页面 a, b, c, d 四个账号的全部文件 截图示例:
    Untitled

    不同账号使用自定义通知

    此时在执行到 加载sendNotify.js 文件发送通知时, 会优先加载 _liubang_sendNotify.js 来发送通知. 比如你不想使用青龙通用的 sendNotify.js, 你可以自己准备一个 _liubang_sendNotify.js

    使用短信验证码登录

    发送短信验证码

将尝试从环境变量中读取手机号

ChinaUnicom_10010v4_mobile=18600000000 node 10010_send_sms.js

方式2:

ChinaUnicom_10010v4_mobile=18600000000 node 10010_send_sms2.js

使用短信验证码登录

将尝试从环境变量中读取手机号和短信验证码

ChinaUnicom_10010v4_mobile=18600000000 ChinaUnicom_10010v4_code=1234 node 10010_sms_sign.js

方式2:

ChinaUnicom_10010v4_mobile=18600000000 ChinaUnicom_10010v4_code=1234 node 10010_sms_sign2.js

此时已经自动存好了 cookie token_online appId

如果你不理解, 那么你可以将上述脚本执行日志里的 cookie token_online appId 自己复制出来使用.

不使用短信验证码登录

自己配置 TokenOnline AppId 手机号(mobile) 服务密码(password) 对应的环境变量

执行一次

(如果是青龙或者你写到了什么初始化脚本里)删掉 TokenOnline 的环境变量

为什么要删掉? 参考下一条👇🏻

所有环境变量

🤔 不要设一个固定的环境变量然后不删掉….因为会优先从环境变量读取 等于每次都是一个固定的值. 它不会被更新…

还是有人看不懂

意思就是不要设置一个固定的值 比如 TokenOnline

因为本脚本不会更新环境变量

你设了一个固定的 TokenOnline 就会每次都用这个固定的 TokenOnline

维护在线状态等逻辑得到的新 TokenOnline 也不会在下次被用到

🤔 要 `删掉` 不要 `禁用` 因为青龙里的禁用还是会设置环境变量的值, 只不过是设为 `空字符串`

青龙里环境变量不能有空格 你可以这么做:


在这里 写

$.setdata(`剩 [通用有限.剩余] 今用 [所有通用.今日用量] 今免 [所有免流.今日用量]\n总用 [所有通用.已用] 总免 [所有免流.已用]`, KEY_DESC)

然后手动执行两次
第一次它会被写入 dat

第二次以后 它就会被使用. 可以去删掉它或者不管它.

以后脚本被定时拉库覆盖了也不影响.

编辑文件需要进入编辑模式 怎么进自己找

移动端上可能是这样:

桌面端可能是这样:

语法

$.setdata(``, KEY_DESC)

比如设置 最小用量通知阈值(单位 M) , 模板 和 Bark 地址:

$.setdata(`剩 [通用有限.剩余] 今用 [所有通用.今日用量] 今免 [所有免流.今日用量]\n总用 [所有通用.已用] 总免 [所有免流.已用]`, KEY_DESC)
$.setdata(10, KEY_MIN_USAGE)
$.setdata('https://api.day.app/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/[推送标题]/[推送内容]?group=10010&autoCopy=1&isArchive=1&icon=https%3A%2F%2Fraw.githubusercontent.com%2Fanker1209%2Ficon%2Fmain%2Fzglt.png&sound=shake&level=timeSensitive', KEY_BARK)

某个 环境变量 对应的 key 自己在下面找👇🏻

[{
  "环境变量名": "ChinaUnicom_10010v4_debug",
  "key": "KEY_DEBUG",
  "name": "调试模式(一般不开 开了通知爆炸)",
  "val": false,
  "type": "boolean",
  "desc": "默认不开启调试. 开启后将推送自动登录等信息"
},
{
  "环境变量名": "ChinaUnicom_10010v4_mobile",
  "key": "KEY_MOBILE",
  "name": "手机号",
  "val": "",
  "type": "text",
  "desc": "联通客户端登录手机号"
},
{
  "环境变量名": "ChinaUnicom_10010v4_code",
  "key": "KEY_CODE",
  "name": "验证码(执行验证码登录才需要填)",
  "placeholder": "",
  "val": "",
  "type": "text",
  "desc": "登录短信验证码"
},
{
  "环境变量名": "ChinaUnicom_10010v4_password",
  "key": "KEY_PASSWORD",
  "name": "服务密码",
  "val": "",
  "type": "text",
  "desc": "联通客户端登录的服务密码"
},
{
  "环境变量名": "ChinaUnicom_10010v4_appId",
  "key": "KEY_APPID",
  "name": "appId",
  "val": "",
  "type": "text",
  "desc": "联通客户端 appId"
},
{
  "环境变量名": "ChinaUnicom_10010v4_cookie",
  "key": "KEY_COOKIE",
  "name": "Cookie",
  "val": "",
  "type": "text",
  "desc": "Cookie"
},
{
  "环境变量名": "ChinaUnicom_10010v4_token_online",
  "key": "KEY_TOKEN_ONLINE",
  "name": "TokenOnline",
  "val": "",
  "type": "text",
  "desc": "TokenOnline"
},
{
  "环境变量名": "ChinaUnicom_10010v4_http_timeout",
  "key": "KEY_HTTP_TIMEOUT",
  "name": "请求超时时间(单位 毫秒) ",
  "val": 15000,
  "type": "number",
  "persistentHint": true,
  "desc": "默认: 15000 毫秒, 即 15 秒"
},
{
  "环境变量名": "ChinaUnicom_10010v4_ignore_http_timeout",
  "key": "KEY_IGNORE_HTTP_TIMEOUT",
  "name": "忽略请求超时错误",
  "val": false,
  "type": "boolean",
  "persistentHint": true,
  "desc": "默认关闭. 开启后, 将忽略请求超时错误.(联通经常抽风, 可视情况开启)"
}
{
  "环境变量名": "ChinaUnicom_10010v4_min_usage",
  "key": "KEY_MIN_USAGE",
  "name": "最小用量通知阈值(单位 M) ",
  "val": 0,
  "type": "number",
  "desc": "通知模板内的任一一项用量 >= 该数值时 才会通知. 例 [通用有限.用量] 表示这段时间内 有限的通用包的差额. 如果你要无变化时不通知, 这里可以设为 0.01"
},
{
  "环境变量名": "ChinaUnicom_10010v4_normal_limited_only",
  "key": "KEY_NORMAL_LIMITED_ONLY",
  "name": "仅在 [通用有限.用量] >= 最小用量通知阈值 时, 进行通知",
  "val": false,
  "type": "boolean",
  "desc": "默认关闭. 开启后, 仅在 [通用有限.用量] >= 最小用量通知阈值 时, 才会通知"
},
{
  "环境变量名": "ChinaUnicom_10010v4_new_pkg_notify_disabled",
  "key": "KEY_NEW_PKG_NOTIFY_DISABLED",
  "name": "关闭新增包通知",
  "val": false,
  "type": "boolean",
  "desc": "默认检测到新包时会发送通知"
},
{
  "环境变量名": "ChinaUnicom_10010v4_title",
  "key": "KEY_TITLE",
  "name": "通知标题模板",
  "val": "",
  "type": "textarea",
  "desc": "默认: [套餐], 例: 流邦卡19元套餐. 变量看文档"
},
{
  "环境变量名": "ChinaUnicom_10010v4_subt",
  "key": "KEY_SUBT",
  "name": "通知副标题模板",
  "val": "",
  "type": "textarea",
  "desc": "默认: [时长] 跳 [所有通用.用量] 免 [所有免流.用量], 例: 18分钟 跳 10M 免 10M. 变量看文档"
},
{
  "环境变量名": "ChinaUnicom_10010v4_desc",
  "key": "KEY_DESC",
  "name": "通知正文模板",
  "val": "",
  "type": "textarea",
  "desc": "默认: 通用剩 [通用有限.剩余] 免流剩 [免流有限.剩余], 例: 通用剩 5.03G 免流剩 26.35G. 若定向无限, 推荐使用: 剩 [通用有限.剩余] 今用 [所有通用.今日用量] 今免 [所有免流.今日用量] 变量看文档"
},
{
  "环境变量名": "ChinaUnicom_10010v4_bark",
  "key": "KEY_BARK",
  "name": "使用 Bark 通知",
  "val": "",
  "type": "textarea",
  "desc": "[推送标题]/[推送内容]会被自动替换 形如 https://api.day.app/XXXXXXXXX/[推送标题]/[推送内容]?group=10010&autoCopy=1&isArchive=1&icon=https%3A%2F%2Fraw.githubusercontent.com%2Fanker1209%2Ficon%2Fmain%2Fzglt.png&sound=shake&level=timeSensitive 具体看文档"
},
{
  "环境变量名": "ChinaUnicom_10010v4_config",
  "key": "KEY_CONFIG",
  "name": "设置(没需求不用设)",
  "val": "",
  "type": "text"
}]

效果图