利用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爬虫之抓取糗事百科代码分享
Nov 06 Python
python单例模式实例分析
Apr 08 Python
在Python的while循环中使用else以及循环嵌套的用法
Oct 14 Python
Python 功能和特点(新手必学)
Dec 30 Python
python制作websocket服务器实例分享
Nov 20 Python
python多进程和多线程究竟谁更快(详解)
May 29 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
Mar 01 Python
python os模块简单应用示例
May 23 Python
python多线程使用方法实例详解
Dec 30 Python
详解Python常用的魔法方法
Jun 03 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 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
php中取得文件的后缀名?
2012/02/20 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
javascript来定义类的规范小结
2010/11/19 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
Python 迭代器与生成器实例详解
2017/05/18 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
对python:print打印时加u的含义详解
2018/12/15 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
python解释器spython使用及原理解析
2019/08/24 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
2020/08/19 Python
Python之字典添加元素的几种方法
2020/09/30 Python
Django缓存Cache使用详解
2020/11/30 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
几个Shell Script面试题
2014/04/18 面试题
数控加工专业毕业生自荐信
2013/09/27 职场文书
新学期家长寄语
2014/01/19 职场文书
初中生操行评语大全
2014/04/24 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
python 对图片进行简单的处理
2021/06/23 Python