记录 制作校园网登陆脚本 python编写 附源码
‘’‘
首先我们分析一下
1.需要本机的IP
使用 socket 获取
2.需要向服务器提交的数据
构造请求数据 并分析数据可替换
3.检测登陆成功
检测登陆是否成功
’‘’
获取IP 这样会返回 本机IP
def get_ip(self):
try:
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.connect(('8.8.8.8',80))
ip = s.getsockname()[0]
finally:
#关闭
s.close()
#返回IP
return ip
构造请求体
b_data = {
'DDDDD':',0,'+us+codeinfo,
'upass':pa,
'para':'',
'0MKKey':''
}
9 #关于发送的请求内容 可以使用浏览器 F12 进行查看发送的数据信息
向服务器发送请求
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.204 Safari/537.36',
'Upgrade-Insecure-Requests': '',
}
#data为请求体 ip 为本机ip
url = requests.post('http://172.16.1.38:801/eportal/?c=ACSetting&a=Login&protocol=http:&hostname=172.16.1.38&iTermType=1&wlanuserip={}&wlanacip=null&wlanacname=null&mac=00-00-00-00-00-00&ip={}&enAdvert=0&queryACIP=0&jsVersion=2.4.3&loginMethod=1'.format(ip,ip),headers=headers,data=data)
#这样是一个简单的发送请求 但是如果别人想用的话每次更改不会很麻烦嘛?
更改后的全部源码 1 import requests 2 3 import socket 4
import os
import re class AOA(object):
#获取本机IP
def get_ip(self):
try:
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.connect(('8.8.8.8',80))
ip = s.getsockname()[0]
finally:
#关闭
s.close()
#返回IP
return ip def open_msg(self,path_dirs):
'''
获取外部的text 文档 的账号密码
:return:
'''
if 'login_msg' in os.listdir(path_dirs): #如果login_msg文件 有的话 会 跳过 【如果登陆过一次的话 会生成文件】
pass
else: #没有login_msg文件的话 证明为第一次登陆
username = input('请输入账号')
password = input('请输入密码')
code = input('请选择运营商 1 = 移动 | 2 = 电信 | 3 = 联通')
print('正在进行保存')
with open('login_msg','w+',encoding='utf8') as o:
o.write('账号={},\r密码={},\r运营商={},\r#注意不要有空格'.format(username,password,code)) #进行保存文件处理 with open(os.path.join(path_dirs,'login_msg'),'r+',encoding='utf8') as f : #打开文件
#获取文件的账号密码和运行商
text = f.read()
username = re.findall(r'账号=(\d{10}),',text)[0] if re.findall(r'账号=(\d{10}),',text) else print('账号获取错误')
password = re.findall(r'密码=(.*?),',text)[0] if re.findall(r'密码=(.*?),',text) else print('密码获取错误')
login_code =re.findall(r'运营商=([1-3]),',text)[0] if re.findall(r'运营商=(.*?),',text)[0] else print('运营商获取错误')
msg = {
'username':username,
'password':password,
'login_code':login_code,
}
return msg #形成字典形式返回数据 def extract_data(self,user_data): #使数据进行组合处理
#拿出账号密码
us = user_data.get('username') #账号
pa = user_data.get('password') #密码
code = int(user_data.get("login_code")) #获取的为整数类型 if code == 1 :
codeinfo = "@cmcc" #移动
elif code == 2 :
codeinfo = "@telecom" #电信
elif code == 3:
codeinfo = "@unicom" #联通
else:
raise '请输入正确的'
b_data = {
'DDDDD':',0,'+us+codeinfo,
'upass':pa,
'para':'',
'0MKKey':'' }
return b_data
#进行登陆处理
def login(self,data,ip): headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.204 Safari/537.36',
'Upgrade-Insecure-Requests': '',
}
url = requests.post('http://172.16.1.38:801/eportal/?c=ACSetting&a=Login&protocol=http:&hostname=172.16.1.38&iTermType=1&wlanuserip={}&wlanacip=null&wlanacname=null&mac=00-00-00-00-00-00&ip={}&enAdvert=0&queryACIP=0&jsVersion=2.4.3&loginMethod=1'.format(ip,ip),headers=headers,data=data) def if_get(self):
code = requests.get('http://www.baidu.com')
if code.status_code ==200:
print('登陆成功')
else:
print('登陆失败') def main(self,):
#获取路径
LOCAL_PATH = os.path.abspath('')
ip = self.get_ip() #获取本机IP
user_data_str = self.open_msg(path_dirs=LOCAL_PATH) #获取账号密码信息 不做判断 和 数据整合
header_text = self.extract_data(user_data_str) #进行数据整合
self.login(data=header_text,ip=ip)
self.if_get() j = AOA()
j.main()
记录 制作校园网登陆脚本 python编写 附源码的更多相关文章
- jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
上一篇记录了BaiduTemplate模板引擎使用示例附源码,在此基础上对使用方法进行了封装 自定义插件jajaxrefresh.js 代码如下: //闭包限定命名空间 (function ($) { ...
- 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生
[转].NET(C#):浅谈程序集清单资源和RESX资源 目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...
- PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)
说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...
- 使用 SVG 制作单选和多选框动画【附源码】
通过 JavaScript 实现 SVG 路径动画,我们可以做很多花哨的东西.今天我们要为您介绍一些复选框和单选按钮效果.实现的主要思路是隐藏原生的输入框,使用伪元素创造更具吸引力的样式,输入框被选中 ...
- 13行代码实现:Python实时视频采集(附源码)
一.前言 本文是<人脸识别完整项目实战>系列博文第3部分:程序设计篇(Python版),第1节<Python实时视频采集程序设计>,本章内容系统介绍:基于Python+open ...
- Python的开源人脸识别库:离线识别率高达99.38%(附源码)
Python的开源人脸识别库:离线识别率高达99.38%(附源码) 转https://cloud.tencent.com/developer/article/1359073 11.11 智慧上云 ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
- 超详细的php用户注册页面填写信息完整实例(附源码)
这篇文章主要介绍了一个超详细的php用户注册页面填写信息完整实例,内容包括邮箱自动匹配.密码强度验证以及防止表单重复等,小编特别喜欢这篇文章,推荐给大家. 注册页面是大多数网站必备的页面,所以很有必要 ...
- python的paramiko源码修改了一下,写了个操作命令的日志审计 bug修改
python的paramiko源码修改了一下,写了个操作命令的日志审计,但是记录的日志中也将backspace删除键记录成^H这个了,于是改了一下代码,用字符串的特性. 字符串具有列表的特性 > ...
随机推荐
- Abd学习笔记
Abd学习笔记 V快捷键:转正坐标 Tab快捷键:切换xyz或是长度角度 空格键快捷键:切换长度或弧度 Enter快捷键:确定方向x或y O快捷键:做辅助线 E:切换平面,分别有t,f,s Ra:创建 ...
- 在OS X 10.9配置WebDAV服务器联合NSURLSessionUploadTask实现文件上传
iOS7推出的NSURLSession简化了NSURLConnection的文件上传和下载的工作,本文记录如何配置WebDAV服务以支持PUT方式的文件上传. 一. 配置WebDAV服务器 1. 修改 ...
- IIS+nginx反向代理 负载均衡
本文没有过多的讲述,只讲述重点地方.由这两个转自的文章进行中和 1.nginx+iis实现负载均衡(这篇文章主要是有第2篇文章的工具) 2.nginx+iis使用(这篇文章讲得很详细,配置文件直接复制 ...
- Android 插件化和热修复知识梳理
概述 在Android开发中,插件化和热修复的话题越来越多的被大家提及,同时随着技术的迭代,各种框架的发展更新,插件化和热修复的框架似乎已经日趋成熟,许多开发者也把这两项技术运用到实际开发协作和正式的 ...
- OpenStack基础组件安装keystone身份认证服务
域名解析 vim /etc/hosts 192.168.245.172 controller01 192.168.245.171 controller02 192.168.245.173 contro ...
- chrome启动参数之
--remote-debugging-port Chrome 启动的时候,默认是关闭了调试端口的,如果要对一个目标 Chrome PC 浏览器进行调试,那么启动的时候,可以通过传递参数来开启 Chro ...
- 图的最小环floyed
最优的路线 问题描述 学校里面有N个景点.两个景点之间可能直接有道路相连,用Dist[I,J]表示它的长度:否则它们之间没有直接的道路相连.这里所说的道路是没有规定方向的,也就是说,如果从I到J有直接 ...
- css设置多列等高布局
初始时,多个列内容大小不同,高度不同.现在需要设置不同的背景来显示,而且各个列的高度需要保持一致.那么这就需要利用到多列等高布局. 最终需要的效果: 1. 真实等高布局 flex 技术点:弹性盒子布局 ...
- Selenium 常用API
浏览器相关操作 启动浏览器 driver = new ChromeDriver(); 控制浏览器窗口大小 maximize() 设置浏览器最大化 setSize() 设置浏览器窗口的宽与高 访问网页 ...
- Excel 统计区间频数,按照条件标记
MS Office 2013 统计区间频数--countif函数 如要统计[75,90)区间段的成绩,使用 =COUNTIF(L3:L44, ">=75")-COUN ...