当前位置: 移动技术网 > IT编程>脚本编程>Python > python+windows任务计划程序实现每日定时登录校园网

python+windows任务计划程序实现每日定时登录校园网

2020年07月30日  | 移动技术网IT编程  | 我要评论

过几天要回家了,不想带电脑,但是又怕急用。所以打算放在寝室里一直待机,可是学校的校园网很鸡肋,每隔差不多俩天断开一次,抑郁。于是有了下面这个脚本。

1、实现原理

先插入涉及模块

import os
from selenium import webdriver as web
import time

1)检测网络是否正常

因为我的是校园网,所以是借助os.system通过ping协议来检测的。(我试过了socket模块,不是很理想,专业知识不足,这里没法解释的很清楚)

def checkPC(url):

    # 如果没有网络返回值为1(代表有错误),否则返回0
    if os.system("ping " + url):

        return False

    else:

        return True

2)通过python-selenium实现“物理”登录校园网

校园网登录界面很复杂,看了很久好不容易有一点思绪,结果被token难住了,扒皮呀!最后只能简单粗暴的实现登录,这里简称“物理登录”。(直接上代码)

# ip,用户名,密码,网络类型值@cmcc
def loginNet(ip, username, password, net="中国移动"):

    # 创建浏览器对象
    browser = web.ChromeOptions()

    # 无窗口模式
    # browser.headless()
    # 本地谷歌浏览器驱动
    driverPath = r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
    # 打开浏览器
    driver = web.Chrome(options=browser, executable_path=driverPath)
    time.sleep(10)
    # 窗口最大化
    driver.maximize_window()
    time.sleep(10)
    # 以get的方式打开网页
    driver.get(ip)
    # 等待加载
    time.sleep(10)
    # 获取指定id控件,并向控件中赋值
    driver.find_element_by_id("username").send_keys(username)

    driver.find_element_by_id("password").send_keys(password)

    driver.find_element_by_id("domain").send_keys(net)

    driver.find_element_by_id("login").click()
    # 休息1秒
    time.sleep(1)
    # 关闭浏览器
    re = driver.close()
    # 再休息一秒
    time.sleep(1)
    # 检测是否连接成功
    if re and checkPC("www.baidu.com"):

        return True

    return False

 这里会遇到浏览器驱动版本不对应的问题,看这个大佬的博客。https://blog.csdn.net/weixin_44612439/article/details/87983282

 (这是校园网登录界面,上面执行结果就是打开这个网址,然后把设定的信息输入进去,然后登录)

3)创建一个bat文件,通过任务计划程序每天1点钟执行一次(可以多弄几个,这样就能实现每小时执行)

下面是bat文件的代码

python Z:\auto.py

打开任务计划程序(windows+R,再输入compmgmt.msc)

(剩下的就很简单了,夜深了,不写了)

2、完整代码

import os
from selenium import webdriver as web
import time

def checkPC(url):

    # 如果没有网络返回值为1(代表有错误),否则返回0
    if os.system("ping " + url):

        return False

    else:

        return True


# ip,用户名,密码,网络类型值@cmcc
def loginNet(ip, username, password, net="中国移动"):
    # 创建浏览器对象
    browser = web.ChromeOptions()
    # 无窗口模式
    # browser.headless()
    # 本地谷歌浏览器驱动
    driverPath = r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
    # 打开浏览器
    driver = web.Chrome(options=browser, executable_path=driverPath)
    time.sleep(10)
    # 窗口最大化
    driver.maximize_window()
    time.sleep(10)
    # 以get的方式打开网页
    driver.get(ip)
    # 等待加载
    time.sleep(10)
    # 获取指定id控件,并向控件中赋值
    driver.find_element_by_id("username").send_keys(username)

    driver.find_element_by_id("password").send_keys(password)

    driver.find_element_by_id("domain").send_keys(net)

    driver.find_element_by_id("login").click()
    # 休息1秒
    time.sleep(1)
    # 关闭浏览器
    re = driver.close()
    # 再休息一秒
    time.sleep(1)
    # 检测是否连接成功
    if re and checkPC("www.baidu.com"):

        return True

    return False


if __name__ == "__main__":

    if not checkPC("www.baidu.com"):

        print("The network is not connected!")

        if loginNet("http://10.152.250.2", "username", "password"):

            print("The network is connected!")

    else:

        print("The network is connected!")

3、运行结果,不会录屏,只有图片,自己臆想

 

(这种时长,是个老电脑人了)

 

 

 

 

 

 

 

 

 

 

本文地址:https://blog.csdn.net/qq_45492912/article/details/107650887

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网