Чарльз прокси что это
Перейти к содержимому

Чарльз прокси что это

  • автор:

Чарльз прокси что это

ВРЕМЯ ПРОЧТЕНИЯ — 10 МИН

Ангелы Charles:
Как сниффер поможет разработчикам мобильных приложений

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

Обложка статьи про дизайн складных экранов для Андроид

Для начала кратко приведем примеры кейсов разработчиками:

  • Бэк еще не реализовал фичу, которую уже реализовали мы.
  • Бэк присылает не те данные.
  • Добавить или убрать элемент интерфейса, когда через код это делать дольше.
  • Получить данные, которые не заведены (например, данные о пользователе).
  • Упрощает поиск причин багов.
  • Проверка фич после реализации.

Throttling соединения

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

Включить функцию троттлинга можно в меню Proxy, выбрав там пункт «Throttle Settings».

Давайте посмотрим на все настройки функции.

Enable Throttling — это чекбокс включения/отключения троттлинга по приложению. Можно поставить чекбокс на Only for selected hosts — это позволит проводить троттлинг только для заданных url.
Их можно добавить или удалить ниже (Add и Remove).

Далее в меню вы видите набор предустановленных настроек соединений (Throttle preset).

Bandwidth — это скорость соединения,
Utilisation — процент пропускной способности, которую можно предоставить пользователю в любой момент времени.
Round-trip latency — здесь устанавливается задержка между клиентом и сервером.
MTU — максимальный размер пакета.
Reliability, измеряемая в процентах, устанавливает вероятность, что соединение не удастся. Именно эта кнопка нужна для имитации ненадежных сетевых условий. Кнопка Stability задает вероятность нестабильного соединения и снижения качества. Это полезно для моделирования сетей, в которых периодических падает качество связи — например, мобильных.

Throttling может работать даже при установленном в приложении SSL пиннинге — достаточно настроить его и убрать Enable SSL Proxying с запросов необходимого домена.

Charles Proxy на пальцах: главный помощник QA и разработчиков

Привет, меня зовут Света и я тимлид Mobile QA в Emerging Travel Group. В этой статье я простым языком расскажу про один из самых полезных и простых в использовании инструментов тестирования мобильных приложений — мистер Charles Proxy, и покажу на примерах некоторые самые полезные его функции.

Для начала разберёмся, кто вообще такой этот Charles.

Charles Proxy — это сниффер (sniffer – перехватчик) трафика, инструмент для анализа трафика, который позволяет отслеживать, записывать и анализировать сетевые запросы между устройствами и интернетом.

Charles — не единственный инструмент для анализа трафика, у него есть аналоги, например: WhireShark, Fiddler, Proхyman, mitmproxy. Все они в той или иной степени про одно, различие лишь в интерфейсе, поддержке разных платформ, и наборе функционала.

Установка и первичные настройки

Я распишу процесс для MacOS, однако для Windows он практически идентичен 🙂 Для использования Charles Proxy сначала нужно выполнить следующие шаги:

  1. Скачать и установить
  2. Дать Charles установить нужные настройки сети
  3. Настроить устройства и установить на них Charles SSL сертификат

Сначала скачайте Charles Proxy для MacOS.

После загрузки Charles установите его, открыв dmg и перетащив приложение в папку «Приложения».

Charles Proxy не бесплатен, но предоставляет 30-дневный trial из-за которого Charles будет работать только 30 минут и после этого его нужно перезагружать. Чтобы работа Charles стала полноценной нужно купить его лицензию. Лицензия бессрочная и распространяется на неограниченное количество устройств.

Настройка сети

Запустите Charles, при первом запуске появится попап о запросе разрешения на изменение сетевых настроек. Если он не появился, то нажмите Shift-Command-P и увидите следующее окно:

Нажмите “Grant Priveleges” и введите пароль от своего пользователя, если его запросят. После этого Charles начнёт показывать сетевые запросы, которые отправляет ваш Mac

Настройка реального устройства для работы с Charles Proxy

Для отслеживания трафика с реального устройства через Charles Proxy ваш Mac и устройство должны находиться в одной сети. При проксировании трафика от устройства в Charles Proxy необходимо установить Charles Root SSL Certificate для того чтобы можно было анализировать трафик. Для этого открываем Charles и в меню выбираем Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser

