RTP DesportoPortugal qualificado para `oitavos` do Europeu de voleibol após derrota de IsraelInquirerMarcos yet to decide on fuel excise tax suspension – Palaceוואלהבגלל תקלה באתר העירייה: המידע רפואי ונתוני הרווחה של תושבי בית שמש היו חשופים לציבורESPNFacts vs. Feelings: What eight notable Week 1 performances mean for Week 2The Jerusalem PostNetanyahu’s New York UN visit sees unusual US Secret Service security involvementESPN DeportesEl mayor éxito y la mayor decepción de los 30 equiposDaily MaverickGROUNDUP: The N1 town’s decade of decay — Beaufort WestBollywood HungamaThe Vvaan Trailer: Sidharth Malhotra and Tamannaah Bhatia starrer explores Indian folklore, supernatural elements and adventure; watchCollider‘Anaconda’ Meets ‘Jurassic Park’ in New Creature Feature With a Truly Gigantic Predator [Exclusive]SCMP ChinaChina uses 100,000 home-grown AI chips to build leading weather forecast systemDeadlineChris Harrison’s Dating Series ‘The Vow’ Sets Premiere On Fox Nation
The Daily Newsstand · Free, Always
Wednesday, September 16, 2026

Как разрабатывать фронтенд без готового бэкенда: инструменты перехвата трафика, мокирования и принцип их работы

Translate

Всем привет, на связи Дима Котиков! Я все еще люблю разрабатывать под Android/KMP, разбираться с инструментами для упрощения работы и латте на фундучном молоке. За пять лет мобильной разработки я неоднократно сталкивался с ситуацией, когда бэкенд запаздывает, а дедлайн горит. 

Зимой 2026 мы получили задачу: новый финансовый инструмент, дедлайн через три месяца, готовность бэкенда — через полтора. Команда начала работу на моках и успела. В статье я расскажу, какие инструменты перехвата и мокирования трафика помогли нам выпустить фичу в срок без готового бэкенда, как настроить их за один вечер и почему понимание принципов работы TLS и MITM-атаки экономит часы отладки.

Проблемы разработки и тестирования мобильных приложений и сайтов

Начну с истории, которая привела к тому, что появился целый цикл статей. В один прекрасный солнечный зимний день на daily-созвоне бизнес-аналитик принес задачу: необходимо реализовать фичу — новый финансовый инструмент для пользователей. 

Исходные данные: бизнесовое описание функционала, готовые дизайны экранов и конкретная дата дедлайна — знакомая ситуация при запуске нового продукта. Системный аналитик берет задачу в проработку спецификации, определяется с необходимым перечнем доработок в различных системах, через некоторое время приносит команде список работ по части мобильной разработки, веб-разработки, доработок бэкенд-части. 

Начинается этап планирования, на котором выясняется, что команды мобильной и веб-разработки готовы браться за работу уже сейчас, а команда бэкенда сможет приступить к своей части доработок только через полтора месяца. Дедлайн на выпуск фичи — три месяца. 

Мы рассмотрели различные варианты и поняли, что сейчас можем утвердить контракты взаимодействия между фронтенд- и бэкенд-частями, тогда команда мобильной и веб-разработки сможет начать реализацию фичи на моках согласованных контрактов end-point-ов, бэкенд начнет разработку своей части через полтора месяца и в позитивном исходе событий примерно месяц остается на интеграционные тесты QA-специалистами и правки отловленных багов. План прост, потому красив — ударили по руками и закоммитились на работу.

В современной фронтенд- и мобильной разработке часто можно встретить ситуации, когда:

  • Необходимо реализовать какой-то функционал, но на бэкенде еще не существует сервиса с REST API, необходимым для интеграции с фронтенд-частью.

  • Запланирована миграция существующих end-point, но реализации еще нет.

  • Тестовая среда нестабильна, тестовые серверы падают либо не соответствуют production-среде.

  • Необходимо посмотреть отправляемые запросы и получаемые ответы в мобильном приложении или сайте: проверить корректность, отправку по специфичным условиям и тому подобное.

  • Необходимо подменить параметры или тело запроса и ответа, чтобы протестировать различные сценарии работы приложения или сайта.

Для решения этого спектра ситуаций можно мокать какие-либо данные в коде, использовать встроенные в IDE средства отслеживания и подмены интернет-трафика и так далее. Иногда этого либо бывает недостаточно, либо перечисленные способы не позволяют более полно протестировать функционал, либо же настройка различных тестовых данных прямо в коде сложна и может сломать функционал. А еще нужно не забыть после тестов удалить эти моки из кода.

Бывает, что нам нужно отправлять какие-то запросы и получать какие-то ответы, но end-point по какой-то причине недоступны или не готовы. В таких случаях нужно использовать специализированные инструменты: перехватчики (снифферы) интернет-трафика и инструменты мокирования ответов от end-point-ов.

