Как подменить запрос в charles

Charles: незаменимый тул в арсенале QA-инженера

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles
Для тестирования мобильных приложений, работающих с удаленными серверами, QA-инженеру приходится держать под рукой множество разных тестовых аккаунтов, логов, запросов и ответов. Реальность такова, что не всегда удается договориться о предоставлении нужных тестовых данных в срок. Чаще всего серверные разработчики будут незнакомыми вам людьми по ту сторону Скайпа. В таких ситуациях приходится своими руками подменять ответ сервера перед его передачей в приложение.

Чтобы редактировать выдачу сервера и воспроизводить сложные тестовые сценарии в QA Redmadrobot, мы используем Charles.

Как это работает?

Charles — инструмент для мониторинга HTTP/HTTPS трафика. Программа работает как прокси-сервер между мобильным приложением (в нашем случае) и сервером этого приложения. Charles записывает и сохраняет все запросы, которые проходят через подключенный к нему телефон и позволяет их редактировать.

1. Качаем и устанавливаем.
2. При первом запуске Charles заботливо предложит автоматически настроить параметры сети — соглашаемся.
3. Переходим в Proxy > Proxy Settings и выставляем порт 8888, если он уже не прописан.
4. На телефоне заходим в настройки Wi-Fi и прописываем в прокси сервер IP-адрес вашего Mac и порт 8888.
Телефон должен быть подключен к той же Wi-Fi сети, что и ваш Mac.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

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

Для мониторинга HTTPS-трафика нужно пройти дополнительные шаги:
5. Переходим в браузер телефона и заходим на www.charlesproxy.com/getssl для установки сертификата SSL, который будет использоваться при подключении. Устанавливаем.
6. В списке хостов выбираем желаемый хост с HTTPS и ставим галочку Enable SSL Proxying.
Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Готово. Теперь в клиенте Charles отображается HTTPS-трафик по выбранному хосту.

Важно
Если ваше приложение использует SSL pinning, то Charles не сможет перехватывать запросы и ответы.

Мониторинг трафика


Для наглядной демонстрации работы с API используем приложение Хабрахабр для Android. На iPhone стоит защита от программ типа Charles, но на Android её нет.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Charles выстраивает все запросы в порядке их отправки на сервер. Запросы и ответы можно просматривать как в отформатированном, так и в «сыром» виде. В QA Redmadrobot во время тестирования телефон всегда подключен к Charles. Таким образом остается возможность посмотреть историю запросов и отследить хитрые баги.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Подмена данных


Как видите, у меня не так много кармы. Charles поможет сделать вид, что её чуть больше, чем есть на самом деле.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Выдача по аккаунту выглядит так (только JSON-строка, без header’ов):

В логе есть поле score:
По всей видимости, как раз то, что мне нужно.

Rewrite settings

Для подмены серверных данных открываем Tools > Rewrite.
В списке слева отображаются сеты из запросов, которые можно составлять на свой вкус. После создания сета идет выставление location. Здесь мы прописываем URL запроса с query параметрами (по желанию).

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

Окно создания правила будет выглядеть следующим образом:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Сам экран подмены будет выглядеть приблизительно так:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Следующий ответ по запросу информации о себе будет иметь отредактированные данные, score = 5000:

При следующем переходе на экран профиля в приложении Хабра мы увидим плод своих трудов.
Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

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

Таким же образом можно подменять не только ответы, но и запросы. Для этого на экране Rewrite rule нужно поставить галочку в поле Request, а не Response.

Breakpoints

При подмене запросов с помощью Rewrite settings в Charles невозможно редактировать кириллицу. При изменении любой информации на кириллицу ваши логи будут состоять из множества вопросительных знаков.

К счастью, этот недостаток можно обойти с помощью другой функции Charles — breakpoints. Идея похожая, но только ответы останавливаются прямо перед передачей в МП, и их можно редактировать своими руками в реальном времени.

Открываем Breakpoints settings и прописываем URL запроса.
Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

При следующем ответе по этому запросу Charles перехватит всю выдачу и позволит нам с ней работать. Следует держать в голове, что МП может выкинуть ошибку по тайм-ауту, и текущий запрос уйдет в никуда.
Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Заменим мой логин на что-нибудь, написанное на кириллице.
Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Вот и все. Приложение отображает нужную нам информацию и проблем с кириллицей не возникает.
Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Самое главное

