Pat*_*ity 26
Akamai提供了一个"我的IP是什么"页面,您可以获取:
require 'open-uri'
remote_ip = open('http://whatismyip.akamai.com').read
Run Code Online (Sandbox Code Playgroud)
但是,有一些替代方案可以做同样的事情:
您也可以使用ipv4
和ipv6
子域icanhazip.com
.
如果您不想依赖第三方,您可以在一个单机架应用程序中自行推出,并在Heroku或其他任何地方免费部署.它考虑到X-Forwarded-For
可能包含逗号分隔的代理IP地址列表,并仅返回客户端IP.
# config.ru
run lambda { |env|
remote_ip = env['HTTP_X_FORWARDED_FOR'] || env['REMOTE_ADDR']
remote_ip = remote_ip.scan(/[\d.]+/).first
[200, {'Content-Type'=>'text/plain'}, [remote_ip]]
}
Run Code Online (Sandbox Code Playgroud)
无需刮痧!
我使用ipify,这是一个返回您的公共 IP 地址的开放 api。如果您想要 json 响应(此处未显示),则很有用。
require 'net/http'
public_ip = Net::HTTP.get URI "https://api.ipify.org"
=> "12.34.56.78"
Run Code Online (Sandbox Code Playgroud)
或卷曲:
public_ip = `curl https://api.ipify.org`
=> "12.34.56.78"
Run Code Online (Sandbox Code Playgroud)
别激动,那不是我的公网地址 :)