获取预训练模型的直链用于Wget下载(以百度AI Studio为例)

166 阅读3分钟

在使用Google Colab、Kaggle Kernel或其他云端环境时,我们经常需要用 !wget 命令来快速下载模型权重。然而,一个常见的情况是:我们在百度AI Studio上找到了一个非常棒的模型,但页面上只有“下载”按钮,却没有提供可以直接用于 wget 的直接下载链接。

目前的痛点在于:有图形界面的浏览器可以点击下载,但无UI的服务器环境却无能为力。

核心原理

很多网站为了做权限验证、下载统计或动态生成地址,不会直接暴露文件的静态URL。当你点击“下载”按钮时,浏览器会向服务器发送一个请求,服务器返回一个有时效性的、真实的临时下载地址。我们的目标就是捕获这个地址。

详细操作步骤

以这个模型页为例:aistudio.baidu.com/datasetdeta…

  1. 打开开发者工具
    在模型页面,右键点击“检查”(Inspect),或者直接按键盘的 F12 键,打开开发者工具。

  2. 切换到Network(网络)面板
    这里会记录浏览器所有的网络请求。

  3. 开始监控并触发下载
    ① 先点击网络面板下的圆形录制按钮(通常默认是红色的正在录制状态),确保它处于活动状态。
    ② 再点击页面上的 “下载”按钮
    ③ 此时你会看到网络面板中瞬间多出了一些新的请求记录。

image.png

  1. 找到关键请求并获取直链
    ① 在这些新请求中,仔细寻找名称类似于 downloadgetUrlfile 等可能包含下载信息的请求。通常它的Type可能是 xhr 或 fetch
    ② 点击这个请求,在右侧切换到  “Response”(响应)  或  “Preview”(预览)  标签页。
    ③ 这里服务器返回的通常是JSON格式的数据。展开它,寻找一个包含 https:// 或 http:// 的字段,最常见的字段名就是 fileUrlurl 或 download_url
    ④ 复制这个链接地址,这样一来我们就找到了模型的真实临时下载直链。

在Colab中的应用

在Colab单元格中,只需一行命令,就可以下载你想要的模型:

!wget -O your_model_name.tar.gz "你复制出来的那个很长的fileUrl链接"

命令解释:

  • !wget: 在Python Notebook中运行Linux的wget命令。
  • -O your_model_name.tar.gz: 将下载的文件重命名为你容易识别的名字(如 model_paddle.tar.gz)。
  • "url": 将复制出来的链接用引号括起来,因为它通常包含特殊字符。

注意事项

  • 链接时效性:通过这种方式获取的下载链接通常是有时间限制的(例如可能几分钟或几小时后失效)。因此,最好是在准备好下载时再执行上述操作,并立即将链接用于wget命令。
  • 登录状态:有时该请求会携带你的登录认证信息(Cookies),所以请确保你的浏览器已经登录了百度账号。在Colab中直接wget则无法携带这个认证,如果下载失败,可能需要在wget命令中附加Cookie头(比较复杂),或者说明此方法仅适用于在浏览器中已登录的状态下获取临时链接。

总结

这个方法不仅适用于百度AI Studio,对于很多其他不提供直接下载链接的网站或平台(尤其是一些通过Ajax请求触发下载的场景),同样可以尝试使用此方法“嗅探”出真实地址。这是一个前端调试中非常实用的技巧。