CQU校园网双电脑接入方案

CQU校园网双电脑接入方案

写在前面

本文涉及到的方案均在互联网上有详实的操作方案,但由于年代久远CQU的校园网API经过稍许变动,于是本文重新整理。

校园网接入

本文只讨论WIFI接入,后续会更新路由接入的方案。CQU校园网的抓包还是比较简单的,通过抓包分析校园网的http包,很容易看到其实是通过发送了如下的HTTPS GET请求

https://login.cqu.edu.cn:802/eportal/portal/login?callback=dr1004&login_method=1&user_account=%2C0%2C2024XXXXX&user_password=XXXXXXX&wlan_user_ip={self.ip}&wlan_user_mac=000000000000&lang=zh-cn&v=4050

分析请求字段,其中重点在user_accountuser_passwordwlan_user_ip三部分。而阻止双电脑接入的重点在user_account字段里。通过检测%2C后的单字符的奇偶性进行接入的,PC似乎默认是0,移动端默认为1。

解决方案

因此解决方案就显而易见了,连接上校园网后两台电脑通过发送不同的请求包来实现双电脑接入。我使用了python的requests库实现。windows的powershell不是很熟,不然使用curl似乎更好。

import requests, socket
import psutil
import random
import math
import dataclasses

@dataclasses.dataclass
class UrlParam:
    callback: int
    device: int
    user_account: str
    user_password: str
    ip: str

    def create_url(self) -> str:
        if self.ip is None:
            raise ExceptionOfIpError("IP TYPE ERROR")
        return f"https://login.cqu.edu.cn:802/eportal/portal/login?callback=dr{self.callback}&login_method=1&user_account=%2C{self.device%2}%2C{self.user_account}&user_password={self.user_password}&wlan_user_ip={self.ip}&wlan_user_mac=000000000000&lang=zh-cn&v={math.floor(random.random() * 10000 + 500)}"


class ExceptionOfIpError(Exception):
    def __init__(self, *args):
        super().__init__(*args)


def get_ip():
    #获取所有网络接口的信息
    interfaces = psutil.net_if_addrs()

    #查找无线网络接口的IP地址
    wlan_ip = None
    for interface, addrs in interfaces.items():
        if interface.lower() == "wifi" or "wlan" in interface.lower():
            for addr in addrs:
                if addr.family == socket.AddressFamily.AF_INET:  #查找IPv4地址
                    wlan_ip = addr.address
                    break
    return wlan_ip

def main():
    callback_jsonp: int = 1000
    try:
        param = UrlParam(
            callback=callback_jsonp,
            device=1,
            user_account="2024XXXXXX",
            user_password="XXXXX",
            ip=get_ip()
        )
        url = param.create_url()
        response = requests.get(url=url)
        print(response.text)
    except ExceptionOfIpError:
        exit(-1)

if __name__ == '__main__':
    main()

修改为自己的账号和密码,运行即可。

本文参考

校园网自动登录全平台解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值