Наша история с разработкой фичи на моках в конечном итоге закончилась удачно и все успели к дедлайну. Важную роль в разработке мобильной и веб-части, а еще при тестировании как раз и сыграли инструменты перехвата и мокирования.

Инструменты тестирования и управления HTTP-трафиком

Для разработки функционала с использованием моковых контрактов end-point нам могут быть полезны инструменты для перехвата HTTP-запросов и подмены ответов на моковые контракты. Еще можно перехватить запрос и направить его на локальный сервер, на котором будет развернута тестовая среда с нужными нам моковыми ответами на запросы. Рассмотрим инструменты, которыми можно воспользоваться для этих задач.

Для перехвата, подмены и перенаправления HTTP-запросов пригодятся снифферы трафика — программы, позволяющие перехватывать HTTP-запросы и проводить с ними разного рода манипуляции:

  • подменять «на лету» URL, хедеры, тело запросов и ответов;

  • подменять ответы на запросы заранее подготовленными тестовыми json-файлами;

  • перенаправлять запросы на рабочие тестовые среды;

  • приостанавливать запросы и ответы на них, чтобы проверить различного рода состояния ожидания или загрузки в мобильном приложении или на сайте;

  • смотреть количество отправляемых запросов и правильность передаваемых параметров и так далее.

Примеры снифферов: Charles Proxy, Proxyman, OWASP ZAP.

При отсутствующем или нестабильном бэкенде могут быть полезны инструменты, позволяющие развернуть сервер локально на ПК и замокать необходимые end-point.

Примеры таких программ: JSON Server, WireMock и Mockoon.

Прежде чем окунуться в настройку и использование инструментов, необходимо понимать в общих чертах принцип их работы. Это нужно, чтобы знать что делать и куда копать в случае, когда что-то будет работать не так как ожидается. Поэтому разберем как работает HTTP-соединение и как можно перехватывать трафик в HTTP-соединении.

Общий принцип работы HTTP-соединений и возможности просматривать трафик в них

В нашем разборе работы HTTP-соединения опущены некоторые шаги для упрощения. Чтобы отправить запрос с клиента, устанавливается соединение и происходит так называемый Handshake: TCP, затем TLS. При Handshake происходит обмен ключами и генерация сессионного ключа, после чего этим ключом шифруются передаваемые данные и передаются между клиентом и сервером.

Пошагово это выглядит так:

1. ClientHello — клиент отправляет серверу поддерживаемые им версии TLS, поддерживаемые алгоритмы шифрования и рандомный набор байт (Random_C).

2. ServerHello — сервер отвечает, какую версию TLS из доступных клиенту он выбрал, алгоритм шифрования из предложенных клиентом и свой рандомный набор байтов (Random_S).

3. Сервер отправляет сертификат, обычно это файл с расширением .pem, .crt, .cer. В файле сертификата указан публичный ключ, доменное имя и цифровая подпись удостоверяющего центра сертификатов.

Последовательность установки соединения с первичным «приветствием» клиента и сервера

Последовательность установки соединения с первичным «приветствием» клиента и сервера

4. Клиент проверяет подлинность сертификата — использует ключи root-сертификатов, установленных в систему, чтобы расшифровать цифровую подпись сертификата с сервера. Еще клиент убеждается, что сертификат выдан для того домена, к которому он обращается, и срок действия сертификата не истек.

Проверка подлинности сертификата на клиенте

Проверка подлинности сертификата на клиенте

5. Клиент генерирует симметричный ключ шифрования на открытом ключе сертификата и отдает серверу, сервер расшифровывает ключ закрытым ключом сертификата (схема генерации ключа шифрования сложнее и зависит от версии TLS).

6. На симметричном ключе генерируется Session Keys, на которых и будет происходить шифрование и расшифровка трафика.

Обмен ключами и генерация сессионного ключа

Обмен ключами и генерация сессионного ключа

7. Передача данных, зашифрованных на Session Keys, получение ответа от сервера и расшифровка на этих же Session Keys.

Передача данных с шифрованием на Session Key

Передача данных с шифрованием на Session Key

Соберем все шаги в общую схему.

Полная схема HTTP-соединения и обмена данными

Полная схема HTTP-соединения и обмена данными

Подключение программы-сниффера и прослушивание трафика в расшифрованном виде в этой схеме получается с помощью MITM-атаки.

MITM (Man-in-the-Middle) или «человек посередине» — кибератака, при которой злоумышленник внедряется в канал связи между клиентом и сервером, перехватывая, прослушивая или изменяя передаваемые данные.

