让 Alist 生成可永久访问的直链

让 Alist 生成可永久访问的直链

相关资源

目标

本文不探讨 Alist 的部署问题,假设你还没有部署,可以先跳过,等完成部署后再浏览本文

部署 Alist 并挂载相关资源后,下载文件时仍然会跳转到原始链接,而不是直链,除非是 S3S3 兼容协议 这种本来就支持直链的平台。这就带来一个问题,以阿里云盘为例,通过 Alist 下载时,下载地址会跳转到阿里官方地址,并生成一长串签名,类似这样:

1
https://cn-hangzhou-data.aliyundrive.net/TsuvUdCQ%2F859958522%2F660116366efe30ec829243ec9603c77a49c44fd4%2F66011636fe9e265cf7a94d1da69fe18a93beaf9d?ap=c78079b71f42427b8c899f81fbe36961&callback=eyJjYWxsYmFja1VybCI6Imh0dHA6Ly9iajI5LmFwaS1ocC5hbGl5dW5wZHMuY29tL3YyL2ZpbGUvZG93bmxvYWRfY2FsbGJhY2siLCJjYWxsYmFja0JvZHkiOiJodHRwSGVhZGVyLnJhbmdlPSR7aHR0cEhlYWRlci5yYW5nZX1cdTAwMjZidWNrZXQ9JHtidWNrZXR9XHUwMDI2b2JqZWN0PSR7b2JqZWN0fVx1MDAyNmRvbWFpbl9pZD0ke3g6ZG9tYWluX2lkfVx1MDAyNnVzZXJfaWQ9JHt4OnVzZXJfaWR9XHUwMDI2ZHJpdmVfaWQ9JHt4OmRyaXZlX2lkfVx1MDAyNmZpbGVfaWQ9JHt4OmZpbGVfaWR9XHUwMDI2cGRzX3BhcmFtcz0ke3g6cGRzX3BhcmFtc31cdTAwMjZ2ZXJzaW9uPSR7eDp2ZXJzaW9ufSIsImNhbGxiYWNrQm9keVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCJjYWxsYmFja1N0YWdlIjoiYmVmb3JlLWV4ZWN1dGUiLCJjYWxsYmFja0ZhaWx1cmVBY3Rpb24iOiJpZ25vcmUifQ%3D%3D&callback-var=eyJ4OmRvbWFpbl9pZCI6ImJqMjkiLCJ4OnVzZXJfaWQiOiIyZGJkMzI3MjUyMjM0ZWNhOWVmM2RhZDIxN2RkZDFjOCIsIng6ZHJpdmVfaWQiOiIyMDU1ODg1IiwieDpmaWxlX2lkIjoiNjYwMTQ1MDA4NTY1ODJmOGMzM2M0ZGZlOTk2MGI5NjA3YzNiM2E5ZSIsIng6cGRzX3BhcmFtcyI6IntcImFwXCI6XCJjNzgwNzliNzFmNDI0MjdiOGM4OTlmODFmYmUzNjk2MVwifSIsIng6dmVyc2lvbiI6InYzIn0%3D&di=bj29&dr=2055885&f=66014500856582f8c33c4dfe9960b9607c3b3a9e&op=d&pds-params=%7B%22ap%22%3A%22c78079b71f42427b8c899f81fbe36961%22%7D&response-content-disposition=attachment%3B%20filename%2A%3DUTF-8%27%27PixPin_1.8.2.0_Green.7z&security-token=CAISvgJ1q6Ft5B2yfSjIr5rXfdmAj%2Bpq7a2jTBHStlY3dOVZgqqS0Tz2IHhMf3NpBOkZvvQ1lGlU6%2Fcalq5rR4QAXlDfNT%2FuNxCxqlHPWZHInuDox55m4cTXNAr%2BIhr%2F29CoEIedZdjBe%2FCrRknZnytou9XTfimjWFrXWv%2Fgy%2BQQDLItUxK%2FcCBNCfpPOwJms7V6D3bKMuu3OROY6Qi5TmgQ41Uh1jgjtPzkkpfFtkGF1GeXkLFF%2B97DRbG%2FdNRpMZtFVNO44fd7bKKp0lQLs0ARrv4r1fMUqW2X543AUgFLhy2KKMPY99xpFgh9a7j0iCbSGyUu%2FhcRm5sw9%2Byfo34lVYneo79f2FL2y4IClLcc%2BmqdsRIvJzWstJ7Gf9LWqChvSgk4TxhhcNFKSTQrInFCB0%2BcRObJl16iDfILgvXtuMkagAFZ75k%2F%2BnLgtJMo7ZiQIgGAx%2BwC4nke4YPHPyL%2FgQ28NHj%2F2jrG6BpNLKew5Ub5LzbpgnDLwpp9%2ByKkQ%2B4CUssdm1XwAMWbieWiHK4AFu%2F1xwR%2B0a5gE%2F3vfw36DrwoaBO6hZzWSmHibTpaQXXrbqDHF1SbdpDpTze3Hm%2FRKTPCcSAA&u=2dbd327252234eca9ef3dad217ddd1c8&x-oss-access-key-id=STS.NYb6c4b5KZoHN7cRVbxjumo93&x-oss-expires=1756204215&x-oss-signature=sIpowymSkG2ENlfQ4YWvFCDoJ2nwnKjxD1CNG1ML8Gs%3D&x-oss-signature-version=OSS2

