我正在寻找一种使用标准 Net::HTTP 库为每个 GET 请求使用不同 IP 地址的方法。服务器有 5 个 IP 地址,并假设某些 API 在达到每个 IP 的请求限制时阻止访问。因此,唯一的方法是使用另一台服务器。我在 ruby 文档中找不到任何关于它的信息。
例如, curl 允许您将其附加到特定的 IP 地址(在 PHP 中):
$req = curl_init($url)
curl_setopt($req, CURLOPT_INTERFACE, 'ip.address.goes.here';
$result = curl_exec($req);
Net::HTTP 库有什么办法吗?作为替代方案 - CURB(红宝石卷曲绑定)。但这将是我要尝试的最后一件事。
建议/想法?
PS 使用 CURB 的解决方案(带有脏测试,ip 被替换):
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