目录

  • 起因
  • 自动认证
  • 挂到路由器
    • 进入终端
    • 从外部安装opkg
    • 后台挂自动认证脚本
  • 后记
  • 参考链接

起因

浙软的网络认证系统实在是与众不同,好像是自己开发的?

反正就特别不方便,每次连上之后会有一个小窗口,影响观感。

有轻微强迫症的咱怎么能忍这个呢?于是决定自己写一个认证的程序,并挂到路由器上,由于路由器装的是linux,没有GUI,也就看不到这个窗口了。

自动认证

这部分过程其实很简单,很多文章都有介绍方法,比如浙大软院 免登录上网攻略。

受到了浙大python网_Python爬虫学习(8):浙大软院网络登陆保持一文的启发,发现没必要一定用自己的账号登录,并在这篇文章的基础上进行了改写:

import urllib
import urllib.request as urllib2
import re
import os
import timeclass PseudoLogin:def __init__(self):  self.login_url  = "http://192.0.0.6/cgi-bin/do_login"self.status_url = "http://192.0.0.6/cgi-bin/keeplive"self.logout_url = "http://192.0.0.6/cgi-bin/do_logout"self.headers = {}self.headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"self.headers["Content-Type"] = "text/html; charset=gb2312"# 需要更改起始和结束帐号self.start = 22151001self.end = 22151300self.check_time = 5#当前登陆的帐号self.current = self.start #登陆成功后返回的数字字符串self.uid = ""#循环测试帐号,直到有一个帐号可以通过初始密码登陆def cycle_login(self):#初始密码password = '3fdebd70bc927d97' # 'zjucst'的md5加密#匹配全是数字的字符串pattern = re.compile(r"^[\d]+$")#当已经访问到最后的时候,且最后一个帐号没有登陆成功的时候,又重头来一次if(self.current >= self.end):print("将重头再来一次..")self.current = self.startfor username in range(self.current, self.end + 1):self.current = usernameret = self.access(str(username), password)if re.match(pattern, ret):self.uid = retprint("已经成功登陆...,可以上网了")print("当前网号为:" + str(username))print("uid为:" +  ret)return Truereturn Falsedef access(self,username,password):data = {'username': username, 'password': password, 'drop': 0, 'type': 1, 'n': 100}data = urllib.parse.urlencode(data).encode(encoding='UTF8')# print(data.decode('UTF8'))req = urllib2.Request(self.login_url, data=data, headers=self.headers)res = urllib2.urlopen(req)content = res.read().decode('UTF8')print("the login result: " + content)return content #获取登陆上网后的状态def get_status(self):data = {'uid': self.uid}data = urllib.parse.urlencode(data).encode(encoding='UTF8')req = urllib2.Request(self.status_url, data=data, headers=self.headers)res = urllib2.urlopen(req)content = res.read().decode('UTF8')print("the keep-alive result: " + content)return content #登出def logout(self):data = {'uid': self.uid}data = urllib.parse.urlencode(data).encode(encoding='UTF8')req = urllib2.Request(self.logout_url, data=data, headers=self.headers)res = urllib2.urlopen(req)content = res.read().decode('UTF8')print("the logout result: " + content)return content #登陆上网之后一直监测上网状态,如果被强制下线就返回def suffer(self):#循环测试,直到能够登陆while(not self.cycle_login()):pass#当返回的是三个数字并且已逗号隔开的时候表示依然在线pattern = re.compile(r"^[\d]+,[\d]+,[\d]+$")#每过5秒访问一下状态while(True):time.sleep(self.check_time)status = self.get_status()if re.match(pattern,status):print("it is still online")else:print("sorry you are offline")#如果被强制下线,则自动加1,不然又会登上这个帐号self.current = self.current + 1print("下线后需要等一会儿才能再登陆")time.sleep(30)break#如果while循环退出表示上网失败了return False #这个函数将会一直执行def enjoy(self):while(not self.suffer()):passlogin = PseudoLogin()
login.enjoy()

