В ряде Unix дистрибутивов программка ab идёт предустановленной, в остальных — поставляется с Apache. Поговаривают, что в некоторых странах её несанкционированное использование на чужих серверах(в качестве цели) запрещено и даже карается уголовно. Давайте рассмотрим запретный плод, чем же тут можно «пошухарить» и что она умеет.
Например, выполнить 100 последовательных GET запросов к URL можно так:
1 | ab -n [100] [url] |
Выполнить 100 запросов HTTP GET, обрабатывая до 10 запросов одновременно, по заданному URL
1 | ab -n [100] -c [10] [url] |
Использовать Keep alive
1 | ab -k [url] |
Установить максимальное количество секунд, которое нужно потратить на тестирование
1 | ab -t [60] [url] |
Выполнить 100 запросов HTTP POST к заданному URL-адресу, используя полезную нагрузку JSON из файла.
1 | ab -n [100] -T [application/json] -p [data.json] [url] |
Синтаксис Apache Bench
1 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | Использование: 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) |