目的: コマンドライン経由でLinuxに公式Win10_1909 isoを直接ダウンロードする
ソース:https://www.microsoft.com/en-in/software-download/windows10ISO
エディションと言語を選択すると、次のような64ビットリンクが表示されます。これは24時間有効です。
これはどのGUIブラウザやどのプラットフォームでも問題なく動作しますが、Linuxボックスではこれが必要です。
- Linux サーバーには当然 GUI がありません (GUI をインストールするつもりはありません)
- wget/curl により禁止された HTML ファイルのダウンロードが発生する
- wget/curl でユーザー エージェントを firefox に変更するか、curl -d '{"t": 77e897e2-a32c-419c-8f18-54770dbb5a15,"e": 1583942596,"h": 595f691df8f7e4088d24b6cc37077d1a}' としてカスタム ペイロードを追加し、.iso ファイルを要求すると禁止されたページが返されます。
- ariaやaxelなどのLinuxベースのダウンロードマネージャーを試しましたが、これも失敗しました。禁止されています
コマンドラインのみでこれを実現するにはどうすればよいでしょうか?
答え1
URL にはシェルによって解釈される特殊文字が含まれているため、これは禁止されています。たとえば、「?」や「&」などです。サンプル URL を見てみましょう。
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
この意志:
- 実際には次の操作を実行するサブシェルを起動します。
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' が割り当てられます。
修正方法は? - 簡単です。URL を一重引用符で囲むだけです。
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'
答え2
ようやく解決策が見つかりました。Firefox では拡張機能は必要ありません。
受け取った URL を取得したら、Firefox で新しいタブを開き、開発者ツール (F12) を開きます。[ネットワーク] タブに切り替えて、ダウンロード用の URL を入力します。ダウンロードを要求されたら、[キャンセル] をクリックします。
ネットワークの下に 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 と呼ばれるプロセス全体を自動化するツールを作成しました。