Python - http服务,直接返回客户端IP
获取思路
-
如果没有代理,直接获取 remote_addr 就可以获取到客户端 IP。
-
有代理的情况,可以通过头信息分析,需要配合 nginx 配置。
获取流程
- 先获取 X-Real-IP
- 如果获取不到 X-Real-IP,通过 X-Forwarded-For 取
- 如果再取不到,就直接取 remote_addr
测试脚本
from flask import Flask
from flask import request
app = 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 ip
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)
总结
先安装 flask,就可以运行脚本测试了
pip install flask
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2020/2020-03/python_return_ip/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。