我创建了一个烧瓶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,等等。
答案 0 :(得分:0)
您需要设置服务器(nginx / apache / caddy等),以便为每个请求添加带有实际IP的特殊标头X-Forwarded-For
。