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

我创建了一个烧瓶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,依此类推。

参考方案

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

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

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…

Flask-RESTful-返回自定义响应格式 - python

我已经按照以下Flask-RESTful文档定义了自定义响应格式。app = Flask(__name__) api = restful.Api(app) @api.representation('application/octet-stream') def binary(data, code, headers=None): resp =…

Python-Excel导出 - python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…