Установка charles proxy windows

Installation

First Download Charles. If you use Firefox download the Firefox add-on as well.

Windows

Run the setup application to install Charles in your Programs menu.

Mac OS X

Unzip the download file by double-clicking it, and then copy the Charles application into your Applications folder.

Linux

Charles has APT and YUM repositories, which are the preferred ways to install Charles if you have Debian-based or Red Hat-based Linux distributions.

Otherwise, unzip the tar.gz archive in an appropriate location. If you have previously installed Charles and you are performing an upgrade; first make sure that Charles isn’t running and then install or copy over the top of the previous installation. Start Charles by running the bin/charles script.

Getting Started

To get started with Charles please see the Getting Started guide.

Время на прочтение10 мин

Количество просмотров379K

Привет! Многие из тех, кто приходит к нам на собеседование на должность тестировщика, с гордостью заверяют, что они могут пользоваться 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, мощным инструментом для тестирования веб-сервисов, в перечень возможностей которого входит перехватывание запросов, их подмена и перенаправление на локальные файлы. 

Charles работает и на мобильных устройствах, но в этой статье мы будем рассматривать только версию для Windows. Давайте же начнем!

Установка Charles

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

Установка программы Charles

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

Charles Web Debugging Proxy

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

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

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

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

Подписаться


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

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

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

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

Установка Charles

Открываем меню установки сертификата через Help -> SSL Proxying -> Install Root Charles Certificate.

Help -> SSL Proxying -> Install Root Charles Certificate» src=»https://timeweb.com/media/image30.png»></p>
<div class= Картинка с сайта: timeweb.com

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

Мастер импорта сертификатов

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

Сертификаты Charles

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

Поместить все сертификаты в следующее хранилище

Жмем «Далее».

Импорт сертификатов

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

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

SSL Proxying

Открываем Proxy -> SSL Proxying Settings.

SSL Proxying Settings

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

Enable SSL Proxying

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

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

Compose

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

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

Compose

Теперь выбираем нужный нам запрос и выполняем ПКМ -> Compose

Focus Compose Charles

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

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

Charles

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

Breakpoint

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

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

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

Breakpoint

Открываем Proxy -> Breakpoint Settings.

Breakpoint Settings Charles

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

Enable Breakpoints

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

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

Программа Charles

Rewrite

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

Rewrite

Открываем Tools -> Rewrite.

Tools -> Rewrite» src=»https://timeweb.com/media/image9.png»></p>
<div class= Картинка с сайта: timeweb.com

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

Enable Rewrite

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

Новое правило в Чарльз

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

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

Захват запросов

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

Repeat Advanced

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

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

Repeat Advanced

ПКМ по запросу -> Repeat Advanced.

Флуд-контроль

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

Проверяем!

Запросы в Charles

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

Map Local

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

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

Map Local

ПКМ по запросу -> Map Local.

Карта запросов

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

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

Локальный файл в Charles

Надеюсь, эта статья помогла вам разобраться в основах Charles. Это действительно мощный и довольно простой инструмент для тестирования. Спасибо за внимание!

  • Коротко
  • Настройка на десктопе
    • Установка
    • Рут-сертификат
    • SSL
    • Кнопки на панели
    • Сохранение и шеринг сессий
    • Удаление сертификата
  • Настройка на смартфоне
    • Действия
    • Установка сертификата
  • Если что-то пошло не так
  • UPD: Как раздать VPN
  • Видео для утомленных чтением

Что такое Charles

Логотип Charles радикально не похож на общепринятые минималистичные иконки:

Charles Proxy логотип

Необычно

«Чарли» — инструмент контроля/мониторинга трафика, который позволяет тестировать веб-приложения. Он нужен QA для анализа запросов, отправляемых приложением к серверу, и ответов. Он умеет читать трафик компьютеров под Windows, и мобильных девайсов, как Android, так и iOS. Наверное, входит в «базовый набор» тестировщика.

Настройка на десктопе

Итак, Charles «вставляется» между тестируемой программой и ее сервером и «читает» коммуникацию между ними. К примеру, когда вводите слово в Google, то ваш ПК (или смартфон) передает в Google поисковый запрос. Charles, если установлен в системе, выступает в роли посредника (или скорее «перехватчика») между приложением и сервером и отслеживает логи запросов, что полезно при разработке и тестировании приложений, которым требуется сервер (то есть практически всех современных приложений).