В случае с программой-сниффером для того, чтобы перехват трафика MITM-атакой удался, на клиенте устанавливается root-сертификат. Он используется при проверке подлинности сертификата от сниффера.

Пошагово схема взаимодействия «Клиент-Сниффер-Сервер» будет выглядеть так:

1. В систему Клиента добавляется root-сертификат (вручную или через малварь).

2. Клиент отправляет ClientHello на сервер.

3. Сниффер (или MITM-прокси) перехватывает ClientHello и пересылает его от имени Сниффера на Сервер.

4. Сервер отвечает ServerHello Снифферу и передает ему свой оригинальный сертификат.

5. Сниффер проверяет сертификат Сервера и на лету генерирует фальшивый сертификат для хоста Сервера, при этом подписывает фальшивый сертификат тем же root-сертификатом, который установлен и у Клиента (пункт 1).

6. Сниффер отправляет сгенерированный фальшивый сертификат Клиенту.

Схема первичного установления соединения и отправки сертификатов с «посредником» в виде сниффера

Схема первичного установления соединения и отправки сертификатов с «посредником» в виде сниффера

7. На Клиенте проверяется фальшивый сертификат от Сниффера, и, так как на Клиенте установлен root-сертификат от Сниффера как доверенный, при проверке фальшивого сертификата root-сертификатом не выводится никакой ошибки. Клиент думает, что все хорошо.

8. Клиент генерирует сессионный ключ на фальшивом сертификате, Сниффер делает то же самое, между Клиентом и Сниффером устанавливается соединение, зашифрованное на сессионном ключе с использованием фальшивого сертификата.

9. Между Сниффером и Сервером происходит генерация сессионного ключа, но уже на оригинальном сертификате от Сервера, устанавливается соединение между Сниффером и Сервером, зашифрованное на оригинальном сертификате Сервера. Сервер тоже ничего не подозревает.

Схема установки соединения между Клиентом и Сниффером, между Сниффером и Сервером

Схема установки соединения между Клиентом и Сниффером, между Сниффером и Сервером

10. От Клиента уходит запрос к Снифферу, зашифрованный на фальшивом сессионном ключе.

11. Сниффер расшифровывает запрос от Клиента фальшивым ключом, зашифровывает его оригинальным ключом от сессии Сниффер-Сервер и отправляет запрос на Сервер.

13. Сервер расшифровывает данные оригинальным ключом сессии, подготавливает ответ, шифрует его оригинальным ключом и отдает Снифферу.

14. Сниффер расшифровывает ответ оригинальным ключом, зашифровывает фальшивым ключом сессии Клиент-Сниффер, отправляет ответ на Клиент.

15. Клиент расшифровывает ответ, все счастливы.

Обмен запросами и ответами между Клиентом, Сниффером и Сервером

Обмен запросами и ответами между Клиентом, Сниффером и Сервером

Вся схема выглядит так:

Схема взаимодействия «Клиент-Сниффер-Сервер»

Схема взаимодействия «Клиент-Сниффер-Сервер»

Примерно так работает прослушивание трафика при успешной MITM-атаке: ни клиент, ни сервер не подозревают, что с ними общается посредник в виде сниффера. При этом посредник может видеть все данные в незашифрованном виде и производить какие угодно манипуляции: подменить что-либо в запросе, установить соединение не с целевым сервером, а с вредоносным.

Заключение

Мы разобрали, как работает HTTP-соединение между клиентом и сервером и как сниффер встраивается в цепочку «клиент-сервер» и может производить манипуляции с передаваемыми данными. 

Краткие выводы:

  • Для перехвата HTTP-трафика используется механизм MITM-атаки.

  • При MITM-атаке клиент соединяется не напрямую с сервером, а со сниффером/MITM-прокси, в свою очередь сниффер/MITM-прокси соединяется с сервером.

  • Для успешного перехвата трафика снифферу нужно прикинуться сервером для клиента и клиентом — для сервера.

  • Чтобы клиент не заподозрил, что трафик уходит не туда и не разорвал соединение со сниффером, на клиент должен быть установлен root-сертификат, про который знает сниффер. Этим root-сертификатом будет подписываться фальшивый сертификат сниффера и потом проверяться на клиенте.

  • Фальшивый сертификат на лету генерирует и передает сниффер на клиент, используется для шифрования данных, которые передаются между клиентом и сниффером.

  • Между сниффером и легитимным сервером, в свою очередь, устанавливается обычное HTTP-соединение и используется реальный сертификат от сервера для шифрования данных, передаваемых между сниффером и сервером.

В следующих статьях разберем настройку сниффера трафика на примере OWASP ZAP, где нам и пригодятся знания о MITM-атаке, root-сертификате и о том, какую роль это все играет при перехвате интернет-трафика. Не переключайтесь!

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.