如何使用Python-Flask在同一网络上找到客户端的MAC地址?

时间:2014-03-05 03:37:57

标签: python networking network-programming flask

我正在寻找一种获取客户端MAC地址的python方式。所有请求都在同一个网络上。我正在寻找类似于在路由器上执行arp -n <Client_IP>的东西。

2 个答案:

答案 0 :(得分:3)

不确定,但您始终可以使用请求对象(如

)获取IP地址

request.remote_addr为此你必须

import request然后您可以将此ip传递给此函数

import netifaces as nif

def mac_for_ip(ip):
    'Returns a list of MACs for interfaces that have given IP, returns None if not found'
    for i in nif.interfaces():
        addrs = nif.ifaddresses(i)
        try:
            if_mac = addrs[nif.AF_LINK][0]['addr']
            if_ip = addrs[nif.AF_INET][0]['addr']
        except IndexError, KeyError: #ignore ifaces that dont have MAC or IP
            if_mac = if_ip = None
        if if_ip == ip:
            return if_mac
    return None

来自here

答案 1 :(得分:0)

如果获得网关,则将获得与使用该网关的接口相对应的mac地址:

>>> gateway_iface = netifaces.gateways()['default'][netifaces.AF_INET][1]
>>> netifaces.ifaddresses(gateway_iface)[netifaces.AF_LINK][0]['addr']
'de:f2:fe:66:a4:8e'