我想要使用标准的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,由于没有指定它们,所以不可能.看起来你必须跟着路边去.