Почему 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"
Надеюсь, это поможет!