最近想用树莓派制作远程监控系统,由于学校网络需要在主页登录,树莓派携带显示器不方便,所以制作了可以自动登录校园网络的脚本程序,减少了每次打开浏览器输入账户密码的烦恼。 1.工具 Fire fox浏览器firedebug插件、debug插件可以添加到浏览器附加模块中,其他浏览器只需要能够监控浏览器的网络行为插件即可。python requests软件包2。阶段 1)先打开登录界面,然后按F12键打开firedebug插件。此时,debug没有录制动作。然后单击“刷新”按钮,然后单击“登录”按钮重新调用“调试单击控制台”选项卡,将发现许多get方法和最终登录生成的POST方法,如图所示。 2)单击POST方法的小箭头,查看浏览器的请求标头标头信息。这个信息需要我们保存(不是回复头)。 3)查看POST选项卡的内容。变量和参数都必须保存。在这里,您可以看到password已加密。只要登录自己的账户密码,就可以结束程序。您可以用自己抓住的数据替换其中的数据,并使用以下代码登录校园网络: Import requests #登录地址 post _ addr='; #配置头部信息 Post_header={ 主机' : ' a. nui而且, 用户代理“:”莫吉拉(X11Linux x86 _ 64;RV :55.0)eco/2010 01 01 Firefox;而且, Accept' :' application/JSON、text/JavaScript、*/*;Q=0.01 ', 接受语言' : ' zh-cn、zh;Q=0.8,en-US;Q=0.5,en;Q=0.3 ', 接受-encoding' :' gzip,deflate ', 内容类型“:”应用程序/x-www-form-urlencoded”、 x-requested-with ' : ' xmlhttprequest '、 Referer ' :而且, 内容长度为' :' 67 ', Cookie ' : ' _ GSCU _ 1147341576=0598 21653286 GQ 10;SunriseUsername=123441534\ SunriseDomain=NUISTSunriseRememberPassword=trueSunrisePassword=123456\ PHP sessid=hb0o 9 bkc T2 F6 ge 164 OJ 3v j0me 5;Think_language=zh-CN ', Connection':'keep-alive ', } #配置登录数据 Post_data={'domain':'NUIST ', Enablemacauth':'0 ', Password':'MTgzMzEw '、 用户名“:”xxxxx

xx’

}

发送# post请求登录页

Z=reque (post _ addr,data=post _ data,headers=post _ header)

1234

>
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 4)但是发现一个问题就是上面的程序只能自己使用,如果换一个账号密码登录那么又要使用浏览器抓数据包,烦…仔细查看上面的步骤发现想要写一个其它账号可以使用,但不用抓包也可以登录的程序的难点在于构造post_data程序中password被加密过,如果能够知道它的加密方式,写一个通用的(在本校内)程序还是非常容易的.其实如果对常用的加密方法比较了解,那么去查看网页的源代码(js)还是比较容易得出它的加密方式,可惜我不懂,只知道一个md5加密,因此我就尝试用python中的hashlib包对密码进行加密然后查看是否和抓到的数据相同,遗憾的是连一个字符都木有相同的…,然后我想既然数据是从本地向服务器发送的,那么加密的过程必然是在客户端完成的,很有可能是通过js脚本(对网页编程不太了解,只知道js可在客户端执行,所以猜测是js脚本完成对passward编码),然后通过debug查看抓到的js代码.打开debug的调试器可以看到左边有一排js代码,通过js文件名可以大概猜测到js的作用.

    5)查看左侧文件名能够直接猜测到作用有login.js,md5.js,client.js,u.既然md5不是password加密方式那么查看其它js代码.幸运的是点开第一个base64代码敏感的发现这篇代码就是一种编码方式,赶紧百度之,发现base64果然是一种编码方式,趁热打铁百度python的base64编码实现,发现python早已集成base64的包,利用此包再次对密码进行编码….发现结果和抓到的postdata一毛一样,至此写一个通用的程序指日可待!!

    完整代码如下(粗犷版):

    #!/usr/bin/python3

    # -*- coding: utf-8 -*-

    '''

    FileName:conNet.py

    Author:shenhuixiang

    Copyright(c)2017,shenhuixiang

    '''

    import base64

    import requests

    '''

    输入账号密码和登录的网络

    网络参数为如果是移动的则填写CMCC

    如果是学号则填NUIST

    '''

    USER_ACCOUNT='110'

    DOMAIN_SELECTION='CMCC'

    USER_PASSWATD='123456'

    #登录地址

    post_addr=";

    #构造头部信息

    post_header={

    'Host': 'a.nui;,

    'User-Agent':'Mozilla (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox;,

    'Accept': 'application/json, text/javascript, */*; q=0.01',

    'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',

    'Accept-Encoding': 'gzip, deflate',

    'Content-Type': 'application/x-www-form-urlencoded',

    'X-Requested-With':'XMLHttpRequest',

    'Referer':';,

    'Content-Length': '67',

    'Cookie':'_gscu_1147341576=059821653286gq10; sunriseUsername='+USER_ACCOUNT+';\

    sunriseDomain='+DOMAIN_SELECTION+';sunriseRememberPassword=true; sunrisePassword='+USER_PASSWATD+';\

    PHPSESSID=hb0o9bkct2f6ge164oj3vj0me5;think_language=zh-CN',

    'Connection':'keep-alive',

    }

    '''

    password在post的参数中经过base64编码,

    为了查找password加密方式...吐血三升.

    '''

    post_data={'domain':DOMAIN_SELECTION,

    'enablemacauth':'0',

    'password':base64.b64encode()),

    'username':USER_ACCOUNT

    }

    #发送post请求登录网页

    z=reque(post_addr,data=post_data,headers=post_header)

    #z.text为str类型的json数据因此先编码成byte类型在解码成unicode型这样就可以正常输出中文

    s=z.('utf-8').decode('unicode-escape')

    print(s)

    1.《ALIVE怎么登陆看这里!python实现校园网自动登录》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

    2.《ALIVE怎么登陆看这里!python实现校园网自动登录》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

    3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3022132.html