又是一年寒假,又是同一个问题。每个月初校园网就会断开一次需要重新登录,以前都是让还在实验室的同学帮忙登录。
今年没有因为疫情被困在实验室的同学,也没有临近毕业最后冲刺的师兄了。所以想了个新办法,就是让实验室的小机器自己每个月初登录一下。
下载 chromedriver
先下载一下浏览器对应的驱动,我用的chrome,在https://chromedriver.storage.googleapis.com/index.html
下载就行,要注意版本:
别的浏览器比如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
好家伙, 直接一条post还不行嘛
不太会QAQ我只是直白的觉得需要让它自己填账号密码登录就这么操作了。用post应该怎么弄呢
f12看一下请求呗, 大概率没加密或者只是简单的base64这种, 把请求随便拿什么语言实现一下就能用了
等回学校了我试试
冲刺的师兄太真实了🥹