В тестуванні використовується різноманітна кількість інструментів для роботи з HTTP/HTTPS. Нерідко необхідно проаналізувати трафік, змінити, перехопити або внести правки в запити. Для подібних задач розроблені інструменти, які мають назву cніфери (від англ. to sniff – нюхати), найпопулярніші: Wireshark, Fiddler, tcpdump, Charles та ін.
Використання інструмента Charles в тестуванні
- 03.03.2022
- Опубліковано: Admin

Charles – це HTTP-проксі, також відомий як HTTP-монітор або зворотний проксі-сервер, який дозволяє тестувальнику переглядати весь трафік HTTP і SSL/HTTPS між комп'ютером та інтернетом. За допомогою інструмента можна знайти джерело проблеми, сортувати різні типи помилок, які виникають, і дублювати різні сценарії тестування.
Основною перевагою використання Charles є те, що він сумісний з більшістю веб- та мобільних браузерів. В Charles виконується автоматичне налаштування з більшістю браузерів, таким чином він не вимагає від користувача змінювати налаштування свого браузера щоразу під час використання.
Установка та налаштування Charles на ПК
Для операційної системи Windows і пов’язаних з нею браузерів Charles може автоматично налаштувати параметри проксі, щоб програми ОС використовували тільки Charles.
Для початку роботи слід завантажити Charles https://www.charlesproxy.com/ та встановити сертифікат для роботи на ПК Help > SSL Proxying > Install Charles Root Certificate. Сертифікат необхідно імпортувати в сховище «Надійні кореневі центри сертифікації». На цьому встановлення та налаштування завершені.
Налаштування Charles на ПК
Встановлення сертифікату
Для операційної системи Mac OS X та пов’язаних з нею браузерів (наприклад, Safari) під час першого встановлення Charles буде запропоновано надати дозвіл. Після цього інструмент автоматично налаштує та переналаштує параметри проксі.
Для браузера Mozilla Firefox користувачеві потрібно буде завантажити доповнення Firefox, після чого Charles зможе автоматично налаштувати параметри проксі.
Для всіх браузерів налаштування Charles можна налаштувати в меню проксі.
Установка та налаштування на девайсі
Для початку роботи необхідно налаштувати проксі на девайсі. Комп'ютер з якого працює Charles і девайс повинні бути в одній локальній мережі. IP адресу мережі до якої підключений комп’ютер можна переглянути в Charles > Help > Local IP Address.
Перегляд IP Addresses
В налаштуваннях девайсу необхідно обрати Wi-Fi.
Перегляд доступної мережі Wi-Fi
Обрати налаштування мережі, для того щоб ПК та девайс були в одній локальній мережі.
Налаштування мережі
Натиснути на кнопку «Configure Proxy» та обрати налаштування «Manual». В поле «Server» ввести IP мережі до якої підключений ПК. Адресу порта ввести «8888» за замовчуванням.
Налаштувати проксі на девайсі
Якщо девайс підключений через Charles на ПК відобразиться подібний запит:
Запит на пiдключення до ПК
Після натискання на кнопку «Allow» весь HTTP трафік буде йти через Charles.
За замовчанням трафік ПК також проходитиме через Charles. Щоб у сніфері відображався тільки трафік підключених пристроїв, знімаємо відмітку в налаштуваннях проксіювання Charles > Proxy > Proxy Settings > Windows > Enable Windows proxy on launch.
Налаштування HTTP трафіку
Тестування кешування
Кешування дозволяє веб-браузеру використовувати локальну копію відповіді, а не запитувати її з веб-сайту. Кешування є дуже важливою частиною Інтернету, оскільки часто одні й ті самі ресурси використовуються повторно на кількох сторінках, і необхідність перезавантажувати кожен ресурс для кожної сторінки значно уповільнює перегляд. Однак кешування може означати, що завантажилась не остання версія ресурсу, що є проблемою під час розробки веб-програми, тому важливо переглядати оновлення.
Для налаштування інструменту необхідно відкрити Tools > No Caching.
Тестування кешування з Charles
Інструмент «Без кешування» запобігає кешуванню, маніпулюючи 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 способи підміни даних:
Breakpoint – це точка зупинки запиту. Зупинені запити можна редагувати в режимі реального часу. Для налаштування відкрити Proxy > Breakpoints Settings > Enable Breakpoints > Add та додати посилання на URL запит.
Налаштування Breakpoint
Rewrite дозволяє створювати правила, що змінюють запити та відповіді, коли вони проходять через Charles. Такі правила, як додавання або зміна заголовка, пошук і заміна тексту в тілі відповіді. Для налаштування відкрити Tools > Rewrite > Enable Rewrite > Add, ввести актуальне та бажане значення в поля Values відповідних блоків.
Налаштування Rewrite
Map Local дозволяє використовувати локальні файли так, ніби вони є частиною віддаленого веб-сайту. Можна розробляти свої файли локально та тестувати їх, як ніби вони знаходяться в реальному часі. Налаштування: Tools > Map Local > Enable Map Local > Add, необхiдно обрати протокол та ввести Host та Path.
Налаштування Map Local
Блокування кукі
За допомогою інструмента блокується отримання та надсилання файлів cookie. Використовується для тестування веб-сайтів, ніби у браузері вимкнено файли cookie. Зверніть увагу, що веб-павуки (наприклад, Google) часто не підтримують файли cookie, тому інструмент також можна використовувати для імітації перегляду веб-сайту павуком.
Для налаштування відкрити Tools > Block Cookies > Enable Block Cookies.
Налаштування блокування кукі
Тестування навантаження.
Charles має базові можливості тестування навантаження. Функція Repeat Advanced дозволяє потрібну кількість разів повторити той самий запит. Після налаштування відкриється окрема сесія, де буде видно деталі кожного із запитів.
Необхідно перейти в Tools > Advanced Repeat та вказати кількість повторів та одночасність паралельних запитів.
Налаштування функції Repeat Advanced
Швидкість з’єднання Throttling
Charles Proxy допомагає тестувати сервіс на поганий зв'язок, штучно обмеживши через налаштування пропускну здатність каналу. Ця функція корисна для тестування десктопних додатків, оскільки на мобільних пристроях якістю зв'язку можна керувати через панель розробника. Для налаштування відкрити Proxy > Throttling Settings.
Налаштування швидкості з’єднання
Інший функціонал
Більш детально були описані основні функції для тестування за допомогою Charles. Та існують і інші не менш важливі функції:
1. Sessions. Автоматично відкривається після запуску Charles. Сесії можна зберігати, очищати та відкривати знову.
2. Recording. Запити та відповіді записуються до поточної сесії для подальшої перевірки та аналізу. Записані запити залежать від конфігурації Charles, зазвичай це включає весь HTTP та HTTPS-трафік із браузера та, можливо, інших програм на комп’ютері.
3. Requests & Responses. Існує два різні способи перегляду вікна сеансу: перегляд структури та перегляд послідовності. Можна побачити заголовки запиту та відповіді HTTP, а також тіла запиту та відповіді у вигляді простого тексту або двійкового.
4. Focus. Використовуючи функцію фокусування, можна відокремити хости, які важливі, від тих, які не потрібні.
5. Chart. Вкладка діаграми для запиту показує запит і всі пов’язані запити на графіку часу. Графік часу показує, коли було розпочато запити, коли почалася відповідь (завантаження) і коли вона закінчилася.
6. Import.
7. Export. Можна експортувати дані з сеансу в Charles, вибравши Експорт у меню Файл.
8. SSL Certificates. Charles створює власні сертифікати для сайтів, які він підписує за допомогою кореневого сертифіката Charles, який унікально генерується для вашої інсталяції Charles.
9. Web Interface. Чарльз має веб-інтерфейс, який дає змогу керувати ним із браузера або за допомогою зовнішньої програми, використовуючи веб-інтерфейс як веб-сервіс.
10. Protocol Buffers. Буфери протоколу – це розширюваний механізм від Google, який не залежить від мови, платформи, для використовується для серіалізації структурованих даних. Визначається структурованість даних один раз, а потім можна використовувати спеціальний згенерований вихідний код, щоб легко писати та зчитувати структуровані дані в різноманітних потоках даних, використовуючи різноманітні мови – Java, C++ або Python.
11. Command-line Options. Charles підтримує ряд параметрів командного рядка:
- <path>
- -config <path>
- -headless
- -throttling (починаючи з версії 3.8.3).
За допомогою інструментів що має Charles можна протестувати кешування, перехопити та змінити дані, блокувати кукіс, перевірити швидкість з’єднання та протестувати навантаження на базовому рівні. Цих інструментів достатньо для повноцінного тестування проксі.
Безкоштовна версія Charles доступна протягом 30 днів, це дозволяє оцінити додаток, перш ніж прийняти рішення про придбання.
