flask获取ip地址各种方法

一:使用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,适合生产环境

相关推荐
站大爷IP3 小时前
Python SQLite模块:轻量级数据库的实战指南
python
站大爷IP3 小时前
用Requests+BeautifulSoup实现天气预报数据采集:从入门到实战
python
Rhys..3 小时前
Gerkin+Pytest(python)实现自动化(BDD)
python·自动化·pytest
大佐不会说日语~3 小时前
若依框架 (Spring Boot 3) 集成 knife4j 实现 OpenAPI 文档增强
spring boot·后端·python
MATLAB代码顾问3 小时前
Python实现手榴弹爆炸算法(Grenade Explosion Method, GEM)(附完整代码)
开发语言·python·算法
困鲲鲲3 小时前
NumPy 系列(六):numpy 数组函数
python·numpy
人工干智能3 小时前
Python的大杀器:Jupyter Notebook处理.ipynb文件
开发语言·python·jupyter
跳跳的向阳花4 小时前
02、Python从入门到癫狂:函数与数据容器
开发语言·python
这里有鱼汤4 小时前
如何用Python找到股票的支撑位和压力位?——均线簇
后端·python