2012-11-12 12 views
10

Z góry przepraszam, jeśli to wątpliwość: chcę użyć proxy w moim kodzie Ruby, aby pobrać kilka stron internetowych. I chcę być podstępny! Używam Tora.Ruby, Tor i Net :: HTTP :: Proxy

Mam uruchomionego Tora i mogę używać Net :: HTTP.get (uri) jak zwykle. Ale nie mogę wymyślić, jak użyć Net :: HTTP :: Proxy do pobrania uri. Nie mogę również zrozumieć, w jaki sposób korzystanie z Tora pomoże mi uzyskać anonimowość.

Każda pomoc jest bardzo doceniana. Proszę nie dodawać tylko link to the ruby-doc page for Net::HTTP::Proxy. Gdybym zrozumiał, że nie będę pytaniem to tutaj :-)


Kolejny łatwy sposób to zrobić jest użycie SOCKSify, ale w tym przypadku pojawia się następujący błąd:

/usr/lib/ruby/gems/1.9.2-p290/gems/socksify-1.5.0/lib/socksify.rb:189:in 'socks_authenticate': SOCKS version not supported (SOCKSError)

Nigdy wcześniej nie robiłem programowania sieciowego. Wszelkie wskazówki na ten temat będą również bardzo pomocne. Dzięki :-)

+0

Co powiesz na link do [Net :: HTTP :: Proxy] (http://apidock.com/ruby/Net/HTTP/Proxy/class)? – pguardiario

+0

Dzięki za wskazanie. Link dodany w pytaniu. –

+0

Zdecydowanie interesujące przedsięwzięcie. Z niecierpliwością czekam na możliwe rozwiązania. –

Odpowiedz

13

Używasz klasy proxy HTTP, więc musisz podać adres IP proxy HTTP. Tor Browser ma nie w pakiecie proxy HTTP.

Możesz zainstalować oprogramowanie pośredniczące, np. Privoxy i skonfigurować go używać Tora skarpety:

W config.txt forward-socks4a / 127.0.0.1:9050 .

następnie używać Privoxy w domyślnej Podsłuch adres w skrypcie:

proxy = Net::HTTP::Proxy('127.0.0.1',8118) 

lub użytkowania SOCKSify . Według docs:

require 'socksify/http' 
uri = URI.parse('http://rubyforge.org/') 
Net::HTTP.SOCKSProxy('127.0.0.1', 9050).start(uri.host, uri.port) do |http| 
    http.get(uri.path) 
end 

Nie potrzeba dodatkowego oprogramowania ..

trzecie rozwiązaniem jest użycie SOCKSify następująco:

$ socksify_ruby localhost 9050 script.rb 

które przekierować wszystkie połączenia TCP skryptu Ruby , co oznacza, że ​​w ogóle nie musisz używać żadnego kodu Proxy.

Dla wyjaśnienia musisz zrozumieć, że 127.0.0.1:9050 to adres SOCKS Tora i 127.0.0.1:8118 to adres Privoxy.