zoukankan      html  css  js  c++  java
  • [Python]urllib库的简单应用-实现北航宿舍自动上网

    在北航,上网前必须通过一个认证系统。次次开电脑都要打开这个认证网页连接一下网络还是挺烦人的。刚好最近看了看了Python的urllib库,那么就写一个最简易的自动登录器吧....(这也算是我的Python处女作了)


    1.分析

    显然,点击登陆按钮后会提交一个表单。想要实现自动登录,利用Request方法提交一份数据即可。

    得弄清楚它提交了些什么东西,利用火狐的Httpfox插件抓包分析一下看看。

    可以看到提交了这样一段信息到某一个特定的地址上去。

    action=login&username=16231275&password={B}bGhxxxxxxQ0NA%3D%3D&ac_id=4&user_ip=&nas_ip=&user_mac=&save_me=1&ajax=1

    username字段是学号,password字段是加密过的密码。

    2.编码与调试


     简单非常简单。就是构造一条消息然后提交。

    import urllib
    import urllib2
    class login:
        def __init__(self):
            self.Url = 'https://gw.buaa.edu.cn:803/include/auth_action.php'
            self.Data = 'action=login&username=16231275&password={B}bGxxxxxxx%3D%3D&ac_id=4&user_ip=&nas_ip=&user_mac=&save_me=1&ajax=1'
        def auto_login(self):
            request = urllib2.Request(url=self.Url,data=self.Data)
            response = urllib2.urlopen(request)
            print response.read()
    
    Buaa = login()
    Buaa.auto_login()

    略微修改一下,利用python自带base64编码模块,模拟表单的加密过程。这样方便直接使用别的账号登录。

    import urllib
    import urllib2
    import base64
    class login:
        def __init__(self,Username,Password):
            self.Url = 'https://gw.buaa.edu.cn:803/include/auth_action.php'
            Password=base64.b64encode(Password)
            L=list(Password)
            for a in range(len(L)):
               if L[a]=='=':
                   L[a]='%3D'
            Password=''.join(L)
            self.Data = 'action=login&username='+Username+'&password={B}'+Password+'&ac_id=4&user_ip=&nas_ip=&user_mac=&save_me=1&ajax=1'
        def auto_login(self):
            request = urllib2.Request(url=self.Url,data=self.Data)
            response = urllib2.urlopen(request)
            print response.read()
    
    #####################################################
    Buaa = login(Username='16231275',Password='XXXXXXXX')
    Buaa.auto_login()
    
            

    3.后记


    现在这个小程序打包成exe并随系统启动,便实现了启动后自动联网。

    然而北航的认证系统,表单提交的地址会随着地点的改变而改变,教学楼和宿舍的登陆表单并不一定Post到一个地址。这个脚本也只能在宿舍使用。以后知识水平提高一些再完善吧。

  • 相关阅读:
    个人作业——软件工程实践总结作业
    用户调查报告
    β总结
    凡事预则立
    学习进度条
    作业八——单元测试练习(个人练习)
    作业七——“南通大学教务管理系统微信公众号” 用户体验分析
    作业六——团队作业(学生成绩录入系统设计与实现)
    作业5——需求分析(学生成绩录入系统)
    作业4.2:结对项目—— 词频统计(第二阶段)
  • 原文地址:https://www.cnblogs.com/cn-lhc/p/5993132.html
Copyright © 2011-2022 走看看