Что делает Charles Proxy с трафиком

Что он делает

Установка Charles

В браузере заходим на URL-адрес загрузки пробной версии на официальном сайте (пробника для ознакомления достаточно; для любителей экспериментов, уже немного знакомых с «Чарли», есть бета 5-й версии; но там, судя по их блогу, мало что improved, кроме каких-то сугубо визуальных improvements и iOS-дебагов). На сайте три ссылки на загрузку для различных версий ОС, т.е. для Windows, Mac и Linux. Качаем нужное:

Скачать Charles

Щелкаем на соответствующей ссылке и ждем конца загрузки.

Скачка завершена

У нас например Windows. Идем в папку Загрузки, где уже скачан установочный файл Charles-proxy-4.5.4-win64.msi (номер версии в вашем случае будет чуть больше, разница между версиями не принципиальна). Запускаем, после чего появится стандартный для Windows мастер инсталляции:

Начало установки Charles Proxy

Соглашаемся с лицензионным соглашением и нажимаем Next:

Принимаем SLA

Указываем рабочую папку

Процесс пошел

Финиш

Жмем Finish. Открываем свежепоставленное приложение Charles. Стартовое окно приведено ниже. Опция Windows proxy должна быть активирована по дефолту. Проверяем в меню Proxy:

Включаем прокси в Windows

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

Устанавливаем рут-сертификат

#1) Входим в меню Помощь, и в выпадающем списке находим пункт “Install Charles Root Certificate”.

Ставим рут-сертификат

#2) Указываем, где установить сертификат.

#3) Если выбран локальный компьютер, то задаем расположение папки, нажав на кнопку Browse и выбрав «Trusted Root Certification Authorities«.

Добавляем в Доверенные

#4) Жмем OK и продолжаем.

#5) Появится уведомление об успешно установленном сертификате.

Активация SSL-проксирования

Теперь можно приступать к изучению возможностей Charles что касается SSL, т.е. читать запросы от локальной машины на сервер.

  • Откриваем Google, набираем wikipedia и жмем Искать.
  • Открываем Charles и переключаем на отображение Структуры — в левом верхнем углу окна находим опцию отображения (Sequence/Structure) и выбираем режим Structure.
  • В появившихся фильтрах вводим “wiki” для вывода запросов, содержащих этот текст.
  • Нажимаем правой кнопкой в правой части нашего запроса и выбираем пункт Enable SSL proxying.
Включаем SSL-прокси

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

Для этого:

#1) Щелкните в строке меню пункт Proxy и выберите пункт SSL Proxy Settings.

Уточняем настройки SSL

Там можно увидеть, что Google уже есть в списке (ведь мы его добавляли раньше).

#2) Щелкните кнопку Add и в Edit location добавляем звездочку (*) в поле Host и 443 в поле Port. Звездочка значит, что все «подобные» URL будут включены в фильтр по локации.

Прописываем правильный порт 443

Теперь ОК.

Идем далее — прочие функции и настройки.

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

Смотрим настройки

Функциональность Charles (кнопки)

Кнопки Charles Proxy

Сверху в ленту вынесены самые используемые функции.

Пройдемся по ним.

#1) Clear (Удалить сессию): Нажатие удаляет сессию, после чего можно начать новую сессию.

#2) Stop/Start: По дефолту функция включена. Если нужно приостановить запись в лог, нажимаем Stop.

#3) SSL Proxying: Если вы ранее активировали эту функцию в настройках, то данная кнопка будет активна.

#4) Network Throttling (Троттлинг или дросселирование сети): Функция искусственного ограничения скорости (т.н. дросселирования) сети служит для имитации сложных условий или устаревших технологий в сети, таких как 2G, или плохого покрытия 3G/4G/WiFi, или может подключения через модем. 

Это полезно, когда тестируем приложение, сильно зависящее от скорости подключения — как оно поведет себя в различных условиях. Точнее указать скорость и параметры сети — клавиши Ctrl+Shift+T или меню Proxy => Throttle settings.

#5) Breakpoints: Эта функция видимо не понадобится, если вы не разработчик. Если поставить точку останова на какой-либо запрос, то когда Charles получит такой запрос, он будет ждать дополнительных действий.

#6) Compose: Функция позволяет редактировать запросы и отправлять их в уточненном виде. Можно изменить/добавить нужные параметры и отправить с ними.

#7) Repeat: Запрос в редакторе будет отправлен повторно. Функция нужна, когда понадобилось повторить запрос, не выполняя действие заново.