Источник

Погружение в Charles Proxy

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Привет, Хабр! Меня зовут Настя, я работаю в команде тестирования мобильных приложений компании FunСorp.

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

Если повезло, то кандидат знает о необходимости проверки сетевого взаимодействия, но, за редким исключением, его знания ограничены Rewrite или Breakpoints.

Сегодня я расскажу, с какими задачами сталкиваются тестировщики мобильных приложений в FunСorp и как в этом помогает Charles Proxy.

Случай из жизни

Прежде чем двигаться дальше, сравните два кейса, которые подчеркнут важность проверок на сетевом уровне.

Ситуация 1: тестировщик пропускает баг вёрстки счётчика подписчиков для пользователя, у которого больше миллиона фолловеров. Неприятно, но на ценности продукта для пользователя сильно не скажется.

Ситуация 2: в приложение добавлена настройка получения push-уведомлений. Проверяя их отключение, тестировщик увидел подтверждение и посчитал сценарий пройденным. После релиза посыпались жалобы пользователей на слишком большое количество уведомлений, им приходилось отключать их на уровне ОС или удалять приложение. Для бизнеса такая ситуация критична: метрики искажаются, а пользователи утекают.

Почему так произошло? На бэкенде раскатили неудачный коммит, и на запрос отключения уведомлений возвращалась ошибка сервера. Мобильный клиент не обрабатывал получение кода 500, но тестировщик и пользователь видели попап отписки, хотя она не происходила. Если бы тестировщик обратил внимание на нестандартный код ответа API, то проблему быстро бы обнаружили и решили. Правда, в этот случай ещё вмешался сломанный мониторинг и отсутствие тестов на бэкенд, но всегда помните, что вы можете оказаться единственным тестировщиком на задаче или продукте и перепроверить будет некому.

К чему это всё? К тому, что использование сниффера может избавить вас от таких ошибок.

Что мы используем в FunCorp?

Charles Proxy в FunСorp стал стандартом де-факто. Этот инструмент предоставляет множество возможностей и в то же время прост в использовании, что снижает порог входа. Так тестировщики, разработчики и менеджеры находятся в одном информационном поле.

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

Задача 1. Слушаем, смотрим, анализируем

Подготовка

Если знаете, как установить Charles в связке с мобильным устройством, можете смело пропускать эту часть.

Результат шага: мы запустили Charles, отображается трафик приложения, а также соединения рекламных и системных сервисов.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Примечание 1: по дефолту трафик ПК будет также проходить через Charles. Чтобы в сниффере отображался только трафик подключенных устройств, снимаем галку в настройках проксирования.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Примечание 2: мы не включаем расшифровку сетевых соединений на все хосты сразу, т.к. это помешает проверке сценариев интеграции со сторонними сервисами (Twitter, Facebook, и т.д), покупки и прочего — самоподписанный сертификат Charles не вызовет доверия.

Фильтрация информации

Найти интересующую тестировщика информацию можно несколькими способами.

Structure view + Focus Mode

Представление Structure view удобно, если хотим узнать, к каким ручкам выполняется обращение. Список проксируемых ручек отображается слева. Выберем конкретный запрос и в правой части увидим информацию о нём. Во вкладке Overview будет техническая информация по статусу соединения, коду ответа, времени отправки запроса и времени получения ответа и так далее, во вкладке Contents можно выбрать формат и заглянуть в тело запроса или ответа, а также посмотреть заголовки.

Для уменьшения количества хостов в левой части на помощь придёт Focused Mode. Находим нужную ручку, вызываем контекстное меню, выбираем Focus.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Теперь ручки, для которых выбран Focus, будут закреплены в верхней части списка. Остальные сгруппированы в Other Hosts.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

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

Да, стало проще искать информацию о конкретных пакетах. Ещё хотелось бы видеть на одном экране техническую информацию о пакете и тело. Кроме того, в этом представлении не видно, насколько позже или раньше уходит один запрос относительно другого. В этом нам поможет Sequence view.

Sequence view

