[ruby] open-uri でプロキシ認証

  • ????????????????????

認証プロキシ下のコンピュータから 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 でインストール可能です。

はてなブックマーク - 1 open-uri でプロキシ認証
Pocket