一:使用request.remote_addr
python
from flask import Flask,request
app=Flask(__name__)
@app.route("/")
def getIp():
ip_address = request.remote_addr
return f"{ip_address}"
if __name__=="__main__":
app.run()
简单直观,但安全性不足,适合开发环境
二:使用X-Forwarded-For结合request.remote_addr
python
from flask import Flask,request
app=Flask(__name__)
@app.route("/")
def getIp():
ip_address=request.headers.get("X-Forwarded-For",request.remote_addr)
return f"{ip_address}"
app.run()
代理环境下能获取真实ip,更可靠
三;使用proxyFix中间件配置可信代理(推荐)
python
from flask import Flask,request
from werkzeug.middleware.proxy_fix import ProxyFix
app=Flask(__name__)
if hasattr(app.wsgi_app, 'trusted_proxies'):
app.wsgi_app.trusted_proxies = ['192.168.0.100']#改成自己可信的代理地址
app.wsgi_app=ProxyFix(app.wsgi_app,x_for=1,x_proto=1,x_host=1,x_port=1)#配置代理
@app.route("/")
def getIp():
ip_address=request.remote_addr
return f"{ip_address}"
app.run()
这里使用Werkzeug的ProxyFix中间件提取来自X-Forwarded-For真实ip,适合生产环境