ページがダウンロードを待機させるwgetでファイルをダウンロードする方法は?


32

wgetを使用してsourceforgeからファイルをダウンロードしようとしていますが、ご存知のように、ダウンロードボタンをクリックしてから、自動ダウンロードを待つ必要があります。wgetを使用してこのタイプのファイルをどのようにダウンロードしますか?

これをダウンロードしようとしています:http : //sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.1/bitcoin-0.8.1-linux.tar.gz/download

しかし、そのURLリンクでwgetを実行しても、ファイルはブラウザーを介して自動的にロードされるため、ファイルを取得できません。


3
Webブラウザーでそのページに移動すると、ダイレクトリンクもリストされます。これでwgetを使用できますか?
BriGuy

あなたが(むしろ「ダウンロード」より)ファイルの本当の名前を維持するために探しているなら、あなたは、単にとしてそれを呼び出すために必要があるwget --trust-server-names URL
アダム・カッツ

回答:


5

wgetあなたとsourceforgeの間にどのバージョンのOSまたはプロキシが存在するかはわかりませんがwget、「/ download」を削除してファイル拡張子で残したときにファイルをダウンロードしました。

投稿をあふれさせたり、セッション全体を貼り付けたりしたくないのですが、転送が始まる前に302から200のステータスコードを取得しました。しようとするとwgetどうなりますか?

Resolving downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found

[snipped for brevity]

HTTP request sent, awaiting response... 200 OK
Length: 13432789 (13M) [application/x-gzip]
Saving to: `download'

また、「ダウンロード」ページは、ミラーのリストと、特定の遅延が経過したときにミラーの1つを提供するスクリプトである場合があります。SourceForgeは10年前にこれを行いました。
can-ned_food

47

curl代わりにこれを使用することをお勧めしwgetます。これは、スイッチを使用したリダイレクトをたどることができ-L-J-O

curl -O -J -L http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.1/bitcoin-0.8.1-linux.tar.gz/download

スイッチ定義

-O/--remote-name
  Write output to a local file named like the remote file we get. 
  (Only the file part of the remote  file  is  used, the path is cut off.)

-L/--location
  (HTTP/HTTPS)  If  the  server  reports that the requested page has moved 
  to a different location (indicated with a Location: header and a 3XX 
  response code), this option will make curl redo the request on the new 
  place.  If  used together  with  -i/--include  or -I/--head, headers from 
  all requested pages will be shown. When authentication is used, curl only 
  sends its credentials to the initial host. If a redirect takes curl to a 
  different host, it  won't be  able  to  intercept  the  user+password. 
  See also --location-trusted on how to change this. You can limit the
  amount of redirects to follow by using the --max-redirs option.

-J/--remote-header-name
  (HTTP) This option tells the -O/--remote-name option to  use  the  
  server-specified  Content-Disposition  filename instead of extracting a 
  filename from the URL.

詳細については、curlのマニュアルページ参照してください。


2
curlを使用する必要wgetはなく、リダイレクトに従うことができますが、セキュリティ上の理由からもちろん0 --max-redirectであるデフォルトから増やすまで、リダイレクトを行うことはできません
Anthon

wget1.19.2のデフォルトは--max-redirect=20、ほとんどの用途に十分なはずです。それが変更されたとき、私はわからない...または、なぜそれがセキュリティのために必要であった(参照は必要!)が、私の推測では、現在の好適な解決策は、リダイレクトを追跡し、代わりに要求することだったということです--trust-server-names」リダイレクト先によって提供された名前を保持するのではなくしますダウンロード」または「index.html?blah = barg」または提供されたURLが使用するもの。
アダム・カッツ

それが誰かを助ける場合、正しいスイッチを覚えている方法は次のとおりです。ジェニファー・ロペスだと思います。JLO。 curl -JLO http://www.example.com/file.ext
カール

15

ではwget、あなたは使用することができ--content-disposition、使用の「Content-処分」ヘッダがダウンロードしたファイルの名前がどうあるべきかを説明することをいくつかのファイルのダウンロードCGIプログラムに便利ですオプションを選択します。

例:

wget --user-agent=Mozilla --content-disposition -E -c http://example.com/

より複雑なソリューション(認証が必要な場合など)の場合は、Cookieファイル(--load-cookies file)を使用してセッションをシミュレートします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.