#8) Validate: функция предназначена для проверки (валидации) запросов или ответов. Открывается новая вкладка с результатами валидации.

#9) License Purchase: Придется нажать через месяц.

#10) Tools: Здесь вспомогательные инструменты контроля трафика.

#11) Settings: Настройки управления доступом, прокси, протоколирования, кастомные настройки под проект и т.д.

Сохранение и шеринг сессии

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

Нажимаем Control+S или переходим в меню File и жмем Save. Далее вводим удобочитаемое имя, с расширением .chls, например TestLogs.chls и сохраняем.

Также можно сохранить логи в разделе Files, в формате .chls и расшарить другим тестировщикам.

Аналогично, можно импортировать чужой .chls к себе и работать с ним.

Удаляем сертификат Charles

Ранее мы ставили root-сертификат Charles. Теперь, как его удалять (это бывает нужно).

#1) Ищем на компьютере Certificate Manager (Менеджер сертификатов). В Windows он называется certmgr.msc:

#2) Когда он открылся, нажимаем Trusted Root Certification Authorities (Корневые центры сертификации), и указываем папку Сертификаты, появится их список. Процесс:

Удаление сертификата из Доверенных

Находим сертификат Charles в списке

#3) Выбираем контекстное меню сертификата Charles в списке и жмем Delete.

Удаляем сертификат

#4) Далее подтверждаем — Yes. Сертификат удален, но если Charles будет нужен снова, придется ставить заново.

Подтверждаем удаление

Настройка в Android

Charles работает с Android, то есть позволяет контролировать трафик на Android с компьютера. Для этого сначала нужно настроить параметры Wi-Fi на Android.

ПК с установленным Charles и Android-устройство должны быть в одной WiFi-сети.

Если вы уже когда-то работали с MITM, то вам не составит труда настроить и Charles.

Этапы

#1) Откройте Уведомления на Android-девайсе.

#2) Длительным нажатием на значке WiFi открываем Дополнительные настройки.

#3) На компьютере открываем терминал и вводим ipconfig.

#4) Там указан IP-адрес ПК, как на скриншоте ниже.

Узнать свой айпишник

#5) Посмотреть IP можно также в Charles. Нажимаем меню Help => Local IP address, в всплывшем окне — IP.

#6) Заходим в параметры WiFi в смартфоне и долгим нажатием заходим в настройки WiFi.

#7) Modify network — изменяем эти настройки.

#8) Ставим галочку Show advanced options.

#9) Указываем Proxy — Manual.

#10) Введите имя Proxy с IP системы ПК и номер порта 8888, и Save.

#11) После сохранения настроек сети в смартфоне Charles proxy запросит подключения с девайса. Жмем Allow.

Установка root-сертификата Charles в Android

Для установки сертификата делаем следующее:

#1. На Android-устройстве устанавливаем блокировку экрана, т.е. пинкод или паттерн разблокировки телефона; блокировка должна быть

#2. Открываем Chrome на смартфоне и вводим там следующий URL-адрес.

#3. Появится запрос на ввод пароля или паттерна блокировки экрана. Введите.

#4. Сертификат загрузится.

#5. Появится запрос, укажите имя и сохраните.

#6. Настройка завершена, Charles контролирует трафик.

#7. Если в QA-задаче только трафик с мобильного девайса, снимаем галочку с проксирования в Windows:

Отключаем прокси в Windows

Удаляем сертификат

  • Если Charles больше не нужен, можно удалить его сертификат.
  • В Настройках на Android-смартфоне находим раздел Security (Безопасность), далее ищем Trusted Credentials (Доверенные данные).
  • Ищем сертификат с нужным именем и удаляем.

Платная подписка Charles Proxy

Стоимость лицензии для одного человека составляет 30$.

В триал-периоде есть ограничения:

#1) Charles вначале тупит — долго запускается с заставкой:

Заставка trial Charles Proxy

#2) И он закроется через полчаса, придется перезапускать.

Charles Proxy вылетает

Часто задаваемые вопросы (FAQ)

#1) Charles работает на iPhone?

Ответ: Да, здесь описание настройки.

#2) В каких ОС работает Charles?

Ответ: Работает с iOS и Windows, а читает трафик с Windows/Android/iOS.

#4) Существуют ли альтернативы?

Ответ: Да, есть MITM с похожей функциональностью. Но там довольно мало возможностей и неудобный интерфейс.

