我创建了一个 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/