部署代码后如何使用python flask获取公共和私有IP地址?

时间:2019-07-01 06:03:49

标签: python flask

我创建了一个烧瓶API。不论谁访问该API,我都能跟踪他们的IP地址。在我的情况下,我能够从连接到我在本地运行代码的Internet的任何系统跟踪本地ip。我运行API时就部署了代码。它能够跟踪公共地址。我希望在部署后同时跟踪公共IP地址和本地IP地址。

即使使用flask和python部署后,有什么方法可以跟踪本地地址以及公共地址吗?

 from netifaces import interfaces, ifaddresses, AF_INET
 for ifaceName in interfaces():
       addresses = [i['addr'] for i in 
       ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
       print '%s: %s' % (ifaceName, ', '.join(addresses))

 import socket    
 hostname = socket.gethostname()    
 IPAddr = socket.gethostbyname(hostname)   

我尝试了所有这一切,但没有用,无法获得想要的输出

@app.route("/get_my_ip", methods=["GET"])
def get_my_ip():
      return jsonify({'ip': request.environ['REMOTE_ADDR']}), 200

Result:10.0.0.1

代码部署后,我只能获得公共IP。我需要跟踪本地IP和公共IP。

例如:如果连接到一个Internet的10个不同系统使用了已部署的api,则我应该获得10个不同的IP地址,但是我获得的是所有人通用的公共IP。但是我希望公共IP和本地UP都像来自一个系统的106.89.78.90(公用IP)10.0.0.1(私有IP),然后来自另一个系统的106.89.78.90/10.0.0.2,等等。

1 个答案:

答案 0 :(得分:0)

您需要设置服务器(nginx / apache / caddy等),以便为每个请求添加带有实际IP的特殊标头X-Forwarded-For

相关: Get IP address of visitors using Flask for Python