Python3用pywifi连接开放的WiFi

文章目录

  • 1. 需求
  • 2. 配置
  • 3. 代码

1. 需求

在Windows下,如果有线网卡和无线网卡同时使用的话,那么重启之后无线网卡将不会自动重新连接重启前的WiFi,每次重启之后需要手动连接,相当繁琐。
因此我需要编写一个连接一个开放(未设置密码)的WiFi程序,这样我打包后就能把它设为开机自启项,然后每次开机时就可以让它自动连接相应的WiFi了。
设为开机自启项可以参考:Windows怎么修改注册表设置开机启动程序
Python源码打包成exe可以参考:解决:如何将Python代码打包成exe可执行程序的问题

另外值得说明的是,pywifi一般用于破解WiFi密码,对于连接WiFi并非最好的选择,如果想要开机时自动连接某个WiFi,那不如写个脚本,参考:windows 通过cmd命令(netsh wlan命令)连接wifi

2. 配置

  1. 控制面板/网络和Internet/网络连接那里可以看到所有网卡,双击所需要使用的无线网卡
    Python3用pywifi连接开放的WiFi_第1张图片
  2. 得到SSID为PDSU-Student-Auto(无线网络的名字)
    Python3用pywifi连接开放的WiFi_第2张图片
  3. 点击属性,会看到网卡的名字
    Python3用pywifi连接开放的WiFi_第3张图片

3. 代码

pywifi官方主页

# 尝试并连接wifi
import pywifi
import time

def isConnected():
    if ifaces.status() == pywifi.const.IFACE_CONNECTED:
        print("成功连接")
        return True
    else:
        print("失败")
        return False

if __name__ == "__main__":
    wifi = pywifi.PyWiFi()  # 创建一个无线对象
    ifaces = wifi.interfaces()[0]  # 取一个无限网卡
    print(ifaces.name())  # 输出无线网卡名称
    ifaces.disconnect()  # 断开网卡连接
    time.sleep(0.5)  # 缓冲0.5秒

    profile = pywifi.Profile()  # 配置文件
    profile.ssid = "PDSU-Student-Auto"  # wifi名称
    ifaces.remove_all_network_profiles()  # 删除其他配置文件
    tmp_profile = ifaces.add_network_profile(profile)  # 加载配置文件
    ifaces.connect(tmp_profile)  # 连接
    time.sleep(0.5)  # 等待0.5秒后看下是否成功连接了
    if not isConnected():
        time.sleep(5)  # 若未成功,等待5秒后再看下是否成功连接了
        isConnected()

你可能感兴趣的:(Python)