2010-10-06 44 views
0

为了让我的网站上的注册过程变得简单,我允许用户输入他们的电子邮件地址,我将发送验证码或者可以解决验证码。Google App Engine(Python) - REMOTE_ADDR的奇怪行为

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

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

我很好奇,如果有一些幕后重定向,如果这是一个正常的事件,或者如果它只发生在新版本安装(也许当一个新版本安装原始服务器,然后代理用户到新服务器上,因此创造了错觉,以为IP地址是内部IP?)

+0

我才意识到,这个问题也可以通过以前由客户端访问谷歌的爬虫访问注册页面造成的(因为我不想要进入的原因,我通过使用GET注册信息页面而不是POST) - 我不知道这会然后以某种方式触发爬虫去基于从浏览器什么的反馈注册页面 - 我很好奇,想知道什么是可能发生的。 – 2010-10-06 23:40:02

回答

0

我相信我已经想通了,对于看到从谷歌服务器的IP地址那么多的警告的原因。看起来,在新用户注册后,谷歌抓取工具会立即进入相同的(注册)网页(我将信息发送为GET而不是POST,原因是我不会介入)。当然,由于许多用户正在注册,但只有少数爬虫计算机正在检查我的网站的定期更新,所以我触发了一个警告消息,即特定的(谷歌)IP正在重复访问注册区域。

+3

使用GET进行非幂等请求是一个糟糕的主意,除非您希望恶意用户通过将URL嵌入到图像标记中来为帐户签名。 – 2010-10-07 11:24:58

+0

我同意你的看法,我会考虑在未来的某个时候改变它。然而,与此同时,我对给定IP地址的注册数量,在将信息写入数据库之前需要解决的验证码(因此使用GET)以及验证电子邮件地址的唯一性正在注册。 – 2010-11-22 03:46:47