Ответ
Charles Proxy предоставляет несколько ключевых функций для модификации сетевого трафика:
Основные инструменты:
- Breakpoints (Точки останова): Позволяют перехватить запрос или ответ перед его отправкой/получением, вручную изменить данные и продолжить выполнение.
- Пример: Изменить
user_idв теле POST-запроса или статус-код в ответе сервера.
- Пример: Изменить
- Map Local / Map Remote:
- Map Local: Заменяет ответ от удаленного сервера содержимым локального файла (например, JSON). Используется для тестирования различных сценариев ответа API.
- Map Remote: Перенаправляет запросы с одного URL на другой, что полезно для тестирования с разными окружениями.
- Rewrite Rules: Автоматическое изменение запросов и ответов на основе заранее заданных правил (поиск и замена).
- Throttling (Ограничение скорости): Эмуляция медленных сетевых условий (2G, 3G) для проверки поведения приложения.
Пример скрипта (Charles Proxy Local Rewrite) для добавления параметра отладки:
// Этот скрипт добавит параметр debug=true ко всем запросам к api.example.com
if (oRequest.host().contains("api.example.com")) {
oRequest.url().addQueryParameter("debug", "true");
}
Важно: Для перехвата HTTPS-трафика необходимо установить корневой сертификат Charles на тестовое устройство или в эмулятор.
Ответ 18+ 🔞
А, Чарльз Прокси, ну это ж, блядь, такая штука, которая как хирургический скальпель для твоего сетевого говна! Сидишь, смотришь, что туда-сюда ползает, и можешь его, сука, на лету менять. Во какие дела, блядь!
Вот его главные плюшки, на которые стоит смотреть:
- Breakpoints (Точки останова): Это когда ты, сука, как милиционер на трассе — останавливаешь запрос или ответ, пока он не доехал. Останавливаешь, ковыряешься в его багажнике, подкидываешь туда свою хуйню или выкидываешь чужую, и потом отпускаешь дальше.
- Например: Хочешь проверить, как твоё приложение отреагирует, если сервер вместо
"status": "ok"пришлёт"status": "ты пидор". Ставишь брейкпоинт на ответ, меняешь, и смотришь, не развалится ли всё к ебеням.
- Например: Хочешь проверить, как твоё приложение отреагирует, если сервер вместо
- Map Local / Map Remote:
- Map Local: Это, блядь, волшебство! Серверу нахуй не нужен. Ты говоришь Чарльзу: «Слышь, чувак, когда к тебе придут за таким-то JSON'ом, не ходи в интернет, на, вот, возьми этот файлик с диска». Идеально, чтобы подсунуть приложению любой, даже самый ебнутый, ответ для теста.
- Map Remote: А это чтобы запросы, которые шли на
prod.superapp.com, незаметно перенаправить наtest.superapp.local:8080. Типа, «ребята, вы думаете, что вы в бою, а вы, блядь, на моём локальном стенде».
- Rewrite Rules: Автоматическая замена по правилам. Сказал один раз: «Везде, где встречается
"v1", меняй на"v2"» — и он, сука, сам всё сделает. Лень — двигатель прогресса, ёпта! - Throttling (Ограничение скорости): Эмулирует интернет твоей бабушки в деревне. Включаешь «Эмуляцию 2G» и смотришь, как твоё супер-пупер приложение, которое на гигабите летает, превращается в груду тормозящего говна. Очень отрезвляет, блядь!
Вот тебе кусочек кода, чтобы Чарльз сам ко всем запросам прикручивал отладочный параметр:
// Этот скрипт добавит параметр debug=true ко всем запросам к api.example.com
if (oRequest.host().contains("api.example.com")) {
oRequest.url().addQueryParameter("debug", "true");
}
И главное, блядь, предупреждение! Чтобы он мог читать твой зашифрованный HTTPS-трафик (а не просто смотреть на абракадабру), нужно поставить его корневой сертификат себе в доверенные. На телефон, на комп, в эмулятор — куда нужно. Без этого — нихуя не увидишь, только обычный HTTP. Так что не забудь, а то будешь потом чесать репу, почему у тебя ничего не перехватывается!