Ruby、Tor 和 Net::HTTP::Proxy

2024-01-09

如果这是一个幼稚的疑问,我提前道歉:我想在我的 Ruby 代码中使用代理来获取一些网页。我想偷偷摸摸地做这件事!所以我正在使用 Tor。

我正在运行 Tor,并且可以像往常一样使用 Net::HTTP.get(uri)。但我不知道如何使用 Net::HTTP::Proxy 来获取 uri。我也不知道如何使用 Tor 来帮助我匿名获取数据。

任何帮助是极大的赞赏。请不要只添加一个链接到 Net::HTTP::Proxy 的 ruby​​-doc 页面 http://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTP.html#method-c-Proxy。如果我明白这一点,我就不会在这里问这个:-)


另一种简单的方法是使用SOCKSify http://socksify.rubyforge.org/,但在这种情况下,我收到以下错误:

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

我以前从未做过任何网络编程。任何有关这方面的指导也会非常有帮助。谢谢 :-)


您正在使用HTTP代理类,因此您必须提供HTTP代理的IP。 Tor 浏览器有not捆绑 HTTP 代理。

因此,您可以安装一些代理软件,例如Privoxy http://www.privoxy.org/并将其配置为使用 Tor 的 SOCKS:

In 配置.txt forward-socks4a / 127.0.0.1:9050 .

然后使用 Privoxy 的默认值监听地址在你的脚本中:

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

or使用 SOCKSify。 根据docs http://socksify.rubyforge.org/:

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

不需要额外的软件..

Third解决方案是使用 SOCKSify,如下所示:

$ socksify_ruby localhost 9050 script.rb

它重定向 Ruby 脚本的所有 TCP 连接,这意味着您根本不需要使用任何代理代码。

为了澄清起见,您必须了解 127.0.0.1:9050 是 Tor 的 SOCKS 地址,127.0.0.1:8118 是 Privoxy 的地址。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby、Tor 和 Net::HTTP::Proxy 的相关文章

随机推荐