python - 部署代码时如何使用python flask 获取公共(public)和私有(private)IP地址?

标签 python flask

我创建了一个 flask API。无论谁访问该 API,我都可以跟踪他们的 IP 地址。在我的情况下,我可以从任何连接到我在本地运行代码的互联网的系统跟踪本地 IP。我在运行 API 时部署了代码。它能够跟踪公共(public)地址。我希望在部署后跟踪公共(public)和本地 IP 地址。

即使在使用flask和python部署之后,有什么方法可以跟踪本地地址和公共(public)地址?

 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

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

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

最佳答案

您需要设置您的服务器(nginx/apache/caddy 等),以便它添加一个特殊的 header X-Forwarded-For每个请求都有实际的 IP。

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

关于python - 部署代码时如何使用python flask 获取公共(public)和私有(private)IP地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56830685/

相关文章:

python - Flask ReSTLess 属性错误 : 'NoneType' object has no attribute '_sa_instance_state'

python - 无法导入 TA-Lib - Python

python - 如何绘制分组数据?

Python 进度条 tqdm

python - 显示最小宽度为 0 的数字

python - 如何使用 flask 框架在 python web 应用程序中后台发送电子邮件?

python - 为什么 print(0.3) 打印 0.3 而不是 0.30000000000000004

python - 在 Google App Engine 中使用 pdfkit 生成 PDF 会引发 Popen 的 AttributeError

python - 导入错误 : No module named flask. 分机存储

jquery - AJax 不适用于 bootstrap-select