【问题标题】:Google App Engine (Python)- Strange behaviour of REMOTE_ADDRGoogle App Engine (Python) - REMOTE_ADDR 的奇怪行为
【发布时间】:2010-10-06 23:28:31
【问题描述】:

为了简化我网站上的注册过程,我允许用户输入他们的电子邮件地址,我将向该地址发送验证码,或者他们可以解决验证码。

问题在于,为了防止机器人注册帐户(使用虚假电子邮件),我限制了每个 IP 地址允许的注册数量,如果超过此限制,我会在日志中触发警告。

但是......似乎正在发生的事情是我正在使用 os.environ['REMOTE_ADDR'] 来检查远程地址 - 但似乎我正在触发 Google 拥有的地址的警告(66.249. 65.XXX)。可能只有在我更改版本(但未确认)后才会发生这种情况。有谁知道如何/为什么会发生这种情况? REMOTE_ADDR 不应该返回客户端计算机的地址吗(希望在所有情况下它都会这样做)?

我很好奇是否有一些幕后重定向正在进行,这是正常事件还是仅在安装新版本时发生(也许在安装新版本时,原始服务器然后代理用户访问新服务器,从而造成 IP 地址是内部 IP 的错觉?)

【问题讨论】:

  • 我刚刚意识到这个问题也可能是由于谷歌爬虫访问了客户之前访问的注册页面(因为我不想进入的原因,我将注册信息传递给使用 GET 而不是 POST 的页面)——我不知道这是否会以某种方式触发爬虫根据来自浏览器的反馈或其他东西进入注册页面——我很想知道可能会发生什么.

标签: python google-app-engine ip-address


【解决方案1】:

我相信我已经找到了从谷歌服务器 IP 地址看到如此多警告的原因。似乎在新用户注册后,谷歌爬虫立即进入相同的(注册)网页(我将信息作为 GET 而不是 POST 发送到该网页,原因我不会进入)。当然,由于许多用户都在注册,但只有少数爬虫计算机在检查我的网站的定期更新,所以我触发了特定(谷歌)IP 重复访问注册区域的警告消息。

【讨论】:

  • 使用 GET 发出非幂等请求是一个糟糕的主意,除非您希望恶意用户通过将 URL 嵌入图像标签中来为其他人注册帐户。
  • 我同意你的观点,我会考虑在未来的某个时候改变它。但是,与此同时,我对给定 IP 地址的注册数量、在将信息写入数据库之前需要解决的验证码(因此使用 GET)以及验证电子邮件地址的唯一性有限制正在注册。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 2013-07-03
  • 1970-01-01
  • 2023-04-04
  • 2013-04-14
  • 2011-05-30
相关资源
最近更新 更多