gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:39 25 4
gpt4 key购买 nike

我正在寻找一种使用标准 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( ruby curl 绑定(bind))。但这将是我会尝试的最后一件事。

建议/想法?

附言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

最佳答案

我知道这是旧的,但希望其他人发现它有用,因为我今天需要它。您可以执行以下操作:

http = Net::HTTP.new(uri.host, uri.port)
http.local_host = ip
response = http.request(request)

请注意,我不相信您可以使用 Net::HTTP.start,因为它不接受 local_host 作为选项。

关于ruby - 有没有办法将 Ruby Net::HTTP 请求附加到特定的 IP 地址/网络接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3010687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com