利用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 的 Socket 编程
Mar 24 Python
Python中property函数用法实例分析
Jun 04 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
python实现学员管理系统
Feb 26 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
用Python画小女孩放风筝的示例
Nov 23 Python
Pytorch Tensor基本数学运算详解
Dec 30 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
python unittest单元测试的步骤分析
Aug 02 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中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
php中curl使用指南
2015/02/05 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
Python-基础-入门 简介
2014/08/09 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
Python 视频画质增强
2022/04/28 Python
java版 简单三子棋游戏
2022/05/04 Java/Android