python之简单POST模拟登录

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

下面是用python3写的简单的POST,没有对cookie的处理,注意python2需要略做修改,区别是urllib,urllib2等有了变动。

#!/usr/bin/env python3#coding=utf-8#login to school network#if add parameter,will logoutimportsys#for sys.argvimporturllibimporturllib.requestimporturllib.parse

url='http://xxx'deflogin():

action='login'username='xxx'#可将密码等保存至文件passWord='xxx'ac_id= 6type= 1data= {'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')exceptException as e:print('oops!Please check network!')print(e)deflogout():

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__':iflen(sys.argv) == 1:

login()else:

logout()

python的语法什么的就是简洁,包含的功能也多,社区有许多人的无私奉献。缺点也是有的,比如说没有编译型语言的强大的语法分析,执行速度。写这段代码时某行因为少加了一个右括号,提示的是该行的下一行有语法错误,并未提示缺少右括号,很不人性啊,或许加上分号会好一点吧。

从上面的代码中也可以感觉到python对于网络,正则表达式等强大的支持,元组,字典等数据类型也很好用。

使用方法:linux下很容易,$python3 net.py 再跟任意参数可注销登录,chmod +x net.py后就可以$./net.py,或加上做个符号链接,放在桌面。

win下:可在python环境中运行,也可用Py2exe等工具做成可执行文件。有趣的是win下Python为提高运行效率,生成了.pyc类似编译的文件。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航