【技术分享】Python脚本实现BJTU校园网自动登录

【技术分享】Python脚本实现BJTU校园网自动登录_第1张图片

文章目录

  • 1.背景介绍
  • 2.登录分析
  • 3.代码分析
  • 4.源代码

1.背景介绍

BJTU的校园网连接好以后需要输入账号和密码才能正确登录,如下图所示。整个流程比较繁琐,尤其是很多服务器、工作站是无图形化的系统,大部分时间需要SSH连接,所以通过界面登录十分不方便。

所以就想了一个办法,利用Python脚本来检测校园网是否处于登录状态,如果登录了就不操作;如果未登录则需要自动登录。

2.登录分析

众所周知,校园网登录界面有2个IP可以使用,分别是:10.10.42.310.10.43.3。在浏览器输入上述IP后可以看到如下界面:

在网页空白处点击鼠标右键,选择“检查”打开调试模式,点击网络->选择全部,可以查看所有的网络发送请求。

【技术分享】Python脚本实现BJTU校园网自动登录_第2张图片

在账号密码懒输入自己的账号和密码,然后点击登录。然后可以在右侧看到login?callback=dr……的一条请求,如下图所示:

【技术分享】Python脚本实现BJTU校园网自动登录_第3张图片

然后点击发送的请求数据,将请求网址的内容复制出来,如下图所示。

【技术分享】Python脚本实现BJTU校园网自动登录_第4张图片

3.代码分析

首先需要导入所有需要的包。re包用来做正则匹配;requests包用于发请求;time包和strftime包用于获取时间输出信息。

import re
import requests
from time import strftime
import time

然后获取访问的地址,可以是10.10.43.3,也可以是10.10.42.3

# URL
schoolWebURL = 'http://10.10.42.3'  # 或者是'http://10.10.43.3'

紧接着需要写一个死循环,保证时刻在运行着这个程序。

while(True):
	# XXXX 此处需要补充核心代码

if判断语句,判断是在线状态还是离线状态(代码直接用就可以)。 如果是在线状态,休息5秒钟,再执行while死循环。

# 正则表达式,匹配标签中的内容</span>
pattern <span class="token operator">=</span> re<span class="token punctuation">.</span><span class="token builtin">compile</span><span class="token punctuation">(</span><span class="token string">'<title>(.*?)', re.S)
title = re.findall(pattern, response.text)
title = title[0]  # 将格式转为字符串

if title == '注销页':
    print('%s %s 连接正常' % (strftime('%Y-%m-%d'),strftime('%H:%M:%S')))
    time.sleep(5)
    pass

如果是离线状态,需要访问网址,实现登录。user的地方填自己的学号,p填密码,其余的都无需修改。

user = ''  # 学号
p = 'XXX'  # 密码
t = str(int(round(time.time() * 1000)))  # 毫秒级时间戳
schoolWebLoginURL = schoolWebURL+'/drcom/login?callback=dr'+t+'&DDDDD='+user+'&upass='+p+'&0MKKey=123456&R1=0&R3=0&R6=0¶=00&v6ip=&_='+t
print('%s %s 登录成功' % (strftime('%Y-%m-%d'),strftime('%H:%M:%S')))
requests.get(schoolWebLoginURL)

最后将所有代码整合在一起即可。

4.源代码

文件名: autologin.py

代码如下:

import re
import requests
from time import strftime
import time

# URL地址
schoolWebURL = 'http://10.10.42.3'  # 或者是'http://10.10.43.3'

while(True):
    response = requests.get(schoolWebURL)

    # 正则表达式,匹配标签中的内容</span>
    pattern <span class="token operator">=</span> re<span class="token punctuation">.</span><span class="token builtin">compile</span><span class="token punctuation">(</span><span class="token string">'<title>(.*?)', re.S)
    title = re.findall(pattern, response.text)
    title = title[0]  # 将格式转为字符串

    if title == '注销页':
        print('%s %s 连接正常' % (strftime('%Y-%m-%d'),strftime('%H:%M:%S')))
        time.sleep(5)
        pass
    
    else:
        user = ''  # 学号
        p = 'XXX'  # 密码
        t = str(int(round(time.time() * 1000)))  # 毫秒级时间戳
        schoolWebLoginURL = schoolWebURL+'/drcom/login?callback=dr'+t+'&DDDDD='+user+'&upass='+p+'&0MKKey=123456&R1=0&R3=0&R6=0¶=00&v6ip=&_='+t
        print('%s %s 登录成功' % (strftime('%Y-%m-%d'),strftime('%H:%M:%S')))
        requests.get(schoolWebLoginURL)

使用方法:

在命令行执行下列脚本,即可完成自动登录、网络判断。

python3 authlogin.py

你可能感兴趣的:(技术分享,python,开发语言,bjtu,校园网自动登录,python脚本)