В ряде Unix дистрибутивов программка ab идёт предустановленной, в остальных — поставляется с Apache. Поговаривают, что в некоторых странах её несанкционированное использование на чужих серверах(в качестве цели) запрещено и даже карается уголовно. Давайте рассмотрим запретный плод, чем же тут можно «пошухарить» и что она умеет.
Например, выполнить 100 последовательных GET запросов к URL можно так:
ab -n [100] [url]
Выполнить 100 запросов HTTP GET, обрабатывая до 10 запросов одновременно, по заданному URL
ab -n [100] -c [10] [url]
Использовать Keep alive
ab -k [url]
Установить максимальное количество секунд, которое нужно потратить на тестирование
ab -t [60] [url]
Выполнить 100 запросов HTTP POST к заданному URL-адресу, используя полезную нагрузку JSON из файла.
ab -n [100] -T [application/json] -p [data.json] [url]
Синтаксис Apache Bench
ab [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [-f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -l ] [ -m HTTP-method ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s timeout ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [ -Z ciphersuite ] [http[s]://]host‐name[:port]/path
ab — это инструмент для тестирования вашего сервера Apache Hypertext Transfer Protocol (HTTP). Он разработан, чтобы дать вам представление о том, как работает ваша текущая установка Apache. Это особенно показывает, сколько запросов в секунду может обслуживать ваша установка Apache. Так написано в документации. Добавлю свой комментарий)
Апач тут вообще не причем — это лишь лейба производителя. Подойдёт для любых серверов. Параметр X выглядит наиболее привлекательным. Я знаю) Всё это просится под конструкцию while/for с ампрсандиком на конце и некоторыми рандомными штучками) Не правда-ли? При наличии хорошего списка прокси, и широкого канала, равноценную машину завалить, причем гибридной атакой — раз плюнуть. В случае же сомнений в своих мощностях, утилитой сперва легко можно нащупать наиболее медленно отвечающие странички целевого сайта и «ударить» уже чисто по ним.
Да, пошухарить можно нормально. Вот за такое уголовно ставят в угол уже почти везде. Не делайте так. Мы ЖЫ добрые.
Параметры команды ab
Использование: ab [параметры] [http[s]://]имя хоста[:порт]/путь
Варианты:
-n запросы Количество запросов для выполнения
-c concurrency Количество одновременных запросов
-t timelimit Максимальное количество секунд в секундах. потратить на сравнительный анализ
Это означает -n 50000
-s таймаут Макс. ждать каждого ответа
По умолчанию 30 секунд
-b windowsize Размер буфера отправки / получения TCP в байтах
-B адрес Адрес для привязки при исходящих соединениях
-p postfile Файл, содержащий данные для POST. Не забудьте также установить -T
-u putfile Файл, содержащий данные для PUT. Не забудьте также установить -T
-T content-type Заголовок типа содержимого для использования для данных POST / PUT, например.
'application / x-www-form-urlencoded'
По умолчанию - text / plain.
-v verbosity Сколько информации для устранения неполадок нужно распечатать
-w Распечатать результаты в HTML-таблицах
-i Использовать HEAD вместо GET
-x attributes Строка для вставки в качестве атрибутов таблицы
-y attributes Строка для вставки в качестве атрибутов tr
-z attributes Строка для вставки как td или th атрибутов
-C attribute Добавить cookie, например. 'Apache = 1234'. (повторяемый)
-H атрибут Добавить произвольную строку заголовка, например. 'Accept-Encoding: gzip'
Вставляется после всех обычных строк заголовка. (повторяемый)
-A attribute Добавить базовую аутентификацию WWW, атрибуты
представляют собой имя пользователя и пароль, разделенные двоеточием.
-P attribute Добавить Basic Proxy Authentication, атрибуты
представляют собой имя пользователя и пароль, разделенные двоеточием.
-X прокси: порт прокси-сервера и номер порта для использования
-V Распечатать номер версии и выйти
-k Использовать функцию HTTP KeepAlive
-d Не отображать процентили обслуживаемой таблицы.
-S Не показывать оценки достоверности и предупреждения.
-q Не показывать прогресс при выполнении более 150 запросов
-l Принять переменную длину документа (использовать для динамических страниц)
-g filename Вывести собранные данные в файл формата gnuplot.
-e имя_файла Выводить CSV-файл с обслуживаемым процентом
-r Не выходить из-за ошибок получения сокета.
-m метод Имя метода
-h Показать информацию об использовании (это сообщение)
-I Отключить расширение TLS Server Name Indication (SNI)
-Z ciphersuite Указать набор шифров SSL / TLS (см. Шифры openssl)
-f протокол Укажите протокол SSL / TLS
(TLS1, TLS1.1, TLS1.2 или ВСЕ)
Параметры подробно:
-A auth-username: пароль
Предоставьте серверу учетные данные BASIC Authentication. Имя пользователя и пароль разделяются одной: и отправляются по сети.
в кодировке base64. Строка отправляется независимо от того, нужна ли она серверу (т. Е. Отправил запрос аутентификации 401).
-b размер окна
Размер буфера отправки / приема TCP в байтах.
-B локальный адрес
Адрес для привязки при исходящих соединениях.
-c параллелизм
Количество одновременных запросов на выполнение. По умолчанию - один запрос за раз.
-C cookie-имя = значение
Добавьте в запрос строку Cookie :. Аргумент обычно имеет форму пары имя = значение. Это поле повторяется.
-d Не отображать «процент обслуживания в таблице XX [мс]». (поддержка старых версий).
-e csv-файл
Напишите файл значений, разделенных запятыми (CSV), который содержит для каждого процента (от 1% до 100%) время (в миллисекундах), которое потребовалось для
обслуживают этот процент запросов. Обычно это более полезно, чем файл 'gnuplot'; так как результаты уже «забиты».
-f протокол
Укажите протокол SSL / TLS (SSL2, SSL3, TLS1, TLS1.1, TLS1.2 или ALL). Поддержка TLS1.1 и TLS1.2 доступна в 2.4.4 и новее.
-g gnuplot-файл
Запишите все измеренные значения в файл 'gnuplot' или TSV (значения на вкладке). Этот файл можно легко импортировать в такие пакеты, как
Gnuplot, IDL, Mathematica, Igor или даже Excel. Ярлыки находятся в первой строке файла.
-h Показать информацию об использовании.
-H настраиваемый заголовок
Добавить в запрос дополнительные заголовки. Аргумент обычно имеет форму допустимой строки заголовка, содержащей поля, разделенные двоеточиями:
пара значений (например, «Accept-Encoding: zip / zop; 8bit»).
-i Выполнять запросы HEAD вместо GET.
-k Включить функцию HTTP KeepAlive, т. е. выполнять несколько запросов в рамках одного сеанса HTTP. По умолчанию KeepAlive не используется.
-l Не сообщать об ошибках, если длина ответов непостоянна. Это может быть полезно для динамических страниц. Доступно в версиях 2.4.7 и
позже.
-m HTTP-метод
Пользовательский метод HTTP для запросов. Доступно в версии 2.4.10 и новее.
-n запросов
Количество запросов, которые нужно выполнить для сеанса тестирования. По умолчанию выполняется всего один запрос, который обычно приводит к
нерепрезентативные результаты сравнительного анализа.
-p POST-файл
Файл, содержащий данные для POST. Не забудьте также установить -T.
-P proxy-auth-username: пароль
Предоставьте учетные данные BASIC Authentication прокси на маршруте. Имя пользователя и пароль разделяются одной: и отправляются на
проводное кодирование base64. Строка отправляется независимо от того, нужна ли она прокси-серверу (т. Е. Отправлено 407 прокси-аутентификации).
-q При обработке более 150 запросов ab выводит счетчик прогресса на stderr каждые 10% или около 100 запросов. Флаг -q будет поддерживать
нажмите эти сообщения.
-r Не выходить из-за ошибок получения сокета.
-s тайм-аут
Максимальное количество секунд ожидания до истечения времени ожидания сокета. По умолчанию 30 секунд. Доступно в версии 2.4.4 и новее.
-S Не отображать значения медианы и стандартного отклонения, а также не отображать сообщения с предупреждениями / ошибками, когда среднее значение и медиана больше
чем одно или два раза больше стандартного отклонения. И по умолчанию значения min / avg / max. (поддержка старых версий).
-t ограничение по времени
Максимальное количество секунд, которое нужно потратить на тестирование. Это подразумевает -n 50000 внутри. Используйте это, чтобы протестировать сервер в
фиксированное общее количество времени. По умолчанию ограничений по времени нет.
-T тип содержимого
Заголовок типа содержимого для использования для данных POST / PUT, например. приложение / x-www-form-urlencoded. По умолчанию text / plain.
-u PUT-файл
Файл, содержащий данные для PUT. Не забудьте также установить -T.
-v многословие
Установить уровень детализации - 4 и выше печатает информацию в заголовках, 3 и выше печатает коды ответов (404, 200 и т. Д.), 2 и выше
печатает предупреждения и информацию.
-V Показать номер версии и выйти.
-w Распечатать результаты в HTML-таблицах. Таблица по умолчанию состоит из двух столбцов с белым фоном.
-x <таблица> -атрибуты
Строка для использования в качестве атрибутов для <table>. Атрибуты вставляются <таблица здесь>.
-X прокси [: порт]
Используйте прокси-сервер для запросов.
-y <tr> -атрибуты
Строка для использования в качестве атрибутов для <tr>.
-z <td> -атрибуты
Строка для использования в качестве атрибутов для <td>.
-Z шифровальный набор
Укажите набор шифров SSL / TLS (см. Шифры openssl)