2010-10-06 43 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