здесь порт 8888 и IP 192.168.0.139

Теперь на устройстве открываем настройки WiFi -> Настройки выбранной сети -> Proxy Settings и вводим IP адрес и порт из окна чарльза:

экран настройки Proxy внутри выбранной Wi-Fi сети

И нажимаем “Save”.

Теперь нужно зайти в браузер и перейти на https://chls.pro/ssl и установить сертификат:

Нажимаем “Allow” и после этого видим попап о установленном configuration profile:

Теперь заходим в системное приложение Settings и там General -> Profile и нажимаем Charles Proxy CA.

Нажимаем “Install”, в появившемся окне ещё раз “Install” и после того как сертификат будет успешно установлен на экране должно быть примерно следующее:

И последнее! Теперь нужно зайти в приложение Settings, там в General -> About -> Certificate Trust Settings.

И здесь нужно включить свитчер Charles Proxy CA. На всплывающем окне нужно нажать “Continue”. Ура! Теперь установка сертификата завершена. Не волнуйтесь, эту настройку нужно делать только 1 раз на одном устройстве.

Краткий обзор интерфейса

Интерфейс Charles логичен и прост.

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

основной интефейс Charles Proxy

Как вы видите на скриншоте, слева у нас отображается список запросов, справа — информация о выбранном нами запросе. Остановить запись отправляемых запросов, чтобы не засорять список и не запутаться, можно нажав на красный кружочек ��

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

Для примера я пока взяла рандомный запрос, далее рассмотрим подробнее на одном из приложений, с которыми я работаю.

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

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

Как включить ssl-проксирование для интересного нам хоста?
Сharles > Proxy > SSL Proxying Settings…
Выбираем вкладку SSL Proxying, нажимаем на Add.

Вставляем интересующий нас хост (обратите внимание, только хост, без https и query-параметров), в моём случае это один из хостов приложения Dice и порт 443.

Теперь, когда я запущу на своём устройстве приложение Dice, я буду видеть все внутренности запросов с этого хоста ��

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

Волшебные функции

1. Breakpoint

Breakpoint — дает возможность приостановить выполнение запроса или ответа на определенном этапе и проанализировать содержимое для того, чтобы можно было внести необходимые изменения и проверить как приложение или сервер отреагируют на внесённые нами изменения. Звучит, вероятно, слегка сложно, но на примере всё будет сильно понятнее.

Breakpoint можно использовать, чтобы изменить URL запроса на сервер, заменить один заголовок на другой, изменить содержимое тела запроса или ответа или добавить новый параметр в URL запроса.

Функция Breakpoint позволяет остановить выполнение на следующих этапах запроса или ответа:

  1. Запрос перед отправкой на сервер
  2. Ответ после получения от сервера
  3. Загрузка ресурсов (например, изображений или стилей) Рассмотрим на простом примере одного из приложений, с которыми я работаю: Пользователь забронировал себе трансфер. У нас есть экран подтверждения его бронирования, с данными, которые он указал. Что мы можем сделать с помощью брейкпоинта? Поменять практически любые данные, которые приходят в запросе для этого экрана, и посмотреть, как новые данные будут выглядеть. Для примера, давайте поменяем имя пользователя, который трансфер. Вот такой экран мы имеем на старте (все данные вымышленные):

Для начала, нам нужно понять, в каком запросе хранится информация об имени.

слева endpoint, в котором лежит поле с именем, которое нам нужно

Теперь правой кнопкой мыши нажимаем на нужный нам запрос и в выпадающем меню выбираем Breakpoints.

Видим, что наш брейкпоинт добавлен, функция “отлова” сейчас включена, и при следующей отправке этого запроса он “перехватится”.

Так как нужная нам информация хранится именно в Response-части запроса, менять мы будем именно её. Request-часть не трогаем.

Итак, запускаем приложение ещё раз, и доходим до нужного нам запроса.

Когда приложение отправит запрос, на который мы поставили брейкпоинт, Чарльз уведомит нас об этом:

Сначала Чарльз всегда предлагает изменить Request-часть, но в ней нам не нужно ничего менять, поэтому нажимаем Execute, и дальше Чарльз предложит изменить Response-часть, как раз то что нам нужно. Вот там-то мы нажимаем “Edit response” и доходим до того самого места, где лежит имя нашего пользователя, и меняем его.

