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到一个地址。这个脚本也只能在宿舍使用。以后知识水平提高一些再完善吧。

  • 相关阅读:
    day04
    day02
    day01
    if语句用户交互字符串
    python安装和pycharm安装教程
    day1预习
    博客园的使用
    python day 3
    从cbv到fbv:用函数写视图与用类写视图的区别(drf与restful)
    resful规范: 进行数据交换时的代码潜规则
  • 原文地址:https://www.cnblogs.com/cn-lhc/p/5993132.html
Copyright © 2011-2022 走看看