GLUT校园联网


前言:360浏览器在 已登录账号无网络情况下,无法提供保存在本地的账号与密码,为了方便懒人,提供两种自动登陆校园宽带( 桂工GLUT)联网方式:

  1. 油猴插件。
  2. python发送请求登陆校园。

方法一:油猴插件

将下方【】符号内容更换为自己的账号/密码即可(并删去’【】'符号)。

// ==UserScript==
// @name         glut校园网联网
// @namespace    lue
// @version      only-me-1
// @description  connect to network.(填充账号密码,选择宽带类型,点击登录)
// @author       略
// @match        http://172.16.2.2/*
// @icon         https://so.360tres.com/dmfd/100_100_80/t01b94b05f6f075c42c.webp?size=200x200
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function fillForm() {
        // 获取账号输入框元素
        var inputElement = document.querySelector('input[name="DDDDD"][type="text"]');

        if (inputElement) {
            inputElement.value = "【你的账号】";

            // 输入密码
            document.querySelector('input[name="upass"][type="password"]').value = "【你的密码】";
            // 触发输入事件
            inputElement.dispatchEvent(new Event('input', { bubbles: true }));

            // 选择宽带类型
            var radioElement = document.querySelector('input[name="network"][value="2"]').checked = true;

            // 模拟点击登录按钮
            var loginButton = document.querySelector('input[type="submit"][name="0MKKey"]').click();
        } else {
            console.log('无输入框,可能已登录');
        }
    }

    // 等待页面完全加载
    window.addEventListener('load', function() {
        // 使用 setTimeout 延迟执行,确保页面完全加载
        setTimeout(fillForm, 1000);
    });
})();

方法二:python+cmd

完整共4个文件data.json,post.py,main.py,联网.cmd
联网.cmd发送快捷方式到桌面,需要认证校园宽带时,点击运行联网.cmd的快捷方式即可。

完整版

  • data.json
    修改下方【】符号内容为自己的账号密码(并删去’【】'符号)。
{
  "data":{
    "callback": "dr1003",
    "DDDDD": "【你的账号】",
    "upass": "【你的密码】",
    "0MKKey": "123456",
    "R1": "0",
    "R2": "",
    "R3": "2",
    "R6": "0",
    "para": "00",
    "v6ip": "",
    "terminal_type": "1",
    "lang": "zh-cn",
    "jsVersion": "4.1",
    "v": "5516"
  },
  "header": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "zh-CN,zh;q=0.9",
    "Connection": "keep-alive",
    "Host": "172.16.2.2",
    "Referer": "http://172.16.2.2/",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome"
  }
}
  • post.py
    添加了日志,添加了意外情况的处理。
import requests
from bs4 import BeautifulSoup
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

handler = logging.FileHandler('post.log', encoding='utf-8')
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logging.getLogger().addHandler(handler)

def safe_post(url, header, data):
    try:
        # 使用Session来复用连接,提高性能
        with requests.Session() as session:
            status = session.get('http://172.16.2.2')
            if status.status_code == 200:
                title = BeautifulSoup(status.text, 'html.parser').find('title').text
                if title == '注销页':
                    logging.info("已连接校园网")
                else:
                    res = session.post(url, headers=header, data=data)
                    # 扩展状态码处理,不仅仅处理200
                    if res.status_code in [200, 201, 204]:
                        title = BeautifulSoup(res.text, 'html.parser').find('title').text
                        if title == '认证成功页':
                            logging.info("认证成功")
                    else:
                        logging.error(f"请求失败,状态码:{res.status_code},响应文本:{res.text}")
    except requests.ConnectionError as conn_err:
        logging.error(f"连接错误:未连接校园网")
    except requests.Timeout as timeout_err:
        logging.error(f"请求超时:{timeout_err}")
    except Exception as e:
        logging.error(f"未知错误:{e}")
  • main.py
from post import safe_post
import json

url = ('http://172.16.2.2/drcom/login?')

with open('data.json', 'r') as f:
    contents = json.load(f)
    header = contents['header']
    data = contents['data']

safe_post(url, header, data)
  • 联网.cmd
    记得修改为自己的python路径。
.venv\Scripts\python.exe main.py
pause

缩减版

可以删除检查登陆成功&联网日志,仅保留主要功能。
post.pymain.py合并为一个,另外两个文件data.json联网.cmd保持不变:

  • main.py
import requests
import json

url = ('http://172.16.2.2/drcom/login?')
with open('data.json', 'r') as f:
    contents = json.load(f)
    header = contents['header']
    data = contents['data']
try:
    requests.post(url, headers=header, data=data)
except:
    pass

运行联网.cmd即可联网。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值