河南工业大学linux系统校园网自动登陆脚本
背景
河南工业大学的校园网在校区是免费的,访问外网时,需要先用学号加密码登陆,但是差不多隔一天就需要重新登陆。
有学长用学校的机子做linux服务器,寒暑假时在家就需要服务器一直保持运行,于是有了需求。
查找登陆接口
登陆网址:
url = 'http://auth.haut.edu.cn/'
在界面点击右键,审查元素,点击网络
随便输入一个学号和密码,点击认证登陆
可以抓到第一个包就是我们想要的,往下翻,会看到请求参数就是我们刚才填的学号和密码,并且用户名和密码都没有加密,并且是get请求,本机ip地址如果不会查看的,可以登陆一次,然后他会显示你的ip地址。
接口:
url = 'http://auth.haut.edu.cn/v1/haut?username=学号&password=密码&ac_id=1&user_ip=你的ip地址'
测试接口是否正确:
先注销,你可以在python里用requests请求一下这个ip,也可以直接复制这个链接,到浏览器直接打开,再打开网页,看是否登陆成功。
linux 使用cron服务执行定时任务
一般这个服务是随着开启就启动了,我使用的是ubuntu
在命令行输入:
crontab -e //修改crontab文件,如果没有则创建文件
附赠一些其他命令:
crontab -l //查看 crontab 文件
crontab -r //删除 crontab 文件
crontab -ir // 在删除 crontab 文件前提醒用户
service crond status // 检查 crontab 服务状态
service crond start // 启动crond 服务
service crond stop // 停止服务
service crond restart // 重启服务
service crond reload // 重新加载服务
接着上面,我们进入修改crontab文件,添加一行:
00 6 * * * sh test.sh # 在每天的6点定时执行test.sh脚本
前面5个参数表示时间: 分(00-59) 时(00-23) 日(00-31) 月(0-12) 周(0-6)
*号 代表所有,比如我想每分钟执行就是 * * * * * +命令
也支持使用, 和- 表示连续和间隔,比如1,3,5 和 2-7 表示单独的日期和连续的日期
然后按 crtl + s 保存 和ctrl + x 退出,如果提示新建了一个什么什么,就表示成功
写test.sh脚本内容
脚本代码也很简单,分为两步:
1、请求我们之前获取的登陆api接口,参数直接&连接
2、输出日志,表示当天登陆成功,有迹可循
使用curl 请求地址
使用命令 curl + url 就可以请求,可以在命令行先测试是否成功:
curl http://www.baidu.com //在每天的6点定时执行test.sh脚本
如果输出响应文件,表示没有问题,可以下一步,如果找不到没有curl,就根据他提示的命令下载一下curl。
test.sh文件代码:
curl http://auth.haut.edu.cn/v1/haut?username=学号\&password=密码\&ac_id=1\&user_ip=ip地址 >> login_log.txt # 将返回结果写入文件
date >> login_log.txt # 将当前日期写入文件
注意这里的 & 要加 \ 进行转义。
附赠:
curl 可以添加的一些参数
curl -A “user-agent” url // 设置请求头
curl -b cookie.txt url // 从文本设置请求cookie
curl -c cookie.txt url // 保存请求到的cookie到文件cookie.txt
curl -e “refer” url // 添加请求头中的来源
curl -o www.baidu.com // 保存请求到的文本
curl -o /dev/null -s -w %{http_code} www.baidu.com // 输出请求状态码