代码实现:微博图片转存AList
内容提要
最近想将微博图片转入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,并可进一步改造代码实现更多功能。