首页 网站首页 商业信息 脚本 查看内容

用python写一个脚本,自动连wifi,自动登录校园网

共生运营网 2023-2-23 14:43 6846人围观 脚本

1.1熟悉 URL

我们所说的网址,实在就是同一资本定位符(uniform resource locator简称URL),经过这个唯一的地址,可以找到对应的办事。它的标准格式以下:

协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志



这个只是标准的格式,有些信息是可以省略的,比如登录信息等,还有办事器地址可以用域名地址,也可以用ip地址。带条理的文件途径实在就是你要拜候的办事器资本,问号?前面是get请求的参数。http协议有多种请求方式,post和get只是其中的两种。

1.get方式主如果获得办事器的资本信息,请求的参数一般放在url?前面。

2.post方式主如果把数据提交给办事器,在报文的正文部分停止提交。

http协议本质是获得某种“资本”(视频、音频、网页、图片……),而传输则是其功用。现实上,上网的大部分行为,都在停止着进程间通讯,既然是通讯,就需要获得信息和发送信息,所以对应到我们生活中,大部分的上网行为不过两种:

1.把办事器上面的资本拿到当地(下载短视频、收集小说……)

2.把当地的办事器推送到办事器(搜索、登录、下单……)

1.2 http请求报文格式



首行: [方式] + [url] + [版本]
Header: 请求的属性, 冒号朋分的键值对;每组属性之间利用\n分隔;碰到空行暗示Header部分竣事
Body: 空行前面的内容都是Body. Body答应为空字符串. 假如Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度;

1.3 http响应报头格式



首行: [版本号] + [状态码] + [状态码诠释]
Header: 请求的属性, 冒号朋分的键值对;每组属性之间利用\n分隔;碰到空行暗示Header部分竣事
Body: 空行前面的内容都是Body. Body答应为空字符串. 假如Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度; 假如办事器返回了一个html页面, 那末html页面内容就是在 body中。

HTTP常见Header:

Content-Type: 数据范例(text/html等) Content-Length: Body的长度

Host: 客户端奉告办事器, 所请求的资本是在哪个主机的哪个端口上; User-Agent: 声明用户的操纵系统和阅读器版本信息;

referer: 当前页面是从哪个页面跳转过来的;

location: 搭配3xx状态码利用, 告诉客户端接下来要去那里拜候;

Cookie: 用于在客户端存储少许信息. 凡是用于实现会话(session)的功用;

2.具体实现

import requests
import socket

# 获得ip地址
def get_host_ip():
"""
查询本机ip地址
:return: ip
"""
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('10.255.255.255', 1))
ip = s.getsockname()[0]
finally:
s.close()

return ip
user_ip = get_host_ip()

# 校园网地址,最好不要用阅读器里的url,还是倡议抓包获得
post_addr = "http://10.10.244.11:801/eportal/"

#下面两个大括号里面都是复制自己黉舍校园网登录网站中的,冒号双方都要加上双引号
post_header = {

#报头信息,经过抓包,获得
}

post_data = {

#正文数据,经过抓包获得
}
#提交http请求报文
z = requests.post(post_addr, data=post_data, headers=post_header)

print("登录校园网成功,局域网ip以下:")
print(user_ip)
#input("")

上面是代码的首要逻辑,细节信息还需要抓包添补。一路头电脑上是没有安装requests包的,需要自己先安装一下,前面python需要导入的包都是用pip3号令安装。假如没安装pip3号令的,请自行安装。

pip3 install requests

2.1 获得url

在谷歌阅读器先翻开上网登录窗口,然后按F12键进入开辟者形式,勾选保存日志,输入账号密码,停止登录,在收集那边获得登录时的http请求报文。



然后检察抓到的包,检察第一个即可,通常为第一个,假如不安心可以点进区检察,看到标头里的请求方式,确保是post。然后里面还有一个请求网址,就是url了。只需要复制?问号前面的内容即可,前面的是一些get方式的请求参数,不大白什么意义的看长文url的诠释。往下拉,还有响应标头,请求标甲等信息,:warning:留意,由于我们要向办事器请求登录,所以我们需要的是请求标头,而不是响应,别搞错了。



# 校园网地址,最好不要用阅读器里的url,还是倡议抓包获得
post_addr = "http://10.10.244.11:801/eportal/"

这样就完成了第一步,获得到了校园网地址。为什么说不倡议间接从阅读器里面复制呢,比如我们黉舍这类情况返回的响应是3xx,说明网址被重定向过了,所以抓包到的地址比力正确一些。

2.2 获得请求报文的报头



把请求标头里的内容添补到代码块里,部分header的寄义上文已经诠释过,还想领会更多请自行搜索。添补的格式是键值 key:values形式,key和values都是字符串需要加引号,高低键值用逗号离隔,下面是我自己的报文,只是个例子。

