
【selenium】自动登录校园网
实验室自动登录校园网
系统Ubuntu20.04
仅适用于宁波大学(实验室)网络,寝室网络的认证更简单一些
部分代码参考:https://github.com/password123456/setup-selenium-with-chrome-driver-on-ubuntu_debian
更新源
apt update
apt upgrade下载Chrome包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb安装google-chrome
dpkg -i google-chrome-stable_current_amd64.deb检查Chrome版本
google-chrome --version
# Google Chrome 117.0.5938.132安装selenium, webdriver-manager
pip3 install selenium
pip3 install webdriver-manager自动登录代码
路径:/home/autoNet.py
功能:使用chrome浏览器模拟登录
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
options = Options()
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
def login():
driver.get('https://sso.nbu.edu.cn/login')
# 如果当前URL包含登录页面的地址,那么填写登录信息并提交
username = "xx"
password = "xx"
# 等待页面加载完成
time.sleep(3) # 实践中应尽量避免使用time.sleep,而是使用WebDriverWait等待特定元素出现
# 填写用户名和密码
driver.find_element(By.NAME, 'username').send_keys(username)
driver.find_element(By.CSS_SELECTOR, 'input.ant-input[type="password"]').send_keys(password)
# 等待一小段时间让页面处理输入
time.sleep(1) # 在实际应用中,建议使用显式等待而非time.sleep
# 定位登录按钮并点击
# 由于按钮有可能是禁用状态,确保所有条件都满足使按钮可点击
login_button = driver.find_element(By.CSS_SELECTOR, 'button.login-button')
login_button.click()
# 尝试打开百度,但预期会被重定向
driver.get('https://www.baidu.com')
time.sleep(3)
# 检测是否被重定向到登录页面
current_url = driver.current_url
if 'sso.nbu.edu.cn/login' in current_url:
login()
# 执行其他需要的操作...
time.sleep(5)
# 关闭浏览器
driver.quit()登录shell脚本
路径:/home/autoNet.sh
功能:判断是否联网,未联网则执行python脚本
#!/bin/bash
# 尝试ping baidu的公共DNS,检查网络连通性
if ping -c 1 baidu.com &> /dev/null
then
echo "已联网。"
else
echo "未联网,执行Python脚本。"
/opt/anaconda3/bin/python /home/autoNet.py
fi开机自动执行脚本
在crontab中添加shell脚本,开机执行一次,每隔三个小时检测一次是否断网
@reboot /home/autoNet.sh 2>&1
0 */3 * * * /home/autoNet.sh 2>&1寝室自动登录校园网
具体的data需要抓包获得,大致是要把账号和密码写入data即可
具体的ip也要修改下
#!/bin/bash
curl -X POST 'http://10.36.100.2:8181/eportal/InterFace.do?method=login' \
-H 'Accept: */*' \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
-H 'Cookie: EPORTAL_COOKIE_PASSWORD=; EPORTAL_COOKIE_USERNAME=; EPORTAL_COOKIE_OPERATORPWD=; EPORTAL_COOKIE_SERVER=; EPORTAL_COOKIE_SERVER_NAME=; EPORTAL_COOKIE_NEWV=; EPORTAL_AUTO_LAND=; EPORTAL_USER_GROUP=null; JSESSIONID=D069F24487DD083F7DA803CC95D7E9E8' \
-H 'Host: 10.36.100.2:8181' \
-H 'Origin: http://10.36.100.2:8181' \
-H 'Referer: http://10.36.100.2:8181/eportal/index.jsp?wlanuserip=f8d6b18d1d88bbd7c5301af547f014b2&wlanacname=813916505d4c0137&ssid=7284ca0f746d6dcd&nasip=3cc5b35fd0a3ef1602aca09ebdc05056&mac=225422356a00073294ba1a9308b0c40c&t=wireless-v2&url=754ab213852ddc85a2f1c9d8f5f9700d4f729dd3f8f842b9' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0' \
--data 'userId=YourID&password=YourPassword&service=&queryString=wlanuserip%3Df8d6b18d1d88bbd7c5301af547f014b2%26wlanacname%3D813916505d4c0137%26ssid%3D7284ca0f746d6dcd%26nasip%3D3cc5b35fd0a3ef1602aca09ebdc05056%26mac%3D225422356a00073294ba1a9308b0c40c%26t%3Dwireless-v2%26url%3D754ab213852ddc85a2f1c9d8f5f9700d4f729dd3f8f842b9&operatorPwd=&operatorUserId=&validcode=&passwordEncrypt=false'- 最保险的方法是在浏览器抓包,找到
data这个项,把它完整的复制过来 - 上面代码的data不可以直接用
脚本wait2login.sh,输入一个参数表示等待时长(分钟),如ash wait2login.sh 20则是20分钟后执行登录脚本
#!/bin/bash
DEFAULT_DELAY=30
if [[ -n "$1" && "$1" =~ ^[0-9]+$ ]]; then
DELAY=$1
else
DELAY=$DEFAULT_DELAY
fi
echo " $DELAY to excute /root/login-in-network"
sleep $(($DELAY * 60))
ash /root/login-in-network
echo "finished"- 文章作者:
- Lthero博客
- 版权声明:
- 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 Lthero博客!