Переключаем вкладку на Sequence и видим последовательность коннектов, в верхней части экрана будут появляться новые и новые подключения, обмен информацией не останавливается. Выбрав конкретное подключение, получим информацию о запросе и ответе для конкретного соединения на одном экране.

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

Можно создать кастомную колонку по любому полю заголовков запроса/ответа. Например, рекламные SDK часто передают полезную информацию в заголовках ответа.
Для настройки нажимаем на заголовок таблицы ПКМ и выбираем New Custom Header Column. Указываем название заголовка.

Ставим галочку Focused и видим только те ручки, что ранее выбрали через Structure view.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Ещё одна классная фича — возможность обходиться без галочки Focused и делать фильтрацию с помощью регулярок. Для этого нужно нажать на Settings справа от строки фильтрации и поставить галочку тут:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Теперь, составив, например, такой фильтр, увидим тот же результат, как при использовании галочки Focused.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Анализируем результаты

Ещё раз зафиксируем, на что в общем случае стоит обратить внимание:

В каких случаях стоит насторожиться и бежать к бэкендерам:

Задача 2. Меняем API

Случается, что мобильным тестировщикам приходится проверять фичу на тестовом API, которое пока не задеплоено на продакшен. Можно попросить разработчиков добавить developer mode, в котором будет возможность изменить ручку API, но можно это сделать и без внесения изменений в код.

Итак, у нас есть URL тестовой среды, на которой можно протестировать фичу — https://api-1111.ifunny.mobi, и URL продового API — https://api.ifunny.mobi.
Charles позволяет решить эту задачу следующими способами.

Map Remote

С помощью Map Remote можно без СМС и регистрации выполнить переадресацию запросов с некоторого URL (Map From) на другой (Map To). Подменяем только хост, путь целиком или только параметры (в зависимости от задачи).
Настраиваем Map Remote для решения текущей задачи. Чтобы перейти в настройки Map Remote, выбираем Tools: Map Remote или для macOS (⌘⌥M). Шорткаты ускорят работу в Charles.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles
Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Примечание: Charles автоматически распарсит части URL при копировании и вставке. Вставляем URL в строку Host, нажимаем Tab. Protocol, Port, Path, Query заполнятся сами.

Rewrite

Rewrite — самый мощный механизм Charles. В коллекциях на текущем проекте порядка 30 наборов рерайтов (Rewrite sets) с десятками вложенных правил (Rewrite rules).

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Чтобы добавить первое правило, нажимаем на (4). Появляется скромное окошко, обладающее большими возможностями.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Rewrite — это подмены: в заголовках (header rules), в пути (URL), в параметрах (query parameter rules) и в теле запроса или ответа (body rules).

Помимо подмен можно добавить или удалить новые заголовки, параметры запроса, когда это нужно. Для этого выбираем подходящее для задачи значение из выпадающего списка Тип (Type).

Для правила требуется указать область действия: запросы клиента (Request), ответы сервера (Response) или и те, и другие. Устанавливаем соответствующие чек-боксы.

Рассмотрим алгоритм применения Rewrite. Если указать маркер применения правила через блок Match, выполнится поиск этого значения в пакете, а затем замена на значение из блока Replace. Здесь и в некоторых других местах полезно использовать регулярные выражения, при необходимости — соответствующий чек-бокс. При пустом блоке Match замена применится везде, где можно. Заменится весь хост при типе Host или всё тело пакета при типе Body.
Ещё можно выбрать опцию «Подменить один раз» (Replace First), тогда Rewrite будет применён только по первому совпадению. Заполнение полей может оказаться недоступным для некоторых типов правил.

Для смены API подойдёт Type: Host. Нужное правило выглядит так:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Можно не прописывать Match, потому что указан Location, к другим хостам правило не применится, но Value пришлось бы указать целиком.

Задача 3. Проверяем нестандартные коды ответа

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

Прежде чем приступить к проверке, уточняем детали со стороны продукта и разработки:

Block Lists, Allow Lists

Block List позволяет добавить URL, запросы к которым будут заблокированы путем разрыва соединения или возврата 403 кода ответа. Включаем так:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Allow list работает по обратной логике: указываем те URL, обращения к которым разрешены. Остальные соединения сбрасываются или возвращается 403 ошибка.

