利用Python优雅的登录校园网


Posted in Python onOctober 21, 2020

前言

今天这篇文章的思路来源于校园网,很多的校园网在每次连接时都需要进入一个网址进行登录,这个步骤真的是非常非常的麻烦(大学生都懂~)。所以这次来教大家如何实现一键登录校园网。

一键登录校园网

首先我们来看下整个的流程。首先需要进行网络连接,连接之后会跳转到一个网址,也就是校园网登录的网址。

利用Python优雅的登录校园网

然后输入账号密码登录。

我们需要做到的效果就是点击一个可执行文件然后实现校园网的自动登录。(这里的可执行文件在mac中为excu文件、win中为exe)

我们首先解决如何通过Python进行登录,然后再解决打包的问题。

其实对于Python的登录,会爬虫的朋友应该很快就知道直接通过requests进行表单提交即可。

首先,我们抓包获取校园网登录提交表单的地址:

利用Python优雅的登录校园网

同时,我们也拿到需要提交的表单格式,有些学校的校园网可能需要通过验证码验证,一般不会有很复杂的验证方式,如果需要验证,那么需要去破解一下验证码,https://github.com/hellokuls/cnnyzm。这里给出我之前写的验证码破解案例。

利用Python优雅的登录校园网

拿到了之后就好办了,直接post模拟提交就行了,这里我给出我所写的代码,基本的逻辑都是差不多,大家只需要改成自己学校的相关信息就可以了。

# encoding: utf-8
import requests

# 检查是否连接入校园网
def checkinternet():
  url = 'xxxxxxxxxxxxxxxxxxxxxx' #校园网登录的地址,用来测试是否连接校园网 
  try:
    code = requests.get(url, timeout=5).status_code
    if code != 200:
      print('没有网络哦~')
      return 0
    elif code == 200:
      return 1
    else:
      return 2
  except:
    return 2


def login(username, password):
  url = 'xxxxxxxxxxxxxxxxxx' # 校园网表单提交url
  postdata={
    'action': 'login',
    'ac_id': 1,
    'user_ip':'',
    'nas_ip':'',
    'user_mac':'',
    'username': username,
    'password': password,
    'save_me': '0',
    'ajax': 1
  }
  res = requests.post(url, data=postdata)
  res.encoding = res.apparent_encoding
  res = res.text
  if 'login ok' in res: # 如果存在该字段
    res = "登录成功!"
    return res
  if '5分钟' in res: # 多次错误提交可能会导致账户锁定5分钟
    print("登录失败:")
    return res
  if 'E2620' in res:  # 此处是账号已经在别的设备登录的情况,先注销然后再次登录
    logout(url, username, password)
    return login(username, password)
  return res

# 退出当前账号的登录
def logout(url, username, password):
  logout_data = {
    'action': 'logout',
    'username': username,
    'password': password,
    'ajax': 1
  }
  res1 = requests.post(url, data=logout_data)
  res1.encoding = res1.apparent_encoding
  res1 = res1.text
  print("账户已退出!")


if __name__ == '__main__':
  status = checkinternet()
  if status == 0:
    txt = login(xxxxx, xxxxxxxx) # 输入账号密码
    print(txt)
  elif status == 1:
    print("有网络!")
    txt = login(xxxxxxx, xxxxxxx)
    print(txt)
  else:
    print("未知结果!")

讲解完了代码部分,我们该如何将它打包成一个可执行文件直接通过点击就可以进行联网呢?

这里推荐一个库---pyinstaller

pip install pyinstaller

这个库能够将py文件直接打包成可执行文件,支持win/mac/linux平台。

当我们写完文件后执行下面命令:

pyinstaller -F 文件名.py

执行完后,我们可以看到生成了几个文件夹,而可执行文件就在dist文件夹中。

利用Python优雅的登录校园网

放在桌面上,每次连接直接点击一下就可以连接校园网了~

利用Python优雅的登录校园网

以上就是利用Python优雅的登录校园网的详细内容,更多关于python 登录校园网的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python 返回汉字的汉语拼音
Feb 27 Python
python3.3实现乘法表示例
Feb 07 Python
Python reduce()函数的用法小结
Nov 15 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
Python读取txt某几列绘图的方法
Oct 14 Python
Python编程深度学习绘图库之matplotlib
Dec 28 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
详解python编译器和解释器的区别
Jun 24 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
Jan 10 Python
pytorch查看通道数 维数 尺寸大小方式
May 26 Python
python 使用三引号时容易犯的小错误
Oct 21 #Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 #Python
基于python爬取链家二手房信息代码示例
Oct 21 #Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 #Python
Python为何不支持switch语句原理详解
Oct 21 #Python
基于Python爬取素材网站音频文件
Oct 21 #Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 #Python
You might like
PHP flock 文件锁详细介绍
2012/12/29 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
python写的一个文本编辑器
2014/01/23 Python
python基础教程之Filter使用方法
2017/01/17 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
python实现猜拳小游戏
2020/04/05 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
Python生成器常见问题及解决方案
2020/03/21 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
应届生自我鉴定
2013/12/11 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
安全生产投入制度
2014/01/29 职场文书
采购求职信
2014/03/17 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2014年财政工作总结
2014/12/10 职场文书
担保书范本
2015/01/20 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
Docker部署Mysql8的实现步骤
2022/07/07 Servers