利用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 相关文章推荐
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
Python 中 Virtualenv 和 pip 的简单用法详解
Aug 18 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
python SVM 线性分类模型的实现
Jul 19 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
python urllib爬虫模块使用解析
Sep 05 Python
Python实现元素等待代码实例
Nov 11 Python
套娃式文件夹如何通过Python批量处理
Aug 23 Python
python日志通过不同的等级打印不同的颜色(示例代码)
Jan 13 Python
Django路由层如何获取正确的url
Jul 15 Python
Python&Matlab实现樱花的绘制
Apr 07 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权限分配的实现代码
2013/04/28 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
什么是JavaScript
2009/08/13 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
python实现从字典中删除元素的方法
2015/05/04 Python
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
python中函数传参详解
2016/07/03 Python
python并发编程之线程实例解析
2017/12/27 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
幼儿园门卫岗位职责
2014/02/14 职场文书
保险专业大学生职业规划书
2014/03/03 职场文书
幼儿教师培训感言
2014/03/08 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL