Как установить сертификат charles на андроид

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.

Как установить сертификат charles на андроид

Установка сертификата на девайс

Прежде чем начать работу, нужно установить на свой девайс сертификат, скачав его в браузере по ссылке chls.pro/ssl. Используйте Safari для iOS и системный браузер для Android.

Если скачивание сертификата не началось автоматически, нужно в установленном на ноутбуке Charles найти запросы http://ssl.charles и http://chls.pro, правым кликом по каждому из них выбрать Enable SSL Proxying и снова пройти по ссылке.

Как установить сертификат charles на андроид

Android: Если установка сертификата после загрузки не произошла, ищем «Сертификаты» в настройках девайса, выбираем пункт меню Установка ЦА/ЦС сертификатов безопасности. Ищем скачанный на девайс сертификат и устанавливаем его. Если потребуется задать PIN при установке, то задать любой.

Читать также:  Сертификат соответствия на лист стальной оцинкованный толщиной 0 5 мм

Как установить сертификат charles на андроид

Финальные настройки

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

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

Можно отображать запросы в виде структурированных папок.

Как установить сертификат charles на андроид

Дерево запросов — список запросов, который был отправлен приложением. Поле запроса — информация о запросе. Поле ответа — ответ сервера. Фильтр — поле для фильтрации запросов.

Режим Sequence

Здесь запросы отображаются в режиме очередности

Как установить сертификат charles на андроид

Просмотр информации

Просмотр информации о запросе идентичен и для Structure, и для Sequence.

Как установить сертификат charles на андроид

Overview — информация о запросе (статус, время, метод и т д). Полная информация, которая доступна о запросе.

Как установить сертификат charles на андроид

Contents — содержимое запроса с хедерами, куками, json-ами и т.д. Основная рабочая вкладка, на которой смотрим содержимое запросов/ответов. Для ответов чаще всего используются Headers и JSON Text.

Как установить сертификат charles на андроид

Summary — сравнительная информация о группе запросов. Удобно сравнивать время, размер и другие данные о запросах.

Как установить сертификат charles на андроид

Chart — сравнительная диаграмма о времени выполнения группы запросов. По сути, это очередность запросов со временем их выполнения. Будет полезна, если надо прикинуть, сколько относительно друг друга занимают по времени запросы.

Как установить сертификат charles на андроид

Notes — личные заметки о запросе. В заметке можно написать, что делает запрос, какие-то данные для подмены или просто выразить свое негодование.

Как установить сертификат charles на андроид

Сама заметка теперь будет отображаться во вкладке Overview запроса.

Как установить сертификат charles на андроид

Бабблы подключенных настроек

Здесь отображаются правила, которые сейчас включены в Charles Proxy к запросам и ответам.

Как установить сертификат charles на андроид

На скриншоте выше можно увидеть, что в данный момент включена запись запросов Recording, включены правила подмены Rewrite, включена локальная подмена Map Local на запрос, а также выставлены Breakpoints на некоторые запросы.

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

Разработка мобильных приложений, Разработка под iOS, Блог компании DataArt, Тестирование мобильных приложений

Как установить сертификат charles на андроид

Привет, меня зовут Андрей Батутин, я Senior iOS Developer в DataArt, и сегодня мы будем сниффить HTTPS-трафик твоего «Айфона».

FoodSniffer и с чем его едят

Возьмем, к примеру, очень простое iOS-приложение FoodSniffer. Оно в зависимости от времени дня показывает пользователю, что можно есть.

Как установить сертификат charles на андроид

Приложение получает от сервера JSON вида:

Сервером в данном случае выступает Dropbox, а JSON можно посмотреть здесь.

Проблема №1

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

Один из способов проверить, что пошло не так, — увидеть JSON, который вам возвращает сервер.

Как сниффить трафик?

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

Как установить сертификат charles на андроид

Трафик идет от iOS-устройства через роутер к серверу независимо от трафика компьютера.

Чтобы читать трафик iOS-устройства, нам нужно сделать так, чтобы он шел через наш Мac. Примерно так:

Как установить сертификат charles на андроид

Кроме того, нам понадобится HTTP/S-прокси-сервер, с помощью которого мы бы и смотрели/модифицировали проходящий трафик iOS-устройства.

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

