获取访客的IP地址
我正在制作一个网站,用户可以使用基于Werkzeug的Flask微型框架 (使用Python(我的例子中是2.6))login和下载文件。
我需要在login时获取用户的IP地址(用于logging目的)。 有谁知道如何做到这一点? 肯定有办法用Python来做到这一点?
请参阅有关如何访问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文档 。
其实,你会发现当简单得到以下内容时,你将得到服务器的地址:
request.remote_addr
如果您想要客户端IP地址,请使用以下命令:
request.environ['REMOTE_ADDR']
代理可以使这有点棘手,请确保检查出ProxyFix ( 烧瓶文档 ),如果你正在使用一个。 看看你的特定环境中的request.environ。 有了nginx,我有时候会这样做:
from flask import request request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
当代理(如nginx)转发地址时,通常在请求头中包含原始IP地址。
更新 请参阅flask-security的实现 。 同样,在实现之前,请查看有关ProxyFix的文档。 您的解决scheme可能因您的特定环境而异。
用户的IP地址可以使用下面的代码来检索:
from flask import request print request.remote_addr
httpbin.org使用这个方法:
return jsonify(origin=request.headers.get('X-Forwarded-For', request.remote_addr))