因为最近想用树莓派搞个远程监控系统,又因为学校的网需要从网页登录而树莓派又不方便搞个显示器带着,所以寻思着搞个能够自动登录校园网的脚本程序,省去了每次都要打开浏览器输入账号密码的烦恼.

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实现校园网自动登录的示例讲解相关推荐

  1. python做一个登录注册界面_Python 实现简单的登录注册界面

    Python 实现简单的登录注册界面 注意:编写代码之前需要导入很重要的包 import tkinter as tk import pickle from tkinter import message ...

  2. python编程教程第九讲_Python入门学习视频,最全面讲解视频无偿分享,这些基础知识你都懂了吗?...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

  3. python自动登录校园网 密码_python自动登陆校园网

    由于每次打开电脑都要手动的登录校园网,导致很麻烦,所以写了一个爬虫来模拟浏览器自动登录校园网的功能 1.使用Burpsuit对校园网登录接口进行抓包分析 简介:burpsuite是一款渗透工具,运行环 ...

  4. python自动输入支付密码_Python之控制台输入密码的方法

    一.raw_input()或input(): for python 2.x [root@master test]#/usr/local/python2.7/bin/python test.py Ple ...

  5. python数据变更邮件提醒_Python之Bilibili自动更新邮件提醒并任务栏图标「完整代码」...

    前言 本次分享的是小编经过多日编写的关于自动检测B站Up主视频更新情况,并发送邮件提醒更新的Python程序,代码不专业.部分代码段借鉴网上,仅供参考娱乐! 用到的库 selenium._thread ...

  6. python任务栏通知区域_Python之Bilibili自动更新邮件提醒并任务栏图标

    前言 本次分享的是经过多日编写的关于自动检测B站Up主视频更新情况,并发送邮件提醒更新的Python程序,代码不专业.部分代码段借鉴网上,仅供参考娱乐! 用到的库 selenium._thread.s ...

  7. python答题系统的代码_Python考试系统自动答题(教务处)

    要求 某学校要求登录教务处网站 做一个测试题 30分钟300道题,240分几个,题量不少,题还不好做. 研究发现原来在网站上有题库 但是一道题只有6s 的时间作答 边查边做时间不够 人生苦短,何不Py ...

  8. python 提交表单登录不成功_Python http requests模拟登录与提交表单的实现问题

    以前写小应用只写过简单的http请求,最近有一些需要复杂的实现,遇到一些问题,还希望得到大家指点. 我的疑问点在于如何实现模拟登录,cookie应该可以实现,但是每台pc的cookie不同,我想有一个 ...

  9. python自动抠头像图_Python实现AI自动抠图实例解析

    一.简介 抠图是用PS? 用魔棒和快速选择工具? 遇到复杂背景怎么办? 最近发现一个神奇的工具--Remove Image Background 它是基于Python.Ruby和深度学习技术开发,通过 ...

最新文章

  1. asp.net网站图片防盗链机制示例代码
  2. linux中GIT组件,GitLab在Linux下安装
  3. 聚类算法(五)--层次聚类(系统聚类)及超易懂实例分析
  4. Java的io类的使用场景
  5. 机械零点、MAM 文件 、 EMT标定原理
  6. .NET开发框架(五)-IIS上部署ASP.NET Core项目教程
  7. [nodejs] 利用openshift 撰寫應用喔
  8. ply补全为立方体_PLY文件格式
  9. 编程体系结构(06):Java面向对象
  10. java rsa 验_Java使用RSA加密解密签名及校验
  11. python 爬取_使用 Python 和 BeautifulSoup 来做爬虫抓取
  12. ODP.NET 之 ExecuteNoQuery 执行 Merge into 返回值
  13. 多线程环境过度优化下的CPU乱序问题
  14. OpenGL学习(六)纹理与obj格式模型的读取
  15. 无线网卡dhcp服务器,ubuntu11.10配置无线网卡dhcp服务器记录(not authoritative for subnet 192.168.1.0问题解决)...
  16. Linuxnbsp;cat命令详解
  17. 六西格玛质量管理慕课答案
  18. oracle delete一直没有结束怎么办 教你跟踪delete和rollback进度之-《delete跟踪篇》
  19. [debug][RDP开源项目]rdpwrapper中出现not listening的解决方案
  20. 华为云服务器更换操作系统,华为云 更换操作系统

热门文章

  1. 051_InfiniteScroll无限滚动
  2. php 中文 过长 省略号,css实现文字过长显示省略号
  3. JNI与底层调用-2
  4. php调用shell执行scp,Shell中使用scp命令实现文件上传代码
  5. pandas按条件过滤_pandas条件组合筛选和按范围筛选的示例代码
  6. android多功能计算器 源码,Android计算器源码
  7. Pycharm基本操作
  8. linux裸设备文件系统,Linux当中的文件系统
  9. html运行c代码大全,html特效代码大全
  10. LVS的NAT工作模型详解