2011-04-07 138 views
0

我正在嘗試識別訪問我的網站的用戶。我知道給他們分配一個cookie &這樣識別他們。但是,是否也可以使用其IP地址來識別它們?是否可以從HTTP請求中獲取IP地址

我知道IP子類的(是正確的術語),所以如果在相同的網絡訪問我的網站&許多用戶有子類,他們都將擁有相同的IP地址,但是那好吧,我不希望我的IP識別確切地說,如果用戶沒有cookie,它只是一個備份。

如果我有HTTP請求,我可以得到請求者/發件人的IP地址嗎?例如,要獲取瀏覽器類型,我需要檢查HTTP(header?)用戶代理。有了我對數據通信的一點了解,如果HTTP請求確實包含IP地址,那麼它是否具有最後一跳(路由器/交換機)的IP地址,或者我是否想要TCP?

我正在使用Python & cgi;那麼有沒有辦法通過查看HTTP請求或者TCP數據包來確定HTTP請求者的IP地址(我從來沒有在Python中使用TCP協議,我怎麼看待python中的數據包?)。

回答

1

當然。使用cgios。客戶端的IP地址位於標題爲REMOTE_ADDRenviron變量中。例如,下面將打印出客戶端的IP地址:

import cgi 
import os 

print "Content-type: text/html" 
print "" 
print cgi.escape(os.environ["REMOTE_ADDR"]) 
+0

感謝您的回覆:)。這是他們的IP地址還是最後一個路由器/交換機跳地址? – Mack 2011-04-07 00:48:08

+0

這將是請求的來源,如果您代理請求說nginx - > apache,您將得到apache中的REMOTE_ADDR 127.0.0.1,如果您沒有轉發數據:'proxy_set_header X-Real-IP $ remote_addr;'在nginx中,或類似的,但你需要檢查X-Real-IP而不是REMOTE_ADDR。 – 2011-04-07 00:53:22

相關問題