#下面两个大括号里面都是复制自己黉舍校园网登录网站中的,冒号双方都要加上双引号
post_header = {

'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Host': '10.10.244.11',
'Referer': 'http://10.10.244.11/',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) APPleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36',
}

2.3 获得请求报文的数据





把载荷里的查询字符串、表单数据都添补到法式块中,这里首要上传的就是你的登录信息,不要填错了。

post_data = {

'c': 'ACSetting',
'a': 'Login',
'DDDDD': 'xxxx',
'upass': 'xxxxx',
'protocol': 'http:',
'hostname': '10.10.244.11',
'iTermType': '1',
'wlanuserip': user_ip,
'wlanacip': 'xxxxxx',
'wlanacname': 'SPL-BRAS-SR8806-X',
'mac': '00-00-00-00-00-00',
'ip': user_ip,
'enAdvert': '0',
'queryACIP': '0',
'loginMethod': '1'
}

2.4 获得本机的局域网ip

为什么要零丁写一个函数获得主机IP呢,由于IP地址分为牢固IP地址和静态IP地址,我们需要获得的是静态的IP地址,它是一向变化的,不能间接在请求数据里填抓包拿到的地址,否则你换个地方,能够阿谁地址就生效了。

牢固IP:牢固IP地址是持久牢固分派给一台计较机利用的IP地址,通常为特别的办事器才具有牢固IP地址。

静态IP:由于IP地址资本很是欠缺,经过电话拨号上网或普通宽带上网用户一般不具有牢固IP地址,而是由ISP静态分派临时的一个IP地址,这些都是计较机系统自动完成的。

# 获得ip地址
#需要导入socket包,系统应当自带
def get_host_ip():
"""
查询本机ip地址
:return: ip
"""
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('10.255.255.255', 1))
ip = s.getsockname()[0]
finally:
s.close()

return ip
user_ip = get_host_ip()

写到这里实在,已经可以自动毗连校园网了,可是条件是你先翻开Wi-Fi,连到黉舍的校园网Wi-Fi。说到底,现在的功用只能帮助你登录校园网,毗连校园网Wi-Fi的工作还是得你来做,假如你之前连的是其他收集,那末你还有停止收集的切换。所以还要再增加一个自动毗连Wi-Fi的功用,恰好python里有一个pywifi包可以支持这个功用。可是!!间接pip3 安装的pywifi包里面不支持mac os的Wi-Fi控制,由于开辟这个pywifi包的作者不用mac os系统,所以pywifi包只支持windows和linux。幸亏,后来有人提出这个题目,作者后来又写了一个合适mac os的包,不外需要自己下载。我也是履历很多挫折,才处理了这个题目。

3.自动毗连Wi-Fi

还是先在终端安装pywifi包,然后找到pywifi包对应位置,把内容全数替换成支持moc os 的pywifi包。

pip3 install pywifi

假如找不到pywifi途径可以先履行卸载号令,然后就会弹出所以安装过的包途径了,然后复制所需的途径,最好挑选n号令,停止卸载就行。



获得安装途径今后,可以在终端里检察,也可以在mac可视化文件形式里检察,我更喜好可视化,翻开的时辰有的文件夹就翻译成中文了,我相信只要专心必定能找到。









找到pywifi途径以后,就要下载支持mac os的pywifi包了,下载完停止替换就行。那这个支持mac os的pywifi在哪呢?这里给出作者github的地址,作者awkman在Issue24里面也回答了,他写了一个兼容Macos的demo法式。




可以在终端用git号令下载,也可以,间接到作者仓库取自己下载,大师随意。git号令下载指令以下:-b 前面带的是分支,作者放在macos_dev里了。

git clone -b macos_dev https://github.com/awkman/pywifi.git


下载完检查一下能否是包括了mac的.py文件,包括了就没题目。然后把包括了mac的这个pywifi文件和之前的pywifi停止替换就行。先cd到当前文件夹,然后cp拷贝到本来途径(怎样找途径前文已经说了),文件名不异会自动替换里面内容。

cd pywifi
cp -r pywifi /Users/wenanqin/Library/Python/3.8/lib/python/site-packages

之前我在这样做完,运转还是报错,由于发现_wifiutil_macos.py里有一个包没安装,装完就行了。

pip3 install pyobjc

下面起头完成毗连wifi功用的代码,在同一途径下,新建一个wifi.py文件。

import pywifi
import time
#保存包中写义的常量
from pywifi import const

def wifi_connect_status():
"""
判定本机能否有无线网卡,以及毗连状态
:return: 已毗连或存在无线网卡返回1,否则返回0
"""
#建立一个元线工具
wifi = pywifi.PyWiFi()

