广告
返回顶部
首页 > 资讯 > 后端开发 > Python >用python写一个脚本,自动连wifi,自动登录校园网
  • 393
分享到

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

python服务器网络 2023-08-30 13:08:42 393人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

文章目录 1.实现原理1.1认识 URL1.2 http请求报文格式1.3 http响应报头格式 2.具体实现2.1 获取url2.2 获取请求报文的报头2.3 获取请求报文的数据2.4 获取本机的局域网ip 3.自动连接W

原来在本科期间买的老华硕电脑,最近开始无缘无故的黑屏、死机,让我开始有了换电脑的念头,早都想试一试苹果的系统了,所以趁着这次618活动来临,也是狠下手笔,入手了人生第一台MacBook-air。在适应了一天之后,基本上使用起来没什么障碍了,肯定还有很多功能是我没发现的,以后在慢慢探索了。期间我也遇到了一个令人烦恼的事情,就是每次连学校的校园网,都要弹窗、登录,很繁琐,就想着试试看,自己能不能也写一个脚本来实现自动连接校园网的功能。第一次搞这玩意儿,也是遇到各种问题,写帖记录一下。

1.实现原理

刚好最近学了Http协议,就当是复习了。简单概括就是,通过网址找到登录界面,然后发送post请求,把登录信息提交给服务器,从而完成登录。图片来源于朋友博客的,他的更详细介绍了http协议,感兴趣可以看看。

1.1认识 URL

我们所说的网址,其实就是统一资源定位符(unifORM resource locator简称URL),通过这个唯一的地址,可以找到对应的服务。它的标准格式如下:

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

在这里插入图片描述

这个只是标准的格式,有些信息是可以省略的,比如登录信息等,还有服务器地址可以用域名地址,也可以用ip地址。带层次的文件路径其实就是你要访问的服务器资源,问号?后面是get请求的参数。http协议有多种请求方法,post和get只是其中的两种。

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 requestsimport 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 ipuser_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的解释。往下拉,还有响应标头,请求标头等信息,⚠️注意,因为我们要向服务器请求登录,所以我们需要的是请求标头,而不是响应,别搞错了。

在这里插入图片描述

# 校园网地址,最好不要用浏览器里的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',} 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文件

先安装pyinstaller包

pip3 install pyinstaller

找到pyinstaller命令路径(带bin,老方法卸载看路径),我直接执行不了pyinstaller指令,因为Python系统就有,环境变量还没配置。

执行指令打包

先cd到需要打包文件的路径下,然后执行指令,我安装了一个超级右键程序,很方便操作

在这里插入图片描述

#将 xx.py 打包为 xx.exe

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

在这里插入图片描述
执行完操作,会生成三个文件,exe文件在dist文件内,至此,全部工作完成。
在这里插入图片描述
执行程序,效果如上。

如果想实现开盖自连,可看MacBook利用sleepwatcher实现开盖自动联网

来源地址:https://blog.csdn.net/weixin_42907822/article/details/125105976

--结束END--

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

本文链接: https://www.lsjlt.com/news/382894.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 用python写一个脚本,自动连wifi,自动登录校园网
    文章目录 1.实现原理1.1认识 URL1.2 http请求报文格式1.3 http响应报头格式 2.具体实现2.1 获取url2.2 获取请求报文的报头2.3 获取请求报文的数据2.4 获取本机的局域网ip 3.自动连接W...
    99+
    2023-08-30
    python 服务器 网络
  • Python脚本实现自动登录校园网
    Python自动化脚本登录校园网 所需工具:python编译环境(博主使用的pycharm作演示,其实在cmd也可以操作!) selenium自动化脚本 .bat批处理文件 第一步...
    99+
    2022-11-12
  • Python实现校园网自动登录的脚本分享
    目录背景思路技术点碎碎念代码背景 我在的学校校园网登录是web式的,即随便打开一个网页就会自动跳转到登录页面,然后输入用户名密码,点登录,便可以上网了。 但这种登录方式有个缺点:登录...
    99+
    2022-11-11
  • 写一个Python脚本自动爬取Bilibili小视频
    目录实验环境准备 API 寻找 && 提取 代码实现 项目链接 我身边的很多小伙伴们在朋友圈里面晒着出去游玩的照片,简直了,人多的不要不要的,长城被堵到水泄不通,老实...
    99+
    2022-11-12
  • 教你用Python写一个京东自动下单抢购脚本
    1 问题背景 经过无数次抢购失败后,发现商家会不定时的放出少量货源,目测每次会有几台。如果我们编写一个脚本程序24小时不间断监听商品库存,一旦查询到货源便开始尝试自动下单,这样就可以...
    99+
    2023-03-23
    Python自动下单 Python抢购脚本 Python脚本 Python京东抢购
  • 怎么用Python写一个京东自动下单抢购脚本
    本文小编为大家详细介绍“怎么用Python写一个京东自动下单抢购脚本”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Python写一个京东自动下单抢购脚本”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1 问...
    99+
    2023-07-05
  • 使用python怎么编写一个自动生成sql语句的脚本
    这篇文章主要介绍了使用python怎么编写一个自动生成sql语句的脚本,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:python是什么意思Python是一种跨平台的、具有解释性、编译性、...
    99+
    2023-06-06
  • 我用Python给班主任写了一个自动阅卷脚本(附源码)
    导语 幼儿园升小学,小学升中学,中学升高中.......... 每个人都要经历的九年义务教育:伴随的都是作业、随堂考、以及每个科目的大大小小的考试。当然小编被考试支配的恐惧以及过去了...
    99+
    2022-11-12
  • 怎么在Linux中使用expect命令编写一个自动化交互脚本
    怎么在Linux中使用expect命令编写一个自动化交互脚本?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。expect 是建立在工具控制语言(Tool Control La...
    99+
    2023-06-09
  • 想去看演唱却总是抢不到票?教你用Python制作一个自动抢票脚本
    前言 嗨喽!大家好,这里是魔王!! 大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 ...
    99+
    2023-08-31
    udp python 网络
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作