Script em Python para realizar múltiplas requisições HTTP a uma URL, contabilizar os códigos de status recebidos e exibir um resumo dos resultados em formato de tabela.
Este projeto permite testar endpoints HTTP realizando várias requisições simultâneas, contabilizando os retornos HTTP (status code) e exibindo um resumo ao final, incluindo tempo total do teste, URL testada, número de threads utilizadas, tempo médio de resposta e outras informações úteis.
- Clone este repositório ou baixe os arquivos.
- Instale as dependências necessárias:
pip install -r requirements.txtExecute o script passando a URL, a quantidade de requisições e, opcionalmente, o intervalo entre as requisições, o número de threads, o reaproveitamento de conexões e a versão do IP:
python http_status_counter.py <URL> <QUANTIDADE> [--intervalo SEGUNDOS] [-t THREADS] [--keep-alive] [--ipver 4|6|auto]<URL>: Endereço HTTP/HTTPS a ser testado (obrigatório)- Suporta a tag
<count>que será substituída pelo número da requisição
- Suporta a tag
<QUANTIDADE>: Número total de requisições a serem realizadas (obrigatório)-i,--intervalo: Intervalo (em segundos) entre as requisições (opcional, padrão: 0)-t,--threads: Número de threads simultâneas (opcional, padrão: 1)--keep-alive: Reaproveita conexões HTTP usando keep-alive (opcional)--ipver: Versão do IP a ser utilizada:4(IPv4),6(IPv6) ouauto(padrão, deixa o sistema escolher)
Você pode usar a tag <count> na URL para gerar URLs únicas para cada requisição. O <count> será substituído pelo número da requisição (começando em 1).
Exemplos:
# Cada requisição acessará uma URL diferente
python http_status_counter.py "https://api.exemplo.com/user/<count>" 10
# Com parâmetros na URL
python http_status_counter.py "https://api.exemplo.com/test?id=<count>&type=load" 50Requisições sequenciais:
python http_status_counter.py https://httpbin.org/status/200 10Requisições simultâneas com 5 threads e keep-alive:
python http_status_counter.py https://httpbin.org/status/200 50 -t 5 --keep-aliveRequisições forçando IPv6:
python http_status_counter.py https://httpbin.org/status/200 10 --ipver 6Requisições com intervalo de 2 segundos entre cada:
python http_status_counter.py https://httpbin.org/status/200 10 -i 2Requisições com URLs únicas usando <count>:
python http_status_counter.py "https://httpbin.org/status/<count>" 10Durante a execução, para cada requisição, será exibido:
- Número da requisição
- Código de status HTTP
- Tempo de resposta (em segundos)
- URL utilizada (especialmente útil quando usando a tag
<count>)
Exemplo de saída:
Iniciando 10 requisições para https://httpbin.org/status/<count> usando 1 thread(s)...
Keep-alive ativado: Não
Versão IP: Auto
Requisição 1/10: Status 200 | Tempo de resposta: 0.245 s | URL: https://httpbin.org/status/1
Requisição 2/10: Status 200 | Tempo de resposta: 0.198 s | URL: https://httpbin.org/status/2
...
Ao final do teste, será exibido um resumo contendo:
- URL testada
- Número de threads utilizadas
- Keep-alive ativado ou não
- Versão IP utilizada
- Data/hora de início e fim
- Tempo total do teste (hh:mm:ss)
- Tempo médio de resposta (em segundos)
- Tabela com a contagem de cada código de status HTTP recebido
- Progresso em tempo real: Mostra o resultado de cada requisição assim que é concluída
- Suporte a múltiplas threads: Permite executar requisições simultâneas
- Keep-alive: Opção para reaproveitar conexões HTTP
- Forçar IPv4/IPv6: Controle sobre a versão do IP utilizada
- URLs dinâmicas: Suporte à tag
<count>para URLs únicas por requisição - Intervalo configurável: Possibilidade de adicionar delay entre requisições
Sinta-se à vontade para contribuir ou sugerir melhorias!