Задача 4. Безопасный способ подменить тело

Представьте, вы нашли баг: приложение падает при получении рекламного креатива. Сниффер включён, сессия сохранена.

Через время разработчику требуется воспроизвести ситуацию у себя, а рекламодатель не спешит возвращать ту же рекламу, что привела к ошибке. Что делать? Открываем сохраненную сессию и находим креатив.

Map Local

Для подмены ответа сервера целиком можно использовать Map Local (⌘⌥L). Это удобный инструмент, который позволяет заменить удалённый файл на тот, что хранится локально на машине. Указываем ручки, ответы к которым надо подменить, и выбираем файлы у себя в системе, предварительно сохранив их в нужном расширении/формате (json, xml и т.п., поддерживаются медиа и другие менее популярные форматы). В контексте представленного кейса нам надо откопать приводящий к проблеме креатив из сохранённой сессии, положить себе в папку и включить на него Map Local.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Здесь можно также воспользоваться Rewrite. Выбираем Type: Body, поле Match остаётся незаполненным, если заменяем тело целиком. Вставляем простыню с телом ответа в поле Value блока Replace, применяем.

Заменить определённую часть запроса/ответа через Rewrite также не представляет сложности.
Это полезно, когда мы хотим получить на клиенте какие-то значения, которые трудно сгенерировать на тестовой или продакшен-среде. Для этого в поле Match указываем, какую пару «ключ-значение» ответа API мы ищем, а в Replace — на какую пару подменяем.

Задача 5. Таймауты и троттлинг.

Плох тот тестировщик, который тестирует свое приложение только в условиях мощного офисного WiFi, находясь в одной сети с серверами. Как можно выяснить, что потери и задержки не нарушают usability для пользователя, или обнаружить, что при получении таймаута приложение не может восстановиться?

Настройки троттлинга (⇧⌘T) в Charles выглядят так :

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Подбираем те, которые превратят любимое приложение в тыкву, а для тестирования таймаутов используем Breakpoints (⇧⌘K).
Примечание: Пользуйтесь возможностью включить троттлинг только на определённых хостах.

Брейкпоинты в Charles — это очень крутая штука. Информация о них будет в первых результатах поисковой выдачи по запросу «как подменить ХХХ в Charles». Их действительно можно использовать вместе или вместо Rewrite, но для подмен они не очень подходят.

Breakpoints работают так же, как бряки в коде. Получили совпадение по запросу или ответу — остановили выполнение, можем внести изменения в любую часть пакета. При этом подмена применится только на один пакет — нет повторяемости. Можно выйти за таймаут, пока выполняешь изменения. Другие способы подмены лишены этих ограничений.

Из неочевидного

Оптимизируем Rewrite

Что ещё здесь интересного? Активных правил в наборе может быть несколько, они применяются последовательно, сверху вниз. Значит, одно и то же место может изменяться несколько раз подряд.
Если есть какая-то структура, которая должна принимать несколько вариантов значений в зависимости от необходимости, то можно сделать следующее:

Например, приложение использует некоторое количество ID для получения рекламы. Мы хотим их все подменять то на один тестовый ID, то на другой. Здесь сначала все ID будут заменены на your_var, а your_var будет следом заменено в зависимости от простановки чек-боксов.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Если включить оба чек-бокса из примера одновременно, то вторая подмена уже не применится.

Примечание 1: никто нас не ограничивает в сложности используемых подмен, регулярных выражений, но некоторые нюансы типа того, что выше, могут затруднять отладку или привести к ненужному срабатыванию правил.

Примечание 2: «Я всё делаю правильно, но Rewrite не работает».

Проверяем, что Rewrite был применён к выбранному пакету, информация об этом в явном виде есть во вкладке Overview и Notes:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Включаем логи в Charles в окне Rewrite:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Убедимся, что другие наборы Rewrite не переписывают поверх наше правило. Отмеченные чек-боксами наборы также применяются друг за другом, сверху вниз, как и правила внутри набора.

Убедимся, что все чек-боксы на своих местах.

