LoginSignup
1
1

More than 5 years have passed since last update.

open-uri のパスワード付きプロクシ情報の環境変数利用

Last updated at Posted at 2016-04-01

こんにちは。
Ruby の open-uri は、環境変数のプロクシ情報を使ってくれますが、パスワード認証付きプロクシ情報 proxy_http_basic_authentication を付けると(下記のusername:password)、エラーと見なすポリシーのようです1 2

$ env |grep proxy 
http_proxy=http://username:password@proxy.example.com:8080
ftp_proxy=http://username:password@proxy.example.com:8080
https_proxy=http://username:password@proxy.example.com:8080

エラーを起こさせず、さらにそれらの情報も使って欲しい場合は、自己責任でパッチを当てる必要があるようです3 4

--- /usr/lib/ruby/2.0.0/open-uri.rb.orig
+++ /usr/lib/ruby/2.0.0/open-uri.rb
@@ -253,6 +253,10 @@
   def OpenURI.open_http(buf, target, proxy, options) # :nodoc:
     if proxy
       proxy_uri, proxy_user, proxy_pass = proxy
+      if proxy_uri.userinfo
+        proxy_user, proxy_pass = proxy_uri.userinfo.split(':')
+        proxy_uri = URI.parse("#{proxy_uri.scheme}://#{proxy_uri.host}:#{proxy_uri.port}")
+      end
       raise "Non-HTTP proxy URI: #{proxy_uri}" if proxy_uri.class != URI::HTTP
     end


  1. open-uriで環境変数http_proxyを使うときに認証付きのProxyが使えません」を見ますと、提案が拒絶されているようです。 

  2. 認証Proxy環境やBasic認証ページにopen-uriでアクセスする」にも同じ話題をみつけました。 

  3. homebrew(の search コマンドなど)の利用でも、このエラー回避のために、このような対策が必要になってきます。 

  4. MacOSX 10.11 では System Integrity Protection による保護対象なので、パッチ作業はそれを無効化する必要があります。 

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1