我主要对那篇文章中的代码格式进行了人工调整,并且把python2给update到了python3。并且由于系统的升级,密码不再是以前的明文传递,改成了md5加密:

运行后:

成功登录,并且连上了网。

挂到路由器

这部分才是这篇博客的难点,我用的路由器是著名的刷固件神器斐讯k2p,用的固件是老毛子Padavan 3.4.3.9-099_20-06-1

进入终端

要进入路由器的终端,首先得开放ssh服务:

然后通过ssh协议连接:

进来之后其实可以看到是个类似Linux系统的shell,是BusyBox的一部分,但是没有lsb_release -a, cat /etc/os-release等一系列的命令,也没有aptyumdpkgrpm 等软件包管理的工具,在这种情况下应该是没办法安装python的。

从外部安装opkg

没有这些包管理工具,我们就无法安装新的软件,因此需要找一个可用的package management tool。

经过一番搜寻,终于找到了一个方法: 从外部网站下载一个包管理工具——opkg,然后使用这个工具安装python3

由于路由器的file system建立在memory之上,其存储空间是read-only的,所以要先将内存划分一部分空间,挂载到文件系统:

mount -t tmpfs -o size=40M tmpfs /opt/

我这里分配了40M大小的内存,之前其实有尝试过分配10M和20M,但在后续安装python的时候提示了空间不足。

随后从外部网站下载opkg:

wget http://pkg.entware.net/binaries/mipsel/installer/opkg -O /opt/bin/opkg
chmod 755 /opt/bin/opkg
wget http://bin.entware.net/mipselsf-k3.4/installer/opkg.conf -O /opt/etc/opkg.conf

不出意外的话会提示文件夹不存在之类的错误,因为没有手动创建/opt/binopt/etc等文件夹,这部分mkdir即可。

进入/opt/bin目录,对opkg进行一下update,并安装一下ipk:

cd /opt/bin
./opkg update
wget https://archive.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base/opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-7_ramips_24kec.ipk
opkg install ./opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-7_ramips_24kec.ipk

后台挂自动认证脚本

最后,安装python3:

opkg install python3

即可成功把python安装到路由器的RAM里。通过scp将python脚本传过来,然后使用nohup命令挂在后台即可:

scp ./keeplive.py admin@192.168.123.1:~/
nohup python3 ./keeplive.py &

后记

这样做还是有缺陷的,因为在RAM里,所以路由器断电重启的话文件会消失,还需要重写安装python并挂上,后续可以自己写一个脚本。

参考链接

[1] 浙大软院 免登录上网攻略
[2] 浙大python网_Python爬虫学习(8):浙大软院网络登陆保持
[3] StackOverflow: How to install a software management tool in Linux?
[4] Padavan固件安装软件包,7620老毛子Padavan固件安装openwrt安装额外的软件包
[5] 在Padavan 上使用Entware
[6] OPKG 软件包管理

