获取思路
- 如果没有代理,直接获取 remote_addr 就可以获取到客户端 IP。
- 有代理的情况,可以通过头信息分析,需要配合 nginx 配置。
获取流程
- 先获取 X-Real-IP
- 如果获取不到 X-Real-IP,通过 X-Forwarded-For 取
- 如果再取不到,就直接取 remote_addr
测试脚本
from flask import Flaskfrom flask import requestapp = Flask(__name__)@app.route('/')def ip(): headers = request.headers ip = headers["X-Real-Ip"] if ip == "" and len(headers["X-Forwarded-For"]) > 0: ip = headers["X-Forwarded-For"][0] if ip == "": ip = request.remote_addr return ipif __name__ == "__main__": app.run(host="0.0.0.0", port=8080)
总结
先安装 flask,就可以运行脚本测试了
pip install flask