如果这是一个无耻的怀疑我提前道歉:我想在我的Ruby代码中使用代理来获取一些网页。而且我想偷偷摸摸!所以我正在使用Tor。
我有Tor运行,我可以像往常一样使用Net :: HTTP.get(uri)。但我无法弄清楚如何使用Net :: HTTP :: Proxy来获取uri。我也无法弄清楚如何使用Tor来帮助我的匿名提取。
非常感谢任何帮助。请不要只添加link to the ruby-doc page for 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)
之前我从未做过任何网络编程。任何关于此的指导也将非常有帮助。谢谢: - )
答案 0 :(得分:14)
您正在使用HTTP代理类,因此您必须提供HTTP代理的IP。 Tor浏览器捆绑了不 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。 根据{{3}}:
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
重定向Ruby脚本的所有TCP连接,这意味着您根本不需要使用任何代理代码。
为了澄清,您必须了解127.0.0.1:9050是Tor的SOCKS地址,而127.0.0.1:8118是Privoxy的地址。