利用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 相关文章推荐
centos下更新Python版本的步骤
Feb 12 Python
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
python实现list元素按关键字相加减的方法示例
Jun 09 Python
使用Django启动命令行及执行脚本的方法
May 29 Python
Python WSGI的深入理解
Aug 01 Python
Python实现基于POS算法的区块链
Aug 07 Python
python实现自动登录
Sep 17 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
Python reques接口测试框架实现代码
Jul 28 Python
用Python创建简易网站图文教程
Jun 11 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中动态HTML的输出技术
2006/10/09 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
laravel请求参数校验方法
2019/10/10 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
用javascript实现自定义标签
2007/05/08 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
代码讲解Python对Windows服务进行监控
2018/02/11 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
财务会计自荐信范文
2014/02/21 职场文书
经理助理岗位职责
2014/03/05 职场文书
保密承诺书范文
2014/03/27 职场文书
普通话演讲稿
2014/09/03 职场文书
模范教师材料大全
2014/12/16 职场文书
期末复习计划
2015/01/19 职场文书
九年级历史教学反思
2016/02/19 职场文书
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js