获取访客的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))