加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 22:40:34 所属栏目:百科 来源:网络整理
导读:我想要使??用标准的Net :: HTTP库为每个GET请求使用不同的IP地址的方法.服务器有5个IP地址,并且假设当达到每个IP的请求限制时,一些API阻止访问.所以,只有这样做 – 使用另一个服务器.我不能在 ruby文档中找到任何内容. 例如,curl允许您将其附加到特定的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,由于没有指定它们,所以不可能.看起来你必须跟着路边去.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读