python-windows下指定网卡运行程序

2023-05-16

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() 获取当前网卡的基本信息
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python-windows下指定网卡运行程序 的相关文章

随机推荐