这就导致几个问题:

  • 无法生成永久可用的直链,无法分享下载地址
  • 速度受阿里官方限制,非会员看视频很卡

本文基本解决了这些问题,生成永久直链,让网盘成为文件床、图床、视频床、音乐床…

1️⃣ 第一步:搭建 Worker 转发 Alist 访问

Openalist 官方其实提供了一个解决方案: OpenAlist 代理转发,但应该是考虑到安全性问题,作者并不建议这样做。官方提供了 CF worker、二进制、docker 三种部署方式,本文仅探讨 worker 方式

CF 官方明确禁止使用 worker 代理,所以安全起见,请创建一个 CF 小号来部署

  • 官方代码官方使用说明。官方代码有一个小问题,生成的直链不能直接在浏览器预览,会强制跳转下载,因此我对代码稍稍改动了一下
  • 改版代码:alist-proxy

选择其中一个代码部署到 worker,设置以下四个环境变量

  • ADDRESS:alist 服务端地址,示例:https://alist.domain.com
  • WORKER_ADDRESS:部署本 worker 后得到的地址,可以绑定域名,示例:https://alist.worker.com
  • DISABLE_SIGN:是否关闭签名验证,默认 false,这里需要设置为 true
  • TOKEN:alist 的 api token,示例:alist-xxxxxxxxxxxxxxxxxx

AList API Token 获取方法:AList 管理 → 设置 → 其他 → 令牌,生成后务必保存!

2️⃣ 第二步:修改 Alist 服务端配置文件

在你部署的 alist 的服务器上找到这个文件:/etc/openlist/config.json

修改 site_url 字段为你部署的 worker 域名,然后重启 alist 容器

1
"site_url": "https://alist.worker.com",

image.png

3️⃣ 第三步:修改 Alist 后台配置

依次点开 AList 管理 → 设置 → 全局直链有效期 设为 0签名所有 取消勾选

image.png

4️⃣ 第四步:修改 Alist 挂载配置,以阿里云盘为例

依次点开 AList 管理 → 存储,找到阿里云盘的挂载点,点击 编辑,修改如下配置后保存

  • web 代理:开启
  • 下载代理 URL:改为部署的 worker 地址,如 https://alist.worker.com
  • 启用签名:关闭

image.png

到这里其实已经大功告成了,现在下载此挂载点的任何文件都会变成类似这样的直链
https://alist.worker.com/aliyun/2024-10-test.webp
这个直链地址永久有效,会自动通过 worker 来转发 alist 服务端的下载请求

最终效果

  1. 文件下载链接全部变成永久直链
  2. 任何网盘都可以用作图床、文件床、视频床
  3. 通过 alist 在线看视频非常流畅,随意拖动也不会卡

#cloudflare #alist #图床