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