12

これが初心者の疑いである場合は、事前にお詫び申し上げます。Ruby コードでプロキシを使用して、いくつかの Web ページを取得したいと考えています。そして、私はそれについてこっそりしたいです!だから私はTorを使っています。

Tor を実行しており、通常どおり Net::HTTP.get(uri) を使用できます。しかし、Net::HTTP::Proxy を使用して uri を取得する方法がわかりません。また、Tor を使用することでフェッチを匿名にする方法もわかりません。

どんな助けでも大歓迎です。Net::HTTP::Proxy の ruby​​-doc ページへのリンクを追加しないでください。もし私がそれを理解していたら、私はここでこれを尋ねていないでしょう:-)


これを行う別の簡単な方法は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)

私はこれまでネットワークプログラミングを行ったことがありません。これに関するガイダンスも非常に役立ちます。ありがとう :-)

4

1 に答える 1

14

HTTP プロキシ クラスを使用しているため、HTTP プロキシの IP を指定する必要があります。Tor Browser にHTTP プロキシがバンドルされていません。

したがって、Privoxyなどのプロキシ ソフトウェアをインストールして、Tor の SOCKS を使用するように構成することができます。

config.txt forward-socks4a / 127.0.0.1:9050 .

次に、スクリプトで Privoxy のデフォルトのlisten-addressを使用します。

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

またはSOCKSify を使用します。ドキュメントによると:

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

追加のソフトウェアは必要ありません..

3 番目の解決策は、次のように SOCKSify を使用することです。

$ socksify_ruby localhost 9050 script.rb

これは、Ruby スクリプトのすべての TCP 接続をリダイレクトします。つまり、プロキシ コードをまったく使用する必要はありません。

明確にするために、127.0.0.1:9050 が Tor の SOCKS アドレスであり、127.0.0.1:8118 が Privoxy のアドレスであることを理解する必要があります。

于 2012-12-14T16:37:04.110 に答える