README 为了防冗余做了精简,被移出的详细内容写成文档放这里:
- 功能票使用说明.md 买票/用票的完整原理、报文依据、playCredit 公式、实测记录
- 账号转生说明.md reincarnate 完整流程、分批规则(避开 2 首)、
续关登录依据、登出 type=1 依据、playlog 合成、迁移范围
- 常见坑与注意事项.md 二维码 / 账号状态 / 功能票 / 副作用 / 日志 / 网络 /
不入库清单 + .gitignore 行尾注释的坑
- netdelivery说明.md DLI 协议、amdaemon.exe 字符串出处、用法与实测结论
3.6 KiB
3.6 KiB
netdelivery.py 说明(ALL.Net DLI)
本文是
README.md里 netdelivery 部分的详细版(含运行原理)。
一、DLI 是什么
DLI = Download Instruction(配信指示書)。
机台做完 ALL.Net 认证后,AMDaemon 会再问一次「我该下什么包」:
POST http://at.sys-allnet.cn/net/delivery/instruction
body = title_id=SDGB&title_ver=<版本>&client_id=<Keychip 短值>
→ result=1&uri=<patch 指示書 URL>|<option 指示書 URL>
指示書本身是个 INI(日文注释),真正要下的包写在 INSTALLn= 里:
[COMMON] INSTALL1=https://.../SDGB_1.56.00_..._1_1.55.01.app
[OPTIONAL] INSTALL1=https://.../SDGB_A031_..._0.opt
INSTALL2=https://.../SDGB_A005_..._0.opt
★ 只有
INSTALLn=才是要下载的包;EXISTn=是「本机应该已经有的文件」,只是文件名,不是下载项。
二、协议出处
全部来自 source/amdaemon.exe 的字符串(数字是文件内偏移):
| 字符串 | 偏移 |
|---|---|
http://at.sys-all.cn/net/initialize |
@0x788170 |
http://at.sys-all.cn/net/delivery/instruction |
@0x788198 |
title_id=%s&title_ver=%s&client_id=%s |
@0x7882b8 |
ALWE_NETDELIVER_PHASE_GET_DLINST_INFO |
@0x63bde0 |
ALWE_NETDELIVER_PHASE_APP_IMAGE_INFO |
@0x63be08 |
ALWE_NETDELIVER_PHASE_OPT_IMAGE_INFO |
@0x63be30 |
"Net deliver param - dli uri : %s." |
@0x63c3f8 |
ALE_ABEX_STAT_DLINSTR_OK / _ERR_DLINSTR_NG |
@0x638600 |
alAbEx_lite Ver 4.00.01 |
@0x784a31 |
协议是 ALL.Net alAbEx v4:AES-128-CBC 信封,明文是 key=value&...。
请求 = AES-CBC( 16 字节全 0 前缀 || 明文, IV = 全 0 )
响应 = 16 字节 IV || 密文
三、用法
python netdelivery.py # 用 config.py 里的机台查,然后**多选下载**
python netdelivery.py A63E01ABCDE # 指定 Keychip
python netdelivery.py --list # 只列清单 + 直链,不下载
python netdelivery.py --all # 全下(不交互)
python netdelivery.py --only 1,3 # 只下第 1、3 项(不交互)
python netdelivery.py --ver 1.55 # 指定上报版本(默认 config.MAI_ENCODING)
python netdelivery.py --out D:\SDGB2026\update
python netdelivery.py --insecure # 关掉 TLS 校验(CDN 证书有问题时用)
交互选择支持:逗号/空格分隔、区间(1-3)、a=全选、n=全不选、q=退出。
下载带断点续传(.part 临时文件 + Range,下完改名)与进度/速率显示。
四、实测结论(2026-10-06)
| 结论 | 证据 |
|---|---|
title_ver 决定拿哪份指示書 |
1.55 → patch 1.56 + opt A005;1.56 → 仅 opt A031;≤1.54 → uri=null |
client_id 必须是 11 位短值 |
发 15 位完整 Keychip → result=-3;发小写 → result=-2 |
| 包可以断点续传 | 返回 206 + Content-Range |
| 已下架的历史包会回 504 | 这是华立 CDN 的状态,不是脚本的问题 |
实测清单(--ver 1.56):
序号 类型 大小 来源段/键 文件名
[ 1] opt 7.25 MB COMMON/INSTALL1 SDGB_A031_20260909101347_0.opt
[ 2] opt 3.00 MB OPTIONAL/INSTALL1 SDGB_A005_20260610180958_0.opt
下载并校验字节数完全一致:SDGB_A031...opt = 7602176、SDGB_A005...opt = 3145728。
五、注意
- 默认下载到
download/(已加入.gitignore,.app动辄上 GB)。 - 需要同目录下的
authv1.py提供 ALL.Net 协议层。 - 这是只读操作,不写任何账号数据。