有没有办法将Ruby Net :: HTTP请求附加到特定的IP地址/网络接口?

我想要使​​用标准的Net :: HTTP库为每个GET请求使用不同的IP地址的方法.服务器有5个IP地址,并且假设当达到每个IP的请求限制时,一些API阻止访问.所以,只有这样做 – 使用另一个服务器.我不能在 ruby文档中找到任何内容.

例如,curl允许您将其附加到特定的ip地址(PHP)中:

$req = curl_init($url)
curl_setopt($req,CURLOPT_INTERFACE,'ip.address.goes.here';
$result = curl_exec($req);

有没有办法使用Net :: HTTP库?作为替代 – CURB(ruby卷曲绑定).但这将是我会尝试的最后一件事.

建议/想法?

附: CURB的解决方案(脏的测试,ip`s被替换):

require 'rubygems'
require 'curb'

ip_addresses = [
  '1.1.1.1','2.2.2.2','3.3.3.3','4.4.4.4','5.5.5.5'
]

ip_addresses.each do |address|
  url = 'http://www.ip-adress.com/'
  c = Curl::Easy.new(url)
  c.interface = address
  c.perform
  ip = c.body_str.scan(/<h2>My IP address is: ([\d\.]{1,})<\/h2>/).first
  puts "for #{address} got response: #{ip}"
end

解决方法

看起来不像你可以用Net:HTTP.这里的来源

http://github.com/ruby/ruby/blob/trunk/lib/net/http.rb

线644是连接打开的地方

s = timeout(@open_timeout) { Tcpsocket.open(conn_address(),conn_port()) }

Tcpsocket.open的第三个和第四个参数是local_address和local_port,由于没有指定它们,所以不可能.看起来你必须跟着路边去.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...