Убедимся, что не произошло ошибки при копировании-вставке. Известный баг Charles на macOS: при копировании в буфер обмена при раскладке клавиатуры, отличной от английской, данные в буфере задваиваются и вставляется два значения вместо одного.

Auto save

Один из недостатков Charles — утечки памяти, возникающие при продолжительной записи сессии. Чтобы избежать утечек, необходимо регулярно очищать активную сессию. Из-за этого возникают ситуации, когда вы случайно очистили нужную сессию. Чтобы защититься, автоматизируем сохранение сессий.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Mirror

Еще одна не самая очевидно полезная функция — Mirror (⌘⌥I). Эта фича позволяет автоматически сохранять все ответы, возвращаемые в Charles. Они раскладываются локально в такой же иерархии, как на сервере. Если внезапно случился даунтайм на бэкенде, отвалилась тестовая среда и так далее, у вас есть готовые моки для Map Local.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

На этом всё. Я постаралась раскрыть возможности Charles Proxy для тестировщиков мобильных (и не только) приложений в разрезе тех задач, которые мы решаем в FunСorp. Если какие-то функции, которые вы используете, остались за бортом, пожалуйста, напишите об этом в комментариях.

И помните: хороший тестировщик клиент-серверных приложений всегда прикладывает к багу сессию из любимого сниффера.

Источник

Как приручить Charles Proxy?

Привет! Многие из тех, кто приходит к нам на собеседование на должность тестировщика, с гордостью заверяют, что они могут пользоваться Charles Proxy. Но когда погружаешься в техническую часть, то становится очевидно, что кандидат только слышал об этом инструменте. Давайте уже наконец скорее приручим эту вазу!

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Википедия нам сообщает, что:

Charles представляет собой кроссплатформенное приложение прокси-сервера для отладки HTTP, написанное на Java. Он позволяет пользователю просматривать HTTP, HTTPS и активированный трафик TCP-порта, доступ к которому осуществляется с локального компьютера, на него или через него. Сюда входят запросы и ответы, включая HTTP-заголовки и метаданные (например, файлы cookie, кэширование и кодирование информации), с функциями, предназначенными для помощи разработчикам и тестировщикам в анализе соединений и обмене сообщениями.

Небольшое пояснение

Сниффинг — процесс мониторинга и перехвата всех пакетов, проходящих через сеть, с помощью инструментов сниффинга (Charles Proxy).

Первые шаги

1. Установка и запуск

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

Если у вас не приобретена лицензия, то будет доступна 30-ти дневная пробная версия с ограничениями (функциональность не блокируется, но будут появляться окна с таймаутом 5-10 секунд до возобновления использования, а также через 30 минут будет завершаться работа приложения).

2. Начинаем сниффить трафик

Запустите Charles Proxy на MAC, зайдите в меню HelpSSL ProxyingInstall Charles Root CertificateУстановить сертификатИмпортируем сертификат.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Запустите Charles Proxy на Windows, зайдите в меню HelpSSL ProxyingInstall Charles Root Certificate

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

В Windows, в открывшемся окне СертификатУстановить сертификат. Выбрать «Текущий пользователь» или «Локальный пользователь». Далее вы получите уведомление от мастера импорта сертификатов, что сертификат успешно импортирован.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

3. Проксирование трафика веб-браузера

Рассмотрим вариант с проксированием на примере браузера Mozilla Firefox. И установку сертификата на примере двух OS: MAC и Windows.

3.1 Windows
Для этого узнаем IP-адрес ПК: в Charles Proxy перейдем в HelpLocal IP Address. Видим, что ваш IP: 10.0.2.15 (p.s. в Local IP Address может быть несколько указано IP, например отображаться IP от VirtualBox, если после указания одного IP не будут отображаться запросы, попробуйте выбрать другой из списка).

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Далее откроем Mozilla Firefox, перейдем в Параметры сетиНастроить. Выставим все как на скриншоте ниже и нажмем Ок.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Теперь необходимо перейти по ссылке chls.pro/ssl, а далее начнется автоматическая загрузка сертификата. В этот момент будет входящее соединение в Charles Proxy, необходимо нажать Allow, а также выполнить импорт сертификата:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Далее откроем Mozilla Firefox, перейдем в Параметры сетиНастроить.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Выставим все как на скриншоте и нажмем Ок.

