在 Mac 上访问阿里云盘、115、夸克
配合 OpenList 使用 — 大约 10 分钟,需要一台常开的设备。
阿里云盘、115、夸克、百度、迅雷这类网盘,没有向第三方应用开放可以直接接入的通道。它们的开放平台需要国内主体资质、逐个审核,而且授权随时可能被收回 — 社区项目 Alist 就先后失去过 123 云盘、阿里云盘和 115 的授权。
PolyDrive 的做法是不去自己维护这些随时会断的通道,而是支持 OpenList:一个开源的网盘聚合服务,由社区维护这些网盘的对接。你把 OpenList 部署起来,PolyDrive 连接它,就能在访达里像本地文件夹一样使用这些网盘。
这条通道的稳定性不由 PolyDrive 保证。网盘厂商随时可能调整策略,届时需要等待 OpenList 上游跟进。如果你有重要资料存在这些网盘里,请不要把它当作唯一的访问方式。
开始之前
- 一台常开的设备。装在 NAS 或服务器上,任何时候都能用;装在 Mac 本机也可以,但 Mac 睡眠时挂载会断开。
- 网盘的账号,以及一部能扫码的手机。
- PolyDrive 免费版可以挂载两个云盘。一个 OpenList 只计为一个,不管你在它里面接了几个网盘 — 这是这个方案顺带的好处。
第一步 · 部署 OpenList
用 Docker
mkdir -p /etc/openlist && docker run -d --restart=unless-stopped \
-v /etc/openlist:/opt/openlist/data -p 5244:5244 \
-e UMASK=022 --name openlist openlistteam/openlist:latest
查看自动生成的管理员密码:
docker logs openlist | grep -i "initial password"
群晖 / QNAP
在 Container Manager(套件中心的 Docker)里搜索 openlistteam/openlist,映射 5244 端口和一个数据目录,其余参数同上。
完成后
浏览器打开 http://<设备IP>:5244,用 admin 和上一步得到的密码登录。第一件事是改掉这个密码。
第二步 · 在 OpenList 里添加网盘
在后台进入「存储」→「添加」。
| 网盘 | 选择的驱动 | 获取凭证 |
|---|---|---|
| 阿里云盘 | 阿里云盘 Open |
勾选「使用 OpenList 提供的参数」,ClientID 和 AppKey 都留空,点「获取令牌」,手机扫码,再把得到的 Refresh Token 填回去 |
| 115 | 115 Open |
同样是扫码授权流程 |
| 夸克 / 百度 / 迅雷 / 天翼 | 各自对应的驱动 | 一般是填 Cookie 或扫码 |
挂载路径填 /aliyun、/115 这样的名字 — 它会成为你在访达里看到的目录名。
顺手改一个设置:缓存时间
在存储配置里找到 cache_expiration(缓存过期时间,单位是分钟),默认 30。OpenList 会把每个目录的列表缓存起来,在这段时间内,你刚在网盘 App 里新增的文件在访达中看不到。想让新文件更快出现,就把它调小。
不要填 0。填 0 不是关闭缓存,而是让缓存条目变成事实上永久有效 — 新增的文件将永远不出现,连更新存储配置都清不掉。
填 1 的实际生效时间约 70 秒,是个合理的选择。如果只想给某些目录加速,用 CustomCachePolicies,每行一条 glob:ttl。
第三步 · 创建一个给 PolyDrive 用的账号
不要把 admin 的密码交给任何客户端。在后台进入「用户」→「添加」,然后必须勾选这三项权限:
- WebDAV 读取
- WebDAV 管理
- 写入内容(创建/上传/修改) — 很多教程会漏掉这一条,或者按旧版 Alist 叫它「新建目录或上传」
为什么一个“只读”账号会出问题
PolyDrive 的「从服务器刷新」会主动让 OpenList 丢弃目录缓存(发起一次 refresh=true 的列举),否则你拿到的永远是最多 30 分钟前的旧列表。而 OpenList 要求发起刷新的账号在该路径上有写权限:只给读取和管理权限(权限值 768)会被拒绝,加上写入位(776)才能通过。
只读账号不会报错,只会让刷新静默失效 — PolyDrive 会一直告诉你“已是最新”,因为它从服务器拿到的答案确实逐字节没变。
这不只影响“看不到新文件”。目录缓存里过期而偏小的文件大小,可能让一次分段读取被提前截断。请不要给 PolyDrive 用只读账号。
第四步 · 在 PolyDrive 里连接
在 PolyDrive 中添加存储,选择 OpenList,然后填写:
- 服务器地址:
http://<设备IP>:5244 - 用户名 / 密码:第三步创建的那个账号
连接成功后,你在 OpenList 里挂的所有网盘,会作为子目录出现在访达的同一个位置下。
从外网访问:不要直接把 5244 端口暴露到公网。用 Tailscale 之类的组网工具,或者用反向代理配上 HTTPS。
排查
| 现象 | 原因 | 解决 |
|---|---|---|
| 网盘 App 里新增的文件,访达里看不到;点刷新说“已是最新” | OpenList 的目录缓存没有被清除 | 检查 PolyDrive 用的账号是否勾了「写入内容(创建/上传/修改)」,并把 cache_expiration 调小 |
出现 403 Refresh without permission |
同上,账号缺少写权限 | 补上权限后重新连接 |
| 目录能正常列出,但打开文件失败或卡住 | 客户端跟不了 302 跳转 | 在该存储的配置里,把 WebDAV 策略从「302 重定向」改成「使用代理 URL」。流量会经 OpenList 中转,慢一些但兼容性更好 |
报 Too Many Requests |
触发了网盘的频率限制 | 等几分钟。避免短时间内大量遍历目录 |
某个网盘突然全部无法访问,例如报 UserNotAllowedAccessDrive |
上游授权被限制 | 这是网盘厂商侧的变化,请关注 OpenList 的更新 |
| 用了一段时间后授权失效 | Refresh Token 过期或被撤销 | 回到 OpenList 后台,对该存储重新扫码授权 |
添加驱动时找不到对应的名字
OpenList 的驱动名称区分大小写,而且不一定符合直觉(例如通用的 WebDAV 驱动叫 WebDav,不是 WebDAV)。以后台列表里显示的名字为准。
使用前请了解
- 这些网盘的服务条款通常禁止第三方挂载用于公开分享和外链分发。阿里云盘明确禁止用于搭建图床、软件床、视频外链等分发服务,多 IP 频繁访问可能导致账号被冻结。请只用于访问你自己的文件。
- 通道可能随时中断。网盘厂商调整策略时,恢复时间取决于 OpenList 上游,不在 PolyDrive 的控制范围内。
- OpenList 是独立的开源项目(AGPL-3.0 许可),由社区维护,与 PolyDrive 没有隶属关系。它本身的部署问题请参考 OpenList 官方文档。
按这份指南走完仍然连不上?写信到 [email protected],并附上应用内错误对话框里 Copy Diagnostics(拷贝诊断信息)按钮给出的内容。另见疑难解答。