← retour aux outils back to tools

# Siege

Outil de test de charge et de stress HTTP/HTTPS qui simule des utilisateurs concurrents sollicitant une ou plusieurs URL pour tester la performance d'un serveur web sous charge. HTTP/HTTPS load and stress-testing tool that simulates concurrent users hitting one or more URLs to test web server performance under load.

↗ https://www.joedog.org/siege-home/

## Overview

Siege is an HTTP/HTTPS benchmarking and stress-testing tool that simulates multiple concurrent users hammering a URL or list of URLs, reporting response times, throughput, and failure rates. On assessments it’s mainly used to check how an application or its rate-limiting/WAF behaves under concurrent load — useful for basic DoS-resilience checks and for confirming whether a login/API endpoint enforces any throttling at all.

## Common Usage

50 concurrent simulated users, each firing 10 requests, against one URL

    siege -c 50 -r 10 https://<target>/

Run for a fixed duration instead of a fixed rep count

    siege -c 25 -t 1M https://<target>/

Hit a list of URLs, in random order, with a random delay between requests

    siege -f urls.txt -c 20 -d 5 -i

Benchmark mode — no delay between requests, maximum stress

    siege -c 100 -r 20 -b https://<target>/api/login

Single verbose request for debugging headers/response

    siege -g https://<target>/

    # urls.txt format — one URL per line, optional POST body
    https://target/login POST username=admin&password=test
    https://target/search?q=test

## Tips

- `-i` (internet mode) randomizes request order across the URL file, better simulating real traffic patterns than sequential replay
- Watch the “Failed transactions” count in the summary — a rising failure rate under load often flags a WAF/rate-limit kicking in, which is useful signal on its own
- `~/.siegerc` holds persistent defaults (timeout, user-agent, logging) so you don’t have to repeat flags every run

Help / Man page

    SIEGE 4.x
    Usage: siege [options]
           siege [options] URL
           siege -f <file>

    Options:
      -c, --concurrent=NUM     number of simulated concurrent users
      -r, --reps=NUM            number of times each user repeats the URL(s)
      -t, --time=NUMm|NUMh       run for a fixed duration instead of reps
      -d, --delay=NUM           max random delay (seconds) between requests
      -f, --file=FILE            read URLs from FILE
      -i, --internet             hit URLs in random order (simulate real traffic)
      -b, --benchmark             no delay between requests, maximum throughput
      -g, --get                  perform a single GET/HEAD, print headers, exit
      -v, --verbose               show request results as they happen
      -q, --quiet                 suppress verbose output

## Vue d’ensemble

Siege est un outil de benchmark et de stress-test HTTP/HTTPS qui simule plusieurs utilisateurs concurrents martelant une URL ou une liste d’URL, en rapportant les temps de réponse, le débit et les taux d’échec. En mission, il sert principalement à vérifier comment une application ou son rate-limiting/WAF se comporte sous charge concurrente : utile pour des vérifications basiques de résilience au DoS et pour confirmer si un endpoint de connexion/API applique un quelconque throttling.

## Utilisation courante

    # 50 utilisateurs simulés concurrents, chacun envoyant 10 requêtes, contre une URL
    siege -c 50 -r 10 https://<target>/

    # Lancer pour une durée fixe plutôt qu'un nombre de répétitions fixe
    siege -c 25 -t 1M https://<target>/

    # Solliciter une liste d'URL, dans un ordre aléatoire, avec un délai aléatoire entre les requêtes
    siege -f urls.txt -c 20 -d 5 -i

    # Mode benchmark : pas de délai entre les requêtes, stress maximal
    siege -c 100 -r 20 -b https://<target>/api/login

    # Requête verbeuse unique pour déboguer les en-têtes/la réponse
    siege -g https://<target>/

    # Format urls.txt : une URL par ligne, corps POST optionnel
    https://target/login POST username=admin&password=test
    https://target/search?q=test

## Conseils

- `-i` (mode internet) randomise l’ordre des requêtes dans le fichier d’URL, ce qui simule mieux des motifs de trafic réels qu’une relecture séquentielle
- Surveiller le compteur “Failed transactions” dans le résumé : un taux d’échec croissant sous charge signale souvent un WAF/rate-limit qui se déclenche, ce qui est un signal utile en soi
- `~/.siegerc` contient des valeurs par défaut persistantes (timeout, user-agent, logging) pour ne pas répéter les flags à chaque exécution

Aide / Page de manuel

    SIEGE 4.x
    Usage: siege [options]
           siege [options] URL
           siege -f <file>

    Options:
      -c, --concurrent=NUM     number of simulated concurrent users
      -r, --reps=NUM            number of times each user repeats the URL(s)
      -t, --time=NUMm|NUMh       run for a fixed duration instead of reps
      -d, --delay=NUM           max random delay (seconds) between requests
      -f, --file=FILE            read URLs from FILE
      -i, --internet             hit URLs in random order (simulate real traffic)
      -b, --benchmark             no delay between requests, maximum throughput
      -g, --get                  perform a single GET/HEAD, print headers, exit
      -v, --verbose               show request results as they happen
      -q, --quiet                 suppress verbose output