从HTTP请求中获取IP地址是否可能
我想知道谁在访问我的网站。我知道可以给他们分配一个cookie来识别他们。但我想知道,是否也可以用他们的IP地址来识别他们呢?
我知道IP地址有子网的概念(这个说法对吗?),所以如果很多用户在同一个网络上访问我的网站,他们可能会有相同的IP地址,这没关系,我并不需要IP地址完全准确,只是想用它作为备份,如果用户没有cookie的话。
如果我有一个HTTP请求,我能不能获取到请求者的IP地址?比如说,我通过检查HTTP的用户代理(user-agent)来获取浏览器类型。根据我对数据通信的了解,如果HTTP请求里包含IP地址,那它是不是只会显示最后一个跳转的设备(比如路由器或交换机)的IP地址?还是我在想TCP的事情?
我在使用Python和cgi;那么有没有办法通过查看HTTP请求,或者可能通过TCP数据包来确定HTTP请求者的IP地址呢?(我从来没有在Python中处理过TCP,我该如何查看Python中的数据包呢?)
1 个回答
1
当然可以。你可以使用 cgi
和 os
这两个模块。客户端的IP地址可以在一个叫 environ
的变量里找到,具体的名称是 REMOTE_ADDR
。比如,下面的代码可以用来打印出客户端的IP地址:
import cgi
import os
print "Content-type: text/html"
print ""
print cgi.escape(os.environ["REMOTE_ADDR"])