Untitled

 avatar
unknown
python
17 days ago
2.1 kB
1
Indexable
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)
        return response.status_code
    except ConnectionError as e:
        if 'Connection reset by peer' in str(e):
            return 'RST'
        else:
            return 'Connection Error'
    except SSLError:
        return 'SSL Error'
    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