如何在 ruby​​ 中获取 IP 地址、引用者和用户代理?

Posted

技术标签:

【中文标题】如何在 ruby​​ 中获取 IP 地址、引用者和用户代理?【英文标题】:How to get ip address, referer, and user agent in ruby? 【发布时间】:2011-10-05 19:20:51 【问题描述】:

我想记录用户的 IP 地址、引用者和用户代理。 在 php 中,我可以从以下变量中获取它们:

$_SERVER['REMOTE_ADDR']
$_SERVER['HTTP_REFERER']
$_SERVER['HTTP_USER_AGENT']

如何在 ruby​​ 中获取它们?

【问题讨论】:

PHP != 红宝石。如果没有 Web 服务器,您将无法访问 Web 服务器环境。 【参考方案1】:

PHP 嵌入在 Web 服务器中。 Ruby 是一种通用语言:如果您需要 Web 服务器上下文,则必须自己安装它。幸运的是,这很容易。

使用Sinatra 是最简单的入门方法之一。安装 gem:

gem install sinatra

然后创建myapp.rb:

require 'sinatra'

get '/' do
    request.user_agent
end

启动网络服务器:

ruby -rubygems myapp.rb

访问 Sinatra 的默认 URL:http://localhost:4567/

等等。

【讨论】:

谢谢。我不知道sinatra 已经安装到我的服务器上。我不允许在我的服务器上安装任何东西。【参考方案2】:

你需要数组request.env

request.env['REMOTE_ADDR']:

【讨论】:

谢谢。我试过谷歌,但我找不到它们。关于 PHP,我总是可以通过 google 轻松找到我想知道的内容。我认为有关 ruby​​ 的信息很难搜索。感谢您介绍这个漂亮的网站! 我可以在just ruby 中使用request.env 而不是在ruby on rails 中吗? "我可以在 ruby​​ 中使用 request.env 而不是在 ruby​​ on rails 中使用 request.env 吗?" 不,request 不会作为对象存在。进行简单探索的最佳选择是 @Mark Thomas 给出的答案,或者使用 Ruby 的 CGI 库并编写将在 Apache 或 nginx 下运行的简单 CGI。 @theTinMan 我用你告诉我的关键字cgi 再次搜索。我发现我可以从ENV['REMOTE_ADDR']ENV['HTTP_REFERER']ENV['HTTP_USER_AGENT'] 获取信息。谢谢。 是的,这些是 HTTPd 在将您的代码调用为 CGI 时定义的标准环境设置。如果您不熟悉该协议,最好学习一下。它是所有网络事物的基础。【参考方案3】:

我假设您所说的 ruby​​ 是指 ruby​​ on rails,以下链接向您展示了如何访问它们:

http://techoctave.com/c7/posts/25-rails-request-environment-variables

【讨论】:

谢谢。但我的意思是红宝石!我是红宝石的初学者。我只想制作一个简单的日志记录程序。

以上是关于如何在 ruby​​ 中获取 IP 地址、引用者和用户代理?的主要内容,如果未能解决你的问题,请参考以下文章

此 IP、站点或移动应用程序无权使用此 API 密钥。从 IP 地址 **** 收到的请求,引用者为空

休息 - 如何获取调用者的 IP 地址

在 TCPServer (Ruby) 中,我如何从客户端获取 IP/MAC?

如何使用 Ruby SDK 从 AWS 获取公共 IP 地址

WebApi中,怎么获取接口调用者的外网ip地址

WebApi中,怎么获取接口调用者的外网ip地址