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

相关推荐
charlie1145141911 小时前
勇闯前后端Week2:后端基础——Flask API速览
笔记·后端·python·学习·flask·教程
豐儀麟阁贵1 小时前
8.2异常的抛出与捕捉
java·开发语言·python
interception2 小时前
爬虫js逆向,jsdom补环境,抖音,a_bogus
javascript·爬虫·python
林炳然2 小时前
Python-Basic Day-5 函数-生成器&装饰器
python
Yue丶越2 小时前
【Python】基础语法入门(四)
linux·开发语言·python
AI街潜水的八角6 小时前
Python电脑屏幕&摄像头录制软件(提供源代码)
开发语言·python
hadage2336 小时前
--- git 的一些使用 ---
开发语言·git·python
笨笨聊运维12 小时前
CentOS官方不维护版本,配置python升级方法,无损版
linux·python·centos