Теперь необходимо перейти по ссылке chls.pro/ssl, а далее начнется автоматическая загрузка сертификата.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

В этот момент будет входящее соединение, необходимо нажать Allow:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Следующим шагом обратите внимание на диалоговое окно, где необходимо выбрать Открыть в keychain:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Важным шагом, который вы должны сделать далее, это в Keychain Access сделать сертификат доверенным:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles
Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles
Не забудьте деактивировать Windows Proxy (если у вас ОС Windows) или Mac Proxy (в противном случае будет вам мешать).

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Теперь у вас отображаются запросы, однако они зашифрованы, и кроме иероглифов ничего не видно. Чтобы видеть Request/Response в нормальном виде, нужно включить SSL Proxying и настроить домены, пакеты которых мы хотим перехватывать. А хотим мы получать запросы со всех сайтов. Для этого перейдите в раздел ProxySSL Proxying Settings.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

В открывшемся диалоговом окне поставьте галочку Enable SSL Proxying, выберите раздел Include и нажмите Add.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Далее заполните поле Host значением * (как показано на скриншоте) и нажмите ОК.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

В диалоговом окне «SSL Proxying Settings» нажмите ОК.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Если необходим будет определенный host, следует указать например нужный *youla* (это значит, что будет расшифровываться трафик только тот, где в запросах есть youla.

4. Настройка прокси на Android

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

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Далее возьмите в руки телефон, откройте Свойства сети → Название сети WiFi → Прокси-сервер → Вручную → Имя хоста: *ваш IP* / Порт: *8888* → Сохраните измененные свойства сети.

Теперь необходимо перейти по ссылке chls.pro/ssl или charlesproxy.com/getssl, а далее начнется автоматическая загрузка сертификата. Откройте его, задайте имя сертификата, и теперь у вас есть доступ к трафику Android-приложения.

5. Настройка прокси на iOS

Возьмите в руки iPhone, откройте Свойства сети → Название сети WiFi → Прокси-сервер → Вручную → Имя хоста: *Наш IP* / Порт: *8888* → Сохраните измененные свойства сети (важно: устройство iOS и десктоп должны быть в одной сети).

Теперь необходимо перейти по ссылке chls.pro/ssl или charlesproxy.com/getssl, «Разрешить» загрузку профиля конфигурации. Далее перейдите в НастройкиПрофиль загруженУстановить. Затем перейдите в НастройкиОсновныеОб этом устройствеДоверие сертификатам → найдите установленный сертификат и сделайте его «Доверенным».

Функциональность Charles Proxy

1. Подмена данных

Представим, что нам надо протестировать на клиенте верстку. Нужно проверить, как будет отображаться большое количество бонусов у пользователя. Один из вариантов, который многие предложат: изменить в БД количество бонусов и проверить на клиенте. Да, вы будете правы! Однако на сервере может быть кэш, и необходимо подождать какое-то время, пока количество бонусов не обновится, либо просто подключиться к самой базе и выполнить запрос — это занимает определенное время. Есть вариант проще: изменить ответ от сервера! В Charles Proxy есть три способа подмены данных:

1.1 Breakpoint

Breakpoint — это некая точка остановки запроса. Когда обнаруживается запрос из заданного списка, для дальнейшего ручного взаимодействия с параметрами запроса открывается отдельное окно. В нём перейдите к ручному изменению запросов и ответов. Удобно использовать эту функцию, когда тестируете API или разные ответы сервера.

У нас имеется приложение и профиль пользователя, у которого сейчас 45 бонусов на счету:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Запрос, в котором приходит это количество бонусов: https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Чтобы «повесить» Breakpoint на запрос, перейдите в раздел ProxyBreakpoint Settings. Далее поставьте галочку Enable BreakpointsAdd, и в открывшемся диалоговом окне «Edit Breakpoint» вставьте URL запроса, как показано на скриншоте:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Для примера поставьте две галочки «Request» и «Response». Далее нажмите OK, и ещё раз OK в окне «Breakpoint Settings». Теперь выполните запрос еще раз, то есть на клиенте заново откроется экран с профилем пользователя.

В Charles Proxy мы видим, что выполнение запроса ставится на паузу:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

На клиенте отобразится новое количество бонусов. Мы богаты!

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

1.2 Rewrite

Rewrite — это инструмент, позволяющий создавать правила, которые изменяют запросы и ответы, когда те проходят через Charles Proxy. Например, можно добавлять и изменять заголовок, искать и заменять текст в теле ответа или запроса, и т.д.

Попробуем с помощью Rewrite изменить количество бонусов нашего пользователя. Для этого откройте ToolsRewrite → галочка «Enable Rewrite« → Add. В поле Name можно ввести любое название подмены, например, «Change bonus», либо оставить по умолчанию «Untitled Set».

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Следующим шагом необходимо добавить в «Location» путь запроса. Для этого, в разделе LocationAdd заполните следующие поля и сохраните:

Host: https://api.youla.io

Path: /api/v1/user/5e6222bbbedcc5975d2375f8

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

После того, как вы добавили путь запроса, необходимо изменить сам параметр и его значение. Для этого нужно создать Rewrite Rule:

Type: Body (потому что параметр находится в теле);

Where: Response (потому что параметр находится в ответе от сервера);

Раздел Match: в «Value» укажите значение и параметр, который возвращает сервер;

Раздел Replace: в «Value» укажите значение и параметр, который вы хотите увидеть на клиенте.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Далее сохраните «Rewrite Rule» и нажмите ОК на вкладке «Rewrite Settings». На клиенте перезапросите еще раз профиль пользователя. У вас автоматически подменилось количество бонусов пользователя. Мы снова богаты!

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

1.3 Map Local

Map Local — инструмент, который позволяет использовать локальные файлы, словно они являются частью сервера.

Перейдите в Tools → Map Local.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Далее в окошке «Map Local Settings» нажмите Add → Хост: https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8 → Local path: путь на компьютере до файла. Можете использовать готовые медиа-файлы, HTML, CSS, JSON, XML. Больше подходит, конечно, разработчикам, чтобы не загружать данные на сервер для его последующего тестирования, но и тестировщик может найти грамотное применение. Мы заранее подготовили ответ, который нам будет нужен, и сохранили в файл change_bonus.json:

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Сохраните введенные значения на вкладке «Edit Mapping» и на вкладке «Map Local Settings».

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

На клиенте перезапросите еще раз профиль пользователя. У вас автоматически подменилось количество бонусов пользователя. Мы снова богаты!

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Давайте рассмотрим другие возможности инструмента Charles Proxy. И начнем с самого начала, с вкладки «Proxy».

2.1 Throttle Settings

Throttle Settings — функция, позволяющая задавать разные параметры скорости соединения с выбранным доменом.

Функция для тех, кто любит тестировать в лифте, в метро, в подземном переходе. Перейдем в ProxyThrottle Settings → галочка Enable Throttling. Если не разбираетесь во всех перечисленных пунктах, то можете использовать Throttle preset и там выбрать подходящую для теста скорость, а система автоматически заполнит остальные поля.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Если выбрать «Only for selected hosts», то можно задать определенный хост, к которому будут применяться ваши настройки. Здесь можно использовать готовые пресеты с настройками для различных типов (4G, 3G и т. д.). А также можно задать различные параметры, коротко перечислю некоторые из них:

Bandwidth — максимальный объем данных, который может быть передан с течением времени.

Utilisation — доля общей пропускной способности, которая может быть предоставлена пользователю в любой момент времени.

Latency — задержка в миллисекундах по запросу firts между клиентом и удаленным сервером.

MTU — максимальное передающее устройство для текущего пресета.

Reliability — мера вероятности, что соединение не удастся. Используется для имитации ненадежных сетевых условий.

Stability — мера вероятности, что соединение будет нестабильным и, следовательно, снизится качество. Полезно для моделирования сетей, в которых периодических падает качество связи, например, мобильных.

2.2 Reverse Proxies

Reverse proxy — обратный прокси-сервер. Обычно используется для того, чтобы принимать запросы из Интернета и перенаправлять их на один из веб-серверов.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

2.3 Port Forwarding

Port Forwarding — проброс портов, который иногда называют перенаправлением портов, или туннелированием — процесс пересылки трафика, адресованного конкретному сетевому порту, с одного сетевого узла на другой. Этот метод позволяет внешнему пользователю достичь порта внутри локальной сети.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

2.4 MacOS Proxy/Windows Proxy

MacOS Proxy или Windows Proxy (в зависимости от вашей ОС) — проксирование трафика с вашего веб-браузера.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Разобравшись с разделом Proxy, перейдем к разделу Tools.

3.1 No Caching

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

3.2 Block Cookies

Block Cookies — заголовок файла Cookie удаляется из запросов, предотвращая отправку значений файла из клиентского приложения (например веб-браузер) на удаленный сервер. А также из ответов удаляется заголовок Set-Cookie, предотвращая получение клиентским приложением запросов на установку файлов cookie с удаленного сервера. В настройках можно включить удаление Cookie как для всех хостов, так и для выбранных. В примере ниже включено удаление Cookie для всех запросов.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

3.3 Map Remote

Map Remote — позволяет переадресовать запросы с одного URL «Map From» на другой «Map To». Подменяет хост, путь целиком или только параметры в зависимости от вашей задачи. В примере ниже подменён запрос с prod-сервера на dev-сервер.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

3.4 Block List

Block List — позволяет блокировать определённые доменные имена. Когда веб-браузер попытается запросить любую страницу из заблокированного доменного имени, она заблокируется. Можно выбрать либо «Drop connection», либо возврат 403 ошибки.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

3.5 DNS Spoofing

Виртуальный хостинг — это когда у вас есть несколько сайтов на одном IP-адресе, и веб-сервер определяет, какой сайт вы запрашиваете, основываясь на имени, введённом в браузере. Точнее, сервер смотрит на заголовок хоста, отправленный в запросе. Например, когда нужно подменить хосты, чтобы при вводе какого-либо адреса в браузере (скажем, api.youla.ru) запросы уходили по другому адресу (допустим, на тестовую площадку).

DNS Spoofing — перенаправляет доменное имя на определенный IP-адрес.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

3.6 Mirror

Mirror — эта функция позволяет автоматически сохранять все ответы, возвращаемые в Charles Proxy. Они раскладываются локально в такой же иерархии, как на сервере. Если внезапно случился даунтайм на бэкенде, отвалилась тестовая среда и т. д., у вас уже есть готовые моки для Map Local. Активировать функцию можно так: ToolsMirror или ToolsAuto Save.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

3.7 Compose

Compose — функция редактирования запросов, которые вы поймали.

Например вы добавляете в избранное какой-то товар, но почему-то он не добавляется. Вы можете отредактировать уже отправленный запрос и отправить его еще раз. Для этого необходимо выбрать нужный запрос из списка, нажать на нём правой кнопкой и выбрать Compose. Иконка у запроса поменяется, и теперь можно смело его редактировать.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

После того, как вы изменили нужные значения в запросе, нажмите внизу «Execute», чтобы отправить запрос на сервер.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

4. Recording Settings

Recording Settings — настройки отображения списков разрешенных и запрещенных доменов.

Во вкладке «Options» можно настроить лимит, то есть количество запросов, которое Charles Proxy может записать.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Во вкладке «Include» можно выбрать конкретный домен для отображения пакетов.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

Во вкладке «Exclude» можем выбрать те домены, которые необходимо спрятать при сниффинге.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

5. Focus

Focus — эта функция перемещает домен на первые позиции в списке.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

6. Repeat

Repeat — отправляет на сервер запрос, идентичный выбранному.

Как подменить запрос в charles. Смотреть фото Как подменить запрос в charles. Смотреть картинку Как подменить запрос в charles. Картинка про Как подменить запрос в charles. Фото Как подменить запрос в charles

7. Repeat Advanced

Repeat Advanced — идентично Repeat, только можно выбрать количество отправляемых запросов и задержку между ними. Эта функция пригодится при проверке реакции сервера на флуд.

Здесь Concurrency — количество пользователей, а Iterations — количество повторений каждого запроса. Также можно поставить галочку «Show results in new Session», в таком случае откроется новое окно, где будут выполняться запросы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *