В ряде 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)