Два инструмента, которые помогли мне повысить производительность при тестировании и разработке моих API
При разработке своих API чрезвычайно важно тщательно проверять каждую конечную точку (или запрос). Это происходит по разным причинам, включая безопасность, эффективность, взаимодействие с пользователем и так далее.
В последнее время я разрабатывал API для личного проекта и столкнулся с необходимостью решить, использовать ли Postman или Burp Suite. Это отличные инструменты для тестирования ваших конечных точек и изменения получаемых ими данных, чтобы вы могли гарантировать высокую производительность и безопасность даже в крайних случаях.
Однако, даже если у меня уже был опыт работы с обоими инструментами, я решил поискать альтернативы, которые можно было бы легче настроить и лучше соответствовать моим требованиям, которые в основном таковы:
- легко создавать запросы
- изменять и взаимодействовать с исходящими запросами
- оценка и фильтрация ответов для облегченного тестирования
Я также не хотел тратить время на написание простых в использовании прокси-серверов самостоятельно, что я делаю только тогда, когда стремлюсь к чрезвычайно конкретным вариантам использования, например, всегда автоматически изменяю исходящие запросы к домену test.testing.com
.
После поиска в различных репозиториях GitHub я решил использовать httpie и mitmproxy (а также mitmdump), чтобы помочь мне в разработке API для sTeX.
Разработка API еще не закончена, но я могу сказать, что доволен тем, как сочетаются два инструмента, и хотел поделиться опытом с читателем.
HTTPie
Бьюсь об заклад, что большинство из вас слышали о cURL и/или использовали его. Сокращенный от клиентского URL, cURL (также) является утилитой командной строки для передачи данных между протоколами. Мне нравится cURL, и я много использовал его как для разработки, так и для исследований в области безопасности, но как только я начал использовать httpie, я понял, почему создатели сочли нужным такой проект конкурировать с cURL.
cURL разработан так, чтобы иметь гораздо больше функций, но они редко бывают полезны при повседневном тестировании API. С другой стороны, httpie — это инструмент командной строки, позволяющий легко взаимодействовать со всем, что работает на HTTP или HTTPS, и он разработан, чтобы быть максимально простым и максимально простым.
Его значения по умолчанию гарантируют, что у вас будет максимально гладкая работа при ручной обработке запросов API, например, эта команда httpie:
http http://127.0.0.1 test=data
Преобразуется в следующий HTTP-запрос:
POST / HTTP/1.1 Accept: application/json, */*;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Content-Length: 16 Content-Type: application/json Host: 127.0.0.1 { "test": "data" }
Такой синтаксис очень подходит для большинства API и гарантирует, что пользователю не придется вводить длинные команды перед отправкой желаемого запроса. Конечно, по крайней мере, на мой взгляд, cURL по-прежнему является королем в области создания запросов CLI, но простота и рабочий процесс httpie делают его более подходящим для большинства задач тестирования.
MITMProxy
MITM может показаться вам знакомым, если нет, напомню: главное посередине. Это означает, что mitmproxy буквально размещается между вашими приложениями и сервером, на который они отправляют данные. Такое поведение также называется прокси-перехватчиками и используется всеми современными (или нет) инструментами тестирования API.
Использование таких инструментов в тестировании API простое: вы можете легко изменять, изменять форму и отслеживать данные, которые ваш API получает после выполнения запроса.
Есть два инструмента, которые я использую конкретно:
- митпрокси
- митмдамп
MITMProxy
Этот инструмент хранит все в памяти, и я использую его, когда хочу отслеживать httpie-запросы, которые я делаю (обычно это набор запросов, прямой результат сценария bash для тестирования различных областей API). Это то, что я использую на ходу и быстро отслеживаю, как API реагирует на различные действия пользователя. Например, вы можете протестировать API по списку полезных нагрузок эксплойтов. Я могу эффективно отслеживать эти запросы благодаря хорошей работе фильтров mitmproxy.
MITMDump
С другой стороны, mitmdump (похожий на великий tcpdump) сохраняет все потоки в файлах, что делает его предпочтительным для структурированного тестирования и использования собственных ответов API позже для проведения дальнейшего тестирования. Он также поддерживает добавление пользовательских сценариев к запросам и ответам, хотя я предпочитаю покрывать это своими собственными сценариями.
Три инструмента вместе идеально подошли мне. Я делаю запросы с помощью httpie и использую прокси-сервер mitmproxy (или mitmdump) для мониторинга и анализа запросов и ответов.
Такие инструменты, как Postman, работают очень хорошо, но иногда предлагают слишком много функций, которые нам не нужны, не имеют некоторых параметров настройки, не являются бесплатными и/или с открытым исходным кодом, или мы просто хотим сделать перерыв в графическом интерфейсе и переключиться на командную строку. .
Лично я больше буду использовать комбинацию httpie, mitmproxy и mitmdump. Возможно, я также создам простой бэкенд, чтобы легко делиться результатами и иметь возможность сотрудничать, как в Postman.
Спасибо за прочтение!