Ruby, Tor и Net:: HTTP:: Proxy

Мои извинения заранее, если это сомнение в noobish: я хочу использовать прокси-сервер в моем Ruby-коде для получения нескольких веб-страниц. И я хочу быть подлым! Поэтому я использую Tor.

У меня есть Tor, и я могу использовать Net:: HTTP.get(uri), как обычно. Но я не могу понять, как использовать Net:: HTTP:: Proxy для получения uri. Я также не могу понять, как использование Tor поможет сделать мои выборки анонимными.

Любая помощь приветствуется. Не добавляйте ссылку на страницу ruby-doc для Net:: HTTP:: Proxy. Если бы я это понял, я бы не стал спрашивать об этом здесь: -)


Еще один простой способ сделать это - SOCKSify, но в этом случае я получаю следующую ошибку:

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

Я никогда раньше не делал никаких сетевых программ. Любые рекомендации по этому вопросу также будут очень полезными. Спасибо: -)

Ответ 1

Вы используете HTTP-прокси-класс, поэтому вы должны предоставить IP-адрес прокси-сервера HTTP. Tor Browser имеет не HTTP-прокси.

Таким образом, вы можете установить какое-либо прокси-программное обеспечение, например. Privoxy и настройте его для использования Tor SOCKS:

В файле config.txt  forward-socks4a / 127.0.0.1:9050 .

затем используйте Privoxy-адрес прослушивания по умолчанию в script:

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

или использовать SOCKSify. Согласно 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

Нет необходимости в дополнительном программном обеспечении.

Третье решение состоит в том, чтобы использовать SOCKSify следующим образом:

$ socksify_ruby localhost 9050 script.rb

который перенаправляет все TCP-соединения Ruby script, что означает, что вам вообще не нужно использовать какой-либо прокси-код.

Для пояснения вы должны понимать, что 127.0.0.1:9050 является адресом Tor SOCKS и 127.0.0.1:8118 является адресом Privoxy.