標準の Net::HTTP ライブラリを使用して、GET 要求ごとに異なる IP アドレスを使用する方法を探しています。サーバーには 5 つの IP アドレスがあり、IP ごとの要求制限に達したときに一部の API がアクセスをブロックしていると想定しています。したがって、それを行う唯一の方法は、別のサーバーを使用することです。Rubyドキュメントでそれについて何も見つけることができません。
たとえば、curl を使用すると、(PHP で) 特定の IP アドレスにアタッチできます。
$req = curl_init($url)
curl_setopt($req, CURLOPT_INTERFACE, 'ip.address.goes.here';
$result = curl_exec($req);
Net::HTTP ライブラリでそれを行う方法はありますか? 代替として - CURB (ルビー カール バインディング)。しかし、それは私が試す最後のことです。
提案/アイデア?
PSCURBを使用したソリューション(ダーティテスト、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