普通用户在命令终端使用Python脚本连入校园网
普通用户在命令终端使用Python脚本连入校园网
想要连入校园网的步骤:
- 浏览器输入对应的IP地址,输入账号密码连网;
- 下载对应软件,输入账号密码连网;
而面对没有界面的服务器,而你又没有root权限,如何上网?
这里参考zxh师兄给的一个脚本,进行以下记录
1. 找到登录时浏览器发送的post请求
进入登录页面,比如的上网登录页面为
http://192.168.6.1/F12打开浏览器的调试页面,找到对应的 NetWork 栏,并选上 Preserver Log
这里需要注意的是,中文版的火狐浏览器这个选项为
持续记录,如下:
然后登录界面输入账号密码后,点击登录,获取POST请求,有如下

这里吐槽一下:学校登录注销界面在windows下采用Chrome/360浏览器 无法注销!找了个有界面的Linux用了火狐才能注销
查看POST请求的对应的请求头与表单请求内容,如下:
请求头:

请求内容:

2. 编写脚本
在知道了发送的Post的请求后就把相应的内容写入Python脚本,后续运行该脚本即可实现与网页登录相同的效果:
找到上述的请求头内容:
POST /a70.htm HTTP/1.1
Host: 192.168.6.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
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
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 72
Origin: http://192.168.6.1
Connection: keep-alive
Referer: http://192.168.6.1/a70.htm
Upgrade-Insecure-Requests: 1
把请求头加入变量中
headers = {
"Host": "192.168.6.1",
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"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",
"Accept-Encoding": "gzip, deflate",
"Content-Type": "application/x-www-form-urlencoded",
"Content-Length": "72",
"Origin": "http://192.168.6.1",
"Connection": "keep-alive",
"Referer": "http://192.168.6.1/a70.htm",
"Upgrade-Insecure-Requests": "1"
}
再根据表单数据构造登录内容
data = {
"DDDDD": 账号,
"upass": 密码,
"R1": "0",
"R2": "",
"R6": "0",
"para": "00",
"0MKKey": "123456"
}
3. 完整脚本
#encoding=utf-8、
# 运行命令: python3 login.py --account 校园网账号 --password 校园网密码
import requests
import argparse
def parse_args():
"""
Parse input arguments
"""
parser = argparse.ArgumentParser(description='Train a chinese')
parser.add_argument('--account', dest='account',
help='account', type=str)
parser.add_argument('--password', dest='password',
help='password', type=str)
args = parser.parse_args()
return args
args = parse_args()
# 请求头
headers = {
"Host": "192.168.6.1",
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"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",
"Accept-Encoding": "gzip, deflate",
"Content-Type": "application/x-www-form-urlencoded",
"Content-Length": "72",
"Origin": "http://192.168.6.1",
"Connection": "keep-alive",
"Referer": "http://192.168.6.1/a70.htm",
"Upgrade-Insecure-Requests": "1"
}
# 请求表单数据
data = {
"DDDDD":args.account,
"upass":args.password,
"R1": "0",
"R2": "",
"R6": "0",
"para": "00",
"0MKKey": "123456"
}
# 请求的url地址
url ='http://192.168.6.1/a70.htm'
session = requests.Session()
session.post(url, headers = headers, data = data)
print("ok")
运行该脚本:python3 login.py --account 校园网账号 --password 校园网密码
即可实现登录
普通用户在命令终端使用Python脚本连入校园网的更多相关文章
- 如何在命令行里运行python脚本
python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写.python在生物信息.统计.网页制作.计算等多个领域都体现出了强大的功能.python和其他脚本语言如java.R ...
- 命令行运行Python脚本时传入参数的三种方式
原文链接:命令行运行Python脚本时传入参数的三种方式(原文的几处错误在此已纠正) 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. pyth ...
- 如何在cmd命令下运行python脚本
1.打开cmd窗口,输入:cd c:\\python27 (首先得确认python已加入环境变量) 2.第二条命令:python[空格]完整的python脚本路径,运行即可 3.一个案例: Micr ...
- 命令终端执行python
windows进入cmd 1.进入cmd窗口,找到存放py文件的地址(如E:\learn_mock) 2.退出python,输入exit() linux下一样
- python 脚本自动登陆校园网
学校的校园网每次重开电脑时都要重新打开浏览器进行网页登录,繁琐的操作比较麻烦,于是便写了个python的脚本进行自动登录,下面说下具体的操作过程: 1. 方法说明 博主采用的python的 reque ...
- C#调用Python脚本打印pdf文件
介绍:通过pdf地址先将文件下载到本地,然后调用打印机打印,最后将下载的文件删除. 环境:windows系统.(windows64位) windows系统中安装python3.6.2环境 资料: O ...
- win cmd执行Python脚本提示找不到模块问题
Windows关于命令行执行Python脚本,提示找不到模块的问题,我 本人也是在pycharm上运行没毛病的,后来在本地搞了个Jenkins做定时任务,谁知道就提示找不到模块 也百度了很多,都是说什 ...
- spark-submit提交python脚本过程记录
最近刚学习spark,用spark-submit命令提交一个python脚本,一开始老报错,所以打算好好整理一下用spark-submit命令提交python脚本的过程.先看一下spark-submi ...
- 在命令行终端运行 Elisp 脚本
通常,我们在 Emacs 中运行 Elisp 代码片段,但是也可能需要在命令行终端运行 Elisp 脚本程序.在命令行终端运行 Elisp 脚本需要使用 --script 选项,例如: emacs - ...
随机推荐
- noip模拟48
A. Lighthouse 很明显的容斥题,组合式与上上场 \(t2\) 一模一样 注意判环时长度为 \(n\) 的环是合法的 B. Miner 题意实际上是要求偶拉路 对于一个有多个奇数点的联通块, ...
- 如何实现自定义sk_buff数据包并提交协议栈
目录 一.自定义数据包的封装流程 1. 分配skb 2.初始定位(skb_reserve) 3.拷贝数据(skb_push / skb_pull / skb_put / ) 4.设置传输层头部 5.设 ...
- 数据结构(c++)(第二版) Dijkstra最短路径算法 教学示范代码出现重大问题!
前言 去年在数据结构(c++)的Dijkstra教学算法案例中,发现了一个 bug 导致算法不能正常的运行,出错代码只是4行的for循环迭代代码. 看到那里就觉得有问题,但书中只给了关键代码的部分,其 ...
- python win32com 处理excle 写一个公共的类
利用win32com处理excle,这样可以不管文件是老的xls还是新的xlsx格式,非常方便. 类的源码如下: import win32com.client as win32 class easyE ...
- js不记录某个url链接历史访问,返回时不返回该链接
(function(){ var fnUrlReplace = function (eleLink) { if (!eleLink) { return; } var href = eleLink.hr ...
- Docker系列(12)- 部署Tomcat
#官方的使用:我们之前的启动都是后台,停止容器后,容器还是可以看到#docker run -it --rm,一般用来测试,用完就会删除容器,镜像还在[root@localhost ~]# docker ...
- php 设计模式 --桥接模式
php抽象类和接口的区别 https://www.cnblogs.com/vinter/p/8716685.html 什么时候适合使用 --- 多个角色配合工作:抽象角色对应具体角色: <?ph ...
- redis代替mybatis做缓存
将redis作为缓存 <dependencies> <dependency> <groupId>org.springframework.boot</group ...
- PolarDB PostgreSQL logindex 设计
背景介绍 PolarDB采用了共享存储一写多读架构,读写节点RW和多个只读节点RO共享同一份存储,读写节点可以读写共享存储中的数据:只读节点仅能各自通过回放日志,从共享存储中读取数据,而不能写入,只读 ...
- 华为云计算IE面试笔记-请描述华为容灾解决方案全景图,并解释双活数据中心需要从哪些角度着手考虑双活设计
容灾全景图: 按照距离划分:分为本地容灾 同城容灾 异地容灾 本地容灾包括本地高可用和本地主备.(本数据中心的两机房.机柜) 本地高可用这个方案为了保持业务的连续性,从两个层面来考虑: ①一个是从主 ...