Ever wondered how to maintain quality of software even in worst-case scenarios be it network failures or server breakdown?
One of the solutions to the above scenario is replicating the possible failure environment by configuring Charles proxy.
Let’s understand how this tool helps in providing the solution to the mentioned cause in the various software apps.
Charles proxy is an interactive web debugging tool which acts as a middleware between the client (mobile or web app) and the internet. Using this tool we can configure client environment to pass all networking requests and responses through Charles proxy so that we can inspect and even change the data midstream to test how the app responds.
In Web and Internet development we are unable to see what is being sent and received between the web browser/client and the server. Without this visibility, it is difficult and time-consuming to determine exactly where the fault is. Charles makes it easy to see what is happening, so we can quickly diagnose and fix problems.
Basic Configuration
This is common for any type of app; mobile or web.
Charles proxy Source page
2. Install the app and have a note of your machine IP address for further configuration
Charles proxy homepage
3. Download and install Charles root certificate on the desired remote device where the tests need to be performed i.e, android, iOS device or web browser.
Charles root certificate installation
IOS Simulator
Open Charles and select the option to install a root certificate on iOS simulator from :
Open iOS simulator and enable Charles proxy certificate from settings as:
Open the app under test and validate the requests and response based on the action performed on the app. Experiment adding the breakpoints to API requests and responses.
Android Emulator
Open Emulator settings and configure the Charles proxy for a device with android version N, using either command line or from emulator settings as below:
Fetch the System’s IP and configure the same for an emulator
The command for setting up manual IP on an emulator:
Configuring IP from emulator settings:
Charles IP config on emulator
Open Charles and select the option to download the Root certificate either from mobile browser hitting chls.pro/ssl or via downloading the file on the system itself post which we can install the same to android device or emulator from:
Save the Charles root certificate to the system, copy to Emulator storage and install it as:
Open the app now and validate the request and response on the Charles, Experiment adding the breakpoints to API requests and responses.
Web Browser (Chrome)
Charles proxy basic configuration remains same for web browsers as well where we install the Charles root certificate on the system and configure it for the browser on the Chrome settings as:
- Find the certificate file saved from Charles in the previous step, then click Next and Finish, leaving the default options, until you complete the import. Chrome will now always trust certificates signed by Charles.
- After importing we can delete the certificate file that has been saved.
IOS Devices
Even for the devices, the concept of configuring Charles remains same as simulators just have to configure the mobile network proxy with the system and open chls.pro/ssl to get the root certificate download and enable it from settings from below steps:
Android Devices
For connecting android devices configure the network proxy for the device as mentioned below.
Charles configuration on Android device
After configuring it download the root certificate by either downloading to the device and installing it or via navigating to chls.pro/ssl from local device browser to download Charles root certificate.
Installation of root certificate may ask to add further security measures to devices for protecting the credentials before root certificate installation, once done the device is ready to be under Charles proxy influence to debug the network traffic.
Let’s assume we have Charles proxy setup ready on our chosen device.
Now let’s discuss how does the debugging work.
Debugging using Charles
This section focus on actual debugging of the requests and responses inspected via Charles and intercepted according to our need to replicate any particular realtime scenario. For interception there are various of its tools performing their respective functionalities, I want to discuss below few which I found very useful in debugging and ensuring the quality of app under test behaving in various network circumstance.
Breakpoints Tool
When a request or response trips a breakpoint the Breakpoints window automatically opens in Charles and comes to the front. The Breakpoints window contains a list of the requests and responses currently intercepted and waiting for our action. Select the request or response to view and edit the contents. Then decide to Execute, Abort or Cancel the breakpoint.
For instance, the below test is for wwe.com to act as a breakpoint for any related request and response sent via the device under test.
Rewrite Tool
The Rewrite tool enables us to create rules that modify requests and responses as they pass through Charles. Rules such as adding or changing a header or search and replace some text in the response body.
Using this tool we can set any specific API pre-configured as per our need like in the one example below I have used www.wwe.com link to test its behaviour when it throws server error with status code 500. Similarly, we can test any interdependent API and their effects on UI by rewriting it for any particular error scenario (i.e., for different response codes 409, 503, etc.)
Rewriting API behaviour
I find this topic very interesting and worth sharing for practical hands on to debug the mobile/web networking. If you have any questions or if you think I messed up somewhere, please leave a comment.
Приложение Charles Proxy — большой помощник и тестировщику, и разработчику. Мы хотим рассказать вам про функции «Чарльза», показать, как им пользуемся в своей работе мы. Но для начала поможем разобраться с приложением и правильно его настроить.
Установка и настройка Charles
Без лицензии вам будет доступна пробная версия на 30 дней. После истечения этого срока появятся ограничения — функции не заблокируются полностью, но использование ограничено по времени.
Затем нужно установить сертификат. Для этого выполните следующие действия:
- Найдите в KeyChain сертификат Charles Proxy.
- Сделайте его доверенным, изменив настройки с дефолтных Use System Defaults на Always Trust.
Подключение девайса
Charles можно установить в связке с ПК и с мобильным устройством. Для этого подключаем девайс и ноутбук к одной сети Wi-Fi.
- На девайсе в настройках Wi-Fi переходим в дополнительные настройки и подключаем proxy.
- На экране MacBook после подключения девайса появится диалоговое окно, нажмите Allow.
Установка сертификата на девайс
Прежде чем начать работу, нужно установить на свой девайс сертификат, скачав его в браузере по ссылке chls.pro/ssl. Используйте Safari для iOS и системный браузер для Android.
Если скачивание сертификата не началось автоматически, нужно в установленном на ноутбуке Charles найти запросы http://ssl.charles и http://chls.pro, правым кликом по каждому из них выбрать Enable SSL Proxying и снова пройти по ссылке.
Android: Если установка сертификата после загрузки не произошла, ищем «Сертификаты» в настройках девайса, выбираем пункт меню Установка ЦА/ЦС сертификатов безопасности. Ищем скачанный на девайс сертификат и устанавливаем его. Если потребуется задать PIN при установке, то задать любой.
Финальные настройки
Это нужно, чтобы не видеть запросы с браузеров самого ноутбука.
FAQ
Что делать, если не скачивается сертификат?
- Проверьте, включен ли SSL Proxying на оба запроса http://ssl.charles и http://chls.pro.
- Проверьте настройки браузера на загрузку файлов.
- Проверьте, не включен ли у вас VPN, так как с ним весь трафик идет в обход Charles.
Что делать, если не видно запросов – везде Unknown?
- Проверьте, установлен ли сертификат.
- Включите SSL Proxying на конкретный запрос через правый клик – Enable SSL Proxying.
- На Android в сборке клиента должны быть прописаны манифесты для Charles Proxy.
- Если запрос зашифрован, то его данные увидеть нельзя.
Что делать, если сделал все по инструкции, а запросы не вижу?
- Проверьте прописанный IP своего MacBook и порт
- VPN на девайсе должен быть выключен и весь трафик должен идти через Charles.
Что делать, если мне нужен VPN для работы?
Ничего страшного, VPN настраивается на MacBook, а девайс подключается через прокси к нему, получая преимущества Charles и VPN.
Что делать, если интернет не работает без Charles?
Что делать, если Charles Proxy вылетает каждые 30 минут и постоянно показывает баннер?
Если у вас установлена триал-версия, то она ограничивает время сессии на 30 минут. Можно перезапустить и пользоваться дальше, не забывая про ограничения пробной версии.
Переустановка сертификата
Удаляем старый сертификат с устройства в настройках профиля (iOS) или ЦА сертификатах (Android). Проходим установку сертификата заново, как это описано выше.
Интерфейс
Перед тем, как приступать к работе, рассмотрим основные элементы управления и режимы просмотра запросов и ответов. У нас есть кнопки быстрого доступа включения/отключения некоторых настроек.
Режим Structure
Можно отображать запросы в виде структурированных папок.
Дерево запросов — список запросов, который был отправлен приложением. Поле запроса — информация о запросе. Поле ответа — ответ сервера. Фильтр — поле для фильтрации запросов.
Режим Sequence
Здесь запросы отображаются в режиме очередности
Просмотр информации
Просмотр информации о запросе идентичен и для Structure, и для Sequence.
Overview — информация о запросе (статус, время, метод и т д). Полная информация, которая доступна о запросе.
Contents — содержимое запроса с хедерами, куками, json-ами и т.д. Основная рабочая вкладка, на которой смотрим содержимое запросов/ответов. Для ответов чаще всего используются Headers и JSON Text.
Summary — сравнительная информация о группе запросов. Удобно сравнивать время, размер и другие данные о запросах.
Chart — сравнительная диаграмма о времени выполнения группы запросов. По сути, это очередность запросов со временем их выполнения. Будет полезна, если надо прикинуть, сколько относительно друг друга занимают по времени запросы.
Notes — личные заметки о запросе. В заметке можно написать, что делает запрос, какие-то данные для подмены или просто выразить свое негодование.
Сама заметка теперь будет отображаться во вкладке Overview запроса.
Бабблы подключенных настроек
Здесь отображаются правила, которые сейчас включены в Charles Proxy к запросам и ответам.
На скриншоте выше можно увидеть, что в данный момент включена запись запросов Recording, включены правила подмены Rewrite, включена локальная подмена Map Local на запрос, а также выставлены Breakpoints на некоторые запросы.
Итак, мы разобрались, как настроить Charles, посмотрели на его интерфейс, и теперь — наконец-то! — можем начинать работу. Но об этом поговорим уже в следующей статье от студии мобильной разработки CleverPumpkin.
Разработка мобильных приложений, Разработка под iOS, Блог компании DataArt, Тестирование мобильных приложений
Привет, меня зовут Андрей Батутин, я Senior iOS Developer в DataArt, и сегодня мы будем сниффить HTTPS-трафик твоего «Айфона».
FoodSniffer и с чем его едят
Возьмем, к примеру, очень простое iOS-приложение FoodSniffer. Оно в зависимости от времени дня показывает пользователю, что можно есть.
Приложение получает от сервера JSON вида:
Сервером в данном случае выступает Dropbox, а JSON можно посмотреть здесь.
Проблема №1
Пришел баг, что вместо двух элементов в списке разрешенной утром еды приложение показывает только один.
Один из способов проверить, что пошло не так, — увидеть JSON, который вам возвращает сервер.
Как сниффить трафик?
Предположим, что ваши MacOS-компьютер и iOS-устройство находятся в одной локальной сети, которая выглядит примерно так:
Трафик идет от iOS-устройства через роутер к серверу независимо от трафика компьютера.
Чтобы читать трафик iOS-устройства, нам нужно сделать так, чтобы он шел через наш Мac. Примерно так:
Кроме того, нам понадобится HTTP/S-прокси-сервер, с помощью которого мы бы и смотрели/модифицировали проходящий трафик iOS-устройства.
Еще одна очень важная задача — иметь возможность сниффить HTTPS-трафик. Загвоздка в том, что HTTPS-протокол и создавался, чтобы, кроме клиента и сервера, никто не мог прочесть, что передается в HTTPS-запросах. Поэтому HTTPS-прокси должен поставлять с собой еще и SSL-сертификат, который нужен для работы с HTTPS-трафиком.
Иными словами, нам нужно реализовать Man-in-the-Middle-атаку на нашу собственную сеть.
Charles Web Debugging Proxy Application
Как видим, сниффить HTTPS-трафик — задача многоэтапная, поэтому чтобы максимально упростить себе жизнь, я использую Charles Proxy.
Начнем с минусов:
- Он платный, но единственное ограничение которое есть в пробной версии — Charles работает не дольше 30 минут, потом его надо перезапускать. Еще есть пятисекундные задержки при запуске. Это раздражает, но жить можно.
- Если вам нужен подлинный хакерский инструмент для работы на удаленном сервере 24/7, да еще с нормальным CLI, Charles не для вас.
- Если вы работаете на Windows, вам лучше взять Fiddler, он еще и бесплатный.
- Если вам нужен прокси-сервер для большого количества устройств (больше двух-трех), Charles не для вас.
- Если вам нужно работать с TCP/IP-пакетами в чистом виде, возьмите Wireshark.
- HTTPS for iOS — у Charles есть набор инструментов, которые делают HTTPS-сниффинг с вашего iOS-устройства максимально простым в настройке.
- Функционал — Charles может сниффить, модифицировать проходящий через него трафик, имитировать медленный интернет, собирать статистику, импорт/экспорт трафика в различных форматах.
- Доступен для Windows и Linux.
Для меня это оптимальное решение по соотношению функционала и простоты в использовании при работе с iOS-устройствами.
Настройка Charles и iOS-устройства
Далее будет описана процедура первоначальной настройки iOS-устройства для работы с Charles Proxy.
1. Запустить Charles на компьютере:
2. Установить Charles Root Certificate на iOS устройстве:
Появится следующее окно:
3. В настройках сети iOS-устройства указываем IP и порт Charles Proxy:
4. Открываем браузер на iOS-устройстве и переходим по ссылке — http://chls.pro/ssl.
5. Устанавливаем Charles SSL-сертификат на устройство:
6. Указываем в настройках устройства, что полностью доверяем данному сертификату:
Шестой этап нужен для устройств с iOS 10 и выше.
На 5–6-м этапах мы установили на устройство Charles SSL-сертификат и указали, что мы ему доверяем. Т. е. теперь весь HTTPS-трафик, подписанный этим сертификатом, не будет блокироваться ATS.
Как смотреть трафик iOS-устройства
Откройте приложение FoodSniffer. Если настройка прокси была сделана правильно, то вы должны увидеть такой экран:
И полностью выключите кэширование на прокси-сервере.
В приложении реализован Pull-to-refresh, после обновления списка продуктов вы должны в Charles увидеть https://www.dropbox.com в списке с левой стороны. Нажмите правой кнопкой мыши на него и выберите Enable SSL Proxing.
После этого еще раз обновите список продуктов в приложении. Теперь вы должны увидеть примерно такую картину:
Теперь мы можем свободно читать HTTPS-трафик, который идет от приложения на Dropbox за нашим JSON.
Но это еще не все!
Dropbox не отдает JSON c хоста dropbox.com напрямую. Вместо этого он возвращает 302-респонс и редиректит еще на один хост, с которого и происходит загрузка данных.
Найти его можно, просмотрев Raw Response следующего запроса:
У вас, скорее всего, будет немного другой хост.
Затем включаем для него SSL Proxing: Enabled.
Обновляем FoodSniffer еще раз.
И теперь мы наконец можем увидеть реальный JSON, который и показывает приложение!
Мы видим, что у нас есть всего один тип еды на вечернее время — виски, пишем об этом нашему тимлиду и идем пить кофе, проблема не на нашей стороне.
Проблема № 2, или Как изменять HTTPS-трафик iOS-устройства
Бэкенд-команда исправила меню на вечер, и теперь JSON формируется правильно. Но что делать, если сейчас утро, а ждать до вечера, чтобы проверить фикс, не хочется?
Один из вариантов — с помощью Charles изменять JSON, который вам приходит в ответ от Dropbox.
В данном случае нам нужно изменить consumePeriod с evening на morning.
В появившемся окне Rewrite Settings добавляем новую категорию для перезаписи — dropbox.
Добавляем хост, указывая https-порт в Edit Location меню:
После этого добавляем правила перезаписи в Rewrite Rule меню следующим образом:
Т. е. теперь в каждом Body респонса от нашего сервера слово evening будет заменено на слово morning.
При необходимости мы можем менять любую часть HTTP-запроса/ответа, плюс использовать regex-выражение для замены текста.
Теперь, обновив список, мы должны увидеть четыре типа продуктов:
Вывод
Charles довольно простой, условно-бесплатный, обладает богатым функционалом HTTPS-прокси. С моей точки зрения, он лучше всего проявляет себя при работе с MacOS и iOS-устройствами.
Это далеко не единственный способ сниффить трафик. Для HTTP/S-трафика широко применяют и Fiddler. Если вам нужно уйти глубже в TCP/IP-стэк — есть Wireshark.
Кроме того, существует проблема certificate pinning. Если в вашем приложении он реализован, вам надо либо добавлять Charles SSL-сертификат в список разрешенных сертификатов, либо использовать такое средства, как Frida, чтобы отключить certificate pinning уже на уровне самого приложения. Об этом подробнее надеюсь рассказать в следующей статье.
Буду рад, если вы поделитесь вашим опытом в мониторинге трафика, в том числе HTTP/S, советам и лайфхаками.
Используйте эту технику только для своих приложений, пожалуйста. Будьте белыми зайчиками хакерами!
Недавно история об этом выходила на украинском, но по-русски я ее публикую впервые.
November 14, 2017
Mobile
Most of apps use HTTPS request to access data, and because of SSL encryption, it can be tough to debug it from iOS apps that are already on the App Store. Charles is the perfect tool to help you inspect your HTTPS requests.
Charles Proxy is a software designed to debug web application via proxy. It includes a 30 days trial version.
As iOS mobile developer, you can use it as HTTP Proxy with your iOS device in a man in the middle approach to inspect what requests are made from your phone. Here are the steps to enable that on your phone.
Enable SSL proxy on iOS
On your iPhone, under your Wifi Settings, you need to enable HTTP Proxy with your computer IP address given by Charles.
Once saved, a dialog should prompt on your laptop to ask for permission to allow this new access. Your device connection is now going throw Charles.
You can see HTTP request straight away. However, to inspect HTTPS requests, there is couple more steps to go throw to enable SSL Proxy.
Testing on Google website, I still can’t see the content sent. I also can see SSL Proxy not enabled for this host. We need to finish enable SSL Proxy on Charles side.
Enable SSL proxy on Charles
Finally all the content from my request is now clear.
What’s happening in the background, the request from your laptop to Google is still under HTTPS. However, while using your local trusted certificate from your laptop to your phone enable a clear access to those data sent, before the request is actually made. Nobody else on your local network could access to those unencrypted data.
This example covers debugging request from web content like Safari. However, if you want to use it to debug a specific mobile app, you might need to add a security flag to your plist file to enable that feature.
In conclusion, Charles Proxy is pretty intuitive to use but can be tricky to set up, I hope this tutorial would make it easier for others too.
If you have any questions or suggestions about that article, I’ll be happy to help in the comment section.
Зачастую, при тестировании мобильных (да и web) клиент-серверных приложений бывают ситуации, когда нужно проверить как ведёт себя приложение при разном объеме данных, в каком формате приложение отправляет и получает данные, какие параметры у запроса и ответа, какой ответ присылает сервер при некорректном запросе, как реагирует приложение на некорректный ответ, как оно обрабатывает ошибки. Всё это можно относительно просто проверить при помощи Charles Proxy Server.
Установка и запуск
Скачиваем Charles Proxy с официального сайта, устанавливаем, запускаем (помним, что бесплатно можно пользоваться 30 дней). После запуска Charles предложит сам настроить сетевые подключения для работы:
Соглашаемся. Далее откроется интерфейс инструмента:
Слева (Structure/Sequence) будут отображаться соединения, внутри которых можно будет увидеть запросы. В правой части будут отображаться параметры запроса.
Настройка мобильного устройства
И настройка Wi-Fi подключения на смартфоне (в данном примере использовался iPhone):
Начиная с этого момента, в Charles мы можем видеть адреса, к которым обращается смартфон.
Последние штрихи настройки
Далее, возвращаемся к настройке самого Charles. Во-первых, если нас интересует конкретный адрес, а весь остальной трафик является шумом, то нужно кликнуть по интересующему нас адресу и выбрать пункт “Focus”. Это позволит скрыть все лишние адреса во вкладке “Other Hosts” (см. картинку ниже). Как было упомянуто выше, адреса серверов, на которые смартфон отсылает запросы нам видны, но мы не можем видеть параметры запросов:
Для того, чтобы Charles мог увидеть параметры запроса, нужно прописать адрес сервера в SSl Proxy Settings. Это можно сделать следующим образом:
В поле Host вводим адрес сервера, который нас интересует. Если порт указывать не требуется, то оставляем поле пустым
Теперь если отправить запрос на соответствующий сервер, то можно увидеть параметры запросов:
Модифицирование запросов и ответов
Итак, запросы к нужному серверу для нас теперь абсолютно прозрачны, но Charles интересен не только возможностью мониторинга запросов, но и возможностью их модификации. Например, можно изменить какой-либо параметр в заголовке или в теле запроса и посмотреть что вернёт нам сервер, или же наоборот, отправить правильный запрос, но модифицировать ответ, чтобы проверить ситуации, когда сервер может возвращать некорректные данные или когда нужно показать лишь часть данных. Сейчас нас интересует инструмент Rewrite:
Этот инструмент как раз и позволяет вносить нужные нам изменения в запросы. По-умолчанию, там ничего нет, следовательно, нам нужно добавить первую опцию, например, на изменение запроса.
Название можно дать любое, для себя я обозначил данную опцию как Request, чтобы в ней хранить все нужные мне модификации для запросов.
Далее нужно понять что именно мы хотим изменить в конкретном запросе. Например, нужно проверить, как поведёт себя серверная часть приложения в том случае, если клиент пришлёт некорректный запрос (будет отсутствовать одно поле или в поле будет неверный тип данных). Сообщит ли нам сервер об ошибке? Лучше, конечно, проверять, реакцию клиента на некорректный ответ сервера, потому что такая ситуация наиболее вероятна. Набор действий в любом случае идентичен. Под полем Location нужно кликнуть Add, а затем можно поставить значение * (в этом случае перезапись будет работать для всех запросов), либо указать конкретный URL и конкретный path.
После того как был задан адрес, по которому нужно произвести замену, нужно указать что конкретно следует изменить. В нашем случае это тело запроса.
Послесловие: В данной статье я постарался как можно более просто, но в то же время подробно описать инструкцию по работе с Charles Proxy Server. По сути, данная статья — агрегатор документации, размещенной на официальном сайте.
В сегодняшней статье я вам поведаю о том, как пользоваться программой Charles, мощным инструментом для тестирования веб-сервисов, в перечень возможностей которого входит перехватывание запросов, их подмена и перенаправление на локальные файлы.
Charles работает и на мобильных устройствах, но в этой статье мы будем рассматривать только версию для Windows. Давайте же начнем!
Установка Charles
Начать следует, конечно же, с установки. Скачиваем программу с официального сайта разработчика.
Программа платная, но есть тестовый период на 30 дней. Даже без покупки программой можно спокойно пользоваться, но время одной сессии будет ограничено 30 минутами, а также частенько на 5-10 секунд будет появляться оверлей.
Вы можете получить полную версию программы сами-знаете-какими методами, но мы их рассматривать не будем. Все же лучше поддержать разработчиков!
После скачивания следует запустить exe-файл и произвести инсталляцию. Здесь ничего сложного нет, просто оставьте стандартные настройки установки.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Настройка программы
После установки программу следует настроить. Многие пользователи Charles забывают об этом этапе, а затем кусают локти, пытаясь понять, почему у них ничего не работает. На самом деле настройка программы очень простая, сейчас все покажу!
Для начала нужно установить сертификат программы. Именно из-за него, увы, и возникает большинство проблем, связанных с неработоспособностью программы.
Инструкция по установке сертификата:
Жмем «Установить сертификат».
Здесь выбираем «Локальный компьютер» и жмем «Далее».
ВАЖНО! На этом этапе выбираем «Поместить все сертификаты в следующее хранилище», жмем «Обзор», затем ОБЯЗАТЕЛЬНО выбираем «Доверенные корневые центры сертификации».
Затем жмем «Готово».
Установку сертификата мы выполнили, теперь нам необходимо включить SSL Proxying и настроить его фильтрацию, чтобы начать перехватывать запросы. Фильтрация определяет, какие именно запросы нужно ловить, но мы сделаем так, чтобы у нас перехватывались все
Ставим галочку на «Enable SSL Proxying», затем под полем «Include» жмем на кнопку «Add».
Для отключения фильтрации и сниффинга всего трафика мы просто добавляем звездочку в поле «»
Программа настроена. Теперь рассмотрим ее возможности и функции.
Compose
Данная функция позволяет нам отправить копию выбранного запроса с измененными параметрами.
Нам достаточно выбрать один конкретный запрос и с помощью функции Compose поменять его параметры (заголовок запроса, тело запроса, куки, код и пр.)
Для начала мы можем отделить конкретные запросы от остальных с помощью функции Focus
У нас создается копия запроса, в которой мы можем менять все, что нам нужно: тело, шапку, тип запроса, версию HTTP и т.д.
Например, можно подменять некоторые значения в коде, чтобы проверить валидацию на бэкенде. Допустим, поле принимает только числовое значение. Мы используем Compose, передавая в значение поле уже буквы. Если запрос пройдет без ошибок, то это значит, что валидация отсутствует.
После изменения нужных нам параметров жмем «» и получаем копию запроса с ответом от сервера.
Данная функция позволяет точнее работать с запросами, вешая на них так называемый «Breakpoint» (точку остановки).
Ниже показано, как через настройки добавить запрос в список Breakpoint. После повторного получения указанного вами запроса в программе откроется отдельная сессия, в которой вы сможете спокойно работать с ним.
Отмечу, что эта функция, по сути, делает автоматический Compose. Вы так же можете менять значения, но вам не придется каждый раз выбирать конкретный запрос.
Ставим галочку на «Enable Breakpoints», затем жмем «Add».
Заполняем все поля в открывшемся окне (выше пример заполнения).
При повторном получении запроса с такими же данными у вас будет открываться новое окошко, в котором вы сможете работать с пойманным запросом. Удобно!
Если же ваша задача заключается в подмене параметров множества запросов, то вы можете прибегнуть к функции «»
Ставим галочку на «Enable Rewrite», затем в открывшемся окне под левым полем жмем «Add», а дальше жмем «Add» уже под правым верхним полем.
Заполняем все поля (они идентичны тем, что заполняются при создании Breakpoint).
Затем жмем «Add» уже под правым нижним полем, указываем тип редактирования запроса, заменяемые значения, а также условия замены.
Давайте поймаем запрос и посмотрим на реакцию Charles!
Charles поймал нужный запрос, а затем заменил все Header одним значением.
Repeat Advanced
Данная функция будет полезна для нагрузочного тестирования. Хоть Charles и не блещет особым потенциалом в данной области, но базовую проверку корректности флуд-контроля вы сможете выполнить.
Ниже подробно показано, как это сделать.
Здесь настраиваем все в соответствии с указаниями на приложенной выше картинке.
Должно открыться новое окно, где отправляются запросы.
Map Local
Последняя функция в сегодняшней статье. Позволяет работать с локальными файлами.
Демонстрация инструмента ниже.
В открывшемся окне у нас идут знакомые поля. Жмем «Choose» и выбираем локальный файл, после чего жмем «»
При повторном получении того же запроса Charles будет перенаправлять его на локальный файл.
Надеюсь, эта статья помогла вам разобраться в основах Charles. Это действительно мощный и довольно простой инструмент для тестирования. Спасибо за внимание!
Замечательная и бесплатная программа Charles перехватывает весь сетевой трафик вашего компьютера, в том числе HTTPS, расшифровывая его при помощи промежуточного сертификата. Но что если мы хотим перехватывать трафик из приложений, установленных на iOS/Android-устройстве?
Следуя простой инструкции, пропишите адрес своего компьютера в качестве прокси-сервера на своём устройстве, установите промежуточный сертификат, и в вашем Charles на компьютере начнёт перехватываться весь трафик с устройства, а HTTPS-трафик будет расшифрован. В конце инструкции есть пометка о том, что HTTPS-трафик из приложений будет расшифрован, только если разработчик добавил в plist-файл своего приложения специальный флаг NSAllowsArbitraryLoads. К сожалению, если этого нет, то со своей стороны сделать вы ничего не можете — Apple не позволяет изменять и загружать приложения никак, кроме как из App Store.
Для Android-устройств все шаги по первичной настройке устройства идентичны, смотрите инструкцию. Однако, в отличие от iOS, мы можем сами добавить любому приложению необходимый флаг, чтобы перехватить и расшифровать его HTTPS-трафик, даже если разработчик этого не предусмотрел. Если вы никогда не занимались распаковкой, изменением и обратной запаковкой APK-приложений для Android, вот подробная инструкция:
- Получите APK-файл нужного вам приложения у разработчика или из Google Play при помощи специального сайта.
- Установите на macOS утилиту командной строки apktool.
- Перенесите бинарный файл zipalign в папку /usr/local/bin, добавив ему права на исполнение. Для этого выполните в терминале следующие команды (предположим, что zipalign лежит в папке ~/Desktop):4.1 sudo cp ~/Desktop/zipalign /usr/local/bin 4.2 sudo chmod +x /usr/local/bin/zipalign
- Распакуйте APK-файл при помощи утилиты apktool:apktool d ~/Desktop/YOUR_APPLICATION_NAME.apk. Удалите APK-файл, чтобы впоследствии не возник конфликт.
- Зайдите в полученную папку YOUR_APPLICATION_NAME, далее в папку xml, создайте там файл network_security_config.xml, откройте его в текстовом редакторе и добавьте туда необходимое содержимое.
- В командной строке соберите папку обратно в APK-файл, указав аргументом название папки:apktool b ~/Desktop/YOUR_APPLICATION_NAMEСобранное APK-приложение будет лежать в папке ~/Desktop/YOUR_APPLICATION_NAME/dist. Перенесите его на ~/Desktop.
- Сгенерируйте ключи и подпишите APK-приложение:9.1. keytool -genkey -v -keystore ~/Desktop/YOUR_APPLICATION_NAME.keystore -alias myApp -keyalg RSA -validity 10000 9.2. jarsigner -verbose -keystore ~/Desktop/YOUR_APPLICATION_NAME.keystore ~/Desktop/YOUR_APPLICATION_NAME.apk myApp 9.3. zipalign -f -v 4 ~/Desktop/YOUR_APPLICATION_NAME.apk ~/Desktop/YOUR_APPLICATION_NAME_signed.apk
- Всё готово! Вы можете переносить полученный файл YOUR_APPLICATION_NAME_signed.apk на своё устройство и устанавливать приложение. В процессе, возможно, система вас спросит, хотите ли вы установить приложение неустановленного разработчика и предоставить необходимые для этого разрешения.
Теперь трафик от приложения будет расшифровываться в Charles на компьютере при помощи того же промежуточного сертификата. Вы можете пользоваться всеми функциями Charles, включая подмену файлов и запросов, и исследовать трафик приложения.