Untitled
unknown
python
9 months ago
2.1 kB
3
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)
Editor is loading...
Leave a Comment