#5) Есть ли в Charles веб-интерфейс?

Ответ: Да, поддерживает веб-интерфейс. В разделе Settings => Web interface settings.

#6) Где официальная документация?

Ответ: здесь.

#7) Как отключить Charles?

Ответ: Просто нажать кнопку Stop, или закрыть приложение. Перехват сетевых вызовов будет прекращен (ничего не «пишется» втайне от пользователя).

#8) Преимущества Charles?

Ответ:

  • Удобство интерфейса.
  • Поддержка всех распространенных ОС.
  • Возможности моделирования ограничений трафика.
  • Экспорт и импорт сессий.
  • Простота.

#9. Не вижу localhost-трафик.

Некоторые системы бывают hardcoded не использовать прокси для localhost-трафика. Простое решение: подключиться к http://localhost.charlesproxy.com/. Альтернативное: добавить точку после localhost, или заменить localhost именем вашей машины, или просто ввести свой IP.

#10. В ответе вижу странные символы (кодировка слетает).

Во первых, проверить кодировку/charset на сервере. Charles ее может «не угадать». Если не получается, то возможно проблема со шрифтами, изменить шрифт в Preferences или вкладке User Interface. И перезапустить Charles.

#11. Перестал работать интернет в браузере, если не запущен Charles

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

#12. Charles конфликтует с антивирусом или файерволлом (что-то падает или глючит)

Лучше временно удалить антивирус/отключить файерволл.

#13. Почему такой логотип?

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

#14. Localhost SSL-трафик с Chrome падает с ошибкой ERR_CONNECTION_CLOSED

Chrome по дефолту реджектит localhost-трафик с невалидным SSL-сертификатом. Возможно SSL-сертификат просрочен или с неправильным именем, или указан не тот нужен. Если все ок, но Chrome все равно отвергает, нужно зайти сюда: chrome://flags/#allow-insecure-localhost и включить Allow invalid certificates for resources loaded from localhost.

Как раздать VPN

Здесь туториал.

Видео для утомленных чтением

Есть видеотуториалы Артема Русова:

Установка и настройка

Практикум

Также мини-курс по снифферам от AlexQA (там Charles+Fiddler):

8 частей

Заключение

Если вы уже имеете представление о тестировании API, пользоваться Charles довольно просто. Большинство функций интуитивны.

Источники:1,2


Подпишись на понедельничные QA-дайджесты — и там не будет рекламы

Introduction

Charles Proxy is a popular web debugging tool that helps developers and testers view all HTTP/S traffic between their machine and the internet. It’s widely used for troubleshooting, API testing, and monitoring network calls in real-time. In this guide, we’ll walk you through setting up Charles Proxy from scratch, so you can start intercepting network requests in no time.

Afterward we will take a look at a tool that provides similar functionality but with a modern and easy-to-use UI.

Step 1: Download and Install Charles Proxy

  • Visit the official website: Head over to the Charles Proxy website and download the appropriate version for your operating system (Windows, macOS, or Linux).
  • Run the installer: Follow the installation wizard prompts. On macOS, you may need to drag the app into the Applications folder. For Windows, follow the standard installation steps.
  • Launch Charles Proxy: Once installed, open Charles Proxy. You’ll be greeted with a trial version screen if you haven’t purchased a license.

Step 2: Set Up SSL Proxying

Charles Proxy allows you to inspect HTTPS traffic as well. Here’s how to set it up:

Enabling SSL Proxying in Charles

  • Open Charles Proxy.
  • Go to the Proxy menu and select SSL Proxying Settings.

    Requestly: An Easier Alternative to Charles Proxy

    Requestly offers an easier, browser-based alternative for users who find Charles Proxy complex. It provides similar functionality through a more user-friendly interface, making it ideal for quick web traffic modifications without the need for advanced setup. Unlike Charles Proxy, which lacks a Chrome Extension, Requestly offers extensive functionality directly as a browser extension, along with a standalone desktop app for more advanced use cases. For every feature in Charles Proxy, there’s a corresponding tool in Requestly, such as redirecting URLs, modifying headers, and blocking requests.

    Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии
  • Не определяется жесткий диск при установке windows 10
  • Как включить javascript на windows
  • Обновление не применимо к вашему компьютеру windows 11 22h2
  • Rsat windows 10 x64 не устанавливается
  • Ошибка входа в аккаунт windows