Dr.COM校园网自动登录认证方案:

1. 连接giwifi校园网后进入这个网站http://172.25.251.2/a79.htm

2. 然后打开F12开发者模式.勾选保留日志.

3. 执行一次登录操作.在网络哪里会看到一条get请求

将上方图片红色框框内的URL填入到下面代码的LOGIN_URL处即可.

import socket
import time

import requests

# 你的登录 URL
LOGIN_URL = "填入你的URL"


def fast_tcp_check(host="223.5.5.5", port=53, timeout=1.5):
    """
    轻量级网络探测 (毫秒级响应)
    尝试连接阿里云 DNS 的 TCP 53 端口。速度极快,适合高频调用。
    """
    try:
        # 使用 socket 创建一个纯净的 TCP 探测
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.settimeout(timeout)
            s.connect((host, port))
        return True
    except Exception:
        return False


def confirm_captive_portal():
    """
    HTTP 204 二次确认 (防止偶尔的网络波动误判)
    """
    try:
        res = requests.get("http://connect.rom.miui.com/generate_204", timeout=2)
        if res.status_code == 204:
            return True
    except requests.RequestException:
        pass
    return False


def do_login():
    """执行登录操作"""
    print(f"[{time.strftime('%H:%M:%S')}] 确认网络断开,正在执行秒级重连...")
    try:
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
        }
        res = requests.get(LOGIN_URL, headers=headers, timeout=5)

        if res.status_code == 200:
            print(f"[{time.strftime('%H:%M:%S')}] [+] 登录请求发送成功!")
        else:
            print(f"[-] 服务器返回异常: {res.status_code}")

    except Exception as e:
        print(f"[x] 请求发送失败,请检查 WiFi 是否彻底断开。错误: {e}")


def main():
    print("=== Dr.COM 实时监控自动登录助手已启动 ===")
    print("模式: 高频 TCP 探测 (每 2 秒检测一次)")

    # 记录上一次的状态,防止频繁打印日志干扰视线
    is_online = True

    while True:
        # 1. 优先使用极速的 TCP 探测
        if not fast_tcp_check():
            # 2. 如果 TCP 探测失败,可能是网络波动,用 HTTP 204 接口复查
            if not confirm_captive_portal():
                if is_online:
                    print(f"\n[{time.strftime('%H:%M:%S')}] 警告:检测到掉线!")
                    is_online = False

                do_login()
                time.sleep(2)  # 等待 2 秒让网关分配权限

                if fast_tcp_check():
                    print(f"[{time.strftime('%H:%M:%S')}] [+] 网络已极速恢复!")
                    is_online = True
            else:
                # HTTP 204 成功,说明只是 DNS 服务器偶发波动,网络其实没断
                pass

        # 探测间隔缩小到 2 秒,实现几乎无感的“秒连”
        time.sleep(2)


if __name__ == "__main__":
    main()

电脑端自动登录方案:

  1. 将文件后缀名改为.pyw

  2. 安装python解释器

  3. 打开一次这个文件,打开方式选择pythonw.exe程序.在python.exe同级目录下.

  4. 按下win+R.打开运行功能,输入shell:startup

  5. 将上面那个.pyw程序拖入启动文件夹即可开机自启这个程序.实现自动连接校园网.