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

前端之家收集整理的这篇文章主要介绍了有没有办法将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,由于没有指定它们,所以不可能.看起来你必须跟着路边去.

猜你在找的Ruby相关文章