import random
import re
import time
import psutil
import requests
from requests_toolbelt.adapters.source import SourceAddressAdapter
def get_addr():
"""
打印多网卡 mac 和 ip 信息
:return:
"""
res_list = []
dic = psutil.net_if_addrs()
for adapter in dic:
snicList = dic[adapter]
mac = '无 mac 地址'
ipv4 = '无 ipv4 地址'
ipv6 = '无 ipv6 地址'
for snic in snicList:
if snic.family.name in {'AF_LINK', 'AF_PACKET'}:
mac = snic.address
elif snic.family.name == 'AF_INET':
ipv4 = snic.address
elif snic.family.name == 'AF_INET6':
ipv6 = snic.address
if "以太网" in adapter and "127.0.0.1" not in ipv4:
res_list.append({
"inter_name": adapter,
"mac": mac,
"ipv4": ipv4,
"ipv6": ipv6,
})
return res_list
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.70"
}
all_add = get_addr()
print(all_add)
for item in all_add:
session = requests.Session()
inter_name = item['inter_name']
ipv4 = item['ipv4']
session.mount('http://', SourceAddressAdapter(ipv4))
session.mount('https://', SourceAddressAdapter((ipv4, random.randint(7999, 8999))))
res = session.get(url="https://2023.ip138.com/", timeout=8, headers=headers)
res.encoding = res.apparent_encoding
print(ipv4, inter_name, "当前的ip为:", "".join(re.findall(r"""target="_blank">(.*?)</a> """, res.text, re.S)))
session.close()
print("-*-*-")
time.sleep(5)
get_addr() 获取当前网卡的基本信息