2012-11-12 32 views
10

Lời xin lỗi của tôi trước nếu điều này là một nghi ngờ vô lý: Tôi muốn sử dụng một proxy trong mã Ruby của tôi để tìm nạp một vài trang web. Và tôi muốn lén lút về nó! Vì vậy, tôi đang sử dụng Tor.Ruby, Tor và Net :: HTTP :: Proxy

Tôi có Tor đang chạy và tôi có thể sử dụng Net :: HTTP.get (uri) như bình thường. Nhưng tôi không thể tìm ra cách sử dụng Net :: HTTP :: Proxy để lấy uri. Tôi cũng không thể tìm ra cách sử dụng Tor sẽ giúp làm cho danh sách của tôi vô danh.

Bất kỳ trợ giúp nào được đánh giá cao. Vui lòng không chỉ thêm link to the ruby-doc page for Net::HTTP::Proxy. Nếu tôi đã hiểu rằng, tôi sẽ không được yêu cầu này đây :-)


Một cách dễ dàng để làm điều này là sử dụng SOCKSify, nhưng trong trường hợp này, tôi nhận được lỗi sau:

/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)

Tôi chưa bao giờ thực hiện bất kỳ lập trình mạng nào trước đây. Bất kỳ hướng dẫn nào về điều này cũng sẽ rất hữu ích. Cảm ơn :-)

+0

Cách liên kết tới [Net :: HTTP :: Proxy] (http://apidock.com/ruby/Net/HTTP/Proxy/class)? – pguardiario

+0

Cảm ơn bạn đã chỉ ra. Đã thêm liên kết được đề cập. –

+0

Cam kết chắc chắn thú vị. Tôi mong chờ các giải pháp khả thi. –

Trả lời

13

Bạn đang sử dụng lớp proxy HTTP, vì vậy bạn phải cung cấp IP proxy HTTP. Trình duyệt Tor có gói không proxy HTTP.

Vì vậy, bạn có thể cài đặt một số phần mềm proxy, ví dụ: Privoxy và cấu hình nó để sử dụng Tor của SOCKS:

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

sau đó sử dụng Privoxy của mặc định nghe-address trong kịch bản của bạn:

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

hay sử dụng SOCKSify . Theo 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 

Không cần phần mềm bổ sung ..

Thứ ba giải pháp là sử dụng SOCKSify như sau:

$ socksify_ruby localhost 9050 script.rb 

mà chuyển hướng tất cả các kết nối TCP của một kịch bản Ruby , có nghĩa là bạn không cần sử dụng bất kỳ mã Proxy nào cả.

Để làm rõ, bạn phải hiểu rằng 127.0.0.1:9050 là địa chỉ SOCKS của Tor và 127.0.0.1:8118 là địa chỉ Privoxy.

Các vấn đề liên quan