首页 > 学院 > 开发设计 > 正文

python之简单POST模拟登录

2019-11-14 17:42:53
字体:
来源:转载
供稿:网友

宿舍自从换了校园网的认证系统就不再用客户端了,只能在网页登录。每次上网都要打开浏览器的话很不方便,而且我有时在Ubuntu控制台上想联网但终端文本浏览器似乎不支持页面跳转,既然如此,何不写个客户端呢?经过了解发现学校的认证系统简直弱爆了。根本不需要做什么破解工作,宿舍用的深澜,明文传输密码,一抓包一览无余,听说锐捷还好一些,密码经过加密但是用的像base64等算法,也很容易被人获取密码。学校的大量资金都不知道去哪了。。。
下面是用python3写的简单的POST,没有对cookie的处理,注意python2需要略做修改,区别是urllib,urllib2等有了变动。

#!/usr/bin/env python3# coding=utf-8#login to school network#if add parameter,will logoutimport sys    #for sys.argvimport urllibimport urllib.requestimport urllib.parseurl = 'http://xxx'def login():    action = 'login'    username = 'xxx'    #可将密码等保存至文件    passWord = 'xxx'    ac_id = 6    type = 1    data = {'action': action,        'username': username,        'password': password,        'ac_id': ac_id,        'type':type        }    postdata=urllib.parse.urlencode(data).encode('utf-8')    try:        request=urllib.request.Request(url, postdata)        response=urllib.request.urlopen(request)        if(response.read().decode('utf-8').find('login_ok')>0):            PRint('login_ok')    except Exception as e:        print('oops!Please check network!')        print(e)def logout():    logoutdata = {'action': 'logout'}    postdata=urllib.parse.urlencode(logoutdata).encode('utf-8')    request=urllib.request.Request(url, postdata)    response=urllib.request.urlopen(request)    print(response.read().decode('utf-8')) #根据情况解码if __name__ == '__main__':    if len(sys.argv) == 1:        login()    else:        logout()

python的语法什么的就是简洁,包含的功能也多,社区有许多人的无私奉献。缺点也是有的,比如说没有编译型语言的强大的语法分析,执行速度。写这段代码时某行因为少加了一个右括号,提示的是该行的下一行有语法错误,并未提示缺少右括号,很不人性啊,或许加上分号会好一点吧。
从上面的代码中也可以感觉到python对于网络,正则表达式等强大的支持,元组,字典等数据类型也很好用。
使用方法:linux下很容易,$python3 net.py 再跟任意参数可注销登录,chmod +x net.py后就可以$./net.py,或加上做个符号链接,放在桌面。
win下:可在python环境中运行,也可用Py2exe等工具做成可执行文件。有趣的是win下Python为提高运行效率,生成了.pyc类似编译的文件。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表