В каких случаях лучше использовать breakpoint, а в каких rewrite в Charles Proxy
Что проверяют
Понимаете ли вы разницу между ручным разовым вмешательством в трафик и постоянным автоматическим правилом. Следом обычно просят рассказать, как вы проверяли конкретный сценарий, например ошибку сервера или пустой список, и как настраивали HTTPS на телефоне.
Как отвечать
Breakpoint (Proxy > Breakpoint Settings) останавливает запрос или ответ по заданному адресу и открывает окно редактирования. Вы вручную меняете тело, заголовки или статус и нажимаете Execute, либо Abort, чтобы оборвать запрос. Когда брать:
- разовая проверка: один раз подменить ответ и посмотреть реакцию клиента;
- выборочное вмешательство: решить по ходу, какой из запросов изменить;
- задержка: пока запрос висит на паузе, видно состояние загрузки, скелетоны, повторные нажатия.
Rewrite (Tools > Rewrite) задаёт правила, которые применяются автоматически к каждому подходящему запросу: заменить заголовок, хост, путь, параметр, статус ответа, найти и заменить текст в теле, в том числе регулярным выражением. Когда брать:
- повторяемые проверки: регресс, где каждый раз нужен статус 500 или выключенный флаг фичи;
- много запросов: подменить заголовок или переключить хост на другой стенд;
- долгая работа: правило сохраняется и включается галочкой.
Для подмены ответа целиком удобнее Map Local: ответ берётся из файла на диске.
Для HTTPS нужен SSL Proxying на хосте и сертификат Charles на устройстве. На iOS ему ещё надо включить полное доверие в настройках, а приложения на Android 7 и новее по умолчанию не доверяют пользовательским сертификатам: для отладочной сборки это разрешают через network_security_config.
Где спотыкаются
Забывают выключить Rewrite и потом заводят баги на поведение, которое сами же подменили.
Долго редактируют ответ на breakpoint, клиент ловит таймаут, и это принимают за дефект приложения.
Пишут громоздкие регулярки в Rewrite, чтобы заменить весь JSON, хотя Map Local решает это за минуту.