我创建了一个flask API。不管是谁访问了那个API,我都能追踪到他们的IP地址。在我的情况下,我能够从连接到我的互联网的任何系统跟踪本地ip,在那里我在本地运行代码。我在运行API时部署了代码。它能够跟踪公共地址。我希望在部署后跟踪公共和本地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。
例如:如果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,以此类推。
发布于 2019-07-01 14:14:52
您需要设置您的服务器(nginx/apache/caddy等),以便它为每个请求添加一个具有实际up地址的特殊头X-Forwarded-For。
https://stackoverflow.com/questions/56830685
复制相似问题