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

新手上路,请多包涵

我正在制作一个网站,用户可以使用 Flask 微框架(基于 Werkzeug )登录并下载文件,该框架使用 Python(在我的例子中是 2.6)。

我需要在用户登录时获取他们的 IP 地址(用于记录目的)。有谁知道如何做到这一点?当然有办法用 Python 做到这一点?

原文由 Jon Cox 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 815
2 个回答

请参阅有关 如何访问 Request 对象 的文档,然后从同一个 Request 对象获取属性 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 文档

原文由 Tarantula 发布,翻译遵循 CC BY-SA 3.0 许可协议

代理会使这有点棘手,如果您正在使用代理,请务必查看 ProxyFixFlask 文档)。在您的特定环境中查看 request.environ 。使用 nginx,我有时会做这样的事情:

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

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

更新 见烧瓶安全实施。同样,在实施之前查看有关 ProxyFix 的文档。您的解决方案可能因您的特定环境而异。

原文由 Stephen Fuhry 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题