認証プロキシ下のコンピュータから ruby の open-uri を使うためのメモです。
ネットで検索したら open-uri.rb にパッチをあてる、みたいなハックが何件かヒットしましたが、ソースコードを読んでみたところ、少なくともバージョン 1.9.2 ではライブラリを書き換えることなく、以下のように対処可能です。
require "open-uri"
pxy = "http://my.proxy.com:8080"
usr = "proxyuser"
pss = "proxypass"
options = { :proxy_http_basic_authentication => [pxy,usr,pss] }
uri = "http://www.google.com/"
open(uri,options){ |io|
# do something with io
}
proxy_http_basic_authentication というオプションに3つの要素(プロキシサーバーアドレス+ポート、ユーザ名、パスワード)を与えれば認証プロキシを乗り越えることができます。
おまけ
スクリプトにパスワードを直接書くことに抵抗ある人は例えば以下のようにすれば、スクリプトの実行毎にプロンプトに入力することができます。
require 'highline' # なければ gem でインストールしましょう。
usr = HighLine.new.ask('Proxy ID: ')
pss = HighLine.new.ask('Proxy Password: ') { |q| q.echo = '*' }
highline を使うとパスワードをターミナルから入力する際に、画面に表示させずに * (アスタリスク)を表示させることができます。gem でインストール可能です。
