使用 wget 或 curl 從 microsoft 下載 Windows ISO

使用 wget 或 curl 從 microsoft 下載 Windows ISO

目的:透過命令列直接下載官方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&hcc-97abca347eaa&e=1583937294&h=2b05fad636320fa

這可以透過任何 GUI 瀏覽器或任何平台正常運作,但我們需要在 Linux 盒子中使用它

  • linux伺服器當然少了gui(不打算安裝gui)
  • wget/curl 導致禁止下載 html 文件
  • 在wget/curl 中將用戶代理更改為firefox 或添加自定義有效負載:curl -d '{"t": 77e897e2-a32c-419c-8f18-54770dbb5a15,"e": 1583942596,"h": 595f691df8f7e4088d24b6cc37077d1a}'並請求。
  • 嘗試了基於 Linux 的下載管理器,如 aria 和 axel,它也失敗了,禁止

如何僅透過命令列來完成此操作?

答案1

這是被禁止的,因為 url 中存在由 shell 解釋的特殊字元。有例如“?”和 '&'。現在來看看您的範例網址:

捲曲 --location --remote-name e7c

這會:

  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 4e7c'

答案2

我終於找到了解決方案,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)它應該開始下載。

答案3

我製作了一個名為 Mido 的自動化整個過程的工具:

https://github.com/ElliotKillick/Mido

相關內容