利用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打开文件并获取文件相关属性的方法
Apr 23 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
Python 使用with上下文实现计时功能
Mar 09 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
详解python 中in 的 用法
Dec 12 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
python实现信号时域统计特征提取代码
Feb 26 Python
Python headers请求头如何实现快速添加
Nov 03 Python
python正则表达式re.search()的基本使用教程
May 21 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
3
2006/10/09 PHP
php读取javascript设置的cookies的代码
2010/04/12 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
vue-cli 关闭热更新操作
2020/09/18 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
Python中的元组介绍
2019/01/28 Python
python and or用法详解
2019/06/26 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
python实现对变位词的判断方法
2020/04/05 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Python如何将字符串转换为日期
2020/07/31 Python
电焊工岗位职责
2014/03/06 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
检讨书模板
2015/01/29 职场文书