首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在部署代码时使用python flask获取公网和内网ip地址?

如何在部署代码时使用python flask获取公网和内网ip地址?
EN

Stack Overflow用户
提问于 2019-07-01 14:03:50
回答 1查看 1.1K关注 0票数 2

我创建了一个flask API。不管是谁访问了那个API,我都能追踪到他们的IP地址。在我的情况下,我能够从连接到我的互联网的任何系统跟踪本地ip,在那里我在本地运行代码。我在运行API时部署了代码。它能够跟踪公共地址。我希望在部署后跟踪公共和本地IP地址。

有没有办法跟踪本地地址和公共地址,即使在使用flask和python部署之后也是如此?

代码语言:javascript
运行
复制
 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)   

我尝试了所有这些方法,但都没有得到我想要的输出

代码语言:javascript
运行
复制
@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。

例如:如果10个不同的系统连接到一个互联网使用部署的api,我应该得到10个不同的IP地址,但我得到的是所有人通用的公共IP。但我预计一个系统的公网IP和本地IP都是106.89.78.90(公网IP) 10.0.0.1(内网IP),然后是另一个系统的106.89.78.90/10.0.0.2,以此类推。

EN

回答 1

Stack Overflow用户

发布于 2019-07-01 14:14:52

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56830685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档