代码实现:微博图片转存AList

💡 原文中文,约2600字,阅读约需7分钟。
📝

内容提要

最近想将微博图片转入AList,但微博开启了防盗链,无法直接获取文件流。需要在请求头中携带Referer才能获取流数据。AList提供了三方接口,可以自行调用上传文件。代码实现中需要配置AList的信息,包括域名、账号、密码和上传路径。运行结果可实现微博图片转入AList。

🔎

延伸解读

防盗链机制与应对

微博图床启用了防盗链,导致直接访问图片链接无法获取文件流,AList 的离线下载功能因此失效。文章指出,必须在请求头中携带 Referer 字段(如 https://weibo.com/)才能正常获取流数据。这解释了为什么简单的链接下载会失败,也为类似场景提供了解决思路。

AList 三方接口上传流程

AList 提供了三方接口,允许通过编程方式上传文件。代码示例中,先调用 /api/auth/login 接口获取 token,再使用 PUT 请求调用 /api/fs/put 上传文件流。上传时需要设置 Authorization 头携带 token,并通过 File-Path 头指定上传路径和文件名。这为自动化转存提供了可行方案。

微博图片链接格式选择

微博图片链接支持多种格式后缀,如 large(原图)、oslarge(无水印)、mw690(最大 690 像素宽)、thumbnail(缩略图)等。不同后缀对应不同的尺寸或水印处理,用户可根据需要选择。例如,若希望保留原图,应使用 large 或 oslarge;若仅需缩略图,则可选用 thumbnail。

代码扩展与批量处理

文章提到,后续可以创建一个 txt 文件存储微博图片的后缀,然后改造代码实现批量转存。这意味着当前示例仅处理单张图片,但通过读取文件列表并循环调用上传逻辑,即可扩展为批量操作。这为管理大量微博图片提供了自动化思路。

❓

Q&A

如何将微博图片转存到AList?

需要在请求头中携带Referer,使用AList的三方接口上传文件,并配置域名、账号、密码和上传路径。

为什么无法直接获取微博图片的文件流?

因为微博开启了防盗链,必须在请求头中携带Referer才能获取流数据。

AList的接口如何使用?

AList提供三方接口,可以通过API调用上传文件,具体使用方法可参考AList API文档。

微博图片链接有哪些格式可选?

微博图片链接有多种格式,如large、oslarge、thumbnail等,分别对应不同的图片尺寸和水印状态。

如何配置AList的信息?

在代码中配置AList的信息,包括域名、账号、密码和上传路径。

运行代码后可以实现什么功能?

运行代码后可以将微博图片转入AList,并可进一步改造代码实现更多功能。

🏷️

标签

➡️

继续阅读