我想知道是否可以使用Python从http请求标头中获取客户端的IP地址?我当时正在做一个天气项目,如果能显示他自己所在位置的天气信息,那将非常好。
如果请求恰好包含X-Forwarded-For
,X-Real-IP
,则您可能获取客户端的实际IP地址。但是,在大多数情况下,如果用户不希望您通过使用代理来了解其实际IP,则服务器无法告知。正如其他评论所指出的那样,如果您仅在HTTP层上工作,则不可能获得IP地址。我提到的两个标头通常仅在使用反向代理/负载平衡器时才添加到请求中。
如果托管服务器,并且可以访问HTTP标头,则可以通过以下方式获取客户端IP
取自我在服务器应用程序中使用的a node.js package:
用户IP由以下顺序确定:
X-Client-IP
X-Forwarded-For(标头可能以以下格式返回多个IP地址:“客户端IP,代理1 IP,代理2 IP”,因此我们采用第一个。)]]
CF-Connecting-IP(Cloudflare)
Fastly-Client-Ip(当转发到云功能时,是快速CDN和Firebase托管标头)
True-Client-Ip(Akamai和Cloudflare)
X-Real-IP(Nginx代理/ FastCGI)
X-Cluster-Client-IP(Rackspace LB,Riverbed Stingray)
X转发,转发并转发(#2的变化)