2011-07-29 14 views
11

Birden çok HTTP bağlantı başlatan bir uygulama var ve tüm bağlantılara bir proxy eklemek istiyorum.Otomatik olarak yakındaki tüm HTTP bağlantılarına proxy ekleme

uygulama yani ideal yerine her bir bağlantıyı başlatan kodunda her yere elle ekleyerek bu kütüphanelerden başlatılan tüm bağlantıları yama edebilmek istiyorum net/HTTP, TCP soket ve open-uri kullanıyor.

Bunu başarmanın bir yolu var mı (Ruby 1.9.2)?

cevap

6

Açık URI Burada pencere ve Unix varyantları hem de nasıl kullanılacağı hakkında bir makale

değişken http_proxy ortamını kullanır.

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

ayrıca çevreye güvenmek ve her zaman

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 
     : 
} 
ayarlamak için

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

net/http belgeleri değil diyor ENV karmasını kullanarak yakut doğrudan ayarlayabilirsiniz

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

+1

'ENV [ 'http_proxy']' yapar - bu bence kendisi – cwd

+1

işe görünmüyor 'Net :: HTTP' sadece okur: ENV için v.2’de vekil + – akostadinov

2

Evet ve m echanize çok (bu 1.0.0 sürümde içindir)

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) 
İlgili konular