浙江大学软件学院网络自动认证+Padavan路由器挂python脚本相关推荐

  1. 记一次用python selenium 通过chrome+chromedriver 实现公司内网上网自动登入认证、上班自动登入打卡python脚本笔记

    背景 写这个脚本纯属是觉得好玩而已,一开始以为很简单,看了大部分网上的代码确实很简单就那么几行,自己也就想试试,后来发现由于这个还涉及了一些html的知识点发现还是没那么简单的,从一开始获取登入按钮的 ...

  2. python自动发邮件 foxmail_使用 python 脚本实现自动监控网站并发送邮件告警

    今天中午的时候,网站莫名奇妙地出现无法访问的现象,持续了两个多小时,等发现问题的时候立刻重启了服务器才恢复正常.为防止同样的事情再次发生,所以就想编写一个自动化脚本来监控网站服务,今天为大家分享一下使 ...

  3. python脚本自动运行失败_Linux下Python脚本自启动和定时启动的详细步骤

    一.Python开机自动运行 假如Python自启动脚本为 auto.py .那么用root权限编辑以下文件: sudo vim /etc/rc.local 如果没有 rc.local 请看 这篇文章 ...

  4. python自动登录校园网_免费自动登录国科大校园网python脚本

    UCAS-Network-Login A python program that helps you log in UCAS network for free. 免费自动登录国科大校园网 声明:本软件 ...

  5. 路由器运行python脚本_写个Python脚本来登录小米路由器

    这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速.好了,一起来分析分析. 首先看下小米路由器的登录界面 可以看到只需要输入密码即可登录,博主 ...

  6. python自动控制程序_巧用 python 脚本控制你的C程序

    python是一门艺术语言,除了开发桌面程序,还能够开发网络应用,数据库应用,还可以代替shell编写一些的实用脚本,本文主要讲述了如何利用 python 程序控制你的 C 程序的行为. 作为例子,本 ...

  7. 自动发qq空间说说python脚本

    准备材料: 1.python 2.selenium-3.141.0-py2.py3-none-any python install selenium文件路径 3.geckodriver(用以调用fir ...

  8. 思科网络基础课件_网络自动化认证,你选对了吗?

    网络越来越依赖于软件,以及依靠工具来自动执行过往需要手动处理的功能.面对这种转型,网络工程师和管理人员应考虑获得自动化技能,而获取网络自动化认证可能是学习和发展这些技能的最佳方法. 现在网络自动化市场 ...

  9. 江理的校园网自动认证

    前言 某天我无意中在某论坛上发现有大佬指出"网页登录的话 浏览器f12自己去抓",我们学校的就是用网页认证的. 脚本 首先打开浏览器进入认证页面,先不登录,按F12打开控制台,选择 ...

  10. 网络慢?看看路由器设置对不对

    在上一篇<为什么房间的 Wi-Fi 信号这么差>中,猫哥从微波炉.相对论.人存原理出发,介绍了影响 Wi-Fi 信号强弱的几大因素,接下来猫哥再给大家介绍几种不用升级带宽套餐也能提升网速的 ...

最新文章

  1. windows环境下跑hadoop自带的wordcount遇到的问题
  2. no qualifying bean of type_就是要让你彻底学会 @Bean 注解
  3. MySQL界面说明_mysql 界面
  4. php filter 文件包含,php://filter(文件包含漏洞利用)及php://input
  5. java打地鼠游戏-有背景音乐有图
  6. 这个外挂要上天了!教一千遍都不会的数理技巧,还不如搞懂最根本的概念!
  7. linux 实验指导书,linux操作系统实验指导书新 - 图文
  8. 关于C#绘制qq好友列表控件
  9. iOS 9.0系统策略更新
  10. 关于注册测绘师的点点滴滴
  11. 八千里路云和月,蚂蚁金服面出血,offer已拿,仰天长啸,壮怀激烈!
  12. MPlayer播放器源码分析 2012
  13. Appium和Python实现蚂蚁森林自动化收取能量
  14. 解决高铁WiFi上网问题,中兴新支点ICG与高铁强强联手
  15. EasyRTMPLive:RTMP流媒体直播软件应用解决方案流媒体直播软件应用
  16. 选品指南:波兰市场什么最好卖?有哪些热门类目?
  17. 计算机系23班趣味口号,23班口号怎么写
  18. 个人投资理财太平亿康的五种方式
  19. jdbc PreparedStatement中“?”报错
  20. ABC157 D - Friend Suggestions 题解

热门文章

  1. 学习周记 CSS合集
  2. 开启win10防火墙开启某端口
  3. 【python+selenium】自动登陆学校青果教务网
  4. 云原生服务网格 Istio 1.4 部署指南
  5. 著名的“三门问题”的验证
  6. 回炉重造之重读Windows核心编程-003-内核对象
  7. Java 视频网盘分享
  8. 2020年5个最佳免费WordPress托管提供商
  9. Oracle 11g安装过程中提示先决条件检查不通过的解决方法
  10. 十大最佳外国Android游戏下载平台