【问题标题】:Is it possible to obtain the IP address from a HTTP Request是否可以从 HTTP 请求中获取 IP 地址
【发布时间】:2011-07-31 06:42:42
【问题描述】:

我正在尝试识别访问我网站的用户。我知道给他们分配一个 cookie 并以这种方式识别他们。但是是否也可以使用他们的 IP 地址来识别他们?

我知道 IP 子类化(这是正确的术语),所以如果同一网络上的许多用户访问我的网站并进行子类化,他们都将拥有相同的 IP 地址,但没关系,我不希望我的 IP 标识是确切地说,如果用户没有 cookie,它只是一个备份。

如果我有一个 HTTP 请求,我可以获取请求者/发送者的 IP 地址吗?例如,要获取浏览器类型,我检查 HTTP(标头?)用户代理。以我对数据通信的了解,如果HTTP请求确实包含IP地址,它不会有最后一跳(路由器/交换机)的IP地址还是我在考虑TCP?

我正在使用 Python 和 cgi;那么有没有办法通过查看HTTP请求或TCP数据包来确定HTTP请求者的IP地址(我从未在python中使用过TCP,我怎么能在python中查看数据包?)。

【问题讨论】:

    标签: python http tcp


    【解决方案1】:

    当然。使用cgios。客户端的 IP 地址位于标题为 REMOTE_ADDRenviron 变量中。比如下面会打印出客户端的ip地址:

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

    【讨论】:

    • 感谢您的回复 :)。这是他们的 IP 地址还是最后一个路由器/交换机跃点的地址?
    • 这将是请求的来源,如果您代理请求说 nginx -> apache,如果您没有转发数据,那么您将在 apache 中为 REMOTE_ADDR 获得 127.0.0.1:@ nginx 中的 987654326@ 或类似的,但是您需要检查 X-Real-IP 而不是 REMOTE_ADDR。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 2015-08-31
    • 2020-12-28
    相关资源
    最近更新 更多