- 締切済み
VBSでのファイルダウンロードについて
皆さんに質問があります。 環境はWindows7です。 今まではログインページからログインしてダウンロードページに遷移してダウンロードするzipファイルのリンクをクリックしてダウンロードしていました。 この一連の流れをvbsファイルで実現したいと考えています。 そこで下記のサイトを元にサンプルを作成して実行してたら、zipファイルがダウンロードできたのでいざ解凍しようとしたらエラーが発生してしまいました。 http://d.hatena.ne.jp/tt4cs/20120206/1328527888 ダウンロードしたzipファイルをエディタで開いたらログインページのhtmlファイルでした。※ダウンロードしたファイルの拡張子はzipでした。 試しにHTTPリクエストオブジェクトをオープンする所に下記のようにユーザー名とパスワードを追加してみましたが結果は同じでした。 HTTPリクエストオブジェクト.Open "GET", zipファイルのURL, False, ユーザー名, パスワード どのようにすればファイルをダウンロードする事ができるでしょうか。 また下記のサイトを参考にてInternetExplorerオブジェクトで対象のサイトを表示させて、ログイン名とパスワードを自動に挿入してログインしてからも試しましたが結果は同じでした。 http://scrap.php.xdomain.jp/vbs_ie_control/ できる、できないなど些細な事でも何でも構いませんのでアドバイスいただけませんでしょうか。 申し訳ありませんが何卒、宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Gotthold
- ベストアンサー率47% (396/832)
IEでも開発者ツールで、HTTPヘッダの内容などは確認できそうです。 Web ページのネットワーク トラフィックを分析する (Windows) https://msdn.microsoft.com/ja-jp/library/dn255004%28v=vs.85%29.aspx 使ってみよう! [F12] IE9 開発者ツール – HTTP キャプチャ機能 – monoe's blog https://blogs.msdn.microsoft.com/osamum/2011/08/14/f12-ie9-http/ また、Fiddlerならブラウザに依存せず通信内容を確認できます。 Fiddler の簡単な使い方 | Webセキュリティの小部屋 https://www.websec-room.com/2013/02/21/143 あとは、VBSでリクエストヘッダを真似できるかどうかですが、 setRequestHeader というメソッドがあるみたいなのでやろうと思えばできるのではないかと思います。 setRequestHeader メソッド (返送) https://msdn.microsoft.com/ja-jp/library/ms766589%28v=vs.85%29.aspx
- Gotthold
- ベストアンサー率47% (396/832)
> 1.InternetExplorerオブジェクトを生成してNavigateプロパティにURLを指定 > 2.テキストボックスを調べてユーザー名とパスワードを挿入 > 3.[ログイン]ボタンを押下して認証 > 4.HTTPリクエストオブジェクトを生成してダウンロードするファイルを指定 IEはバージョンによりセッション共有の挙動が変わってたりしてよく分からないのですが、 HTTPリクエストオブジェクト生成が別プロセスのIEを立ち上げたことになるなら セッションは引き継がれないかもしれません、 (InternetExplorerオブジェクトをわざわざ作ったならダウンロードもリンククリックにできないのか、と書こうかと思いましたが、それだとダウンロードダイアログが出てしまいそうですね。)
- Gotthold
- ベストアンサー率47% (396/832)
> この事から認証した事がうまく引き継いでないのかと考えていますがなぜなのかがわからず悩んでいます。 No.1でも触れましたが、HTTPリクエストヘッダを成功する場合と失敗する場合で比較してみてください。
- Gotthold
- ベストアンサー率47% (396/832)
ブラウザ付属のデバッガ(ネットワークモニターなど)やアドオン(Live HTTP Headersなど)で、 手動で正しくダウンロードできたときにどんなHTTPリクエストヘッダが送信されているのかを確認してください。 それを真似すればダウンロードできるかもしれません。 ネットワークモニター - 開発ツール | MDN https://developer.mozilla.org/ja/docs/Tools/Network_Monitor > 下記のようにユーザー名とパスワードを追加してみましたが結果は同じでした。 > HTTPリクエストオブジェクト.Open "GET", zipファイルのURL, False, ユーザー名, パスワード このユーザー名とパスワードはたぶんBASIC認証用だと思います。 ログインできるようなサイトの場合、ログイン状態はCookieを使って管理することが多いのではないかと思います。 (Cookieの場合、一定期間有効なIDを使ったりするので、ヘッダを真似してもしばらくたったら使えなくなる可能性もあります。)
補足
回答ありがとうございます。 試しに 1.InternetExplorerでログインページを表示 2.ログイン名とパスワードを入力してログイン 3.エディタにダウンロードするファイルのURLを記述 4.3で記述したURLをクリック するとダウンロードが実行されました。 ※ダウンロードされたファイルは正常に解凍してファイルを取得する事ができました。 それでvbsファイル内で 1.InternetExplorerオブジェクトを生成してNavigateプロパティにURLを指定 2.テキストボックスを調べてユーザー名とパスワードを挿入 3.[ログイン]ボタンを押下して認証 4.HTTPリクエストオブジェクトを生成してダウンロードするファイルを指定 のスクリプトを作成して実行すると一応、ダウンロードが実行されました。 ただしダウンロードされたファイルの拡張子は一応、zipですが中身はログインページのHTMLファイルでした。 ※ログインしないでダウンロードするファイルのURLをクリックすると同じように中身がログインページのHTMLファイルでした。 この事から認証した事がうまく引き継いでないのかと考えていますがなぜなのかがわからず悩んでいます。 申し訳ありませんがご教授いただけませんでしょうか。 再度、宜しくお願いします。