使用Python的Flask获取访问者的IP地址

2024-04-29 09:26:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个用户可以登录并下载文件的网站,使用的是使用Python(在我的例子中是2.6)的Flask micro-framework(基于Werkzeug)。

我需要获取用户登录时的IP地址(用于登录目的)。 有人知道怎么做吗?当然有办法用Python来实现吗?


Tags: 文件用户目的flask网站frameworkmicrowerkzeug
3条回答

代理可能会使这变得有点棘手,如果您正在使用代理,请确保签出ProxyFixFlask docs)。在您的特定环境中查看request.environ。有了nginx,我有时会这样做:

from flask import request   
request.environ.get('HTTP_X_REAL_IP', request.remote_addr)   

当代理(如nginx)转发地址时,它们通常会在请求头的某个位置包含原始IP。

更新See the flask-security implementation。同样,在实现之前,请查看有关ProxyFix的文档。您的解决方案可能因您的特定环境而异。

实际上,您会发现,当简单地获取以下内容时,将获得服务器的地址:

request.remote_addr

如果需要客户端的IP地址,请使用以下地址:

request.environ['REMOTE_ADDR']

请参阅有关how to access the Request object的文档,然后从同一个请求对象获取属性remote_addr

代码示例

from flask import request
from flask import jsonify

@app.route("/get_my_ip", methods=["GET"])
def get_my_ip():
    return jsonify({'ip': request.remote_addr}), 200

有关详细信息,请参见Werkzeug documentation

相关问题 更多 >