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,适合生产环境

相关推荐
车载测试工程师10 分钟前
CAPL学习-AVB交互层-概述
网络协议·tcp/ip·以太网·capl·canoe
爱笑的眼睛111 小时前
超越MSE与交叉熵:深度解析损失函数的动态本质与高阶设计
java·人工智能·python·ai
Rose sait2 小时前
【环境配置】Linux配置虚拟环境pytorch
linux·人工智能·python
过期动态2 小时前
JDBC高级篇:优化、封装与事务全流程指南
android·java·开发语言·数据库·python·mysql
一世琉璃白_Y3 小时前
pg配置国内数据源安装
linux·python·postgresql·centos
liwulin05063 小时前
【PYTHON】COCO数据集中的物品ID
开发语言·python
小鸡吃米…3 小时前
Python - XML 处理
xml·开发语言·python·开源
我赵帅的飞起3 小时前
python国密SM4加解密
python·sm4加解密·国密sm4加解密
yaoh.wang3 小时前
力扣(LeetCode) 1: 两数之和 - 解法思路
python·程序人生·算法·leetcode·面试·跳槽·哈希算法
liwulin05064 小时前
【PYTHON-YOLOV8N】关于YOLO的推理训练图片的尺寸
开发语言·python·yolo