准备工具
- 连接校园网 KMUST-WEB
- Fiddle 抓包工具
- python3
- python使用到的第三方包
requests
pip install -i http://mirrors.aliyun.com/pypi/simple/ requests --trusted-host mirrors.aliyun.com
- python使用到的第三方包
总体流程
1、连接校园网, 比如KMUST-WEB, 跳出登录框, 此时会短暂跳出http://www.msftconnecttest.com/redirect
, 可以在fiddle中看到这个url的请求和返回值.这个url中的response
中包含wlanacname
、ssid
等登陆时需要用到的表单数据.
2、用账号密码登录 用账号密码登录后, fiddle中出现http:/<ip:port>/zportal/login/do
的post请求, fiddle中的webForm
中有提交的表单信息, raw
中有请求头信息, 只需要将 username 和 password修改为自己的用户名密码, 即可模拟表单提交登录.
待处理问题
wlanacname
、ssid
等字段可能会出现动态刷新的情况, 可以通过http://www.msftconnecttest.com/redirect
中的返回值获取
还未实现登出logout功能
实现代码
import requests
def get_url():
static_url = "http://www.msftconnecttest.com/redirect"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29"
}
static_respose = requests.get(static_url,headers=headers)
print(static_respose.text)
def login():
murl = "http://222.197.192.59:9090/zportal/login/do"
mdata = {
"qrCodeId": "请输入编号",
"username": "111",
"pwd": "222",
"validCode": "验证码",
"validCodeFlag": "false",
"serviceId": "",
"ssid": "",
"mac": "",
"t": "-v2",
"wlanacname": "",
"url": "",
"nasip": "",
"wlanuserip": ""
}
mheaders = {
"Host": "<ip:port>",
"Connection": "keep-alive",
"Content-Length": "464",
"Accept": "*/*",
"X-Requested-With": "XMLHttpRequest",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Origin": "http://<ip:port>",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
}
response = requests.post(murl, mdata, headers=mheaders)
print(response.text)
if __name__ == '__main__':
get_url()
# default为默认的账号密码
# 如果没有-u -p 参数如: python3 ./autoSign.py 则自动登录default 账号密码
parser = argparse.ArgumentParser()
parser.add_argument('-u', '--username', help='input your username', default="111", required=False)
parser.add_argument('-p', '--password', help='input your password', default="222",required=False)
args = parser.parse_args()
login(args.username,args.password)
文档信息
- 本文作者:正义的伙伴
- 本文链接:https://ableasd.github.io/2021/11/25/python%E7%99%BB%E5%BD%95%E6%A0%A1%E5%9B%AD%E7%BD%91/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)