python校园网登录_python实现校园网自动登录的示例讲解
python实现校园网自动登录的示例讲解
来源:中文源码网 浏览: 次 日期:2018年9月2日
【下载文档: python实现校园网自动登录的示例讲解.txt 】
(友情提示:右键点上行txt文档名->目标另存为)
python实现校园网自动登录的示例讲解 因为最近想用树莓派搞个远程监控系统,又因为学校的网需要从网页登录而树莓派又不方便搞个显示器带着,所以寻思着搞个能够自动登录校园网的脚本程序,省去了每次都要打开浏览器输入账号密码的烦恼.
1.工具
火狐浏览器+firedebug插件,debug插件可才浏览器中附加组件中添加,其他浏览器也可以只要可以监控浏览器的网络行为即可.
python+requests包
2.步骤
1) 先打开到登录界面,然后在按f12打开firedebug插件,此时debug无任何记录行为,然后点击刷新按钮,再点击登录按钮,再次调出debug点击控制台选项卡,这时会发现很多get方法加上最后由登录产生的POST方法,如图所示2) 点击POST方法的小箭头会发现,浏览器的请求头header信息,这个需要我们保存下来(不是响应头),3) 查看POST选项卡中的内容,其中的变量和参数都需要保存下来,这里面可以看到其中的password是被加过密的.如果只是登录自己的账号密码,那么程序到此可以结束.把其中的数据用自己抓到的数据替换使用下面代码即可登录校园网.import requests
#登录地址
post_addr="http://a.nuist.edu.cn/index.php/index/login"
#构造头部信息
post_header={
'Host': 'a.nuist.edu.cn',
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0',
'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':'http://a.nuist.edu.cn/index.php?url=aHR0cDovL2RldGVjdHBvcnRhbC5maXJlZm94LmNvbS9zdWNjZXNzLnR4dA==',
'Content-Length': '67',
'Cookie':'_gscu_1147341576=059821653286gq10; sunriseUsername=123441534;\
sunriseDomain=NUIST;sunriseRememberPassword=true; sunrisePassword=123456;\
PHPSESSID=hb0o9bkct2f6ge164oj3vj0me5;think_language=zh-CN',
'Connection':'keep-alive',
}
#构造登录数据
post_data={'domain':'NUIST',
'enablemacauth':'0',
'password':'MTgzMzEw',
'username':'xxxxxxx'
}
#发送post请求登录网页
z=requests.post(post_addr,data=post_data,headers=post_header)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,usercss.js.既然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="http://a.nuist.edu.cn/index.php/index/login"
#构造头部信息
post_header={
'Host': 'a.nuist.edu.cn',
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0',
'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':'http://a.nuist.edu.cn/index.php?url=aHR0cDovL2RldGVjdHBvcnRhbC5maXJlZm94LmNvbS9zdWNjZXNzLnR4dA==',
'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(USER_PASSWATD.encode()),
'username':USER_ACCOUNT
}
#发送post请求登录网页
z=requests.post(post_addr,data=post_data,headers=post_header)
#z.text为str类型的json数据因此先编码成byte类型在解码成unicode型这样就可以正常输出中文
s=z.text.encode('utf-8').decode('unicode-escape')
print(s)以上这篇python实现校园网自动登录的示例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持中文源码网。
亲,试试微信扫码分享本页! *^_^*
python校园网登录_python实现校园网自动登录的示例讲解相关推荐
- 用python计算成绩_Python使用splinter自动登录教务系统查询并计算成绩(CUMT新版教务系统)...
矿大2017年使用的是新版的教务系统,提交的密码是经过js加密的. 虽然我最后找到了加密的文件,可是js没有学过,看了半天硬是没看懂. 最后渣渣只能另找办法了,最后发现了一个神器splinter.这个 ...
- python已打开页面获取信息_python+selenium实现自动登录网页获取信息(一)
我用的是一个教师继续教育的网站,进行演示和模拟,网站:http://cas.study.yanxiu.jsyxsq.com/auth/login?service=http%3A%2F%2Fwww.17 ...
- python办公自动化系列之金蝶K3自动登录(二)
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- Python进阶之使用Scrapy实现自动登录Github的两种方法(POST,FormRequest,from_response)
Python进阶之使用Scrapy实现自动登录Github的两种方法 1. 通过.FormRequest()实现登录github github1.py 2. 通过.FormRequest.from_r ...
- python保存运行结果下次使用_将python运行结果保存至本地文件中的示例讲解
一.建立文件,保存数据 1.使用python中内置的open函数 打开txt文件 #mode 模式 #w 只能操作写入 r 只能读取 a 向文件追加 #w+ 可读可写 r+可读可写 a+可读可追加 # ...
- python自动登录校园网 密码_python实现校园网自动登录的示例讲解
因为最近想用树莓派搞个远程监控系统,又因为学校的网需要从网页登录而树莓派又不方便搞个显示器带着,所以寻思着搞个能够自动登录校园网的脚本程序,省去了每次都要打开浏览器输入账号密码的烦恼. 1.工具 火狐 ...
- 华中师范大学CCNU校园网(有线/无线)自动登录程序
写作缘由 学校校园网的登录认证的主要方式是连接有线或者无线,之后等系统弹出登录网页,或者你自己上一个网站,会自动跳转到登录界面,在大多数情况下,这没有什么问题,但是在人比较多的时候,比如图书馆,或者信 ...
- python脚本自动qq签到_Python爬虫实现自动登录、签到功能 附代码
这篇文章主要介绍了Python爬虫实现自动登录.签到功能的代码,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 前几天在一个素材网站上下载东 ...
- Python + Selenium实现163邮箱的自动登录和发送邮件
运用Python和Selenium实现163邮箱的自动登录和发送邮件 初接触selenium,最近研究了一下用python和Selenium实现163邮箱的自动登录和发送邮件的实现过程,中间出现了各种 ...
最新文章
- 微服务之配置中心ConfigKeeper
- 机器学习Sklearn实战——其他线性模型
- c语言中输入10,10 is greater than 0,2013练习题__Student
- 未雨绸缪:从软件测试到质量保证
- 少儿编程100讲轻松学python(十一)-python如何保留小数点位数
- Linux iptables:规则原理和基础
- 组合日期_为什么我的透视表没法按日期组合?
- phpcms首页如加上用户登录的信息?
- C++指针delete后赋值为NULL的一些问题
- 四方支付系统,聚合平台搭建
- DB2 执行SQL报错: DB2 SQL Error: SQLCODE=-1585, SQLSTATE=54048
- 【读书笔记->统计学】03-02 各种“距”和“差”-方差、标准差、标准分概念简介
- 推断统计学-假设检验-匹配样本的假设检验的理解
- 分布式高并发下,Actor模型如此优秀
- C语言入门实战(11):输入一组正整数,求逆序数的和
- 打印和显示的字体种类
- esp32拍照传输到手机android,ESP32 之 esp32-cam wifi拍照传图系统2
- python sklearn svm_文本分类和预测 sklearn.svm.LinearSVC(1)
- 黑马程序员都到兄弟连兄弟会报名去了
- 梅科尔工作室-徐锦航-鸿蒙笔记2