Linux服务器连接校园网
流程
- 安装图形化界面
- 安装python及相关包
- 安装浏览器
- 安装浏览器驱动
- 编写脚本
安装图形化界面
之前也想尝试通过terminal模拟发送登录请求,但是比较尝试了几种方式都失败了,还是安装了图形化界面,安装图形化界面的教程很多就不介绍了。
安装python及selenium包
这个包是用来模拟控制浏览器的
用anaconda 或者 pip都能装
安装浏览器
在服务器上安装浏览器,这里用的Firefox,Chrome 也行selenium有对应的方法。
安装浏览器驱动
Firefox驱动下载地址
https://github.com/mozilla/geckodriver/releases
下载对应操作系统的即可
chmod +x geckodriver #添加可执行权限
sudo mv geckodriver /usr/bin/ # 移动到系统环境路径下
编写脚本
# connect_net.py
import argparse
from selenium import webdriver
import time
def login_with_userInfo(user:str,pwd:str):
options = webdriver.FirefoxOptions()
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--headless')
driver = webdriver.Firefox(options=options)
driver.get(url='https://login.hdu.edu.cn/')
time.sleep(2)
usernameInput = driver.find_element(value='username')
# usernameInput = driver.find_element_by_id('username')
usernameInput.clear()
usernameInput.send_keys(user)
passwdInput = driver.find_element(value='password')
# usernameInput = driver.find_element_by_id('username')
passwdInput.clear()
passwdInput.send_keys(pwd)
submitBtn = driver.find_element(value='login-account')
submitBtn.click()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--username', default=None, type=str,
help='The file of the hyper parameters.')
parser.add_argument('--password', default='train', type=str,
help='The phase of module.')
args_parser = parser.parse_args()
login_with_userInfo(user=args_parser.username, pwd=args_parser.password)
connect_net.sh
#!/usr/bin/env bash
USERNAME=""
PASSWORD=""
python connect_net.py --username ${USERNAME} --password ${PASSWORD}
运行脚本
bash connect_net.sh
总结
逻辑比较简单,用python调浏览器,get到用户名和密码框往里填值,之后调用登录的click就行。