wgetを使用して特定の名前のファイルを取得する方法は?

wgetを使用して特定の名前のファイルを取得する方法は?

私はAmazon Linuxでbashを使用しています。

ブラウザで次の URL にアクセスすると、https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US、firefox-56.0.1.tar.bz2ファイルを取得します。ただし、wgetを使用すると、ダウンロードしたファイルは同じファイルのように見えますが、タイトルに「index.html」が含まれています。だから私は努力しました

wget -r --no-parent --reject "index.html*" -nH --cut-dirs=7 "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US"

しかし、今はファイルはダウンロードされません。 wget(または他のコマンドラインツール)を使用してファイルをダウンロードし、ブラウザがURLにアクセスしたときと同じタイトルを持つようにするにはどうすればよいですか。

答え1

この場合、ヘッダーに送信されたサーバー名を信頼しようとし、そのディレクティブがない場合はwgetURLのファイル名が使用されます。

wget "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US" --trust-server-names

もちろん、これを機能させるには、すべてのサーバーが転送/生成されるすべてのファイルのファイル名を送信する必要があります。一部のスクリプトはこれを行いません。その場合でも、実際にはファイル「index.html」が得られます。

-Oこの場合、出力オプションを使用して最後に必要なファイル名を指定するだけです。

wget "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US" -O latest-firefox.tar.bz2

もちろん、この部分が機能するには、ファイルの種類などを知る必要があります。

答え2

あなたはインストールすることができますクライアントプラグインfirefox。リンクをクリックすると、curl以下にコマンドが生成されますDownload with cURL。この場合、次のようになります。

curl --header 'Host: ftp.mozilla.org' --header 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: en,de;q=0.5' --header 'Cookie: optimizelyEndUserId=oeu1495381484085r0.16482844406273445; optimizelySegments=%7B%22245984388%22%3A%22false%22%2C%22246002457%22%3A%22search%22%2C%22246073289%22%3A%22none%22%2C%22246073290%22%3A%22ff%22%7D; optimizelyBuckets=%7B%7D' --header 'DNT: 1' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://ftp.mozilla.org/pub/firefox/releases/56.0.1/linux-x86_64/en-US/firefox-56.0.1.tar.bz2' -o 'firefox-56.0.1.tar.bz2' -L

答え3

簡単にcurlツール:

curl -Os "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US/firefox-56.0.1.tar.bz2" 

-O--remote-name
取得したリモートファイルと同様の名前のローカルファイルに出力を書き込みます。 (リモートファイルのファイル部分のみを使用し、パスは切り捨てられます。)

関連情報