Иными словами, нам нужно реализовать Man-in-the-Middle-атаку на нашу собственную сеть.

Как установить сертификат charles на андроид

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 на компьютере:

Как установить сертификат charles на андроид

2. Установить Charles Root Certificate на iOS устройстве:

Как установить сертификат charles на андроид

Появится следующее окно:

Как установить сертификат charles на андроид

3. В настройках сети iOS-устройства указываем IP и порт Charles Proxy:

Как установить сертификат charles на андроид

4. Открываем браузер на iOS-устройстве и переходим по ссылке — http://chls.pro/ssl.

Как установить сертификат charles на андроид

5. Устанавливаем Charles SSL-сертификат на устройство:

Как установить сертификат charles на андроид

6. Указываем в настройках устройства, что полностью доверяем данному сертификату:

Как установить сертификат charles на андроид

Шестой этап нужен для устройств с iOS 10 и выше.

На 5–6-м этапах мы установили на устройство Charles SSL-сертификат и указали, что мы ему доверяем. Т. е. теперь весь HTTPS-трафик, подписанный этим сертификатом, не будет блокироваться ATS.

Как смотреть трафик iOS-устройства

Откройте приложение FoodSniffer. Если настройка прокси была сделана правильно, то вы должны увидеть такой экран:

И полностью выключите кэширование на прокси-сервере.

Как установить сертификат charles на андроид

В приложении реализован Pull-to-refresh, после обновления списка продуктов вы должны в Charles увидеть https://www.dropbox.com в списке с левой стороны. Нажмите правой кнопкой мыши на него и выберите Enable SSL Proxing.

Как установить сертификат charles на андроид

После этого еще раз обновите список продуктов в приложении. Теперь вы должны увидеть примерно такую картину:

Как установить сертификат charles на андроид

Теперь мы можем свободно читать HTTPS-трафик, который идет от приложения на Dropbox за нашим JSON.

Но это еще не все!

Dropbox не отдает JSON c хоста dropbox.com напрямую. Вместо этого он возвращает 302-респонс и редиректит еще на один хост, с которого и происходит загрузка данных.

Найти его можно, просмотрев Raw Response следующего запроса:

Как установить сертификат charles на андроид

У вас, скорее всего, будет немного другой хост.

Читать также:  Нужно ли вакцинироваться от коронавируса если переболел уже коронавирусом и есть сертификат

Затем включаем для него SSL Proxing: Enabled.

Обновляем FoodSniffer еще раз.

И теперь мы наконец можем увидеть реальный JSON, который и показывает приложение!

Как установить сертификат charles на андроид

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

Проблема № 2, или Как изменять HTTPS-трафик iOS-устройства

Бэкенд-команда исправила меню на вечер, и теперь JSON формируется правильно. Но что делать, если сейчас утро, а ждать до вечера, чтобы проверить фикс, не хочется?

Один из вариантов — с помощью Charles изменять JSON, который вам приходит в ответ от Dropbox.

В данном случае нам нужно изменить consumePeriod с evening на morning.

В появившемся окне Rewrite Settings добавляем новую категорию для перезаписи — dropbox.

Как установить сертификат charles на андроид

Добавляем хост, указывая https-порт в Edit Location меню:

Как установить сертификат charles на андроид

После этого добавляем правила перезаписи в Rewrite Rule меню следующим образом:

Как установить сертификат charles на андроид

Т. е. теперь в каждом Body респонса от нашего сервера слово evening будет заменено на слово morning.

При необходимости мы можем менять любую часть HTTP-запроса/ответа, плюс использовать regex-выражение для замены текста.

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

Как установить сертификат charles на андроид

Вывод

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.

Как установить сертификат 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.

Как установить сертификат 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.

Как установить сертификат charles на андроид

Как установить сертификат charles на андроид

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.

Как установить сертификат charles на андроид

Enable SSL proxy on Charles

Как установить сертификат charles на андроид

Finally all the content from my request is now clear.

Как установить сертификат charles на андроид

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

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

Как установить сертификат charles на андроид

Программа платная, но есть тестовый период на 30 дней. Даже без покупки программой можно спокойно пользоваться, но время одной сессии будет ограничено 30 минутами, а также частенько на 5-10 секунд будет появляться оверлей.

Как установить сертификат charles на андроид

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

