【问题标题】:Remote User's hostname + App Engine Python远程用户的主机名 + App Engine Python
【发布时间】:2012-07-12 04:28:38
【问题描述】:

类似于:

remote_addr - 远程用户的 IP 地址。

self.request.remote_addr

相反,有没有办法获取远程用户的主机名?类似的东西可能像,

self.request.hostname

从官方文档The Request Class 看来,似乎没有获取远程用户主机名的选项。

我正在尝试使用主机名+ip的组合来唯一标识一台机器,因为可能有一些用户共享互联网网关,因此可能具有相同的IP地址,这会使IP地址不够唯一。

对此有什么建议吗?或者至少,任何人都可以提出替代方法来唯一地识别具有匿名身份的机器吗?

【问题讨论】:

  • 远程主机自身名称的概念不会通过 HTTP 传输,因此 App Engine 无法将此信息传递给您。如果反向 DNS 是可能的(它不是,因为套接字库不可用),您可以查找 remote_addr 的 a 名称,但这对于具有该 IP 的每个客户端都是相同的,因此对您没有用处。
  • @AdamThomason,没错。我四处搜索,很少有人问过类似的问题,而且 App Engine 中的沙盒受限环境似乎没有答案。但是,正如你所说,即使它可用,它对我的​​情况也没有用。但是感谢您的分享,让我更好地理解。谢谢。 :)

标签: python google-app-engine webob


【解决方案1】:

不,无法在 App Engine 上进行反向 DNS 查找,并且信息不是由 HTTP 或 App Engine 环境提供的。此外,由于以下几个原因,这对您没有帮助:

  • 对于具有给定 IP 的每个用户,反向 DNS 都是相同的,因为它仅取决于 IP。
  • 任何可以控制其反向 DNS 的人都可以将其设置为他们喜欢的任何内容。

【讨论】:

  • 您对实现我在问题中描述的目标的最佳可靠方法有什么建议吗?
  • 没有。如果您想出可靠的东西,请随意创办一家滥用检测公司并立即成为百万富翁!
【解决方案2】:

我认为这在 HTTP 上是不可能的。 通常,cookies 用于此目的。

【讨论】:

  • 您好,您能否提供更多关于 cookie 如何获取远程用户主机名的具体示例?
  • 您无法获取主机名,它的级别低于 HTTP 所知道的级别。但是您可以使用 cookie 来唯一地识别机器。机器首次访问您的站点时,您会在该机器的浏览器上生成并存储一个唯一的 cookie。当他们再次访问您的网站时,他们会向您发送 cookie。当同一 IP 后面的两台不同机器访问您的站点时,您将看到两个不同的 cookie。如果没有 cookie,那么它是一个新用户。但它不是 100% 准确的,因为人们可以清除他们的 cookie。
  • 这是我担心的,因为大多数黑客都能够忽略或清除 cookie,但它也是我刚刚想到的一个很好的替代方案。早些时候,我认为您的 cookie 解决方案能够获取主机名,这对我的假设来说更可靠。非常感谢您的建议。
猜你喜欢
  • 2014-06-23
  • 2013-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
相关资源
最近更新 更多