Python 多个网卡情况下,指定某特定网卡信息发送HTTP请求

2023-05-16

  • 安装Python 第三方库

    pip install netifaces
    pip install requests-toolbelt
    
  • 指定某特定网卡信息发送HTTP请求,实际这里就是指定该特定网卡的IP地址

    import requests
    from requests_toolbelt.adapters.source import SourceAddressAdapter
    
    s = requests.Session()
    # 指定特定网卡的IP地址'192.168.121.1',使用该网卡发送POST请求
    s.mount('http://', SourceAddressAdapter('192.168.121.1'))
    s.mount('https://', SourceAddressAdapter(('192.168.121.1', 8999)))
    s.post(url="http://192.168.121.144:8083/test/", json={"code":200})
    
  • 小技巧:已知网卡的名称,获取这个网卡的IP地址

    from netifaces import interfaces, ifaddresses, AF_INET, AF_INET6
    import winreg
    import platform
    
    # 获取ipv4地址
    def get_ipv4_address(key_name):
        if platform.system() == "Linux":
            try:
                return ifaddresses(key_name)[AF_INET][0]['addr']  # 返回ipv4地址信息
            except ValueError:
                return None
        elif platform.system() == "Windows":
            key = get_key(key_name)  # 获取网卡的键值
            if not key:
                return
            else:
                return ifaddresses(key)[AF_INET][0]['addr']  # 返回ipv4地址信息
        elif platform.system() == 'MacOS':
            pass
        else:
            print('您的系统本程序暂时不支持,目前只支持Linux、Windows、MacOS')
    
    # 获取ipv6地址
    def get_ipv6_address(key_name):
        if platform.system() == "Linux":
            try:
                return ifaddresses(key_name)[AF_INET6][0]['addr']
            except ValueError:
                return None
        elif platform.system() == "Windows":
            key = get_key(key_name)
            if not key:
                return
            else:
                return ifaddresses(key)[AF_INET6][0]['addr']
        elif platform.system() == 'MacOS':
            pass
        else:
            print('您的系统本程序暂时不支持,目前只支持Linux、Windows、MacOS')
    
    # 获取Windows系统网卡接口在注册表的键值
    def get_key(key_name):
        keys = interfaces()  # 获取所有网卡的键值
        key_name_dict = {}  # 存放网卡键值与键值名称的字典
        try:
            reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)  # 建立注册表链接,"HKEY_LOCAL_MACHINE",None表示本地计算机
            # 打开r'SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}',固定的
            reg_key = winreg.OpenKey(reg , r'SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}')
        except Exception as e:
            return '路径出错或者其他问题,请仔细检查'
    
        for key in keys:
            try:
                reg_subkey = winreg.OpenKey(reg_key , key + r'\Connection')  # 读取网卡键值的Name
                key_name_dict[winreg.QueryValueEx(reg_subkey , 'Name')[0]] = key  # 写入key_name字典
            except FileNotFoundError:
                pass
        # print('所有接口信息字典列表: ' + str(key_name_dict))
        return key_name_dict[key_name]
    if __name__ == '__main__':
        print('你的ipv4地址是:' + get_ipv4_address('以太网'))
        print('你的ipv6地址是:' + get_ipv6_address('以太网'))
    

    ==== :运行结果: ==============================

    你的ipv4地址是:192.168.121.1
    你的ipv6地址是:fe80::35f0:4ce7:b0d8:4151%16
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 多个网卡情况下,指定某特定网卡信息发送HTTP请求 的相关文章

  • Bounding box(bbox) 预测

    在出现Bounding box预测之前 xff0c 一般都是通过滑动窗口进行目标检测 本文前两部分介绍滑动窗口算法 xff0c 这样是为了更好介绍 bounding box如何引出 为了解决什么问题而引出的 也可直接跳跃到第三部分看有关bo
  • YOLOv3网络结构分析以及工作流程

    注意 xff1a 本文章有很多图 xff0c 但是都是YOLOv3的结构图 xff0c 只是每张图表达出的信息都各有特色 xff0c 可将这些结构图结合起来 xff0c 能更好的理解 1 Darknet 53 模型结构 在论文中虽然有给网络
  • 飞浆七天深度学习

    文章目录 前言图像处理原理与深度学习入门百度的飞浆实战可视化数据准备可视化效果图片 深度学习原理与使用方法实战手势识别 卷积神经网络原理与使用实战车牌识别分割字符的代码定义MyLeNet网络 经典卷积网络解读数据增强计算VGG的参数小姐姐手
  • Ubuntu18.04安装教程——超详细的图文教程

    电脑配置 xff1a 名称 xff1a Lenovo 拯救者Y7000P 处理器 xff1a i7 10750H 内存 xff1a 32G 固态 xff1a 1TB 显卡 xff1a RTX2060 6G 一 准备工作 本文以 Ubuntu
  • VINS-Course代码解析——run_euroc前端数据处理

    vins mono总框架如下 xff1a 主要分为三大块 xff1a 我们先从主函数 main 入手 xff1a 主函数中有三个线程 xff0c 读取完数据集和配置文件的路径后就会进入这三个线程 xff0c 如下图 xff1a thd Ba
  • C++求解N个数的最大公约数、最小公倍数

    一 2个数的最大公约数 span class token comment 辗转相除法 span span class token keyword int span span class token function gcd span spa
  • 子序列个数——动态规划

    题目 xff1a 统计一个字符串中全部不同的子序列的个数 思路 xff1a 动态规划求解 令 f i 61 前 i 个元素中包含的全部子序列的个数 那么状态转移方程分为下面两种情况 xff1a 当第 i 个元素在前面 i 1 个字符中没有出
  • 字符串中特定子序列出现的次数(动态规划)

    题目 xff1a 给定一个字符串 xff0c 求子序列 cwbc 出现的次数 思路 xff1a 动态规划 令 dp i j 表示前 i 个字符中匹配了字符串 cwbc 中前 j 位 xff08 j 61 1 2 3 4 xff09 的个数
  • 认识node

    一 认识node node是一个基于Chrome V8引擎的JavaScript代码运行环境 浏览器 xff08 软件 xff09 能够运行JavaScript代码 xff0c 浏览器就是JavaScript代码的运行环境 xff08 js
  • python爬虫-使用request,lxml库爬取游戏排名

    爬取目标URL xff1a http wy hao123 com top 开发环境 xff1a PyCharm 2019 2 3Python3 6火狐浏览器 使用的三方库 xff1a requestslxml 执行结果 开始 抓取网页 打开
  • 知识追踪模型——教育大数据挖掘(持续更新......)

    知识追踪 xff08 2015 NIPS xff09 Deep Knowledge Tracing xff08 2017 WWW xff09 Dynamic Key Value Memory Networks for Knowledge T
  • Wireshark从安装到使用详细指南

    前言 wireshark是一款非常优秀的网络封包分析软件 xff0c 具有极为强大的功能 可以截取各种类型的网络封包 xff0c 并且显示网络封包的详细信息 值得一提的是 xff0c 为了安全性考虑 xff0c wireshark无法实现改
  • echarts随dom大小自适应变化,并做防抖处理

    目录 监听窗口resize事件监听dom的resize事件完整代码示例 监听窗口resize事件 监听浏览器窗口resize事件很简单 xff0c 如下一行代码即可搞定 xff1a window span class token punct
  • 极简版qt打包成exe

    文章目录 极简版qt打包成exe附加工具过程 极简版qt打包成exe 附加工具 Engima Virtual Box xff0c 将qt的多个文件打包成一个exe xff0c 下载地址 过程 新建xxx文件夹将初步编译过的xxx exe x
  • Windows10清理C盘的恶意软件

    Windows10清理C盘的恶意软件 写在前面情况1 xff1a 在桌面留有 快捷链接 的情况2 xff1a 在 控制面板 的 卸载软件 中能找到名字情况3 xff1a 在 控制面板 的 卸载软件 中找不到名字1 ludashi birdw
  • 前端的学习之路:初级CSS---关系选择器

    关系选择器 span class token doctype lt DOCTYPE html gt span span class token tag span class token tag span class token punctu
  • 子类继承父类的加载顺序——记录篇

    两种情况的加载顺序 xff1a 初始化阶段的初始化步骤 xff1a 静态代码块 先父类后子类 gt 非静态代码块 gt 父类 先父类后子类 一 单独类的加载顺序 静态变量 静态代码块 xff1a 从上到下的顺序加载 类的非静态变量 xff0
  • “完美”解决Mybatis+PageHelper出现SQL语句末尾自动加limit出现SQL语法错误

    问题比较简单 xff0c 解决方法也比较简单 xff0c 这里简单描述一下 具体描述请看这里 xff1a 问题详细描述 产生原因 Mybatis 43 Pagehelper在执行分页逻辑时时 xff0c 会默认在你的写的SQL语句后面添加l
  • Edge扩展插件安装位置

    Edge插件默认位置在 xff1a C Users Administrator AppData Local Microsoft Edge User Data Default Extensions 若查找不到 xff0c 则您的用户名更改了
  • mac上zsh: command not found:${命令} 失败问题

    重新安装了zsh后 xff0c 输入很多以前能够用的alias命令缩写都不能用了 xff0c 原因 xff1a 原来的命令缩写写在 bash profile文件中 xff0c 这个使用的是bash xff1b 但是zsh是另外一个shell

随机推荐