如何在 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 地址 **** 收到的请求,引用者为空
在 TCPServer (Ruby) 中,我如何从客户端获取 IP/MAC?