Loading... 北理工的校园网有两种方式可以登录,一是一个UI略丑的客户端,再有就是网页端登录。这两种登录方式都有一个共同的缺点,无法在纯终端(无图形系统)的系统中使用。此外,还有着动不动就掉线的问题。为此,简单学习了一下python关于http的知识,写了一个脚本用于直接登录,也可以简单修改一下实现定时登录,防止掉线。 首先需要知道校园网登录中数据的形式以及流程,这里我用Chrome自带的开发者工具进行的抓包分析。按下’F12’,进入开发者工具,切换到network标签栏,在网页中输入账号和密码登录,就可以看到右侧出现了一条记录,如下图所示。 ![](http://blog.lxalxy.com/usr/uploads/2021/03/1685758691.jpg) 单击这条记录,切换到Headers标签栏。其中General中包含了接收POST信息的url,Request Headers和Form Data是我们需要的数据。 ![](http://blog.lxalxy.com/usr/uploads/2021/03/2722685691.jpg) 获取到这些信息后,我们就可以构造自己的HTTP数据包,并发送给服务器了,这里我们使用了urllib和urllib2两个库来实现这一功能。 需要注意的是,这里对cookie进行了处理,但在学校这个校园网登录系统中是不需要的。 ```python hljs #!/usr/bin/python #-*- coding: UTF-8 -*- import urllib import urllib2 import cookielib # 登录页面,用于获取cookie hosturl = 'http://10.0.0.55:803/srun_portal_pc.php?ac_id=1&' # Post地址 posturl = 'http://10.0.0.55:803/include/auth_action.php' # 处理cookie,在校园网登录中不需要 # filename = 'FileCookieJar.txt' # cj = cookielib.LWPCookieJar(filename) # cj.save(); # cookie_support = urllib2.HTTPCookieProcessor(cj) # opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) # urllib2.install_opener(opener) # h = urllib2.urlopen(hosturl) # header数据,通过抓包获得 headers = {'Referer' : 'http://10.0.0.55:803/srun_portal_pc.php?ac_id=1&', 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36' } # 构造Post数据,通过抓包获得 data = {'action' : 'login', 'username' : 'yourid', 'password' : 'yourpassword', 'ac_id' : '1', 'save_me' : '1', 'ajax' : '1' } # 对Post数据编码 data = urllib.urlencode(data) request = urllib2.Request(posturl, data, headers) response = urllib2.urlopen(request) text = response.read() print text[0 : text.index(',')] ``` 可以看到,过程非常简单,就是按照抓包数据构造自己的headers和data,利用Request方法发送到指定的url中,最后接收服务器的响应打印出来,就知道自己是否成功登录了。 ![](http://blog.lxalxy.com/usr/uploads/2021/03/4257309977.png) © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