获取思路
- 如果没有代理,直接获取 remote_addr 就可以获取到客户端 IP。
- 有代理的情况,可以通过头信息分析,需要配合 nginx 配置。
![984b3fac5f9595469dc2f7c3dfa85a94.png](https://i-blog.csdnimg.cn/blog_migrate/71dbb9e9d9409b9f03352b53feab8f09.jpeg)
获取流程
- 先获取 X-Real-IP
- 如果获取不到 X-Real-IP,通过 X-Forwarded-For 取
- 如果再取不到,就直接取 remote_addr
![da1c5baff7b050aa07e5e9ca436a6a60.png](https://i-blog.csdnimg.cn/blog_migrate/baf8c659e3c43106b258d34a5d0d3a38.jpeg)
测试脚本
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
![57747672106a45dc50026c5e0832dc0a.png](https://i-blog.csdnimg.cn/blog_migrate/3f2a14a10493505e829147f9148496e2.jpeg)