Безболезненное проксирование и инспектирование HTTP(S)-трафика iOS-приложений

Иногда возникает необходимость проксирования и инспектирования HTTP(S)-трафика определенного приложения про его отладке и/или пентестинге.

Установка глобального прокси на уровне ОС часто неудобна, потому что глобальный прокси может сломать функциональность системных компонентов. Например, если вам необходимо проксировать трафик iOS-приложения, вы заметите, что единственная доступная опция – установить глобальный прокси-сервер на уровне всей iOS. Однако, в таком случае многие системные iOS-компоненты перестанут корректно работать. Вы даже не сможете запустить разрабатываемое приложение, так как iOS попытается соединиться с серверами Apple для проверки подписи кода, а этот процесс использует certificate pinning.

Единственный способ безболезненно добиться желаемого – использзовать Proxy Auto Configuration (PAC) – протокол динамической установки прокси-сервера. В этом случае вы сможете установить не один статический прокси на уровне всей системы, а URL, на котором вам нужно разместить специально созданный PAC-файл. Этот файл содержит JS-функцию, которая будет исполнена низкоуровневой библиотекой браузера или любого другого приложения перед отправкой каждого сетевого запроса. Эта функция принимает на вход запрашиваемый host и URL и должна вернуть адрес прокси-сервера, который должен быть использован для доступа к ним. И, в зависимости от результата, возвращенного функцией, прокси-сервер для данного запроса будет (или не будет, если функция вернула указание не использовать прокси) установлен на соответствующий. Таким образом, вы сможете проксировать только трафик только до нужных вам хостов, а взаимодействие с остальными будет осуществляться напрямую.

Однако, вряд ли вам будет приятно составлять PAC-файл вручную, особенно если вам необходимо покрыть большое количество хостов. Поэтому я сделал небольшой инструмент, который может в этом помочь. В нем вы можете задать список хостов для проксирования и адрес(а) прокси-сервера, а PAC-файл будет сгенерирован автоматически.

Смотреть на GitHub: https://github.com/skavans/universal-proxy-pac

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *