2011-07-29 36 views
11

私は複数のHTTP接続を開始するアプリケーションを持っており、すべての接続にプロキシを追加したいと思います。ルビーのすべてのHTTP接続に自動的にプロキシを追加する

アプリケーションので、理想的には、私が代わりにそれぞれと接続を開始するコード内のすべての場所に手動で追加するこれらのライブラリから開始し、すべての接続にパッチを適用できるようにしたいnet/HTTPTCPソケットとopen-uriを使用しています。

これを達成する方法はありますか(Ruby 1.9.2)?

答えて

6

オープンURIは、ここでWindowsとUNIXの変異体の両方でそれを使用する方法についての記事がある

変数HTTP_PROXY環境を使用しています。

http://kaamka.blogspot.com/2009/06/httpproxy-environment-variable.html

あなたはまた、環境に依存し、それを毎回

require 'net/http' 
require 'uri' 

proxy_host = 'your.proxy.host' 
proxy_port = 8080 
uri = URI.parse(ENV['http_proxy']) 
proxy_user, proxy_pass = uri.userinfo.split(/:/) if uri.userinfo 
Net::HTTP::Proxy(proxy_host, proxy_port, 
       proxy_user, proxy_pass).start('www.example.com') {|http| 
    # always connect to your.proxy.addr:8080 using specified username and password 
     : 
} 
を設定する

ENV['HTTP_PROXY'] = 'http://username:[email protected]:port' 

ネット/ HTTPのドキュメントがないと言うENVハッシュを使ってRubyで直接設定することができます

からhttp://ruby-doc.org/stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html

+1

'ENV [ 'HTTP_PROXY']'すぎない - これは私がネット:: HTTP'のみ読み込み '考える自体が – cwd

+1

を動作するようには思えないための:ENVをv.2のプロキシ – akostadinov

2

はいとm echanize(これは1.0.0 verisonのためである)

require 'mechanize' 
url = 'http://www.example.com' 

agent = Mechanize.new 
agent.user_agent_alias = 'Mac Safari' 
agent.set_proxy('127.0.0.1', '3128') 
@page = agent.get(:url => url) 
関連する問題