前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动登录NUIST校园网

自动登录NUIST校园网

作者头像
bugsuse
发布2020-04-20 13:37:24
2.2K0
发布2020-04-20 13:37:24
举报

本文最初是为了开机自动登录某论坛进行签到所写,但为了防止扰乱论坛正常使用,仅介绍自动登录校园网脚本。

考虑到仅需要开机登录校园网,因此此处并未给出注销的代码。

下面上代码:

#!/usr/bin/env python
#-*- coding: utf-8 -*-
 
import requests
import base64
from os import getenv
 
username = getenv('IUSER')
password = getenv('PASSWORD')        
domain = getenv('DOMAIN')        
 
passwd = base64.b64encode(password.encode('utf-8')).decode()
 
login  = 'http://a.nuist.edu.cn/index.php/index/login'
 
headers = {'User-Agent' : 'Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0',  
           'Referer' : 'http://a.nuist.edu.cn/'}  
 
loginData = {'domain' : domain,
            'enablemacauth' : 0,
            'password' : passwd,
            'username' : username
            }  
 
s = requests.session()
 
checkinfo = s.get('http://www.baidu.com')
if checkinfo.text.find(domain) > 0:
    getinfo = s.post(login, data = loginData, headers = headers)
 
    cookie = {'PHPSESSID' : s.cookies.values()[0], 
            'sunriseUsername' : username, 
            'sunriseDomain': domain, 
            'think_language': 'zh_CN'}
 
    print(getinfo.json().get('info'))
elif checkinfo.text.find('www.baidu.com'):    
    from datetime import datetime
 
    tiurl  = 'http://a.nuist.edu.cn/index.php/index/init?'
    tiinfo = s.get(tiurl)
    timearary = datetime.utcfromtimestamp(tiinfo.json().get('logout_timer'))
 
    print('网络已连接:%s.' % timearary.strftime('%H:%M:%S'))
else:
    print(checkinfo.text)

下面讲一下各段代码:

首先,加载 requests库,用于实现 http 通信,登录网页使用base64算法对密码进行了编码,加载base64 库用于对密码进行编码, 从 os 库中加载 getenv 获取系统环境变量

import requests
import base64
from os import getenv

使用程序时需要设置相应的环境变量。需要设置的环境变量为以下三行中的 IUSER, PASSWORD, DOMAIN 三个变量。

username = getenv('IUSER')
password = getenv('PASSWORD')        
domain = getenv('DOMAIN')

有一点要注意:DOMAIN 可以为 NUIST,CMCC, ChinaNet, Unicom, 分别对应 南京信息工程大学, 中国移动,中国电信, 中国联通。

以下分别为 登录页 URL,通信headers及登录时所需要的信息。

login  = 'http://a.nuist.edu.cn/index.php/index/login'
 
headers = {'User-Agent' : 'Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0',  
           'Referer' : 'http://a.nuist.edu.cn/'}  
 
loginData = {'domain' : domain,
            'enablemacauth' : 0,
            'password' : passwd,
            'username' : username
            }

建立 session,这里首先检查一下是否已经联网(百度除了可以被 ping 外,也可以检查是否联网)。如果已经联网了,将给出已经联网的时长。

s = requests.session()
 
checkinfo = s.get('http://www.baidu.com')
if checkinfo.text.find(domain) > 0:
    getinfo = s.post(login, data = loginData, headers = headers)
 
    cookie = {'PHPSESSID' : s.cookies.values()[0], 
            'sunriseUsername' : username, 
            'sunriseDomain': domain, 
            'think_language': 'zh_CN'}
 
    print(getinfo.json().get('info'))
elif checkinfo.text.find('www.baidu.com'):    
    from datetime import datetime
 
    tiurl  = 'http://a.nuist.edu.cn/index.php/index/init?'
    tiinfo = s.get(tiurl)
    timearary = datetime.utcfromtimestamp(tiinfo.json().get('logout_timer'))
 
    print('网络已连接:%s.' % timearary.strftime('%H:%M:%S'))
else:
    print(checkinfo.text)

下面以win10为例讲一下如何设置环境变量并设置开机自动执行。

  1. 在桌面找到 计算机 选项,右击然后选择 属性,将看到以下信息

2. 选择 高级系统设置 选项,然后在 高级 中 找到 环境变量 选项,在 系统变量 栏下选择 新建, 依次设置好三个环境变量即可

注: 设置环境变量变量值时不需要添加引号

3. 找到 控制面板>系统和安全>管理工具>计划任务, 可以看到下图所示内容

4. 选择 创建基本任务

设置启动程序时,我使用的是 Anaconda3,所以此处设置为 ipython.exe, 可根据安装的相应版本设置。参数为要执行的脚本路径起始于ipython.exe的路径注意最后的 \ 不需要添加

5. 为了让网络中断后自动重连,设置脚本重复执行时间

找到 触发器, 然后选择 编辑 > 高级选项 然后根据需要设置重复间隔即可。

注: 常规 中选择 不管用户是否登录都运行

历史记录 可以查看每次任务运行情况。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气象杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用程序时需要设置相应的环境变量。需要设置的环境变量为以下三行中的 IUSER, PASSWORD, DOMAIN 三个变量。
  • 下面以win10为例讲一下如何设置环境变量并设置开机自动执行。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档