Укрощение HTTP-трафика с помощью Proxelar
Иногда отладка взаимодействия с внешним API превращается в гадание на кофейной гуще. Вы отправляете запрос, получаете ошибку и пытаетесь понять: это ваш код сформировал кривой JSON, удаленный сервер капризничает или по дороге потерялся важный заголовок? Конечно, есть проверенный годами Burp Suite или Charles, но они часто кажутся слишком тяжеловесными для быстрой проверки пары запросов. К тому же, их не так просто подружить с автоматизацией на лету.
Недавно я наткнулся на Proxelar — это программируемый MITM-прокси, написанный на Rust. Он подкупает своей легкостью и возможностью писать логику обработки трафика на Lua. Если вам нужно не просто смотреть на летящие байты, но и подменять их «на лету» без правки исходного кода приложения, этот инструмент может стать основным в вашем арсенале.

Зачем это нужно разработчику
Представьте ситуацию: мобильное приложение стучится в продакшн-API, и вам нужно проверить, как оно поведет себя при получении 500-й ошибки или специфического ответа, который сложно воспроизвести на бэкенде. С Proxelar вы просто ставите прокси между приложением и сетью, пишете три строчки на Lua и заставляете прокси возвращать нужный вам JSON для конкретного URL.
Инструмент умеет работать в двух режимах:
- Forward proxy — классический вариант, когда вы настраиваете системный прокси в браузере или ОС.
- Reverse proxy — когда прокси сам выступает в роли «сервера» и перенаправляет запросы на указанный целевой хост.
Три лица одного инструмента
Разработчик проекта не стал ограничивать нас одним интерфейсом. При запуске можно выбрать наиболее удобный формат взаимодействия.
Для любителей терминала по умолчанию доступен интерактивный TUI (Terminal User Interface), построенный на базе библиотеки ratatui. Он выглядит стильно и позволяет быстро перемещаться по списку запросов, фильтровать их и смотреть детали ответа.
Если же вам привычнее работать в браузере, у проекта есть полноценный Web GUI. Он запускается отдельным флагом и предоставляет чистый интерфейс для инспекции трафика. Это удобно, если нужно показать логи коллеге или если вы привыкли к инструментам вроде Chrome DevTools.
Для тех случаев, когда нужно просто видеть поток логов в консоли без лишних украшательств, предусмотрен обычный текстовый вывод в stdout.
Магия Lua-скриптов
Главная фишка Proxelar заключается в его расширяемости. Вместо того чтобы настраивать сложные правила через XML-конфиги или UI, вы пишете простые хуки на Lua. Прокси предоставляет две основные функции: on_request и on_response.
Вот пример того, как можно заблокировать запросы к рекламным доменам или трекерам:
local blocked = { "ads%.example%.com", "tracker%.example%.com" }
function on_request(request)
for _, pattern in ipairs(blocked) do
if string.find(request.url, pattern) then
-- Возвращаем ответ сразу, не отправляя запрос в интернет
return { status = 403, headers = {}, body = "Blocked by Proxelar" }
end
end
end
Или, например, вам нужно добавить CORS-заголовки к ответу сервера, который их не присылает:
function on_response(request, response)
response.headers["Access-Control-Allow-Origin"] = "*"
response.headers["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS"
return response
end
Такой подход позволяет автоматизировать моканье API, инъекцию заголовков или даже модификацию тела HTML-страниц без лишней головной боли.
Как начать работу
Установка максимально простая, особенно если у вас уже есть Rust. Через Cargo:
cargo install proxelar
Или через Homebrew на macOS:
brew install proxelar
Самый деликатный момент в работе с любым MITM-прокси — это HTTPS. Чтобы Proxelar мог расшифровывать защищенный трафик, нужно установить его корневой сертификат. Разработчики упростили этот процесс: после запуска прокси достаточно перейти по адресу http://proxel.ar прямо через него, и он отдаст нужный файл с инструкциями по установке.
Кому стоит попробовать
Proxelar отлично подойдет тем, кто:
- Занимается реверс-инжинирингом мобильных приложений или закрытых API.
- Часто тестирует фронтенд с нестабильным бэкендом и нуждается в быстром моканье ответов.
- Хочет иметь легковесный инструмент для мониторинга сетевой активности без установки громоздкого софта.
Проект еще достаточно молодой, но уже сейчас он выглядит как отличная альтернатива более тяжелым решениям. Написанный на Rust, он работает быстро и потребляет минимум ресурсов, что особенно заметно при больших объемах трафика. Если вам не хватало инструмента, который сочетает в себе простоту CLI и гибкость полноценного скриптового движка, Proxelar определенно стоит добавить в закладки.
