定时自动校园网登录

模拟网页自动登录校园网并定时登录

问题描述

近些天,某校园网出现频繁断线问题,需要我们需要频繁重网络,同时给远程办公TV的使用带来困难。因此需要设计一个自动重连校园网的方案。

使用环境:XXX校园网;

目标:每日定时自动连接校园网;

为了自动连接校园网,我们需要准备好校园网账号密码,以及编写程序模拟网页点击登录按钮,并且设定windows定时计划;

先验知识

传统CURL式爬虫过程

curl是利用URL语法在命令行方式下工作的开源文件传输工具。它能模拟浏览器请求,接收、处理数据流并保存数据;

python语言curl的实现:requests模块;

由于requests模块是一个不完全模拟浏览器行为的模块,只能爬取到网页的HTML文档信息,无法解析和执行JavaScript代码,无法获取由Js脚本动态生成的网页信息

Headless浏览器实现页面解析

无头浏览器类似于在流行的Web浏览器的环境中提供对网页的自动控制,利用浏览器对目标URL进行HTML解析,CSS渲染,Js执行,借由API甚至可以模拟用户行为(鼠标点击,键盘输入),但不提供UI渲染。它们特别适用于测试网页。

常用的无头浏览器有:chromedriverFireFox

为了控制浏览器实现自动化web应用,需要安装Selenium。

selenium模块本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器;

实现方法

模拟网页登录

1,首先需要配置python环境:如再win下配置anaconda环境。

2,安装selenium包:

1
pip install selenium

3,下载chromeDriver驱动

下载对应版本的chromedriver到本地;

将exe拷贝到C:\Program Files (x86)\Google\Chrome\Application下,并将该路径配置至环境变量中;

配置好后在shell中输入:chromedriver无错误即安装成功!

4,编写自动登录脚本,新建auto_login.py文件,按如下填写:

1
2
3
4
5
6
7
8
9
10
11
12
from selenium import webdriver
user_name='****'
pwd='****'
driver = webdriver.Chrome()
# 设置浏览器窗口的位置和大小
driver.set_window_position(20,40)
driver.set_window_size(1100,700)
# 打开一个页面(如校园网登录页面)
driver.get("****")
driver.find_element_by_id('username').send_keys(user_name)
driver.find_element_by_id('password').send_keys(pwd)
driver.find_element_by_id('login').click()

5,编写bat脚本

新建auto_login.bat文件,输入python {path2here}/auto_login.py

设置定时计划

要求每天上午8点定时执行自动登录脚本;

win中搜索任务计划程序;按需填写相应内容,选择启动时间,选择脚本位置,即可;

注意配置完成之后,还需要其安全选项,选择再“不管用户是否登录时都要运行”,这样可以在用户没有登录时执行计划;

参考

Python+Selenium+ChromeDriver之浏览器爬虫入门