使用 wget 或 curl 从微软下载 Windows ISO

Cur*_*sM3 6 wget http curl https

目的:通过命令行直接下载官方Win10_1909 iso到linux

来源:https : //www.microsoft.com/en-in/software-download/windows10ISO

选择版本和语言后得到如下64位链接,24小时有效

https://software-download.microsoft.com/pr/Win10_1909_English_x64.iso?t=77395428-650e-4e5c-8bcc-97abca347eaa&e=1583937294&h=2b05fad63d3a6e20c4c7c7c9

这通过任何 gui 浏览器或任何平台都可以正常工作,但我们需要在 linux box 中使用它

  • linux服务器当然少gui(不打算安装gui)
  • wget/curl 导致禁止下载 html 文件
  • 在 wget/curl 中将用户代理更改为 firefox 或将自定义负载添加为 curl -d '{"t": 77e897e2-a32c-419c-8f18-54770dbb5a15,"e": 1583942596,"h": 595f691df881d270 iso 文件返回禁止页面
  • 尝试过基于 linux 的下载管理器,如 aria 和 axel 它也失败了,禁止

如何仅通过命令行完成此操作?

小智 9

这是被禁止的,因为 url 中存在由 shell 解释的特殊字符。有例如“?” 和 '&'。现在看一下您的示例网址:

curl --location --remote-name https://software-download.microsoft.com/pr/Win10_1909_English_x64.iso?t=77395428-650e-4e5c-8bcc-97abca347eaa&e=1583937294&h=2b05fad63d3a6e2a0c4a20cb49f34e7c

这会:

  1. 启动一个子 shell,它实际上执行了以下操作:
curl --location --remote-name https://software-download.microsoft.com/pr/Win10_1909_English_x64.iso?t=77395428-650e-4e5c-8bcc-97abca347eaa
  1. 启动一个子 shell,其中变量“e”被分配值“1583937294”
  2. 在您当前的 shell 环境中,将有一个变量“h”,其值分配为“2b05fad63d3a6e2a0c4a20cb49f34e7c”

如何修复它?- 简单,只需在 url 两边添加单引号即可:

卷曲 --location --remote-name 'https://software-download.microsoft.com/pr/Win10_1909_English_x64.iso?t=77395428-650e-4e5c-8bcc-97abca347eaa&e=1583937294&h=2b05fad63d3a6e2a0c4a20cb49f34e7c'


小智 3

我终于找到了解决方案,Firefox 中不需要扩展。

获取收到的 URL 后,在 Firefox 中打开一个新选项卡并打开开发人员工具 (F12)。切换到网络选项卡并输入下载 URL。当提示您下载时点击取消。

现在 Network 下会有一个 GET 请求;右键单击它并选择Copy > Copy as cURL。将这个巨大的字符串粘贴到您的终端中并添加-o [/path/filename]以实际将文件保存在某处,而不是将其转储到 STDOUT。就是这样!


在基于 Chromium 的浏览器中,在 Microsoft 下载页面上创建“32 位下载”和“64 位下载按钮”后。打开开发人员工具,然后切换到“网络”选项卡(它应该为空)。单击 32 或 64 位下载按钮。它应该会弹出一个另存为对话框,将其取消。右键单击网络选项卡中列出的新 url,复制->复制为 Curl 然后将其粘贴到终端窗口中,并附加值-o [/path/filename]。(例如-o Win10_20H2_v2_English.iso)它应该开始下载。