利用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 控制语句
Nov 03 Python
python抓取某汽车网数据解析html存入excel示例
Dec 04 Python
python类继承与子类实例初始化用法分析
Apr 17 Python
Python实现自动上京东抢手机
Feb 06 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
pygame实现俄罗斯方块游戏(基础篇1)
Oct 29 Python
Python pip配置国内源的方法
Feb 14 Python
django自带的权限管理Permission用法说明
May 13 Python
Python同时迭代多个序列的方法
Jul 28 Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 Python
Python实现科学占卜 让视频自动打码
Apr 09 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
input file获得文件根目录简单实现
2013/04/26 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
通过JavaScript控制字体大小的代码
2011/10/04 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
小结Python用fork来创建子进程注意事项
2014/07/03 Python
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
会议接待欢迎词
2014/01/12 职场文书
大学军训通讯稿
2014/01/13 职场文书
幼儿园课题方案
2014/06/09 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
奔腾年代观后感
2015/06/09 职场文书
Python实现位图分割的效果
2021/11/20 Python