利用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 相关文章推荐
python3写爬取B站视频弹幕功能
Dec 22 Python
python xlsxwriter库生成图表的应用示例
Mar 16 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
Python使用enumerate获取迭代元素下标
Feb 03 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
基于python实现查询ip地址来源
Jun 02 Python
学python最电脑配置有要求么
Jul 05 Python
Python趣味入门教程之循环语句while
Aug 26 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 Python
python中的列表和元组区别分析
Dec 30 Python
使用python实现学生信息管理系统
Feb 25 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实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
Jquery 学习笔记(一)
2009/10/13 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Python中几个比较常见的名词解释
2015/07/04 Python
详解Python的Django框架中的中间件
2015/07/24 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
python Tkinter的图片刷新实例
2019/06/14 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
python爬取代理ip的示例
2020/12/18 Python
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
不打扫卫生检讨书
2014/02/12 职场文书
病媒生物防治方案
2014/05/13 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
建议书格式
2015/02/04 职场文书
英文慰问信范文
2015/03/24 职场文书
升学宴学生致辞
2015/09/29 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书