自动上网认证登录脚本过程记录
目录
环境说明
- CentOS Linux release 7.7.1908 (Core)
- root账户
- 深澜校园网上网认证
〇、过程
- 安装python
- 安装selenium
- 可能需要安装setuptools
- 可能需要安装urllib3
- 安装chrome
- 可能缺少依赖,需安装其他软件,见附文
- 安装chromedriver
- 编写python脚本
- 后台运行脚本
一、安装python
系统自带,略
二、安装selenium
下载源码包 selenium-3.141.0.tar.gz
上传服务器后,解压文件,并进入到setup.py文件所在目录
tar -zxvf selenium-3.141.0.tar.gz
cd selenium-3.141.0
- 安装模块
python setup.py install
- 可能会遇到的问题
可能会提示ImportError: No module named setuptools,需要安装setuptools
还有可能提示Could not find suitable distribution for Requirement.parse(‘urllib3’),同样需要下载并安装urllib3-1.25.7.tar.gz
因为下载的源码包为zip格式,centos未自带unzip,这里在win10下解压后,用scp命令递归上传整个文件夹。上传后同样用【python setup.py install】安装即可
scp -r <path_to_setuptools-42.0.2> root@ip:/位置
例
如:scp -r C:\Users\userz\Desktop\setuptools-42.0.2 root@10.129.2.110:/opt
- 安装成功可以查看安装模块信息
pip list
三、下载安装chrome
访问chrome官网,选择Linux版的rpm包下载
将刚刚下载的
google-chrome-stable_current_x86_64.rpm,上传到服务器安装chrome
rpm -ivh google-chrome-stable_current_x86_64.rpm --nodeps --force
可能提示缺少依赖,我踩过的坑见文末附文
查看安装的rpm包
rpm -qa | grep chrome
- 查看chrome版本信息
google-chrome --version
四、下载chromedriver
访问
npmjs.org镜像站,下载对应版本的chromedriver上传到服务器,添加执行权限
chmod u+x chromedriver
五、编写python脚本
cat > conn.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import os
username = '学号' #修改为自己的
password = '密码' #修改为自己的
while 1:
now_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
result = os.system('ping www.baidu.com -c 2')
if result:
print now_time + " ping fail"
try:
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox') # root用户不加这条会无法运行,但是同时访问一些不安全的网站时,容易受到威胁
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('blink-settings=imagesEnabled=false')
driver = webdriver.Chrome(executable_path="./chromedriver",chrome_options=chrome_options)
driver.get('http://10.8.8.8/srun_portal_pc?ac_id=1')
driver.find_element_by_xpath('//*[@id="login-form"]/div[1]/div/input').send_keys(username)
driver.find_element_by_xpath('//*[@id="login-form"]/div[2]/div/input').send_keys(password)
driver.find_element_by_xpath('//*[@id="login-form"]/div[3]/div[1]/button').click()
time.sleep(5)
driver.quit()
print now_time + " login success"
except:
print now_time + " login error"
else:
print now_time + " ping success"
time.sleep(600)
六、运行脚本
nohup python conn.py >conn.out 2>&1 & #后台运行上网脚本
tail -f conn.out #查看输出文件
七、结束脚本
kill 进程号
附文
(一)、这里挂载centos everything版本的iso镜像文件作为本地源
#1. 上传iso镜像文件到/opt CentOS-7-x86_64-Everything-1908.iso
#2. 创建挂载点并挂载镜像文件,命令如下
mkdir /media/centos7
mount -o loop /opt/CentOS-7-x86_64-Everything-1908.iso /media/centos7
#备注: -o是参数,loop是把一个文件当成硬盘分区mount挂着到目录
mount | grep iso #查看镜像是否挂载成功
#3. 修改yum源的配置文件
cd /etc/yum.repos.d/
ls
mkdir ./bak
mv ./*.repo ./bak/
cp ./bak/CentOS-Media.repo .
vim CentOS-Media.repo #修改配置文件,内容如下
- CentOS-Media.repo:
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/centos7/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
(二)、清除缓存
yum clean all
yum repolist
(三)、我遇到的缺少的依赖
error: Failed dependencies:
/usr/bin/lsb_release is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libX11-xcb.so.1()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libX11.so.6()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libXcomposite.so.1()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libXcursor.so.1()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libXdamage.so.1()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libXext.so.6()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libXfixes.so.3()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libXi.so.6()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libXrandr.so.2()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libXrender.so.1()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libXss.so.1()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libXtst.so.6()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libappindicator3.so.1()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libatk-1.0.so.0()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libatk-bridge-2.0.so.0()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libatspi.so.0()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libcairo.so.2()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libcups.so.2()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
liberation-fonts is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libgdk-3.so.0()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libgdk_pixbuf-2.0.so.0()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libgtk-3.so.0()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libpango-1.0.so.0()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libpangocairo-1.0.so.0()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
libxcb.so.1()(64bit) is needed by google-chrome-stable-78.0.3904.108-1.x86_64
wget is needed by google-chrome-stable-78.0.3904.108-1.x86_64
xdg-utils is needed by google-chrome-stable-78.0.3904.108-1.x86_64
- 对应安装的软件
yum install redhat-lsb wget libXScrnSaver
yum install at-spi2-atk -y
yum install -y libgtk*
yum install -y libX11-devel --nogpg
yum install -y redhat-lsb-core-4.0-7.el6.centos.x86_64
yum install -y gtk2 gtk2-devel gtk2-devel-docs
yum install -y cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtool nasm
yum -y install liberation-fonts
yum install libappindicator-gtk3