6月 06 2008

open-uri を Basic認証のあるサイトに使う

Published by HoLY at 2:02:42 under tech

Ruby の便利標準ライブラリ筆頭(個人的感想)である open-uri ですが、 いまだに「open-uri はBasic認証のあるサイトには使えない」という都市伝説(?)が。

こんな風に :http_basic_authentication オプションを与えることでできるよ。

require 'open-uri'
open('http://www.example.com/authenticated_page/',
     :http_basic_authentication => ['username', 'password'])

現在のマニュアルには載っていない ので注意。 新しい方にも特に書いてはいないみたい

ちなみにプログレスバーのために :content_length_proc と :progress_proc が使えるが、簡単に作るとこんな感じに。

open(downloading-filename, 'w') {|f|
  f.write open(url,
               :content_length_proc => proc{|len|
                 @len = len
               },
               :progress_proc => proc{|now|
                 per = now * 100 / @len
                 $stdout.print "%15u bytes (%3u%%) |" % [now, per]
                 $stdout.print "=" * per
                 $stdout.print ">" if per < 100
                 $stdout.print "-" * (99-per) if per < 99
                 $stdout.print "\r"
                 $stdout.flush
               }
  ).read
}

2 Responses to “open-uri を Basic認証のあるサイトに使う”

  1. snakaon 24 8月 2008 at 10:00:47

    ありがとございます。
    コノ情報探してました。

  2. HoLYon 01 9月 2008 at 14:33:04

    > snaka さん
    お役に立てたなら幸いです。=D

Trackback URI | Comments RSS

Leave a Reply