#取当前机械,第一个元线网卡
iface = wifi.interfaces()[0] #有能够有多个无线网卡,所以要指定


#判定能否毗连成功
if iface.status() in [const.IFACE_CONNECTED,const.IFACE_INACTIVE]:
#print('wifi已经毗连了收集')
return 1
else:
print("兄弟,我没设备自动翻开Wi-Fi功用,你先翻开wifi再试?")
return 0

def scan_wifi():
"""
扫描附件wifi
:return: 扫描成果工具
"""
#扫描附件wifi
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]

iface.scan() #扫描附件wifi
time.sleep(1)
basewifi = iface.scan_results()
# for i in basewifi:
# print('wifi扫描成果:{}'.format(i.ssid)) # ssid 为wifi称号
# print('wifi装备MAC地址:{}'.format(i.bssid))
return basewifi

def connect_wifi():
wifi = pywifi.PyWiFi() # 建立一个wifi工具
ifaces = wifi.interfaces()[0] # 取第一个无穷网卡
#print("本机无线网卡称号:")
#print(ifaces.name()) # 输出无线网卡称号
ifaces.disconnect() # 断开网卡毗连
time.sleep(3) # 缓冲3秒


profile = pywifi.Profile() # 设置文件
profile.ssid = "NJUPT-CMCC" # wifi称号
#连校园网不需要密码登录,还有登录模块
# profile.auth = const.AUTH_ALG_OPEN # 需要密码
# profile.akm.append(const.AKM_TYPE_WPA2PSK) # 加密范例
# profile.cipher = const.CIPHER_TYPE_CCMP # 加密单元
# profile.key = '4000103000' #wifi密码

ifaces.remove_all_network_profiles() # 删除其他设置文件
tmp_profile = ifaces.add_network_profile(profile) # 加载设置文件

ifaces.connect(tmp_profile) # 毗连
time.sleep(1) # 尝试10秒能否成功毗连
isok = True
if ifaces.status() == const.IFACE_CONNECTED:
print("毗连校园网成功")
else:
print("毗连校园网失利")
#ifaces.disconnect() # 断开毗连
time.sleep(1)
return isok

这里有三个功用,前两个测试用的,现实可以只挪用第三个。link.py登录校园网之前先挪用毗连wifi模块。

import requests
import socket
#导入适才写的wifi模块,一定放在同一文件夹内
import wifi

#检察wifi状态
wifi.wifi_connect_status()
#毗连wifi
wifi.connect_wifi()

# 获得ip地址
def get_host_ip():
"""
查询本机ip地址
:return: ip
"""
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('10.255.255.255', 1))
ip = s.getsockname()[0]
finally:
s.close()

return ip
user_ip = get_host_ip()


# 校园网地址
post_addr = "http://10.10.244.11:801/eportal/"

#下面两个大括号里面都是复制自己黉舍校园网登录网站中的,冒号双方都要加上双引号
post_header = {

'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Host': '10.10.244.11',
'Referer': 'http://10.10.244.11/',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36',
}

post_data = {

'c': 'ACSetting',
'a': 'Login',
'DDDDD': ',0,xxxxxxx@cmcc',
'upass': 'xxxxx',
'protocol': 'http:',
'hostname': '10.10.244.11',
'iTermType': '1',
'wlanuserip': user_ip,
'wlanacip': 'xxxxxxx',
'wlanacname': 'SPL-BRAS-SR8806-X',
'mac': '00-00-00-00-00-00',
'ip': user_ip,
'enAdvert': '0',
'queryACIP': '0',
'loginMethod': '1'
}

z = requests.post(post_addr, data=post_data, headers=post_header)
#假如不想每次都手动封闭窗口可以删除下面的input,然后将print里的内容改成自己想要的
print("登录校园网成功,局域网ip以下:")
print(user_ip)
#input("")

4.打包成exe文件

1.先安装pyinstaller包

pip3 install pyinstaller

2.找到pyinstaller号令途径(带bin,老方式卸载看途径),我间接履行不了pyinstaller指令,由于python系统就有,情况变量还没设置。

3.履行指令打包

先cd到需要打包文件的途径下,然后履行指令,我安装了一个超级右键法式,很方便操纵



#将 xx.py 打包为 xx.exe

/Users/wenanqin/Library/Python/3.8/bin/pyinstaller -F xx.py


履行完操纵,会天生三个文件,exe文件在dist文件内,至此,全数工作完成。



履行法式,结果如上。

高端人脉微信群

高端人脉微信群

人脉=钱脉,我们相信天下没有聚不拢的人脉,扫码进群找到你所需的人脉,对接你所需的资源。

商业合作微信

商业合作微信

