Python - http服务,直接返回客户端IP

linux运维菜

发布时间: 20-03-2401:08

获取思路

如果没有代理,直接获取 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

举报/反馈