Поменяли, и теперь нажимаем Execute.

Важно! Время, на которое запрос перехватывается, ограничено, и нам нужно успеть поменять всё, что мы хотим поменять, примерно за 30 секунд (точное время зависит от того, какой таймаут поставили разработчики для отработки этого запроса), иначе запрос просто отработает без изменений.

Что мы видим на экране приложения теперь?

Ивана с уже новой фамилией ��

Таким образом можно менять любую информацию в теле и ответе запроса, можно менять значения хэдеров, можно менять коды ответов, например, если мы хотим посмотреть, как будет выглядеть ошибка в приложении, мы можем поменять код ответа с 200 на 500.

2. Rewrite

Функция Rewrite по смыслу похожа на Breakpoint за исключением того, что Rewrite позволяет изменять и перезаписывать запросы и ответы перед их отправкой и получением соответственно, а не ВО ВРЕМЯ, как Breakpoint.

Давайте снова рассмотрим на примере нашего путешественника, заказавшего себе трансфер. Мы снова хотим поменять ему имя, но только теперь не во время запроса, а заранее.

В меню Charles переходим в Tools > Rewrite > Add

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

В верхней части прописываем путь до нужного нам места, значение которого нам нужно изменить, в нижней части указываем что и на что меняем. Остановимся подробнее на втором:

Здесь мы указываем, что хотим поменять Ивана Сидорова на Сидора Иванова

В типе выбираем “Body”, так как нужный нам параметр лежит именно в теле ответа. Далее Response, потому что в теле ответа. И далее мы знаем, что на самом деле пользователя зовут Ivan Sidorov, а мы хотим назвать его по-другому. ОК.

Запускаем наше приложение, доходим до нужного экрана, и что мы видим:

Иван Сидоров больше не Иван Сидоров

И так теперь будет каждый раз, когда мы будем открывать этот экран, пока мы не отключим функцию Rewrite. И не надо каждый раз руками менять это, как в Breakpoints.

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

Rewrite также можно использовать для перенаправления трафика, достаточно вместо Body, там где мы выбрали Body, выбрать Host и настроить параметры под него.

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

3. Map remote

Наконец, последняя в моём сегодняшнем списке, но не последний по важности, функция Map remote.

Map Remote позволяет перенаправить трафик с одного хоста на другой по настраиваемым правилам.

Вот житейский пример:

Приложение ходит за данными по адресу https://backend.service.com.
Команда бекенд-разработчиков делали задачу на фикс какого-нибудь бага, сделали ветку с изменениями этого бэкенда и хотят протестировать его до слива этой ветки в мастер, на всех. Адрес отдельного домена https://new-backend.service.com

Нам нужно протестировать как приложение будет работать с бэкендом с новыми изменениями от разработчиков.

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

С помощью Map Remote можно перенаправить трафик приложения без внесения изменений в код.

Итак, идём в Charles > Tools > Map Remote > Enable Map Remote > Add

закрасила кусок моего реального хоста

Теперь, когда мы запустим наше приложение и посмотрим в список запросов, мы увидим, что запросы идут не в обычный хост, а в тот, на который мы сделали перенаправление. И всё, что мы видим в приложении теперь, происходит с учётом тех изменений, которые сделали господа бекендеры в своей ветке-хосте.

Подытожим

В этой статье мы рассмотрели три, на мой взгляд, основные и самые ходовые функции Charles Proxy. Конечно, это только малая часть того, что может этот славный товарищ.

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

Это мощный и гибкий инструмент, который может значительно упростить процесс тестирования мобильных приложений и помочь выявлять ошибки и уязвимости в приложении. Использование Charles Proxy может сократить время, затраченное на тестирование, и улучшить качество мобильного приложения в целом.

Подробнее с функционалом можно ознакомиться на официальном сайте (у них, к слову, довольно понятная и подробная документация, если вы владеете английским).

Ну а я желаю вам успешного тестирования, наслаждайтесь этими и узнавайте другие функции этого замечательного инструмента ��

  • снифферы
  • тестирование мобильных приложений
  • тестирование api
  • Разработка мобильных приложений
  • Тестирование веб-сервисов
  • Тестирование мобильных приложений

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

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

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

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 Proxy на Windows, зайдите в меню HelpSSL ProxyingInstall Charles Root Certificate

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

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 не будут отображаться запросы, попробуйте выбрать другой из списка).

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

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

