Files
yule153604-zglt_script/README.md
T
unknown 16cdba90d3 feat(联通阅读): 新增联通阅读任务模块
- 新增 woread_task 任务入口,支持自动登录、模拟阅读、抽奖、余额查询
- 实现 AES-CBC 加密(_woread_encode)用于接口数据加密
- 支持设备预登录(woread_auth)获取 accesstoken
- 支持账号登录(woread_login)获取 usertoken
- 模拟阅读功能:获取书籍信息、章节列表、心跳上报、添加阅读时长
- 每日抽奖功能(活动ID: 8051)
- 话费红包余额查询
- 更新 README 文档添加联通阅读功能说明
2025-12-21 23:27:35 +08:00

343 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 中国联通自动化脚本
这是一个专为中国联通APP设计的高效自动化脚本,采用Python编写,旨在帮助用户自动完成日常签到、领现金、权益超市及各类专区活动。脚本基于异步IO架构,支持多账号并发运行,具有高度的稳定性和可扩展性。
## 🛠️ 代码结构详解
```text
中国联通.py
├── 📂 青龙API操作函数
│ ├── ql_get_env .................. 获取青龙环境变量
│ ├── ql_update_env ............... 更新青龙环境变量
│ └── ql_update_cookie_to_token ... 账密登录后自动更新为Token格式
│
├── 📂 MarketRaffleState (全局奖池状态类)
│ ├── __init__ .................... 初始化奖池状态/锁
│ └── check_prizes ................ 查询奖池(全局单次,多账号共享)
│
├── 📂 Logger (日志管理类)
│ ├── __init__ .................... 初始化日志前缀
│ └── log ......................... 输出带时间戳的日志
│
├── 📂 HttpClient (网络请求类)
│ ├── __init__ .................... 初始化 Session/Headers
│ └── request ..................... 发送 HTTP 请求(含重试/Cookie管理)
│
├── 📂 RSAEncrypt (RSA加密类)
│ └── encrypt ..................... RSA加密(用于账密登录)
│
├── 📂 CustomUserService (核心业务类)
│ │
│ ├── 🔧 基础功能
│ ├── __init__ .................... 初始化账号信息(自动识别登录方式)
│ ├── _detect_login_mode .......... 检测登录模式(账密/Token)
│ ├── _generate_appid ............. 生成账密登录用appid
│ ├── online ...................... 登录调度器(自动选择登录方式)
│ ├── _login_with_password ........ 账号密码登录
│ ├── _login_with_token ........... Token登录
│ ├── open_plat_line_new .......... 获取业务 Ticket
│ ├── get_bizchannelinfo .......... 生成业务渠道 Header
│ └── get_epay_authinfo ........... 生成支付认证 Header
│ │
│ ├── 📝 日常签到 (Sign)
│ ├── sign_task ................... 签到任务入口
│ ├── sign_get_continuous ......... 获取签到状态
│ ├── sign_day_sign ............... 执行签到
│ ├── sign_task_center ............ 任务中心(自动完成任务并领取奖励)
│ ├── sign_do_task_from_list ...... 执行任务中心任务
│ └── sign_get_task_reward ........ 领取任务奖励
│ │
│ ├── 💰 天天领现金 (TTLXJ)
│ ├── ttlxj_task .................. 领现金任务入口
│ ├── ttlxj_authorize ............. 业务授权
│ ├── ttlxj_login ................. 业务登录
│ ├── ttlxj_unify_draw_new ........ 执行打卡/抽奖
│ └── ttlxj_query_available ....... 查询余额
│ │
│ ├── 🎁 联通祝福 (Wocare)
│ ├── ltzf_task ................... 祝福任务入口
│ ├── wocare_get_token ............ 获取 Token
│ ├── wocare_api .................. 通用 API 请求(含解密)
│ ├── wocare_get_draw_task ........ 获取任务列表
│ ├── wocare_complete_task ........ 完成任务
│ └── wocare_luck_draw ............ 执行抽奖
│ │
│ ├── 🛒 权益超市 (Market)
│ ├── market_task ................. 超市任务入口
│ ├── market_login ................ 超市登录
│ ├── market_share_task ........... 分享小红书任务(自动完成获取抽奖机会)
│ ├── market_watering_task ........ 浇花任务(支持多次浇花直到完成)
│ ├── market_watering ............. 执行浇花
│ ├── market_raffle_task .......... 抽奖任务(可选展示奖池信息)
│ ├── market_validate_captcha ..... 人机验证处理
│ └── market_raffle ............... 执行抽奖
│ │
│ ├── 🍇 新疆专区 (Xinjiang)
│ ├── xj_task ..................... 新疆任务入口(含归属地校验)
│ ├── xj_do_draw .................. 执行活动抽奖
│ ├── xj_usersday_task ............ 会员日任务入口
│ └── xj_usersday_draw ............ 会员日抽奖
│ │
│ ├── 🏙️ 商都福利 (ShangDu - 河南)
│ ├── shangdu_task ................ 商都任务入口(含归属地校验)
│ ├── shangdu_get_ticket .......... 获取 Ticket
│ ├── shangdu_login ............... 激活 Ticket
│ └── shangdu_signin .............. 执行签到
│ │
│ └── 📱 云手机活动 (Cloud Phone)
│ ├── wostore_cloud_task ........ 云手机任务入口
│ ├── wostore_cloud_login ....... 两步登录获取Token
│ ├── wostore_cloud_get_coupon .. 领取优惠券
│ ├── wostore_cloud_task_list ... 查询任务列表
│ ├── wostore_cloud_get_chance .. 领取抽奖次数
│ └── wostore_cloud_draw ........ 执行抽奖
│
│ ├── 🔒 联通安全管家 (Security Butler)
│ ├── security_butler_task .......... 安全管家任务入口
│ ├── _sec_get_ticket_by_native ..... 获取Ticket
│ ├── _sec_get_auth_token ........... 获取认证Token
│ ├── _sec_add_to_blacklist ......... 添加黑名单任务
│ ├── _sec_mark_phone_number ........ 号码标记任务
│ ├── _sec_sync_address_book ........ 同步通讯录任务
│ ├── _sec_set_interception_rules ... 设置拦截规则任务
│ ├── _sec_view_weekly_summary ...... 查看周报任务
│ ├── _sec_sign_in .................. 签到任务
│ ├── _sec_receive_points ........... 领取积分
│ └── _sec_get_user_info ............ 查询积分信息
│
│ └── ☁️ 联通云盘 (Cloud Disk)
│ ├── cloud_disk_task ........... 云盘任务入口
│ ├── _cloud_get_ticket_by_native 获取Ticket
│ ├── _cloud_get_dispatcher ..... 获取Token
│ ├── _cloud_get_user_info ...... 查询积分信息
│ ├── _cloud_get_task_detail .... 获取任务详情并执行
│ ├── _cloud_dosign ............. 签到任务
│ ├── _cloud_activity_list ...... 浏览活动中心任务
│ ├── _cloud_share_file ......... 分享文件任务
│ ├── _cloud_do_upload .......... 上传文件任务
│ ├── _cloud_do_ai_interaction .. AI通通互动任务
│ ├── _cloud_open_album_backup .. 打开相册备份任务
│ ├── _cloud_do_ai_query_for_lottery DeepSeek对话获取抽奖资格
│ ├── _cloud_check_lottery_times 查询抽奖次数
│ └── _cloud_lottery ............ 执行抽奖
│
│ └── 📚 联通阅读 (Woread)
│ ├── woread_task ............... 阅读任务入口
│ ├── woread_auth ............... 设备预登录获取accesstoken
│ ├── woread_login .............. 账号登录获取usertoken
│ ├── woread_get_book_info ...... 获取书籍信息
│ ├── woread_read_process ....... 模拟阅读任务
│ ├── _woread_heartbeat ......... 阅读心跳上报
│ ├── _woread_add_read_time ..... 添加阅读时长
│ ├── woread_draw_new ........... 抽奖(活动ID:8051)
│ └── woread_queryTicketAccount . 查询话费红包余额
│
└── 🚀 main (主程序入口) ............ 并发调度所有账号任务
```
## ✨ 功能特性
### 双模式登录
- **Token登录**: 推荐方式,使用抓包获取的token_online登录,稳定可靠
- **账密登录**: 使用手机号+登录专用密码直接登录,无需抓包,但易触发风控
- **自动识别**: 脚本自动检测输入格式,选择对应登录方式
- **自动转换**: 账密登录成功后自动将环境变量更新为Token格式(青龙面板)
### 权益超市增强功能
- **接口自动解密**: 自动处理权益超市接口的 AES 加密响应,修复任务列表获取失败的问题
- **分享任务自动完成**: 自动完成分享小红书任务,获取额外抽奖机会
- **每日自动抽奖**: 无条件执行抽奖,不受奖池状态影响
- **奖池信息展示**: 可选功能,抽奖完成后展示今日奖池信息(默认关闭)
- **有效奖品识别**: 自动标记有效奖品(包含月卡/周卡/季卡,排除5G宽视界/沃视频)
- **人机验证处理**: 抽奖触发人机验证时自动处理并继续抽奖
- **浇花任务修复**: 支持多次浇花直到完成目标次数(如60次)
- **全局奖池查询**: 多账号只查询一次奖池,共享结果,节省资源
### 云手机活动
- **自动领券**: 每日自动领取优惠券(如美团生活服务券)
- **任务状态同步**: 自动触发任务状态同步,确保可领取抽奖次数
- **每日抽奖**: 完成任务后自动执行抽奖
### 签到区-任务中心
- **任务自动完成**: 自动浏览任务页面并完成任务
- **奖励自动领取**: 任务完成后自动领取奖励
- **循环执行**: 持续执行直到所有可完成任务都已处理
### 联通安全管家
- **每日签到**: 自动完成安全管家签到任务
- **积分任务**: 自动完成添加黑名单、号码标记、同步通讯录、骚扰拦截设置、查看周报等任务
- **积分领取**: 任务完成后自动领取积分奖励
- **积分统计**: 显示本次运行获得的积分数量
### 联通云盘
- **每日签到**: 自动完成云盘签到任务
- **多项任务**: 支持浏览活动中心、分享文件、上传文件、AI通通互动、打开相册备份等任务
- **积分领取**: 任务完成后自动领取积分奖励
- **DeepSeek抽奖**: 通过DeepSeek对话获取抽奖资格并自动抽奖
- **积分统计**: 显示本次运行获得的积分数量
### 联通阅读
- **自动登录**: 设备预登录+账号登录双重认证
- **模拟阅读**: 自动获取书籍信息并模拟阅读(心跳上报+阅读时长)
- **每日抽奖**: 完成阅读任务后自动执行抽奖
- **余额查询**: 显示话费红包余额
## 🚀 快速开始
### 1. 安装依赖
```bash
pip install httpx
# 必需安装(用于权益超市接口解密及账密登录):
pip install pycryptodome
```
### 2. 配置账号
脚本通过环境变量 `chinaUnicomCookie` 获取用户登录信息。支持多账号,多个账号之间使用 `@` 符号分隔。
#### 方式一:Token登录(推荐)
格式:`token_online字符串` 或 `token_online#appid`
1. 使用抓包工具(如Stream、Fiddler)抓取中国联通APP的请求
2. 找到 `https://m.client.10010.com/mobileService/onLine.htm` 请求
3. 提取请求体中的 `token_online` 值(可选:同时提取 `appId`)
```bash
# 仅 token_online
export chinaUnicomCookie="your_token_online_string"
# token_online + appid(更稳定)
export chinaUnicomCookie="your_token_online#your_appid"
```
#### 方式二:账密登录
> ⚠️ **注意**: 账密登录容易触发安全风控,建议优先使用Token登录
>
> 💡 **自动转换**: 在青龙面板中使用账密登录成功后,脚本会自动将环境变量更新为 `token_online#appid` 格式,后续运行将使用Token登录
格式:`手机号#登录专用密码`
```bash
# 单账号
export chinaUnicomCookie="18812345678#yourpassword"
# 多账号
export chinaUnicomCookie="18812345678#password1@18887654321#password2"
```
> 登录专用密码需要在联通APP中设置,不是服务密码。
#### 方式三:混合使用
可以同时使用两种登录方式:
```bash
export chinaUnicomCookie="token_string@18812345678#password"
```
### 3. 可选配置
编辑 `中国联通.py` 文件顶部的常量:
```python
SHOW_PRIZE_POOL = False # 是否显示权益超市奖品池信息,默认关闭
```
### 4. 执行模式切换
脚本默认采用**并行模式**运行多个账号,如需改为**顺序执行**(一个账号完成后再执行下一个),修改 `main()` 函数:
**并行模式(默认)**:
```python
tasks = []
for i, cookie in enumerate(cookies.split('@')):
if not cookie.strip():
continue
user = CustomUserService(cookie, index=i+1)
tasks.append(user.user_task())
if tasks:
await asyncio.gather(*tasks)
```
**顺序模式**:
```python
for i, cookie in enumerate(cookies.split('@')):
if not cookie.strip():
continue
user = CustomUserService(cookie, index=i+1)
await user.user_task()
```
### 5. 运行脚本
```bash
python 中国联通.py
```
### 6. 查看运行结果
脚本运行后,将在控制台输出详细的执行日志。
- **登录状态**: 显示登录成功/失败及脱敏后的手机号(如 `138****5678`)
- **登录方式**: 显示使用的是账密登录还是Token登录
- **任务进度**: 实时显示各个任务的执行情况(如"签到成功"、"获得0.87元立减金")
- **抽奖结果**: 显示具体的奖品名称(如"5元话费券"、"未中奖")
#### 奖池查询输出示例(开启 SHOW_PRIZE_POOL 时)
```
============================================================
权益超市奖品池查询
============================================================
今日奖池共 16 个奖品:
✅ [01] 爱奇艺VIP月卡
今日投放: 100 | 总库存: 5000 | 概率: 5.00%
❌ [02] 5G宽视界黄金会员月卡
今日投放: 50 | 总库存: 3000 | 概率: 3.00%
❌ [03] 茶百道6元免配券
今日投放: 5000 | 总库存: 0 | 概率: 15.00%
...
============================================================
结论: 当前已放水!有效奖品 3/16 个,可以抽奖
============================================================
```
## ❓ 常见问题与故障排除
### 1. 账密登录相关
| 错误信息 | 原因 | 解决方案 |
|---------|------|---------|
| 密码错误 | 登录专用密码不正确 | 在联通APP中重置登录专用密码 |
| 未设置登录专用密码 | 账号未开启登录专用密码 | 前往联通APP设置登录专用密码 |
| 触发安全风控 | 登录频率过高或异常 | 手动打开联通APP登录一次解除 |
| 账密登录需要pycryptodome | 缺少加密库 | `pip install pycryptodome` |
### 2. Token登录失败处理
如果遇到Token登录失败的情况,请尝试以下步骤:
1. 使用抓包工具获取本机实际的 `device_id` 和 `device_code`
2. 打开 `中国联通.py` 文件,找到 `_login_with_token` 函数
3. 将代码中的 `device_id` 和 `device_code` 替换为抓包获取的实际值
### 3. 权益超市相关
- **浇花状态异常**: 已修复只浇花一次的问题,现在会持续浇花直到完成目标次数
- **奖池信息**: 设置 `SHOW_PRIZE_POOL = True` 可在抽奖后展示今日奖池
- **人机验证**: 触发人机验证时会自动处理,无需手动干预
## 注意事项
- **HTTP/2**: 为保证稳定性,脚本默认关闭了HTTP/2支持
- **异常处理**: 脚本内置了完善的异常捕获机制,单个任务的失败不会影响其他任务或账号的执行
- **隐私安全**: 所有敏感信息(如手机号)在日志输出时均会自动脱敏,保障用户隐私
- **奖池共享**: 权益超市奖池查询只执行一次,所有账号共享结果,避免重复请求
## ⚠️ 免责声明
1. **仅供学习交流**:本项目仅供编程学习和技术交流使用,请勿用于任何商业用途。
2. **合法使用**:请勿将本脚本用于任何非法目的,包括但不限于恶意攻击、刷单等行为。
3. **风险自担**:使用本脚本产生的任何后果(包括但不限于账号封禁、财产损失等)由使用者自行承担,开发者不承担任何责任。
4. **隐私保护**:本项目不会收集用户的任何敏感信息,所有数据均保存在用户本地。
5. **侵权联系**:如果本项目侵犯了您的权益,请及时联系开发者进行处理。