# netdistfd **Repository Path**: mmbnsdmm/netdistfd ## Basic Information - **Project Name**: netdistfd - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-23 - **Last Updated**: 2026-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # netdisk-fast-dl 基于 [netdisk-fast-download](https://github.com/qaiu/netdisk-fast-download) 公共 API 的网盘直链解析下载 CLI 工具。 零外部依赖,仅需 Node.js 内置模块。 支持**文件夹批量下载**(递归)、**断点续传跳过**(文件大小对比)、**自定义自建服务地址**。 --- ## 目录 - [安装](#安装) - [快速上手](#快速上手) - [交互式模式](#交互式模式推荐) - [命令行模式](#命令行模式) - [文件夹批量下载](#文件夹批量下载) - [断点续传与跳过逻辑](#断点续传与跳过逻辑) - [自建解析服务](#自建解析服务) - [Cookie 持久化存储](#cookie-持久化存储) - [认证机制说明](#认证机制说明) - [小飞机网盘特殊说明](#小飞机网盘特殊说明) - [所有命令一览](#所有命令一览) - [完整示例](#完整示例) - [支持网盘](#支持网盘) - [常见问题](#常见问题) - [API 文档](#api-文档) --- ## 目录 - [安装](#安装) - [快速上手](#快速上手) - [交互式模式](#交互式模式推荐) - [命令行模式](#命令行模式) - [Cookie 持久化存储](#cookie-持久化存储) - [认证机制说明](#认证机制说明) - [小飞机网盘特殊说明](#小飞机网盘特殊说明) - [所有命令一览](#所有命令一览) - [完整示例](#完整示例) - [支持网盘](#支持网盘) - [常见问题](#常见问题) - [API 文档](#api-文档) --- ## 安装 ```bash git clone <你的仓库地址> cd netdiskfd ``` 无需 `npm install`,直接运行。 --- ## 快速上手 ### 下载小文件(无需认证) ```bash node ndfd.js "https://share.feijipan.com/s/xxxx" -d ``` ### 下载大文件(需认证) ```bash # 首次:保存认证信息 node ndfd.js --cookie "你的appToken或Cookie" --save-cookie # 之后:自动复用 node ndfd.js -a ``` ### 交互式模式(推荐) ```bash node ndfd.js -a ``` --- ## 交互式模式(推荐) 分步引导,敏感信息不回显,支持 Cookie 持久化复用。 ### 启动 ```bash node ndfd.js -a # 显式启动交互模式 node ndfd.js # 无参数默认也进入交互模式 ``` ### 流程说明 | 步骤 | 说明 | |------|------| | 输入分享链接 | 必填,支持任意网盘链接 | | 输入提取码 | 可选,无密码直接回车 | | Cookie 复用检测 | 自动检测已保存的 Cookie,询问是否复用 | | Cookie 认证 | `Y` 进入 Cookie 输入,`n` 跳过 | | 粘贴 Cookie | **输入不可见**(显示为 `*`),自动 AES 加密 | | Cookie 持久化 | 可选保存到本地,下次自动复用 | | 选择操作 | 获取直链 / 下载 / 列表 / 详情 | ### 交互流程示意 ``` 📎 输入分享链接 (必填): https://share.feijipan.com/s/xxxx 🔑 输入提取码 (无密码直接回车): 🍪 检测到已保存的 Cookie,是否复用? [Y/n]: Y ← 自动加载 ✅ Cookie 已加密为 auth 参数 ✓ 请选择操作: [1] 仅获取直链 [2] 下载文件 ← 选这个直接下载 [3] 列出文件夹内容 [4] 查看链接详情 ``` 首次输入 Cookie 后会询问是否保存: ``` 💾 是否保存 Cookie 到本地(下次自动复用)? [Y/n]: Y ✅ Cookie 已保存到 .ndfd_cookie ``` ### Cookie 输入安全说明 - 输入时字符**不回显**,全部显示为 `*` - Cookie 自动经过 **AES-128-ECB 加密**(密钥 `nfd_auth_key2026`)后传给解析 API - 保存到本地时使用**独立 AES 密钥**再次加密存储 - 不会以明文形式写入磁盘 --- ## 命令行模式 适用于脚本集成或快速操作。 ### Cookie 认证下载 ```bash # 下载文件(自动跟随 302 重定向,显示进度条) node ndfd.js "https://share.feijipan.com/s/xxxx" --cookie "your_token" -d # 带提取码 + 指定文件名 node ndfd.js "https://share.feijipan.com/s/xxxx" -p 1234 --cookie "your_token" -o 文件.zip # 仅获取直链(JSON 格式) node ndfd.js -j "https://share.feijipan.com/s/xxxx" --cookie "your_token" ``` ### 常规解析(无需认证) ```bash # 蓝奏云 node ndfd.js "https://www.ilanzou.com/s/lGFndCM" -p KMnv # 123云盘 node ndfd.js "https://www.123pan.com/s/xxxx" # 查看链接信息 node ndfd.js -i "https://www.ilanzou.com/s/lGFndCM" ``` --- ## Cookie 持久化存储 将认证信息加密保存到本地,避免重复输入。 ### 保存 Cookie ```bash # 方式一:命令行保存 node ndfd.js --cookie "你的appToken或Cookie" --save-cookie # 方式二:交互式模式中按提示保存 node ndfd.js -a # → 输入 Cookie → 询问是否保存 → 选 Y ``` ### 使用已保存的 Cookie ```bash # 交互模式会自动检测 node ndfd.js -a # → 提示 "检测到已保存的 Cookie,是否复用?" ``` ### 清除已保存的 Cookie ```bash node ndfd.js --clear-cookie ``` ### 安全说明 - Cookie 使用 **AES-128-ECB** 加密存储在 `.ndfd_cookie` 文件中 - 存储密钥与 API 认证密钥不同,专用于本地加密 - 文件损坏时自动清除,不会导致程序异常 --- ## 认证机制说明 对于需要登录才能下载大文件的网盘(小飞机网盘 >100MB、夸克网盘、UC 网盘、123云盘等),需要传递认证信息。 ### 认证流程 ``` 用户 Token/Cookie ↓ AES-128-ECB 加密(密钥: nfd_auth_key2026) ↓ Base64 编码 → URL 编码 ↓ 作为 auth 参数附加到请求 URL ↓ 解析 API 使用认证信息获取下载链接 ``` ### 认证参数结构(加密前的 JSON) ```json { "authType": "cookie", "token": "你的认证凭证", "username": "", "password": "", "ext1": "", "ext2": "" } ``` ### 自定义 API 地址 如果使用自己部署的解析服务,可通过 `-H` 切换: ```bash node ndfd.js "https://share.feijipan.com/s/xxxx" --cookie "xxx" -H "https://your-server.com" ``` --- ## 文件夹批量下载 对于包含大量文件的文件夹分享,使用 `-r`(`--recursive` / `--folder`)参数递归下载: ```bash node ndfd.js "https://share.feijipan.com/s/xxxx" --cookie "your_token" -r -o ./my_downloads ``` `-o` 指定本地保存目录(可选,默认用分享 Key 命名)。 ### 文件夹列表查看 先查看文件夹内容: ```bash node ndfd.js -l "https://share.feijipan.com/s/xxxx" --cookie "your_token" ``` 输出示例: ``` 📁 [1] 子文件夹 (0B) 📄 [2] video.mp4 (345.9 M) 📄 [3] image.zip (44.0 M) ``` ### 公共 API 限制 公共解析服务 `lz.qaiu.top` 的文件夹列表接口**每次最多返回 60 条记录**。如果文件夹超过 60 个文件,需要**自建解析服务**(见下节)来解决。 --- ## 断点续传与跳过逻辑 再次下载已存在的文件时,工具会**自动对比文件大小**,相同则跳过: ```bash # 首次:下载 2 个文件 node ndfd.js "..." --cookie "..." -r -o ./downloads # 📄 下载: video.mp4 (345.9 M) # 📄 下载: image.zip (44.0 M) # ✅ 文件夹下载完成: 成功 2 个, 跳过 0 个(已存在), 失败 0 个 # 再次运行:文件已存在,跳过 node ndfd.js "..." --cookie "..." -r -o ./downloads # ⏭️ 跳过(大小一致): video.mp4 # ⏭️ 跳过(大小一致): image.zip # ✅ 文件夹下载完成: 成功 0 个, 跳过 2 个(已存在), 失败 0 个 ``` ### 跳过策略 | 情况 | 行为 | |------|------| | 文件不存在 | 下载 | | 文件存在,大小匹配(误差 ≤4KB) | ⏭️ 跳过 | | 文件存在,大小不匹配 | 🔄 重新下载(警告) | | API 未返回 size 信息 | 退化为仅检查存在性 | --- ## 自建解析服务 公共 API `lz.qaiu.top` 对文件夹列表有 **60 条上限**。如需下载超过 60 个文件的文件夹,可以自建解析服务。 ### 部署方式 项目提供了 Docker 一键部署方案: ```bash cd deploy # 创建本地配置(从模板复制) cp resources/app-dev.example.yml resources/app-dev.yml # 构建并启动 docker compose up -d ``` ### 使用自建服务 通过 `-H` 参数指定自建服务地址: ```bash node ndfd.js "https://share.feijipan.com/s/xxxx" \ --cookie "your_appToken" \ -r -o ./my_downloads \ -H "http://your-server:6401" ``` ### 部署目录说明 | 文件 | 说明 | |------|------| | `deploy/Dockerfile` | 基于官方镜像 + 分页补丁 | | `deploy/docker-compose.yml` | 一键启动 | | `deploy/docker-entrypoint.sh` | 容器入口 | | `deploy/patches/FjTool.java` | 小飞机网盘解析器分页增强版 | | `deploy/resources/app-dev.example.yml` | 配置模板(复制为 `app-dev.yml` 后使用) | > 自建服务的核心增强:`FjTool.java` 增加了**分页循环**逻辑,内部逐页请求 feijipan API 直至获取全部文件,客户端一次 `/v2/getFileList` 即可拿到完整列表。 --- --- ## 小飞机网盘特殊说明 ### 认证方式 小飞机网盘(feijipan.com / feejii.com)使用 **appToken 参数认证**(放在 URL 查询参数中),而非传统的 Cookie 登录机制。因此: - 浏览器 `document.cookie` 可能无法读取到登录凭证(HTTP-only) - 真正的认证凭证是 `appToken` + `uuid` - 本工具将 `appToken` 作为 `--cookie` 参数传递即可正常认证 ### 获取 appToken 从浏览器开发者工具中获取: 1. 登录 https://www.feejii.com/ 2. F12 → **网络(Network)** 标签 3. 过滤 `api.feijipan.com` 4. 点任意请求 → 在 URL 中找到 `appToken=xxxxxxxx` 参数 5. 复制这段 `appToken` 的值 ```bash # 保存 appToken node ndfd.js --cookie "你复制的appToken值" --save-cookie ``` ### 文件夹分享说明 小飞机网盘支持文件夹分享。对于包含多个文件的文件夹分享: ```bash # 列出文件夹内容 node ndfd.js -l "https://share.feijipan.com/s/xxxx" --cookie "your_token" # 输出示例: # 📁 [1] 文件夹A (0B) ← 子文件夹 # 📄 [2] 文件1.mp4 (1.2GB) # 📄 [3] 文件2.zip (500MB) ``` > 注意:子文件夹内的文件需要通过新生成的分享链接单独访问。 --- ## 所有命令一览 | 命令 | 说明 | |------|------| | `ndfd` | 进入交互式模式 | | `ndfd -a` / `--auth` | 进入交互式认证模式 | | `ndfd <链接>` | 解析链接获取直链 | | `ndfd <链接> -p <密码>` | 带提取码解析 | | `ndfd <链接> --cookie <字符串>` | 带认证凭证解析(大文件) | | `ndfd <链接> -j` | JSON 格式输出 | | `ndfd <链接> -d` | 直接下载文件(302 模式) | | `ndfd <链接> -o <文件>` | 下载并指定文件名 | | `ndfd <链接> -l` | 列出文件夹内容 | | `ndfd <链接> -r` / `--folder` | 递归下载整个文件夹 | | `ndfd <链接> -i` | 查看分享链接详情 | | `ndfd <链接> -H <地址>` | 使用自定义 API 地址 | | `ndfd --save-cookie` | 保存认证信息到本地(与 `--cookie` 配合) | | `ndfd --clear-cookie` | 清除本地保存的认证信息 | | `ndfd -v` | 显示版本号 | --- ## 完整示例 ### 小飞机网盘 ```bash # 交互式(推荐) node ndfd.js -a # 命令行认证下载 node ndfd.js "https://share.feijipan.com/s/xxxx" --cookie "appToken值" -d # 保存认证信息 node ndfd.js --cookie "appToken值" --save-cookie # 带密码 + 指定输出文件名 node ndfd.js "https://share.feijipan.com/s/xxxx" -p 1234 --cookie "token" -o movie.mp4 # 列出文件夹内容 node ndfd.js -l "https://share.feijipan.com/s/EQvGkYQq" --cookie "token" # 下载整个文件夹 node ndfd.js -r "https://share.feijipan.com/s/xxxx" --cookie "token" -o ./downloads # 使用自建服务下载全部文件(突破 60 条限制) node ndfd.js -r "https://share.feijipan.com/s/xxxx" --cookie "token" -o ./downloads -H "http://127.0.0.1:6401" # 短链模式 node ndfd.js d/fj/xxxx@1234 --cookie "token" ``` ### 蓝奏云 / 蓝奏优享(无需认证) ```bash node ndfd.js "https://www.ilanzou.com/s/lGFndCM" -p KMnv node ndfd.js "https://wwww.lanzoux.com/xxxx" node ndfd.js "https://www.ilanzou.com/s/lGFndCM" -l # 列出文件夹 ``` ### 123云盘 ```bash node ndfd.js "https://www.123pan.com/s/xxxx" node ndfd.js -j "https://www.123pan.com/s/xxxx" # JSON 输出 ``` ### 查看链接详情 ```bash node ndfd.js -i "https://share.feijipan.com/s/xxxx" ``` 输出示例: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 网盘: 小飞机网盘 (fj) 分享链接: https://share.feijipan.com/s/xxxx 分享 Key: xxxx 需要密码: ❌ 否 下载链接: https://lz.qaiu.top/d/fj/xxxx API 链接: https://lz.qaiu.top/json/fj/xxxx 总请求量: 0 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ### 短链模式 ```bash ndfd d/fj/xxxx@1234 --cookie "token" # 302 下载 ndfd json/fj/xxxx@1234 # JSON 格式 ndfd d/iz/lGFndCM@KMnv # 蓝奏优享短链 ``` --- ## 支持网盘 | 网盘 | 标识 | 大文件需认证 | |------|------|:----------:| | 蓝奏云 | `lz` | ❌ | | 蓝奏云优享 | `iz` | ❌ | | 小飞机网盘 | `fj` | ✅ (>100MB) | | 移动云云空间 | `ec` | ❌ | | 亿方云 | `fc` | ❌ | | 123云盘 | `ye` | ✅ (>100MB) | | 文叔叔 | `ws` | ❌ | | 城通网盘 | `ct` | ❌ | | 永硕E盘 | `ys` | ❌ | | Cloudreve | `ce` | ❌ | | 夸克网盘 | `qk` | ✅ (专业版) | | UC网盘 | `uc` | ✅ (专业版) | > ✅ 需要认证的网盘使用 `--cookie` 参数或交互式模式输入认证凭证。 --- ## 常见问题 ### Q: 下载大文件失败,返回数字 ID 而不是下载地址? 分享可能是**文件夹分享**而非单个文件分享。尝试 `-l` 查看文件夹内容,或直接在网页上对单个文件生成分享链接。 ### Q: 小飞机网盘的 Cookie 在哪里? 小飞机网盘使用 URL 参数中的 `appToken` 认证,而非 Cookie。在浏览器 F12 → Network → 找 `api.feijipan.com` 的请求 → URL 中有 `appToken=xxx` 参数。 ### Q: 如何保存认证信息避免每次输入? ```bash node ndfd.js --cookie "你的token" --save-cookie ``` ### Q: 分享链接显示 "已失效" 或 "文件列表为空"? 分享链接可能没有包含实际文件,或文件已被删除。请在网页端重新创建一个有效的分享。 ### Q: 文件夹有 300+ 文件,为什么只下载了 60 个? 公共 API `lz.qaiu.top` 的文件夹列表接口每次最多返回 60 条。解决方案:**自建解析服务**(参考[自建解析服务](#自建解析服务)章节),自建服务的内部分页补丁会循环请求全部文件。 ### Q: 下载中断后怎么续传? 直接重新运行相同的命令即可。已下载完成的文件会自动跳过(大小一致),只下载缺失或大小不匹配的文件。 ### Q: 文件大小匹配但内容可能不同(如重新上传的同名文件)? 目前以文件大小对比作为跳过依据(带有 ≤4KB 容差)。如果文件大小相同但内容不同,建议先删除本地文件再重新下载。如需更精确的校验,可自建服务并在 `FjTool.java` 中添加 MD5 对比逻辑。 --- ## API 文档 - 公益解析服务: https://lz.qaiu.top - 项目主页: https://nfd-parser.github.io/ - API 接口文档: https://nfdparser.apifox.cn/ - 在线认证参数加密: https://qaiu.top/nfd-auth.html