解決済みの質問
こんにちわ。
ダウンローダというとIriaやIrvineが有名で実際に数年来利用しています。
<問題1>
もしかすると設定次第なのかも分かりませんが、URL
リンクではなく、HP上の【ボタン】をクリックする
ことで初めてファイルの保存ダイアログが開くよう
なサイトがあり少々困っております。
(私の知識ではIriaやIrvineでは対応不可(+_+))
<問題2>
またサイトによっては大量ダウンロードを嫌って
いるのか、同時に1つしかファイルがダウンロード
できないような仕掛けがあるものもあります。
↓
以前、IEのダウンロード機能を乗っ取って、一気に
クリックでファイルを登録してしまい、その後は
任意の数づつダウンロードを開始するようなフリー
ソフトを一瞬だけ使ったことがありましたが、今で
は名前も思い出せません。
別にどんな方法でも構わないのですが、問題1、2
を克服できるようなフリーソフトなどアドバイスを
もらえるとうれしいです。
ご回答おまちしております(^^♪
投稿日時 - 2004-11-03 03:12:11
問題I
ボタンが、URLにリンクされているのではなくて、クリックすると、ファイルの保存ダイアログが出るようなものですよね?たぶん、JavaScriptを使っているのでは?と思います。運がよければ、そのサイトのHTMLソースを見てみて、アドレスらしきものを探して、ダウンロードソフトにコピペすることで動くかもしれません。
運がよければ、と書いたのは、No.1の方がおっしゃっているように、CGIなどを使って、さらに細工できるからです。
ブラウザは、サーバーの方にさまざまな環境変数を送信しています。たとえば、リンク元(Referrer)や、ブラウザ名など。普通は、こういうものに関係なくダウンできるですが、CGIの類を使えば、特定の環境変数を送ってきたときだけ、ダウンロードできるようにさせることが可能です。
こうしたダウンロード制限の中で、よくあるのがリンク元(Referrer)によってダウンロードさせたりさせなかったりするものです。これをやると、たとえば、画像を掲載しているHTMLページからアクセスした場合のみ、ダウンロードできるようにできます。
ダウンロードツールでも、もちろんこのことは考えてあって、Reffererぐらいなら設定が可能になっています。その他の環境変数も設定できるようになっているはずです。
ただ、一番面倒くさいのが、PHPが使っているSESSIONという環境変数です。これは、最初にサーバー側が乱数を発生させ、ブラウザがそれを返すことによって、ちゃんとログインしたかチェックするものです。
これでダウンロード制限をかけられた場合は・・・ブラウザの方でログインしたときの交信を何らかの方法(Etherrealなどのパケット記録ソフトなどでHTTP通信そのものを見るとか)で、見て、SESSION_IDなどの環境変数をチェックし、ブラウザの方でログインしたまま、ダウンロードソフトの環境変数をブラウザと変わらないようにして、アクセスする、などの方法が理論的には取れるはずですが・・・かなり面倒くさいと思います。
こういうことをしないとダウンできないサイトというのは、銀行のサイトの残高照会をcsvで提供している、とか、そういう類の、非常にプライベートなものです。(銀行などの場合は、httpsも絡んでくるので、さらにやっかいですが)
自分は、使っているサーバーのアクセス生ログをサーバー提供会社から自動的に落とすスクリプトを書く際に、SESSIONを使う必要がありました。そのときは、wgetというソフトを使いました。wgetというソフトは、半分ブラウザのようになっていて、ダウンロードする順番を指定すると、クッキーなども、あたかもブラウザ上で順番に操作したかのように設定してくれるので、なんとかダウンできるようにしました。
まぁ、ダウンしたいと思っていらっしゃるサイトがここまでかどうかは分かりませんが、とにかく、Referrerの設定や、ソースHTMLのJavaScriptからリンク先を抜き出すぐらいのことは簡単にできるので、やってみる価値はあると思います。
で、むしろ、どうしようもないのは、問題2の方です。これは、サーバーの方で、クライアントのIPを記録して、IPごとにダウンできるコネクション数を制限しています。同時ダウンは4つまで、とかよく見かけます。対策としては、たくさんのファイルをダウンするなら、分割ダウンロードがコネクション数を消費するので使わない、ぐらいでしょうか(逆に、一つのデカいファイルをだうんするなら、分割ダウンロードが有効)
ただ、おっしゃられているような、一気にクリックでファイルを登録してしまい・・・のような機能は、FlashgetをインストールしたときIEの右クリックで出てくる「Flashgetですべてダウンロード」できますが、これは、別にFlashgetに限ったことではありません。Iria,Irvineとかでもできると思います。
たくさんのファイル(主に画像)をダウンロードするのなら、たいてい、ファイルの名前に規則性がありますので、IrvineのURL展開機能を使えばよいかと。
投稿日時 - 2004-11-03 05:49:07
お礼
ご丁寧な説明ありがとうございました。
自分の思っていた要件を満たすソフトを一応発見いたしましたのでご報告いたします。
⇒DCさくら。
IE自身の保存ダイアログボックスを乗っ取る形で、保存対象ファイルを登録していきます。設定で後からまとめてダウンロードできるのでぴったりはまりました。
対象サイトで早速検証したところ、ひとつのサイトは
そのまま利用できました。もうひとつのサイトは、分割ダウンロードはNGでしたが、分割無しでひとつづつダウンロードすればOKでした。
但しタイミングの問題でしょうか、登録時では、まれに保存ダイアログにいかずに、TOPページに戻されました。またダウンロード時もいくつかのファイルは失敗に終わる結果となりました。(再度登録する手間がかかりますが、待ち時間が解消され随分と満足しています。)
メインはIrvineを使い続けておりましたが、DCさくらも今後は併用していこうと思います。
投稿日時 - 2004-11-03 15:53:20
1人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(3件中 1~3件目)
どうもです。
二つの問題について、それぞれ的確ではないアドバイスを。
なお、私はIriaを未だに使用しています。なのでIriaを想定して回答します。
[問題1]ボタン式のダウンロードをIriaに投げたい!!
Iriaでは、通常のアドレスがわかるものと、CGIのダウンローダからは確かダウンロードができたと記憶しています。
質問者様の要望としては「アドレスが取得できない(隠れている)データをIriaに登録したいと言うことですよね?
だとすれば、アクセスしたアドレス履歴を全てはき出せるツールが必要になります。
私が考えつく方法は2つ。
1:「横取り丸」というソフトウェアを使う。
2:「BlackJumboDog」などの簡易プロキシサーバを立てる
どちらも、新規導入にはちょいと敷居が高いかもしれませんが、アドレス履歴を表示することができます。
その中に目的のデータが表示されれば、それをクリップボードにコピーすればダウンロードできると思います。
[問題2]接続数制限されているサーバから一気に(自動的に?)ダウンロードしたい
たくさんのリンクが張ってあると一個一個登録するのが面倒で、さらに接続数制限がされていると次に進むまでに時間がかかってしまいます。
私はSleipnirというIEもどき(と言っては失礼か?)を使っていますが、その中に「開いているページからのリンクを抜き出す」という機能があります。
それでIriaに一斉登録をして、あとは制限に従ってダウンロードすればいいのではないでしょうか?
投稿日時 - 2004-11-03 14:50:23
環境変数をIEなどに偽装する
「FreeDownloadManager」はどうでしょうか
http://patch.sakura.ne.jp/download.html
Irvine使った事ないのでもしかしたらこの機能もあるのかもしれないですが・・・
いい紹介サイト探せなかったのでとりあえず本体と日本語化ファイルのありかだけで
投稿日時 - 2004-11-03 04:42:49
お礼
ご回答ありがとうございます。
教えていただいたページから、FleshDownloadとFlashGetを導入して試行してみました。保存ダイアログを乗っ取るところまでは良かったのですが、要件不適でアンインストールいたしました。
一応自己解決しましたので、フィードバックいたしますね♪
投稿日時 - 2004-11-03 15:40:41
OKWaveのオススメ
おすすめリンク