После скачивания следует запустить exe-файл и произвести инсталляцию. Здесь ничего сложного нет, просто оставьте стандартные настройки установки.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Настройка программы

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

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

Инструкция по установке сертификата:

Как установить сертификат charles на андроид

Как установить сертификат charles на андроид

Жмем «Установить сертификат».

Как установить сертификат charles на андроид

Здесь выбираем «Локальный компьютер» и жмем «Далее».

Как установить сертификат charles на андроид

ВАЖНО! На этом этапе выбираем «Поместить все сертификаты в следующее хранилище», жмем «Обзор», затем ОБЯЗАТЕЛЬНО выбираем «Доверенные корневые центры сертификации».

Как установить сертификат charles на андроид

Затем жмем «Готово».

Установку сертификата мы выполнили, теперь нам необходимо включить SSL Proxying и настроить его фильтрацию, чтобы начать перехватывать запросы. Фильтрация определяет, какие именно запросы нужно ловить, но мы сделаем так, чтобы у нас перехватывались все

Как установить сертификат charles на андроид

Как установить сертификат charles на андроид

Ставим галочку на «Enable SSL Proxying», затем под полем «Include» жмем на кнопку «Add».

Как установить сертификат charles на андроид

Для отключения фильтрации и сниффинга всего трафика мы просто добавляем звездочку в поле «»

Программа настроена. Теперь рассмотрим ее возможности и функции.

Compose

Данная функция позволяет нам отправить копию выбранного запроса с измененными параметрами.

Нам достаточно выбрать один конкретный запрос и с помощью функции Compose поменять его параметры (заголовок запроса, тело запроса, куки, код и пр.)
Для начала мы можем отделить конкретные запросы от остальных с помощью функции Focus

Как установить сертификат charles на андроид

Как установить сертификат charles на андроид

У нас создается копия запроса, в которой мы можем менять все, что нам нужно: тело, шапку, тип запроса, версию HTTP и т.д.

Например, можно подменять некоторые значения в коде, чтобы проверить валидацию на бэкенде. Допустим, поле принимает только числовое значение. Мы используем Compose, передавая в значение поле уже буквы. Если запрос пройдет без ошибок, то это значит, что валидация отсутствует.

Как установить сертификат charles на андроид

После изменения нужных нам параметров жмем «» и получаем копию запроса с ответом от сервера.

Данная функция позволяет точнее работать с запросами, вешая на них так называемый «Breakpoint» (точку остановки).

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

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

Как установить сертификат charles на андроид

Как установить сертификат charles на андроид

Ставим галочку на «Enable Breakpoints», затем жмем «Add».

Как установить сертификат charles на андроид

Заполняем все поля в открывшемся окне (выше пример заполнения).

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

Как установить сертификат charles на андроид

Если же ваша задача заключается в подмене параметров множества запросов, то вы можете прибегнуть к функции «»

Как установить сертификат charles на андроид

Как установить сертификат charles на андроид

Ставим галочку на «Enable Rewrite», затем в открывшемся окне под левым полем жмем «Add», а дальше жмем «Add» уже под правым верхним полем.

Как установить сертификат charles на андроид

Заполняем все поля (они идентичны тем, что заполняются при создании Breakpoint).

Как установить сертификат charles на андроид

Затем жмем «Add» уже под правым нижним полем, указываем тип редактирования запроса, заменяемые значения, а также условия замены.

Давайте поймаем запрос и посмотрим на реакцию Charles!

Как установить сертификат charles на андроид

Charles поймал нужный запрос, а затем заменил все Header одним значением.

Repeat Advanced

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

Ниже подробно показано, как это сделать.

Как установить сертификат charles на андроид

Как установить сертификат charles на андроид

Здесь настраиваем все в соответствии с указаниями на приложенной выше картинке.

Как установить сертификат charles на андроид

Должно открыться новое окно, где отправляются запросы.

Map Local

Последняя функция в сегодняшней статье. Позволяет работать с локальными файлами.

Демонстрация инструмента ниже.

Как установить сертификат charles на андроид

Как установить сертификат charles на андроид

В открывшемся окне у нас идут знакомые поля. Жмем «Choose» и выбираем локальный файл, после чего жмем «»

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

Как установить сертификат 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, включая подмену файлов и запросов, и исследовать трафик приложения.

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

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