req.py
import sys import requests from concurrent.futures import ThreadPoolExecutor, as_completed from requests.exceptions import ConnectionError, SSLError from urllib3.exceptions import ProtocolError import urllib3 # Desativa os warnings de certificado SSL urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) def make_request(url): try: response = requests.get(url, verify=False, timeout=5) print(response.status_code) return response.status_code except ConnectionError as e: if 'Connection reset by peer' in str(e): return 'RST' else: return 'RST' except SSLError: return 'RST' except ProtocolError: return 'RST' except requests.exceptions.Timeout: return 'Timeout' except Exception as e: return f'Other Error: {str(e)}' def main(url, num_requests, max_workers): rst_count = 0 valid_response_count = 0 timeout_count = 0 other_errors = 0 with ThreadPoolExecutor(max_workers=max_workers) as executor: futures = [executor.submit(make_request, url) for _ in range(num_requests)] for future in as_completed(futures): result = future.result() if result == 'RST': rst_count += 1 elif isinstance(result, int): valid_response_count += 1 elif result == 'Timeout': timeout_count += 1 else: other_errors += 1 print(f"Total de requisies: {num_requests}") print(f"Respostas vlidas: {valid_response_count}") print(f"Conexes terminadas com RST: {rst_count}") print(f"Timeouts: {timeout_count}") print(f"Outros erros: {other_errors}") if __name__ == "__main__": if len(sys.argv) != 4: print("Uso: python script.py <URL> <Nmero de Requisies> <Nmero de Conexes Simultneas>") sys.exit(1) url = sys.argv[1] num_requests = int(sys.argv[2]) max_workers = int(sys.argv[3]) main(url, num_requests, max_workers)
Leave a Comment