1 parent
47263050f1
commit
1bb951cc3d
1 file changed
+53
@@ -0,0 +1,53 @@
|
||||
import requests
|
||||
import concurrent.futures
|
||||
import time
|
||||
import logging
|
||||
|
||||
# 配置日志
|
||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||
|
||||
def send_request(ip, port=80, path='/', interval=1, count=10):
|
||||
"""
|
||||
向指定IP地址发送HTTP请求
|
||||
|
||||
:param ip: 目标IP地址
|
||||
:param port: 目标端口,默认为80
|
||||
:param path: 请求路径,默认为'/'
|
||||
:param interval: 请求间隔时间(秒),默认为1秒
|
||||
:param count: 发送请求的次数,默认为10次
|
||||
"""
|
||||
url = f"http://{ip}:{port}{path}"
|
||||
for i in range(count):
|
||||
try:
|
||||
response = requests.get(url, timeout=5) # 设置超时时间
|
||||
logging.info(f"Request {i+1}: Status Code = {response.status_code}")
|
||||
except requests.exceptions.RequestException as e:
|
||||
logging.error(f"Request {i+1} failed: {e}")
|
||||
time.sleep(interval)
|
||||
|
||||
def main():
|
||||
# 询问用户输入IP地址
|
||||
target_ip = input("请输入目标IP地址: ")
|
||||
# 询问用户输入端口(可选)
|
||||
target_port = input("请输入目标端口(默认80): ")
|
||||
target_port = int(target_port) if target_port.isdigit() else 80
|
||||
# 询问用户输入请求路径(可选)
|
||||
target_path = input("请输入请求路径(默认'/'): ")
|
||||
target_path = target_path if target_path else '/'
|
||||
# 询问用户输入请求间隔时间(可选)
|
||||
request_interval = input("请输入请求间隔时间(秒,默认1秒): ")
|
||||
request_interval = float(request_interval) if request_interval.replace('.', '', 1).isdigit() else 1
|
||||
# 询问用户输入发送请求的次数(可选)
|
||||
request_count = input("请输入发送请求的次数(默认10次): ")
|
||||
request_count = int(request_count) if request_count.isdigit() else 10
|
||||
# 询问用户输入线程数(可选)
|
||||
thread_count = input("请输入线程数(默认5): ")
|
||||
thread_count = int(thread_count) if thread_count.isdigit() else 5
|
||||
|
||||
# 创建线程池并发送请求
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=thread_count) as executor:
|
||||
for _ in range(thread_count):
|
||||
executor.submit(send_request, target_ip, target_port, target_path, request_interval, request_count)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in new issue
Block a user