本站创始人微信,13年互联网营销经验,擅长引流裂变、商业模式、私域流量,高端人脉资源丰富。

精彩点评

相关推荐

有哪些超神的油猴脚本?

有哪些超神的油猴脚本?

小编在之前就介绍过很多油猴里的神器插件,这里给大家总结几款经典中的经典。01Usersc

一篇教会你写90%的shell脚本

一篇教会你写90%的shell脚本

shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统

脚本怎么写?250+个万能脚本,可直接套用!

脚本怎么写?250+个万能脚本,可直接套用!

作者:厚昌学院特聘讲师,厚昌学院顾问团队核心成员,从事互联网行业从事互联网行业8

浏览器辅助神器:油猴脚本使用教程

浏览器辅助神器:油猴脚本使用教程

前言「油猴脚本」是一段脚本代码,通过它可以让浏览器实现各种各样的扩展功能,和浏览

这100个shell脚本案例,你都知道吗?一篇教会你写90%的 ...

这100个shell脚本案例,你都知道吗?一篇教会你写90%的 ...

shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成

最新一波油猴脚本推荐:有了它们,你的浏览器就无敌了

最新一波油猴脚本推荐:有了它们,你的浏览器就无敌了

关注扩展迷、喜欢折腾电脑的小伙伴们,应该都对各种各样的浏览器插件不陌生了。浏览器

最强浏览器插件:油猴脚本的安装及使用教程

最强浏览器插件:油猴脚本的安装及使用教程

Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome,

油猴脚本管理器的超详细下载安装使用教程——新手必看

油猴脚本管理器的超详细下载安装使用教程——新手必看

油猴脚本管理器的超详细下载安装使用教程——新手必看油猴可以帮你干什么:全网VIP视

iPad随航脚本(Mac13.0Ventura)

iPad随航脚本(Mac13.0Ventura)

参考文章和视频:将iPad作为Mac Mini主屏幕的实现方法视频:无屏自动启动随航 iPad作为M

模板很齐全,视频脚本怎么写?50个短视频脚本文案模板 ...

模板很齐全,视频脚本怎么写?50个短视频脚本文案模板 ...

在运营短视频时,你有没有遇到过这样的问题:1、拍了一半发现拍摄场景不行;2、拍摄过

一个油猴脚本,让你体验真正的百度网盘下载不限速!

一个油猴脚本,让你体验真正的百度网盘下载不限速!

我们先看一下这个脚本的下载效果。我是100M的宽带,这直接能飙到20MB/s,所以下载速度

视频拍摄脚本怎么写?完整视频拍摄脚本范文实例分享

视频拍摄脚本怎么写?完整视频拍摄脚本范文实例分享

写脚本?对于没有视频背景的朋友来说可能就会有疑问,脚本是什么?不应该是电影,电视

「小白教程」让浏览器为所欲为!油猴脚本简介与使用心得

「小白教程」让浏览器为所欲为!油猴脚本简介与使用心得

本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:Stark-C大家好,我是Stark-

Tampermonkey油猴插件——安装与使用教程

Tampermonkey油猴插件——安装与使用教程

​初次见面,大家好。相信熟悉浏览器的都知道,尤其是大名鼎鼎的Chrome浏览器,丰富的

这是我见过最牛的shell脚本100例,学习提升面试必备,建议收藏

这是我见过最牛的shell脚本100例,学习提升面试必备,建议收藏

从历史上看,shell一直是类Unix系统的原生命令行解释器。多年来,它已被证明是Unix的

网售几元钱的网红脚本,真是顶流主播的走红秘籍?

网售几元钱的网红脚本,真是顶流主播的走红秘籍?

有人说,网红行业的现状是江山代有才人出,各领风骚“好几天”。的确,即便是行业顶流

115最新转存脚本(可转存和提取SHA1版本)

115最新转存脚本(可转存和提取SHA1版本)

最近115调整了接口,导致115转存助手ui优化版3.8.1版本无法转存或获取SHA1。有大神在

视频脚本创作不完全指南

视频脚本创作不完全指南

根据第49次《中国互联网络发展状况统计报告》数据,截至2022年12月,我国网络视频(含

一文详解Shell脚本编程,从基础到进阶,通俗易懂一目了然

一文详解Shell脚本编程,从基础到进阶,通俗易懂一目了然

Shell脚本编程难,难于上青天!这话不假,尤其很多程序员新人,学了几个月Shell脚本写

好的短视频从脚本制作开始,学会这3招,还怕做不出好脚本?

好的短视频从脚本制作开始,学会这3招,还怕做不出好脚本?

在上期我们做了个形象的比喻,把短视频制作比喻成我们造房子,前面我们已经带领大家打

商业洽谈 文章投递 寻求报道
电话咨询: 15924191378
关注微信