Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DJI Recycle Tools 项目图标

DJI Recycle Tools

大疆焕新计划-全自动助手

面向 DJI 旧机回收与换新申请的本地浏览器填写辅助工具

Python 3.10+ Playwright 跨平台 本地运行

工具能力 · 快速开始 · 项目架构 · Plus版本战绩 · 常见问题

Important

本项目是独立的本地自动化辅助工具,与 DJI 及其关联方不存在官方合作、授权或隶属关系。账号、密码、地址等信息仅从本地 config.yaml 读取;程序不会绕过登录、验证码或风控校验,也不会自动提交申请。

1、工具能力

能力 说明
表单自动填写 自动填写 DJI 账号、设备序列号、收件人、联系方式与详细地址。
下拉选项选择 支持旧机型号及省、市、区县三级联动选择。
可见浏览器操作 默认使用有界面 Chromium,所有填写结果可在提交前人工核对。
会话复用 可配置本地浏览器资料目录,减少重复登录。
配置强校验 启动前校验 YAML 结构、HTTPS 地址和必填字段,尽早发现配置问题。
人工确认边界 登录、验证码、最终提交均由使用者在浏览器中完成。

2、快速开始

2.1、准备运行环境

需要 Python 3.10 或更高版本。首次使用时,在项目根目录执行:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python -m playwright install chromium

Windows PowerShell 使用以下命令激活虚拟环境:

.venv\Scripts\Activate.ps1

2.2、创建个人配置

cp config.example.yaml config.yaml

config.yaml 中填入真实个人信息。该文件已被 .gitignore 忽略,禁止提交到 Git 仓库。

account:
  dji_account: "手机号或邮箱"
  dji_password: "DJI账号密码"

device:
  model: "与网页下拉选项完全一致的旧机型号"
  serial_number: "旧机序列号"

2.3、启动填写流程

source .venv/bin/activate
python run.py --config config.yaml

程序会打开 https://support.dji.com/recycle/apply,完成字段填写后保持浏览器打开。请核对页面内容,并自行决定是否提交申请。

若需要先手动完成登录或验证码:

python run.py --config config.yaml --pause-before-fill

3、使用流程

加载 config.yaml
      │
      ▼
启动可见 Chromium 浏览器
      │
      ▼
打开 DJI 回收申请页面
      │
      ├── 登录、验证码、风控校验:人工处理
      │
      ▼
按标签定位字段并填写信息
      │
      ▼
选择旧机型号和省/市/区县
      │
      ▼
人工核对并手动提交

4、配置说明

完整模板见 config.example.yaml。旧机型号、省、市、区县必须与网页下拉项显示的文本完全一致。

配置项 作用 示例
browser.headless 是否隐藏浏览器界面 false
browser.slow_mo_ms 每次浏览器操作的额外延迟 80
browser.manual_preparation_required 是否在填写前等待人工准备 false
browser.user_data_dir 本地浏览器会话目录 runtime/browser-profile
application.timeout_ms 单次页面操作超时时间 15000
account.dji_account DJI 登录账号或联系方式 example@example.com
device.model 旧机型号 页面下拉选项原文
address.province 省级地址 页面下拉选项原文

5、项目架构

DJI-Tools/
├── config.example.yaml       # 可提交的配置模板
├── config.yaml               # 本地个人配置,已忽略
├── requirements.txt          # Python 依赖定义
├── run.py                    # 命令行入口
├── static/                   # README 图标、Plus版本成果截图与购买二维码
└── dji_recycle/
    ├── application.py        # 解析参数、管理浏览器生命周期
    ├── config.py             # 加载并校验 YAML 配置
    ├── models.py             # 不可变配置数据模型
    ├── page.py               # 表单定位、填写与下拉选择
    └── selectors.py          # 页面中文字段标签定义
模块 职责
application.py 串联配置、Playwright 与页面对象,确保浏览器资源正确释放。
config.py 对配置类型、必填项、路径和页面地址执行启动前校验。
models.py 以数据类隔离浏览器配置、账号、设备、联系人与地址。
page.py 兼容原生和常见组件化下拉框,执行字段填写。
selectors.py 集中维护页面字段中文标签,页面改版时可快速定位调整。

6、页面改版适配

DJI 页面字段标签或组件结构发生变化时,优先按以下顺序处理:

  1. 检查 dji_recycle/selectors.py 中的中文标签是否仍与页面一致。
  2. 检查 dji_recycle/page.py 中对应字段的容器定位逻辑。
  3. 确认 device.modeladdress.provinceaddress.cityaddress.district 与下拉文本完全匹配。

7、Plus版本战绩

7.1、获取Plus版本

保存图片后使用闲鱼扫一扫购买Plus版本

保存或打开上方图片后,使用闲鱼扫一扫购买Plus版本。

7.2、实际运行结果

Plus版本已完成库存匹配、验证码处理、换新申请提交,并收到 DJI 的申请成功通知和寄回指引。

库存匹配与验证码成功 换新申请提交成功
Plus版本库存匹配与验证码成功日志 Plus版本换新申请提交成功邮件
寄回指引短信通知 寄回设备指引详情
Plus版本寄回指引短信通知 Plus版本寄回设备指引详情
御 Mavic Pro换新申请成功 御 Spark换新申请成功
御MavicPro换新申请成功邮件 御Spark换新申请成功邮件

8、常见问题

现象 处理方式
Executable doesn't exist 执行 python -m playwright install chromium
找不到字段标签 页面可能改版,更新 dji_recycle/selectors.py 中对应的标签文本。
找不到下拉选项 检查机型和地区名称是否与页面选项完全一致。
登录或验证码阻塞 使用 --pause-before-fill,完成验证后回到终端按回车。
浏览器关闭后登录失效 browser.user_data_dir 配置为非空目录。

9、数据与使用边界

  • config.yamlruntime/、虚拟环境均已在 .gitignore 中排除。
  • 请仅使用本人有权使用的 DJI 账号和设备信息,并自行确认回收、换新政策与申请内容。
  • 不要在 Issue、日志、截图或 Git 提交中粘贴密码、完整序列号、住址、申请编号等敏感信息。

About

大疆焕新助手全自动脚本

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages