
Содержание статьи
от Sumit Gupta
Руководство по использованию прокси-сервера (mitmproxy) для получения нужного ответа

Скажем, вы разрабатываете функцию в веб-приложении электронной коммерции.
Вы должны показать баннер «Товар отсутствует» на странице «Корзина», когда товар отсутствует.
Вы достигли конечной точки /cart
и эта конечная точка возвращает что-то вроде этого.
[ { "name": "SomeShoes", "soldOut": false, "price": "$50", "quantity": 1, ... }]
Ты получаешь soldOut
как true
когда товар распродан.
Чтобы облегчить развитие, вам нужно смоделировать это поведение.
Некоторые способы сделать это:
- Вы добавляете товар в корзину, затем входите как другой пользователь, чтобы купить весь доступный запас. Это имитирует, что продукта нет в наличии для первого пользователя.
- Вы добавляете товар в корзину, затем изменяете данные или изменяете код в серверном API, чтобы убедиться, что товар распродан.
Оба вышеупомянутых подхода сработают, но оба могут потребовать много работы. Если эти API внешние, тогда вы будете иметь почти нулевой контроль. Первый подход может быть возможен, но второй подход невозможен.
Что, если бы вы могли взломать свой путь и изменить ценность soldOut
к true
без одного из вышеперечисленных методов?
Введите прокси-сервер
Прокси-сервер позволяет видеть ответ от сервера и изменять его еще до поступления во внешнюю программу. Вы можете перехватить /cart
Вызов API и изменение значения soldOut
к true
в ответе.
Представьте, сколько времени вы сэкономите. Все что вы хотели, это проверить, как выглядит ваш распроданный баннер, когда он появляется, если вообще выглядит.
Никто не хочет менять мир, чтобы убедиться, что он получает правду, а не ложь.
Выбор прокси-сервера
Есть много прокси-серверов, которые позволят вам это сделать, и один из них mitmproxy.
mitmproxy – это бесплатный инструмент с открытым кодом для Windows, Linux и Mac.
Вот как использовать mitmproxy (приведенные ниже команды предназначены для Mac, но они также должны работать в Linux).
Установка
Мак: brew install mitmproxy
Другие: Вы можете найти инструкцию по установке здесь.
mitmproxy имеет командную строку и веб-интерфейсы.
Веб-интерфейс
Для запуска прокси-сервера используйте команду:
Мак: mitmweb --port 9000 --web-port 9001
Windows: mitmweb.exe --listen-port 9000 --web-port 9001
здесь,--port
и --listen-port
используется для указания порта, на котором будет работать прокси-сервер --web-port
используется для указания порта для веб-интерфейса сервера.
Теперь откройте URL-адресlocalhost:9001
Ниже приведен веб-интерфейс прокси-сервера, где вы можете увидеть каждый проходящий через него запрос.

Теперь нам нужно маршрутизировать все сетевые запросы через него.
Для этого я использую Firefox, поскольку он поддерживает добавление настроек прокси и сертификатов только для Firefox.
Примечание: можно использовать телефон/эмулятор Android или любой другой клиент.
Настройка Firefox

Настройки прокси
Установите и откройте Firefox.
В настройках выберите «Параметры подключения».
Здесь вы вручную добавите конфигурацию прокси. Если вы придерживаетесь этого руководства, добавьте localhost
в HTTP-прокси и порт как 9000
.
Также удалите текст «Нет прокси».
Установка сертификата mitmproxy
Для работы mitmproxy необходимо установить сертификат. В противном случае ваш браузер не позволит вам ничего получить.
НЕ устанавливайте эти сертификаты в вашей системе. УСТАНАВЛИВАЙТЕ ИХ ТОЛЬКО НА КЛИЕНТ(в этом руководстве клиентом является Firefox). Установка этих сертификатов в вашей системе является уязвимым местом безопасности.
Это еще одна причина, почему я выбираю Firefox. Firefox позволяет устанавливать сертификаты только для себя.

Откройте URL-адрес «mitm.it» в Firefox и нажмите «Другой”, чтобы установить сертификат. Установите флажок «Доверять этому ЦС для идентификации веб-сайтов».
Приведенный выше шаг установит сертификат mitmproxy только в Firefox.
Не устанавливайте сертификат, щелкая Apple, Windows или Android, если ваш клиент не является виртуальной машиной Windows, симулятором iOS/эмулятором Android или настоящим телефоном, который вы хотите использовать в качестве клиента.
Мы закрыты и загружены
Нажмите любой URL-адрес и проверьте веб-интерфейс mitmproxy. Вы найдете свой запрос/ответ там.
Изменение запроса и ответа
Чтобы изменить запрос и ответ, необходимо сначала перехватить запрос.
Когда вы перехватываете запрос, он останавливается дважды. Один раз, когда он поступает на сервер и второй раз, когда ответ поступает от сервера.
Чтобы перехватить его, добавьте шаблон URL в текстовое поле «Перехватить».

На изображении выше я перехватил URL-адрес, содержащий «localhost». Запросы отображаются в левом нижнем поле. Текущий запрос приостанавливается, поскольку он перехвачен. Вы можете изменить запрос здесь.
Теперь перейдите на вкладку Поток и нажмите кнопку восстановления.

Теперь ваш запрос поступил на сервер и ответ поступит. Этот запрос снова будет приостановлен, но на этот раз он вернется в Firefox, и вы также можете изменить ответ.
Момент сиять
Теперь измените это soldOut
к true
и нажмите кнопку «Восстановить», чтобы увидеть магию (хак *кашель) произойти. Ваш внешний интерфейс получит измененный ответ, и он должен показать вам баннер «Товар отсутствует», которого вы ждали всю жизнь.
Вы можете изменить все ответ и запрос. Буквально, от головы к телу, печенье и все остальное.
Интерфейс командной строки (недоступен в Windows)
mitmproxy также имеет отличный интерфейс командной строки.
Для запуска прокси-сервера в CLI используйте команду mitmproxy --port 9000
здесь,--port
используется для указания порта, на котором должен работать этот сервер.

Вы будете поздравлены этим. удар ?
для ярлыков CLI.
Как указано в разделе конфигурации веб-интерфейса, настройте Firefox.
На этом этапе вы сможете увидеть все запросы/ответы, проходящие через ваш прокси-сервер.
Для перехвата запроса нажмите i
и добавьте шаблон URL (это регулярное выражение).
Так же, как и веб-интерфейс, mitmproxy дважды перехватывает запросы: один раз при переходе на сервер и снова при возвращении с сервера.

Я добавил узор localhost
. Он перехватил запрос. Нажмите Enter для просмотра этого приостановленного запроса.

Для изменения нажмите e
и вам будут предоставлены варианты изменить все, что вы хотите.
удар a
чтобы разрешить запросу отправляться на сервер. Теперь вы можете просмотреть ответ и изменить его.

Выше есть вкладка ответов. удар e
и вы можете изменить ответ. Пресс a
снова, чтобы ответ поступил в Firefox.
Это некоторые основные команды, которые можно использовать. Для получения дополнительной помощи нажмите ?
.
Теперь войдите в разработку программного обеспечения, например:

Для получения дополнительной информации о mitmproxy обратитесь к документации здесь.
Если вам понравилась статья, нажмите ? кнопку и поделитесь, чтобы помочь другим найти его! Не стесняйтесь оставить комментарий ниже.
Впервые опубликовано на www.plightofbyte.com 13 марта 2018 г.