Ruby,Tor和Net :: HTTP :: Proxy
如果这是一个无耻的怀疑我提前道歉:我想在我的Ruby代码中使用代理来获取一些网页。 而且我想偷偷摸摸! 所以我正在使用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)
我之前从未做过任何网络编程。 任何关于此的指导也将非常有帮助。 谢谢 :-)
您正在使用HTTP代理类,因此您必须提供HTTP代理的IP。 Tor Browser 没有绑定HTTP代理。
因此,您可以安装一些代理软件,例如Privoxy,并将其配置为使用Tor的SOCKS:
在config.txt forward-socks4a / 127.0.0.1:9050 .
然后在脚本中使用Privoxy的默认侦听地址 :
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
无需额外的软件..
第三种解决方案是使用SOCKSify如下:
$ socksify_ruby localhost 9050 script.rb
它重定向Ruby脚本的所有TCP连接,这意味着您根本不需要使用任何代理代码。
为了澄清,您必须了解127.0.0.1:9050是Tor的SOCKS地址,而127.0.0.1:8118是Privoxy的地址。
- 在发出请求之前从Ruby Net :: HTTP请求获取标头
- 使用Ruby的Net / HTTP模块,我可以发送原始JSON数据吗?
- Capybara增加最大允许页面加载时间
- 使用Net / http发布JSON格式的Ruby数据
- 如何使用Ruby在文本文件中搜索完全匹配的字符串?
- 证书续订后,Ruby Net :: HTTP响应OpenSSL :: SSL :: SSLError“证书validation失败”
- 使用OpenURI或net / http进行Ruby代理身份validationGET / POST
- Ruby SSL握手没有收到服务器Hello回来 – 使用代理Net :: HTTP
- OpenSSL :: SSL :: SSLError:SSL_connect SYSCALL返回= 5 errno = 0 state = SSLv3读取服务器hello A