Занурення в дивовижний світ Charles для чайників
У сьогоднішній статті ми розповімо про те, як користуватися програмою Charles, потужним інструментом для тестування веб-сервісів, до переліку можливостей якого входить перехоплення запитів, їхня підміна та перенаправлення на локальні файли.
Charles працює і на мобільних пристроях, але в цій статті ми розглядатимемо тільки версію для Windows. Давайте ж почнемо!
Встановлення Charles
Почати слід, звісно ж, зі встановлення. Завантажуємо програму з офіційного сайту розробника.

Програма платна, але є тестовий період на 30 днів. Навіть без купівлі програмою можна спокійно користуватися, але час однієї сесії буде обмежено 30 хвилинами, а також частенько на 5-10 секунд з'являтиметься оверлей.

Ви можете отримати повну версію програми самі-знаєте-якими методами, але ми їх розглядати не будемо. Все ж краще підтримати розробників!
Після скачування слід запустити exe-файл і провести інсталяцію. Тут нічого складного немає, просто залиште стандартні налаштування встановлення.
Налаштування програми
Після встановлення програму слід налаштувати. Багато користувачів Charles забувають про цей етап, а потім кусають лікті, намагаючись зрозуміти, чому у них нічого не працює. Насправді налаштування програми дуже просте, зараз усе покажу!
Для початку потрібно встановити сертифікат програми. Саме через нього, на жаль, і виникає більшість проблем, пов'язаних із непрацездатністю програми.
Інструкція зі встановлення сертифіката:

- Відкриваємо меню встановлення сертифіката через Help -> SSL Proxying -> Install Root Charles Certificate.

- З'явиться вікно для встановлення сертифіката. Натисніть кнопку "Встановити сертифікат"
- Відкриється майстер імпорту сертифікатів. Вибираємо "Локальний комп'ютер" і тиснемо "Далі".

- ВАЖЛИВО! На цьому етапі обираємо "Розташувати всі сертифікати в такому сховищі", тиснемо "Огляд", потім ОБОВ'ЯЗКОВО обираємо "Довірені кореневі центри сертифікації".
- Тиснемо "Далі".
- Потім тиснемо "Готово".
Встановлення сертифіката ми виконали, тепер нам необхідно увімкнути SSL Proxying і налаштувати його фільтрацію, щоб почати перехоплювати запити. Фільтрація визначає, які саме запити потрібно ловити, але ми зробимо так, щоб у нас перехоплювалися всі запити.

- Відкриваємо Proxy -> SSL Proxying Settings.

Ставимо галочку на "Enable SSL Proxying", потім під полем "Include" тиснемо на кнопку "Add".

- Для вимкнення фільтрації та сніфінгу всього трафіку ми просто додаємо зірочку в поле "Host".
- Програму налаштовано. Тепер розглянемо її можливості та функції.
Compose
Ця функція дає нам змогу надіслати копію обраного запиту зі зміненими параметрами.
Нам достатньо вибрати один конкретний запит і за допомогою функції Compose поміняти його параметри (заголовок запиту, тіло запиту, куки, код тощо).
Для початку ми можемо відокремити конкретні запити від інших за допомогою функції Focus:

Тепер вибираємо потрібний нам запит і виконуємо ПКМ -> Compose

У нас створюється копія запиту, в якій ми можемо змінювати все, що нам потрібно: тіло, шапку, тип запиту, версію HTTP тощо.
Наприклад, можна підміняти деякі значення в коді, щоб перевірити валідацію на бекенді. Припустимо, поле приймає тільки числове значення. Ми використовуємо Compose, передаючи в значення поле вже букви. Якщо запит пройде без помилок, то це означає, що валідація відсутня;

Після зміни потрібних нам параметрів тиснемо "Execute" і отримуємо копію запиту з відповіддю від сервера.
Breakpoint
Ця функція дає змогу точніше працювати із запитами, вішаючи на них так званий "Breakpoint" (точку зупинки).
Нижче показано, як через налаштування додати запит до списку Breakpoint. Після повторного отримання зазначеного вами запиту в програмі відкриється окрема сесія, в якій ви зможете спокійно працювати з ним.
Зазначимо, що ця функція, по суті, робить автоматичний Compose. Ви так само можете змінювати значення, але вам не доведеться щоразу вибирати конкретний запит;

Відкриваємо Proxy -> Breakpoint Settings.

Ставимо галочку на "Enable Breakpoints", потім тиснемо "Add".

Заповнюємо всі поля у вікні, що відкрилося (вище приклад заповнення);
При повторному отриманні запиту з такими самими даними у вас буде відкриватися нове віконце, в якому ви зможете працювати з спійманим запитом. Зручно!

Rewrite
Якщо ж ваше завдання полягає в підміні параметрів безлічі запитів, то ви можете вдатися до функції "Rewrite".

Відкриваємо Tools -> Rewrite.

Ставимо галочку на "Enable Rewrite", потім у вікні, що відкрилося, під лівим полем тиснемо "Add", а далі тиснемо "Add" вже під правим верхнім полем;

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

Потім тиснемо "Add" вже під правим нижнім полем, вказуємо тип редагування запиту, замінювані значення, а також умови заміни.
Давайте зловимо запит і подивимося на реакцію Charles!

Charles зловив потрібний запит, а потім замінив усі Header одним значенням.
Repeat Advanced
Ця функція буде корисна для навантажувального тестування. Хоч Charles і не вражає особливим потенціалом у цій галузі, але базову перевірку коректності флуд-контролю ви зможете виконати.
Нижче докладно показано, як це зробити.

ПКМ за запитом - Repeat Advanced.

Тут налаштовуємо все відповідно до вказівок на прикладеній вище картинці.
Перевіряємо!

Має відкритися нове вікно, де надсилаються запити.
Map Local
Остання функція в сьогоднішній статті. Дозволяє працювати з локальними файлами;
Демонстрація інструменту нижче.

ПКМ за запитом -> Map Local.

У вікні, що відкрилося, у нас йдуть знайомі поля, тиснемо "Choose" і вибираємо локальний файл, після чого тиснемо "OK".
У разі повторного отримання того самого запиту Charles перенаправлятиме його на локальний файл.

Сподіваємось, ця стаття допомогла вам розібратися в основах Charles. Це справді потужний і доволі простий інструмент для тестування. Дякую за увагу!