夸克网盘文件管理 CLI 工具。
本项目采用 AGPL-3.0 许可证,完全开源。欢迎贡献代码、报告问题或提出建议。
重要提示:本项目禁止商业使用。任何商业使用(包括但不限于 SaaS 服务、商业产品集成等)必须获得明确授权。
- 📦 源代码:所有源代码已公开,可在 GitHub 仓库中查看和下载
- 🔧 构建:使用
build.sh脚本可以自行编译各平台的二进制文件 - 🤝 贡献:欢迎提交 Pull Request 或 Issue
- 📝 文档:项目文档和代码注释持续完善中
- 用户信息: 获取用户信息
- 文件列表: 列出夸克网盘指定目录下的所有文件和子目录
- 文件信息: 获取文件或目录的详细信息(大小、修改时间、路径等)
- 下载链接: 获取文件的下载链接
- 文件上传: 将本地文件上传到夸克网盘(支持大文件分片上传)
- 文件夹操作: 创建文件夹
- 文件操作: 移动、复制、重命名文件或目录
- 文件删除: 删除夸克网盘中的文件或目录
- 分享功能: 创建分享链接,支持设置有效期和提取码
- CLI 工具: 提供命令行工具,方便其他进程调用
- Linux / macOS / Windows 操作系统
- 有效的夸克网盘账号和 Cookie
系统要求:
- Go 1.18 或更高版本
- Git
构建步骤:
# 1. 克隆仓库
git clone https://github.com/zhangjingwei/kuake_sdk.git
cd kuake_sdk
# 2. 运行构建脚本
chmod +x build.sh
./build.sh
# 3. 构建完成后,二进制文件在 dist/ 目录中从 Releases 页面下载对应平台的二进制文件:
文件名格式:kuake-{version}-{os}-{arch} 或 kuake-{version}-{os}-{arch}.exe(Windows)
- Linux:
kuake-{version}-linux-amd64 - macOS:
kuake-{version}-darwin-amd64 - Windows:
kuake-{version}-windows-amd64.exe
安装步骤:
# 1. 下载二进制文件
# 方式A:下载最新版本
wget https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/kuake-v1.3.1-linux-amd64
# 方式B:下载指定版本
# wget https://github.com/zhangjingwei/kuake_sdk/releases/download/v1.3.1/kuake-v1.3.1-linux-amd64
# 2. 添加执行权限
chmod +x kuake-v1.3.1-linux-amd64
# 3. 下载配置文件示例(可选)
wget https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/config.json
# 4. 编辑配置文件,填入您的 Cookie
# 使用文本编辑器打开 config.json,替换示例值
# 5. 使用方式(方式A:直接使用)
./kuake-v1.3.1-linux-amd64 user
# 5. 使用方式(方式B:移动到 PATH,推荐)
sudo mv kuake-v1.3.1-linux-amd64 /usr/local/bin/kuake
kuake user# 1. 下载二进制文件
# 方式A:下载最新版本
wget https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/kuake-v1.3.1-darwin-amd64
# 或使用 curl
curl -L -o kuake-v1.3.1-darwin-amd64 https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/kuake-v1.3.1-darwin-amd64
# 方式B:下载指定版本
# wget https://github.com/zhangjingwei/kuake_sdk/releases/download/v1.3.1/kuake-v1.3.1-darwin-amd64
# 2. 添加执行权限
chmod +x kuake-v1.3.1-darwin-amd64
# 3. 下载配置文件示例(可选)
wget https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/config.json
# 或使用 curl
curl -L -o config.json https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/config.json
# 4. 编辑配置文件,填入您的 Cookie
# 使用文本编辑器打开 config.json,替换示例值
# 5. 使用方式(方式A:直接使用)
./kuake-v1.3.1-darwin-amd64 user
# 5. 使用方式(方式B:移动到 PATH,推荐)
sudo mv kuake-v1.3.1-darwin-amd64 /usr/local/bin/kuake
kuake user# 1. 下载二进制文件
# 方式A:下载最新版本
Invoke-WebRequest -Uri "https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/kuake-v1.3.1-windows-amd64.exe" -OutFile "kuake-v1.3.1-windows-amd64.exe"
# 方式B:下载指定版本
# Invoke-WebRequest -Uri "https://github.com/zhangjingwei/kuake_sdk/releases/download/v1.3.1/kuake-v1.3.1-windows-amd64.exe" -OutFile "kuake-v1.3.1-windows-amd64.exe"
# 2. 下载配置文件示例(可选)
Invoke-WebRequest -Uri "https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/config.json" -OutFile "config.json"
# 3. 编辑配置文件,填入您的 Cookie
# 使用文本编辑器打开 config.json,替换示例值
# 4. 使用方式(在 PowerShell 或 CMD 中)
.\kuake-v1.3.1-windows-amd64.exe user方式一:从 Release 下载示例配置文件
从 Releases 页面下载 config.json 示例文件,然后编辑填入您的 Cookie。
方式二:手动创建配置文件
创建 config.json 文件:
{
"Quark": {
"access_tokens": [
"__pus=your_pus_value_here;"
]
}
}如何获取 Cookie:
- 打开浏览器,登录夸克网盘
- 打开开发者工具(F12)
- 在 Network 标签页中,找到任意一个请求
- 复制请求头中的
Cookie值(完整的 Cookie 字符串) - 将 Cookie 值粘贴到
config.json文件的access_tokens数组中
# 获取用户信息
./kuake-v1.3.1-linux-amd64 user
# 上传文件
./kuake-v1.3.1-linux-amd64 upload "file.txt" "/file.txt"
# 列出目录
./kuake-v1.3.1-linux-amd64 list "/"
# 查看帮助
./kuake-v1.3.1-linux-amd64 help{
"Quark": {
"access_tokens": [
"__pus=your_pus_value_here;"
]
}
}重要说明:
access_tokens字段是一个字符串数组,支持配置多个用户的 Cookie- 每个字符串存储的是完整的 Cookie 字符串(所有 cookie 用分号和空格分隔)
- 从浏览器开发者工具中复制完整的 Cookie 值
- 示例格式:
cookie1=value1; cookie2=value2; cookie3=value3 - 支持多用户配置(在数组中添加多个 Cookie 字符串)
安全提示:
config.json文件包含敏感信息,请不要将其提交到版本控制系统.gitignore文件已包含config.json,确保不会被意外提交- 请妥善保管您的 Cookie,不要分享给他人
kuake <command> [config.json] [arguments...]| 命令 | 说明 | 示例 |
|---|---|---|
user |
获取用户信息 | kuake user |
list [path] |
列出目录内容(默认: "/") | kuake list "/" |
info <path> |
获取文件/文件夹信息 | kuake info "/file.txt" |
download <path> |
获取文件下载链接 | kuake download "/file.txt" |
upload <file> <dest> |
上传文件(上传进度输出到 stderr) | kuake upload "file.txt" "/file.txt" |
create <name> <pdir> |
创建文件夹(pdir 为父目录路径,根目录使用 "/") | kuake create "test_folder" "/" |
move <src> <dest> |
移动文件/文件夹 | kuake move "/file.txt" "/folder/" |
copy <src> <dest> |
复制文件/文件夹 | kuake copy "/file.txt" "/folder/" |
rename <path> <newName> |
重命名文件/文件夹 | kuake rename "/file.txt" "new_name.txt" |
delete <path> |
删除文件/文件夹 | kuake delete "/file.txt" |
share <path> <days> <passcode> |
创建分享链接 | kuake share "/file.txt" 7 "false" |
help |
显示帮助信息 | kuake help |
重要提示:
- 所有路径参数必须用引号包裹(
"path") - 根目录使用
"/"表示 days参数:0=永久,1=1天,7=7天,30=30天passcode参数:"true"=需要提取码,"false"=不需要提取码
所有命令的结果都以 JSON 格式输出到 stdout:
成功响应:
{
"success": true,
"code": "OK",
"message": "操作成功",
"data": {
...
}
}错误响应:
{
"success": false,
"code": "ERROR_CODE",
"message": "错误描述",
"error": "详细错误信息"
}注意:
- 所有结果(包括成功和错误)都以 JSON 格式输出到 stdout
- 上传进度、帮助信息和序列化错误输出到 stderr
- 这样设计便于其他进程解析 JSON 结果,进度信息不会混入 JSON 输出
0: 操作成功1: 操作失败
# 获取用户信息(使用默认配置文件 config.json)
./kuake-{version}-{os}-{arch} user
# 获取用户信息(使用自定义配置文件)
./kuake-{version}-{os}-{arch} user custom.json
# 列出根目录
./kuake-{version}-{os}-{arch} list "/"
# 获取文件信息
./kuake-{version}-{os}-{arch} info "/file.txt"
# 获取文件下载链接
./kuake-{version}-{os}-{arch} download "/file.txt"
# 上传文件
./kuake-{version}-{os}-{arch} upload "file.txt" "/file.txt"
# 创建文件夹(根目录)
./kuake-{version}-{os}-{arch} create "test_folder" "/"
# 移动文件
./kuake-{version}-{os}-{arch} move "/file.txt" "/folder/"
# 复制文件
./kuake-{version}-{os}-{arch} copy "/file.txt" "/folder/"
# 重命名文件
./kuake-{version}-{os}-{arch} rename "/file.txt" "new_name.txt"
# 删除文件
./kuake-{version}-{os}-{arch} delete "/file.txt"
# 创建分享链接(7天,不需要提取码)
./kuake-{version}-{os}-{arch} share "/file.txt" 7 "false"
# 创建分享链接(30天,需要提取码,使用自定义配置文件)
./kuake-{version}-{os}-{arch} share "/file.txt" 30 "true" custom.json
# 查看帮助
./kuake-{version}-{os}-{arch} help注意:
- 示例中的
{version}、{os}、{arch}需要替换为实际值 - Windows 用户需要添加
.exe扩展名并使用.\前缀 - 如果已添加到 PATH,可以直接使用
kuake命令
-
错误消息转义问题修复 (
cmd/main.go)- 修复了 CLI 错误消息中双引号在 JSON 输出时被转义的问题
- 将所有错误消息示例从双引号改为单引号,避免 JSON 编码时的转义问题
- 影响的命令:
upload,create,info,move,copy,rename,delete,download
-
API 错误响应处理优化 (
sdk/quark_client.go)- 改进了 HTTP 错误响应的处理逻辑
- 现在会尝试解析 JSON 响应体,提取具体的错误消息(
message、errmsg、code字段) - 如果无法解析 JSON,会返回原始响应体的前 500 个字符
- 错误消息更加清晰,便于调试和定位问题
-
类型断言安全性修复 (
sdk/file.go,sdk/share.go)- 修复了多处直接类型断言可能导致 panic 的问题
- 在
CreateFolder、UploadFile、CreateShare等方法中添加了安全的类型检查和错误处理 - 确保在访问
Data["fid"]等字段前先检查响应是否成功,以及字段是否存在
-
完整的单元测试套件
- 新增
sdk/config_test.go- 配置文件加载和保存的测试 - 新增
sdk/quark_client_test.go- 客户端初始化和基础方法的测试 - 新增
sdk/user_test.go- 用户信息获取的测试 - 新增
sdk/file_test.go- 文件操作相关测试 - 新增
sdk/share_test.go- 分享功能相关测试 - 新增
sdk/TEST_README.md- 测试说明文档
- 新增
-
测试覆盖
- 单元测试:覆盖不依赖外部资源的函数(如
normalizeRootDir,parseCookie,ConvertToFileInfo) - 集成测试框架:为需要网络和 API 的测试提供了测试框架(标记为
t.Skip()) - 表驱动测试:使用表驱动测试提高测试覆盖率
- 单元测试:覆盖不依赖外部资源的函数(如
-
错误处理增强
- 在
quark_client.go的错误处理中添加了详细的注释说明 - 改进了错误消息的可读性和信息量
- 在
-
代码质量
- 所有测试用例通过编译和运行
- 修复了潜在的 nil 指针解引用问题
- 提高了代码的健壮性和安全性
- 测试文档
- 新增
sdk/TEST_README.md,详细说明如何运行测试 - 包含测试用例列表、运行方法、覆盖率查看等说明
- 新增
- 测试文件数量: 5 个
- 测试函数数量: 30+ 个
- 代码覆盖率: 约 5.9%(单元测试部分,集成测试被跳过)
sdk/quark_client.go- 错误处理优化,添加错误消息提取逻辑cmd/main.go- 修复错误消息转义问题(8 处修改)sdk/file.go- 修复类型断言安全问题(2 处修改)sdk/share.go- 修复类型断言安全问题(1 处修改)sdk/config_test.go- 新增配置文件测试sdk/quark_client_test.go- 新增客户端测试sdk/user_test.go- 新增用户信息测试sdk/file_test.go- 新增文件操作测试sdk/share_test.go- 新增分享功能测试sdk/TEST_README.md- 新增测试文档
- 文件名格式:二进制文件名包含版本号,格式为
kuake-{version}-{os}-{arch}或kuake-{version}-{os}-{arch}.exe(Windows) - 执行权限:Linux/macOS 二进制文件已包含执行权限,可直接使用
./前缀执行 - 路径参数:所有路径参数必须用引号包裹(包含空格或特殊字符时),例如:
"./file name.txt"、"/path/to/file" - 配置文件:
- 默认配置文件路径:
config.json(当前目录) - 配置文件参数是可选的,放在命令之后、其他参数之前
- 配置文件参数必须是
.json扩展名 - 示例:
kuake user custom.json(使用自定义配置文件)
- 默认配置文件路径:
- 操作说明:
- 所有操作都通过夸克网盘 API 进行
- 需要有效的 Cookie(access_token)才能使用
- 上传操作支持进度显示(输出到 stderr)
- 删除目录会递归删除所有子文件和子目录
- 输出格式:
- CLI 工具的所有结果以 JSON 格式输出到 stdout,方便其他进程解析
- 上传进度、帮助信息和序列化错误输出到 stderr,不会混入 JSON 输出
- 成功时退出码为 0,失败时为 1
重要提示:请在使用本工具前仔细阅读并完全理解本免责声明。使用本工具即表示您已阅读、理解并完全同意本免责声明的所有条款。
1.1 本项目("Kuake SDK")是一个非官方的第三方开源工具,与夸克网盘("Quark")及其关联公司(统称"夸克官方")完全无关,未获得夸克官方的任何授权、认可或支持。
1.2 本项目不隶属于、不代表、不代表夸克官方,也不代表夸克官方的任何立场或政策。
1.3 本项目仅用于学习和研究目的,不应用于任何商业用途(除非获得明确授权)。
2.1 用户自行承担所有风险:使用本工具进行任何操作时,用户完全自行承担所有风险和责任,包括但不限于:
- 数据丢失、损坏、泄露或无法恢复
- 账号被封禁、限制、暂停或永久禁用
- API 调用失败、超时或返回错误结果
- 违反夸克官方服务条款导致的任何后果
- 违反相关法律法规导致的任何后果
- 因使用本工具导致的任何直接或间接损失
- 其他任何不可预见或可预见的后果
2.2 不提供任何保证:本工具按"现状"提供,不提供任何明示或暗示的保证,包括但不限于:
- 不保证工具的功能完整性、准确性、可靠性或可用性
- 不保证工具与夸克官方 API 的兼容性
- 不保证工具的安全性、无错误性或无病毒性
- 不保证工具满足用户的特定需求或期望
- 不保证工具的持续可用性或维护
3.1 API 变更风险:夸克官方可能随时更改、限制或终止其 API,这可能导致本工具完全无法使用。项目维护者不保证工具的持续可用性,不承担因 API 变更导致的任何责任。
3.2 遵守服务条款:使用本工具即表示您已阅读、理解并同意遵守夸克官方的所有服务条款、使用协议、隐私政策等相关规定。
3.3 禁止滥用:用户不得使用本工具进行以下行为:
- 违反夸克官方服务条款的任何行为
- 滥用 API、批量操作、爬虫或自动化脚本(除非明确允许)
- 侵犯他人知识产权、隐私权或其他合法权益
- 传播恶意软件、病毒或有害代码
- 进行任何非法、欺诈或不当行为
- 干扰、破坏或攻击夸克官方的服务或系统
3.4 违规后果:任何违反服务条款的行为可能导致:
- 账号被立即封禁或限制
- 承担相应的法律责任
- 项目维护者有权拒绝提供支持或服务
4.1 Cookie 安全责任:
- 用户完全自行负责 Cookie 的安全保管和使用
- 禁止将 Cookie 分享给任何第三方
- 禁止在公共场合、不可信环境或不安全设备上使用本工具
- 建议定期更换 Cookie 以确保账号安全
- 因 Cookie 泄露导致的任何损失,项目维护者不承担任何责任
4.2 数据隐私:
- 本工具不会收集、存储或传输用户的任何个人数据或文件内容
- 所有操作均在用户本地环境执行
- 用户自行负责其数据的安全和隐私保护
4.3 第三方服务:本工具依赖夸克官方的 API 服务,用户的数据和操作受夸克官方的隐私政策和服务条款约束。
5.1 项目知识产权:本项目的源代码、文档、设计等知识产权归项目维护者所有,受 AGPL-3.0 许可证保护。
5.2 第三方知识产权:本工具可能使用或引用第三方库、API 或服务,其知识产权归各自所有者所有。
5.3 用户内容:用户通过本工具上传、存储或管理的任何内容,其知识产权归用户或相关权利人所有,项目维护者不主张任何权利。
6.1 完全免责:在法律允许的最大范围内,项目维护者及其贡献者不对以下事项承担任何责任:
- 使用本工具造成的任何直接、间接、偶然、特殊、惩罚性或后果性损失
- 数据丢失、业务中断、利润损失、商誉损失或其他经济损失
- 因使用本工具导致的任何法律纠纷、诉讼或索赔
- 因 API 变更、服务中断或工具失效导致的任何损失
- 因违反服务条款、法律法规导致的任何后果
- 因安全漏洞、恶意攻击或技术故障导致的任何损失
6.2 责任限制:即使项目维护者已被告知可能发生此类损失,也不承担任何责任。
6.3 适用法律:本免责声明受中华人民共和国法律管辖。如发生争议,应通过友好协商解决;协商不成的,提交项目维护者所在地有管辖权的人民法院解决。
7.1 法律法规遵守:用户必须遵守所有适用的法律法规,包括但不限于:
- 《中华人民共和国网络安全法》
- 《中华人民共和国数据安全法》
- 《中华人民共和国个人信息保护法》
- 其他相关法律法规
7.2 禁止用途:用户不得将本工具用于任何非法、有害、欺诈或不当目的。
7.3 出口管制:用户必须遵守所有适用的出口管制法律法规,不得将本工具用于受限制的目的或地区。
8.1 不提供技术支持:项目维护者不提供任何形式的技术支持、维护或更新保证。
8.2 项目状态:项目可能随时暂停、终止或变更,项目维护者不承担任何通知义务。
8.3 社区支持:用户可以通过 GitHub Issues 等渠道寻求社区帮助,但不保证获得回复或解决方案。
9.1 使用建议:
- 强烈建议在生产环境使用前进行充分测试
- 强烈建议定期备份重要数据
- 强烈建议遵守夸克官方的使用规范和服务条款
- 建议在非关键场景下使用本工具
- 建议定期检查工具更新和安全公告
9.2 风险控制:
- 使用前请评估风险并采取适当的安全措施
- 建议使用测试账号进行验证
- 建议限制使用频率和操作范围
10.1 项目维护者保留随时修改本免责声明的权利,修改后的免责声明将在项目仓库中发布。
10.2 继续使用本工具即表示您接受修改后的免责声明。
最终声明:
使用本工具即表示您已充分理解并完全同意上述所有条款。如果您不同意本免责声明的任何内容,请立即停止使用本工具。项目维护者不对因使用本工具导致的任何损失、损害或法律后果承担任何责任。
本项目采用 AGPL-3.0 许可证。详情请参阅 LICENSE 文件。
许可证要点:
- ✅ 允许:学习、研究、修改、分发
- ✅ 允许:个人和非商业使用
- ❌ 禁止:商业使用(包括 SaaS 服务、商业产品集成等)
- 📋 要求:使用本项目的衍生作品也必须采用 AGPL-3.0 许可证并开源
商业使用授权:如需商业使用,请联系项目维护者获得授权。