突破限制 · 高效下载 · 简单易用
<a href="https://github.com/123pannextgen/123pan/stargazers"><img src="https://img.shields.io/github/stars/123pannextgen/123pan" alt="Stars"></a>
<a href="https://github.com/123pannextgen/123pan/issues"><img src="https://img.shields.io/github/issues/123pannextgen/123pan" alt="Issues"></a>
<a href="https://github.com/123pannextgen/123pan/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-green" alt="License"></a>
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.12%2B-blue" alt="Python Version"></a>
<a href="https://github.com/123pannextgen/123pan/releases"><img src="https://img.shields.io/github/v/tag/123pannextgen/123pan?label=release" alt="latest_release"></a>
<a href="https://github.com/123pannextgen/123pan/releases"><img src="https://img.shields.io/github/downloads/123pannextgen/123pan/total" alt="Downloads"></a>

123pan是一款基于Python开发的高效下载辅助工具,通过模拟安卓客户端协议,帮助用户绕过123云盘的自用下载流量限制,实现无阻碍下载体验。
如果你的电脑是Windows系统或者Linux发行版,可以直接下载并解压,然后运行其中的123pan.exe或123pan。
下载地址:
[!TIP] Windows下如果无法运行,可以尝试打开兼容模式。杀毒软件有可能报毒,请放行。
[!IMPORTANT] 请不要从未知渠道下载!
其他系统以及开发请参考下方的源码运行。
git clone https://github.com/123panNextGen/123pan.git
cd 123pan/
准备Python虚拟环境。
uv sync
uv sync --group build --group lint # 构建环境
然后运行src下的123pan.py即可。
uv run src/123pan.py
默认会在系统C:\Users\%USERNAME%\AppData\Roaming\123pan或~/.config/123pan创建配置文件和日志。
密码使用 AES-256-GCM 加密存储,密钥基于机器标识派生,存储于 ~/.config/123pan/.keyfile(权限 600)。
{
"currentAccount": "账号",
"accounts": {
"账号": {
"userName": "账号",
"passWord": "密码",
"authorization": "令牌",
"deviceType": "模拟设备类型",
"osVersion": "模拟设备系统",
"loginuuid": "登陆id"
}
},
"settings": {
"defaultDownloadPath": "默认下载位置",
"askDownloadLocation": true,
"multiThreadDownload": true,
"downloadSpeedLimit": 0,
"uploadSpeedLimit": 0,
"proxyEnabled": false,
"proxyType": "http",
"proxyHost": "",
"proxyPort": 0,
"proxyUsername": "",
"proxyPassword": ""
}
}
| 设置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defaultDownloadPath |
string | ~/Downloads |
默认下载目录 |
askDownloadLocation |
bool | true |
每次下载前是否询问保存位置 |
multiThreadDownload |
bool | true |
是否启用多线程分片下载 |
downloadSpeedLimit |
int | 0 |
下载速度限制(KB/s),0 表示不限制 |
uploadSpeedLimit |
int | 0 |
上传速度限制(KB/s),0 表示不限制 |
proxyEnabled |
bool | false |
是否启用网络代理 |
proxyType |
string | "http" |
代理类型:"http" 或 "socks5" |
proxyHost |
string | "" |
代理服务器地址 |
proxyPort |
int | 0 |
代理服务器端口 |
proxyUsername |
string | "" |
代理认证用户名(可选) |
proxyPassword |
string | "" |
代理认证密码(可选) |
项目包含 61 个测试用例,覆盖核心逻辑层。
# 运行全部测试
uv run pytest
# 运行特定文件
uv run pytest tests/unit/test_speed_limiter.py
# 带覆盖率报告
uv run pytest --cov
# 详细输出
uv run pytest -v
tests/
unit/ # 纯逻辑测试,无外部依赖
test_speed_limiter.py # 令牌桶限速算法(mock time.monotonic)
test_credential.py # AES-256-GCM 加解密(临时 keyfile 隔离)
test_model.py # 数据模型解析/序列化
test_api_utils.py # format_file_size 等工具函数
test_config.py # 配置读写、旧格式迁移(临时目录隔离)
integration/ # 依赖 mock 外部服务
test_session.py # NetSession HTTP 方法(responses mock)
| 层级 | 方式 | 说明 |
|---|---|---|
| 纯函数 | 直接断言返回值 | SpeedLimiter、format_file_size |
| 文件系统 | tmp_path fixture |
不碰 ~/.config/123pan |
| 加密 | 模块级 _KEY_FILE 覆盖 |
测试用临时 .keyfile |
| HTTP | responses 拦截 requests |
不发起真实网络请求 |
你可以通过多种途径反馈问题。
我们将在第一时间解决。
你可以在社区讨论相关问题
本程序使用Apache 2.0协议。
本项目为个人学习与技术研究目的开发,与 123 云盘官方无任何关联。使用本软件即表示您已知晓并同意以下内容:
[!IMPORTANT] 以下项目与123panNextGen团队没有任何关系,为社区的技术爱好者基于我们的项目进一步创作的。
本程序由123panNextGen开发团队用♥️制作~
我们由衷感谢为本程序贡献代码的人们。 贡献人员名单
$ claude mcp add 123pan \
-- python -m otcore.mcp_server <graph>