Files
auto-pickup-v2/README.md
T
SkyLiCoder e99dfaef4d 初始化项目 v2.0:中国邮政揽收系统自动填单工具
基于 HTTP API + Node.js token bridge 方案,不依赖浏览器自动化。
2026-05-15 14:39:31 +08:00

4.9 KiB
Raw Blame History

中国邮政揽收系统 - 自动填单工具

通过 HTTP API + Node.js token bridge 实现,不依赖浏览器自动化。读取 Excel 运单数据,逐条自动填写产品、客户、运单信息并提交。

运行环境

  • Windows 10/11 64 位
  • Node.js 18+(用于 token bridge,计算 $_ts 安全框架的 c93l5Fya 动态 token)

快速开始

# 安装 Python 依赖
uv sync

# 安装 token bridge 依赖
cd token_bridge && npm install && cd ..

# 运行
uv run python main.py

打包

build.bat        # Windows
bash build.sh    # Linux

输出 dist/PickupAuto.exe,用户端需安装 Node.js 18+。

架构

┌─────────────────────────────────────────┐
│  Python (requests.Session)              │
│  ├─ engine.py   引擎/表单组装/提交      │
│  ├─ pickup_api.py  HTTP API 封装(18个)  │
│  ├─ login_helper.py  cookies 导入       │
│  ├─ field_mapping.py  中文字段映射      │
│  ├─ excel_reader.py  Excel 读写         │
│  ├─ main.py       Tkinter GUI           │
│  └─ log.py        统一日志              │
├─────────────────────────────────────────┤
│  Node.js (HTTP server, 同进程启动)      │
│  └─ token_bridge/server.js              │
│       jsdom 加载 $_ts 安全 JS           │
│       计算 c93l5Fya token               │
└─────────────────────────────────────────┘

数据流

Excel 行数据
  → 产品搜索 (autocomplete API) → 用户选择
  → 客户搜索 (autocomplete API) → 用户选择
  → 运单查询 → 获取收寄件人/地址/电话
  → 地址匹配 → 获取区划代码
  → 组装表单 (5层优先级) → 确认弹窗 → 提交

表单字段优先级

强制固定值 (force=true)
  > API 获取值 (运单/产品/客户/地址匹配)
    > 固定值 (force=false)
      > Excel 表格值
        > 默认值 (config.json defaults)

token bridge 原理

揽收系统使用 $_ts 安全框架(954KB 混淆 JS),所有 AJAX 请求需附带 c93l5Fya=TOKEN 参数。token bridge 在 jsdom 中运行该 JS,通过 HTTP API 对外提供 token 计算服务,Python 拿到 token 后用自己的 requests.Session 发请求。

使用流程

1. 登录(获取 cookies)

点击 🔑 登录 → 弹出对话框 → 用浏览器 cookies 导出工具导出 10.4.188.1 的所有 cookies 为 JSON 数组 → 粘贴到对话框 → 保存。

cookies 保存到 session.json(与 exe 同目录)。

2. 选择 Excel

点击 选择文件,选择要处理的 Excel 文件。

3. 配置固定值(可选)

在 GUI 固定值表格中设置常用字段,勾选 "强制覆盖" 可覆盖 API 获取的值。

4. 开始处理

点击 ▶ 开始处理 → 弹出产品/客户选择框 → 确认提交信息 → 自动批量处理后续行。

Excel 格式

字段 说明 来源
单号 运单号 Excel 必填
重量 单位克 Excel
产品名称 用于 autocomplete 搜索 Excel/固定值
客户名称 用于 autocomplete 搜索 Excel/固定值
收件人/手机/地址 运单 API 自动填充,Excel 可覆盖 API/Excel
寄件人/手机/地址 客户资料 API 自动填充 API/固定值
寄达地/寄达地区划 地址匹配 API 自动获取,固定值可强制覆盖 API/固定值
电商平台 默认 "无"(WU) 默认值
付款方式 默认 "寄付"(1) 默认值
内件属性 产品 API 返回 innerpartsType API
运输类型 默认 "陆运"(1) 默认值

配置说明 (config.json)

system

  • url: 揽收系统地址

timing

  • delay_between_rows_ms: 行间延时(毫秒)

fixed_values

"字段名": {"value": "值", "force": false}

force: true 时覆盖 API 获取值。

defaults

字段的默认值(中文名,自动翻译为系统编码)。

field_mapping

Excel 列名 → 表单参数名的自定义映射。内置映射覆盖常见字段,仅需在此配置自定义列名。

文档

项目级文档见 ../docs/:

文件 说明
分析报告.md 系统 API 分析
字段覆盖检查报告.md 字段来源和覆盖关系
har-successful-submit-fields.json 成功提交的完整表单字段模板
portal-to-pickup-full-flow.har 门户→揽收页面完整网络流
product-customer-selection-flow.har 产品/客户选择 API 流
successful-submit-with-address-change.har 改寄达地后成功提交

开发

日志等级

log.py 中修改 LEVEL:

  • 0 = 仅用户级消息
  • 1 = 调试级
  • 2 = 追踪级(API 请求/响应)

修改后重新打包生效。