python校园网登录_python实现校园网自动登录的示例讲解

本文档详细介绍了如何使用Python和requests库实现校园网的自动登录,通过火狐浏览器和firedebug插件捕获登录请求,解析POST数据中的加密密码,并利用Python的base64模块解码密码,实现通用的登录脚本。适用于需要自动登录校园网的场景。
摘要由CSDN通过智能技术生成

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实现校园网自动登录的示例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持中文源码网。

亲,试试微信扫码分享本页! *^_^*

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python自动登录校园网,可以借助selenium库来实现。selenium是一个自动化测试工具,可以模拟用户在浏览器中的操作。 首先,你需要安装selenium库和相应的浏览器驱动,比如geckodriver(Firefox)或chromedriver(Chrome)。根据引用中的信息,你可以使用geckodriver来模拟火狐浏览器。 接下来,你可以编写Python脚本来实现自动登录校园网。根据引用中的信息,你可以参考下面的示例代码: ```python from selenium import webdriver from selenium.webdriver.common.keys import Keys # 创建一个Firefox浏览器实例 driver = webdriver.Firefox() # 打开登录页面 driver.get('http://portal.dlmu.edu.cn') # 找到账号输入框并输入账号 username_input = driver.find_element_by_id('username') username_input.send_keys('your_username') # 找到密码输入框并输入密码 password_input = driver.find_element_by_id('password') password_input.send_keys('your_password') # 提交表单 password_input.send_keys(Keys.RETURN) # 登录成功后可以继续执行后续操作 # 关闭浏览器 driver.quit() ``` 在这个示例代码中,我们使用selenium打开了登录页面,并找到了账号输入框和密码输入框,然后通过send_keys方法输入了账号和密码,并模拟了按下回车键来提交表单。你只需要将`your_username`和`your_password`替换为你的实际账号和密码即可。 请注意,编写自动登录脚本时需要遵守学校的网络使用规定,并确保你的行为合法和符合学校的规定。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python selenium实现开机自动登录大连海事校园网](https://blog.csdn.net/kofi6/article/details/116136222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值