Почему Ruby не может подключиться к моей сети Tor?

Я использую Ruby on Rails 4.2.7 на Mac El Capitan и только что установил браузер Tor (v 6.0.4). Я запустил свой браузер Tor, проверил его работу, просмотрев пару веб-страниц, но используя этот драгоценный камень - https://github.com/dryruby/tor.rb, когда я запускаю свой скрипт, Ruby не верит Tor бежит

    require 'tor'
    ...
    puts "avaailble: #{Tor.available?}"
    puts "version: #{Tor.version}"

Возвращает

avaailble: false
version:

В самом деле, когда я пытаюсь сделать запрос Tor, используя гем https://github.com/brunogh/tor_requests, запрос веб-страницы немедленно возвращается, что наводит меня на мысль, что сеть Tor не используется, потому что в браузере Tor занимает гораздо больше времени (вот код, который я использую для аминь запроса веб-страницы)...

    uri = URI.parse(url)
    Net::HTTP.SOCKSProxy('127.0.0.1', 9150).start(uri.host, uri.port) do |http|
      f = http.get(uri.path)
    end

Как мне подключить мой код Ruby / Rails к моей локальной сети Tor?

Изменить: В ответ на данный ответ, вот что я установил мои переменные PATH и DYLD_LIBRARY_PATH на...

localhost:myproject davea$ echo $PATH
/usr/local/opt/coreutils/libexec/gnubin:/opt/local/bin:/opt/local/sbin:/Users/davea/.rvm/gems/ruby-2.3.0/bin:/Users/davea/.rvm/gems/ruby-2.3.0@global/bin:/Users/davea/.rvm/rubies/ruby-2.3.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mysql/bin/:/opt/gradle-2.7/bin:/opt/apache-maven-3.3.3/bin:/Users/    davea/.rvm/bin:/usr/local/mysql/bin:/Applications/TorBrowser.app/Contents/MacOS/Tor:/Users/davea/.rvm/bin:/usr/local/mysql/bin:/Applications/TorBrowser.app/Contents/MacOS/Tor
localhost:myproject davea$ echo $DYLD_LIBRARY_PATH
/Applications/TorBrowser.app/Contents/MacOS/Tor:/usr/local/mysql/lib:/usr/local/mysql/lib:

и вот вывод ht в моей консоли Rails, пробуя перечисленные команды…

localhost:myproject davea$ rails console
Running via Spring preloader in process 49987
Loading development environment (Rails 4.2.7.1)
2.3.0 :001 > 
2.3.0 :002 >   Tor::Config::CONFDIR = '/Applications/TorBrowser.app//Contents/MacOS/Tor'
(irb):2: warning: already initialized constant Tor::Config::CONFDIR
/Users/davea/.rvm/gems/ruby-2.3.0/gems/tor-0.1.2/lib/tor/config.rb:21: warning: previous definition of CONFDIR was here
 => "/Applications/TorBrowser.app//Contents/MacOS/Tor" 
2.3.0 :003 > Tor.available?

1 ответ

Вот как вы можете сделать brunogh/tor_requests работать с Tor Browser (легко):

require 'tor_requests'

Tor.configure do |config|
    config.ip = "127.0.0.1"
    config.port = "9150"
    config.add_header('User-Agent', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0')
end

res = Tor::HTTP.get(URI('https://drew-phillips.com/ip-info/'))
p res.code
p res.body

Получить dryruby/tor работа включала в себя немного больше работы:

Это зависит от вашего ENV PATH переменная для поиска двоичного файла Tor, а в браузере Tor есть несколько библиотек (по крайней мере, для Linux), которые не найдены, если вы попытаетесь выполнить его напрямую. Похоже, это должно поддерживать возможность добавления пути в коде вместо того, чтобы полагаться на PATH, по моему мнению.

Попытка запустить Tor Browser's tor двоичный файл из консоли дает (подробнее об этом позже, может не относиться к Mac):

tor: symbol lookup error: tor-browser_en-US/Browser/TorBrowser/Tor/tor: undefined 
symbol: evutil_secure_rng_set_urandom_device_file

Кроме того, установка Gem из исходного кода не дает нам последнюю версию, доступную на GitHub, и, похоже, исправление version метод, который не включен в Gem версии 0.1.2. Из-за этого я вытащил исходный код и сказал программе загрузить Gem по произвольному пути.

Рабочий код:

require 'rubygems'
$:.unshift "./tor/lib"
require 'tor'

Tor::Config::CONFDIR = '/home/me/tor-browser_en-US/Browser/TorBrowser/Data/Tor'

p Tor::Config::CONFDIR
p Tor.available?
p Tor.version

Теперь, чтобы он работал успешно, вам нужно установить PATH а также LD_LIBRARY_PATH (на Mac это DYLD_LIBRARY_PATH Я верю).

Итак, я запускаю код Ruby следующим образом:

PATH=/home/me/tor-browser_en-US/Browser/TorBrowser/Tor:$PATH \
LD_LIBRARY_PATH=/home/me/tor-browser_en-US/Browser/TorBrowser/Tor:$LD_LIBRARY_PATH \
ruby tor.rb

Это ставит Tor Browser в качестве первого пути поиска для двоичных файлов и библиотек.

Затем с этим я смог получить следующий вывод:

true
"0.2.8.6"

Надеюсь, это поможет!

Другие вопросы по тегам