3.2 MAC OS
Для этого узнаем IP-адрес ПК: в Charles Proxy перейдем в HelpLocal IP Address. Видим, что ваш IP: 192.168.1.50 .

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

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

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

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

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

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



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

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

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

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

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

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

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

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

Для этого узнаем IP-адрес ПК: в Charles Proxy перейдем в HelpLocal IP Address. Видим, что ваш IP: 192.168.1.50 .

Далее возьмите в руки телефон, откройте Свойства сети → Название сети 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. Подмена данных:
    • 1.1 Breakpoint
    • 1.2 Rewrite
    • 1.3 Map Local
  2. Proxy:
    • 2.1 Throttle Settings
    • 2.2 Reverse Proxies
    • 2.3 Port Forwarding
    • 2.4 MacOS Proxy/Windows Proxy
  3. Tools:
    • 3.1 No Caching
    • 3.2 Block Cookies
    • 3.3 Map Remote
    • 3.4 Block List
    • 3.5 DNS Spoofing
    • 3.6 Mirror
    • 3.7 Compose
  4. Recording Settings
  5. Focus
  6. Repeat
  7. Repeat Advanced

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

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

1.1 Breakpoint

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

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

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

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

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

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

Здесь можно изменить параметры запроса. Но сейчас это делать не нужно, нажмите «Execute». Следом у нас ставится на паузу уже пришедший ответ от сервера. И тут как раз мы должны отредактировать «Response». Найдите нужный параметр — bonus_cnt»: 45 .

Далее измените значение параметра bonus_cnt , например, на 1 000 000 бонусов, и нажмите «Execute».

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

1.2 Rewrite

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

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

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

Host: https://api.youla.io

Path: /api/v1/user/5e6222bbbedcc5975d2375f8

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

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

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

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

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

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

1.3 Map Local

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

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

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

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

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

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

2.1 Throttle Settings

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

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

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

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

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

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

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

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

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

2.2 Reverse Proxies

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

2.3 Port Forwarding

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

2.4 MacOS Proxy/Windows Proxy

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

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

3.1 No Caching

Инструмент No Caching предотвращает кэширование, манипулируя заголовками HTTP, которые управляют кэшированием ответов. Заголовки If-Modified-Since и If-None-Match удаляются из запросов, добавляются Pragma: no-cache и Cache-control: no-cache . Заголовки Expires , Last-Modified и ETag удаляются из ответов и добавляются Expires: 0 и Cache-Control: no-cache .

3.2 Block Cookies

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

3.3 Map Remote

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

3.4 Block List

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

3.5 DNS Spoofing

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

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

3.6 Mirror

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

3.7 Compose

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

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

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

4. Recording Settings

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

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

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

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

5. Focus

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

6. Repeat

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

7. Repeat Advanced

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

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

Резюме

В этой статье мы постарались описать те функции Charles Proxy, которыми пользуются тестировщики мобильных приложений. На этом всё, и не забывайте прикреплять к баг-репорту сессию из сниффера. А если остались вопросы — скорее пишите в мой телеграм-канал @qa_chillout

  • Charles Proxy
  • тестирование мобильных приложений
  • прокси
  • Блог компании Юла
  • Тестирование мобильных приложений

20 вопросов о Charles Proxy на интервью

Charles Proxy – это инструмент для отладки веба, позволяющий разработчикам отслеживать HTTP- и SSL-трафик между своим компьютером и Интернетом. Если вы претендуете на должность, связанную с веб-разработкой, то, скорее всего, в ходе собеседования вас спросят о Charles Proxy. В этой статье мы рассмотрим некоторые из наиболее часто задаваемых вопросов и дадим советы, как на них отвечать.

Ищите работу Junior QA? Тогда вам в наш телеграм канал QA Вакансии. Каждую неделю 7 лучших вакансий с телеграм контактом HR компании. 

1. Что такое Charles Proxy?

Charles Proxy – это отладочный прокси-инструмент, который можно использовать для мониторинга и вмешательства в веб-трафик. Он позволяет отлаживать веб-приложения, анализировать HTTP-запросы и ответы, а также имитировать медленные интернет-соединения.

2. Как установить и использовать Charles Proxy на Windows 10?

