又是一年寒假,又是同一个问题。每个月初校园网就会断开一次需要重新登录,以前都是让还在实验室的同学帮忙登录。

今年没有因为疫情被困在实验室的同学,也没有临近毕业最后冲刺的师兄了。所以想了个新办法,就是让实验室的小机器自己每个月初登录一下。

下载 chromedriver

先下载一下浏览器对应的驱动,我用的chrome,在https://chromedriver.storage.googleapis.com/index.html下载就行,要注意版本:

8d05e7c9e04044a8a72fd81178e40b64.png

别的浏览器比如Edge什么的也有自己的驱动,后面对应的命令selenium.webdriver.chrome.service也需要改。桃子没有试过。

然后解压,输入以下命令安装(deepin系统。其他系统不确定):

chmod +x chromedriver

sudo mv -f chromedriver /usr/local/share/chromedriver

sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver

sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver 

安装后/usr/bin目录下会出现chromedriver快捷方式。

安装 selenium

pip3 install selenium

自动键入信息并登录

写一个python文件(auto_login.py):


import os
import smtplib
import time
import datetime

from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.common.by import By
 
def login_fr(url, username, password):
    # 指向驱动位置
    # 下载地址:https://chromedriver.storage.googleapis.com/index.html
    driver = webdriver.Chrome() ## 已经设置过了路径,不用写(windows下才要写)
    # 打开链接
    driver.get(url)
    time.sleep(5)
 
    # 浏览器全屏,可有可无
    driver.maximize_window()

    #截图    
    driver.save_screenshot(time.strftime('%Y-%m-%d|%H:%M:%S',time.localtime(time.time()))) 
    time.sleep(1)
 
    # By.XPATH和By.CLASS_NAME是指按照某种方式找到用户名、密码以及登录按钮。
    #打开网页 F12 Element 可以找到对应的位置。
    user_input = driver.find_element(by=By.XPATH, value='//input[@type="text"]')
    pw_input = driver.find_element(by=By.XPATH, value='//input[@type="password"]')
    login_btn = driver.find_element(by=By.CLASS_NAME, value='btn-login')

    # 输入用户名和密码,点击登录
    user_input.send_keys(username)
    pw_input.send_keys(password)
    time.sleep(5)
    login_btn.click()
    time.sleep(5)

    #截图
    driver.save_screenshot(time.strftime('%Y-%m-%d|%H:%M:%S',time.localtime(time.time()))) 
    time.sleep(1)
 
    return driver
 
# 定义目标URL信息
aim_url = {
    'url': '校园网登录地址',
    'username': '帐号',
    'password': '密码'
    }
# 登录
driver = login_fr(aim_url['url'], aim_url['username'], aim_url['password'])

再写一个配套的sh脚本,一起放在~目录(auto_login.sh):

python3 ~/auto_login.py

定时运行

下面都是在终端操作:

>crontab -e

输入(下面前五位一次是分、时、日、月、周):

DISPLAY=:0
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

0 0 1 * * ~/auto_login.sh

保存,继续输入:

>sudo service cron start

大功告成!

P.S.其他命令:

sudo service cron restart
sudo service cron stop