利用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常用知识梳理(必看篇)
Mar 23 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
django ajax json的实例代码
May 29 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
Python 存储字符串时节省空间的方法
Apr 23 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
python爬虫增加访问量的方法
Aug 22 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
Mar 17 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 Python
如何在C++中调用Python
May 21 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 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 远程图片保存到本地的函数类
2008/12/08 PHP
php写的简易聊天室代码
2011/06/04 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
JS 控制CSS样式表
2009/08/20 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
python添加菜单图文讲解
2019/06/04 Python
python实现接口并发测试脚本
2019/06/25 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
会计岗位职责
2013/11/08 职场文书
安全协议书
2014/04/23 职场文书
家长会演讲稿
2014/04/26 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
小学生安全保证书
2015/05/09 职场文书