Для установки Charles Proxy на Windows 10 необходимо загрузить программу установки с официального сайта, запустить ее и следовать инструкциям на экране. По завершению установки запустить Charles Proxy и настроить его на работу с браузером. Для этого необходимо открыть меню Proxy и выбрать пункт Proxy Settings, в появившемся диалоговом окне выбрать вкладку Web Browser и установить соответствующие настройки.

3. Как работает прокси-сервер?

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

4. В чем разница между HTTP-прокси и SOCKS-прокси?

HTTP-прокси используется для кэширования веб-страниц и ресурсов, а также для фильтрации веб-контента. SOCKS-прокси, напротив, используется для маршрутизации сетевого трафика, включая TCP/IP и UDP, через брандмауэр или прокси-сервер.

5. Каковы наиболее распространенные области применения Charles Proxy?

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

6. Каковы типичные способы использования прокси?

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

7. Есть ли какие-то недостатки в использовании таких прокси-серверов, как Charles Proxy?

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

8. Что такое SSL-сертификат?

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

9. Можно ли использовать Charles Proxy без установки корневого сертификата в браузер или операционную систему?

Да, Charles Proxy можно использовать без установки корневого сертификата в браузер или операционную систему, но в этом случае, невозможно дешифровать HTTPS-трафик. Это означает, что Charles Proxy не сможет анализировать или отображать содержимое HTTPS-запросов и ответов, так как оно будет зашифровано и недоступно для инспекции без корректного сертификата.

10. Каково ваше мнение о проблемах безопасности, связанных с Charles Proxy?

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

11. Что произойдет, если кто-то забудет отключить Charles после тестирования своей сети?

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

12. Почему требуется расшифровка HTTPS при использовании Charles Proxy?

HTTPS является безопасным соединением, поэтому данные, передаваемые по нему, могут быть прочитаны и интерпретированы только после расшифровки.

13. Какие альтернативы Charles Proxy вы знаете?

Альтернативой Charles Proxy могут служить такие программы, как Fiddler, Wireshark и tcpdump.

14. Что лучше использовать для отладки веб-трафика: Charles Proxy или Fiddler?

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

15. Можете ли Вы поделиться некоторыми советами для тех, кто только начал использовать Charles Proxy?

Вот несколько советов для тех, кто только начал использовать Charles Proxy:

  1. Используйте меню Proxy Settings для настройки браузера на использование Charles в качестве прокси-сервера.
  2. Используйте меню Proxy Recording для запуска и остановки записи трафика.
  3. С помощью меню Proxy Recording Options можно настроить запись трафика.
  4. С помощью меню Proxy Breakpoints можно установить точки останова для определенного трафика.
  5. Для анализа записанного трафика используйте меню Proxy Analyzer.

16. Можно ли как-то установить точку останова как внутри запросов, так и внутри ответов?

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

17. Пытался ли кто-то взломать ваш компьютер во время использования Charles Proxy?

Лично я не сталкивался с попытками взлома моего компьютера при использовании Charles Proxy, но, по моему мнению, это было бы довольно сложно сделать. Charles Proxy – это инструмент, который позволяет просматривать и редактировать сетевой трафик, поэтому если бы кто-то попытался взломать мой компьютер, я, скорее всего, заметил бы это и принял меры для блокировки.

18. Как сделать так, чтобы никто не мог видеть данные, проходящие через Charles Proxy?

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

19. Какой процесс используется в Charles Proxy для расшифровки защищенных (HTTPS) соединений?

Процесс, используемый в Charles Proxy для расшифровки защищенных (HTTPS) соединений, называется SSL-проксированием. Для того чтобы расшифровать трафик, Charles Proxy должен быть настроен как посредник между клиентом и сервером. Это означает, что Charles Proxy будет генерировать собственный SSL-сертификат для сервера, который клиент должен будет принять для установления соединения. После установки соединения Charles Proxy сможет расшифровывать и просматривать проходящий через него трафик.

20. Можно ли проверить состояние всех входящих и исходящих пакетов? Если да, то каким образом?

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

Похожие записи:

  1. 9 вопросов на собеседовании QA
  2. 20 вопросов и ответов на QA интервью в 2023 году
  3. Логические задачи на QA интервью
  4. 15 вопросов и ответов на собеседовании по REST API на 2023 год

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

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