SSL Прокси / Чарльз и Android проблемы
Я хочу проверить Https-вызовы с android-устройства с помощью инструмента Charles proxy. Мне нужно увидеть необработанное содержимое запроса/ответа для отладки приложения. Я настроил Charles, добавив хост и порт в разделе "Настройки прокси" - > вкладка SSL. Когда я запускаю приложение, все вызовы SSL, кажется, быстро исчезают из Charles. Кто-нибудь знает, как исправить эту проблему. Документация Charles, похоже, не содержит информации для устройств Android.
8 ответов
для Android7
см.: как заставить charles proxy работать с Android 7 нуга?
для Android версии ниже Android7
С компьютера запустите Charles:
открыть Настройки прокси: Прокси - > Настройки прокси, вкладка Прокси, установите флажок " Включить прозрачное http-проксирование "и запомните" порт " в сердце.
Прокси SSL Настройки:прокси -> прокси-сервера SSL параметры, вкладка SSL-Прокси, Проверьте "включить SSL прокси", и добавить . в местах:
Открыть Настройки Управления Доступом: Прокси - > Настройки Управления Доступом. Добавьте локальную подсеть для авторизации компьютеров в локальной сети для использования прокси-сервера с другого компьютера / мобильного телефона.
В Android Телефон:
настройка мобильного телефона: перейдите в Настройки - > Беспроводные сети - > WiFi - > подключение или изменение сети, заполните IP-адрес компьютера и порт(8888):
получить сертификат SSL Чарльза. Посетите этот url-адрес из мобильного браузера: http://charlesproxy.com/getssl
В "имя сертификата" введите то, что вы хочу!--5-->
примите предупреждение безопасности и установите сертификат. Если вы установите его успешно, то вы, вероятно, увидите sth так: В телефоне Настройки - > Безопасность - > доверенные учетные данные:
сделано.
тогда у вас может быть некоторый тест на вашем мобильном телефоне, зашифрованный запрос https будет показан в Charles:
Edit - этот ответ был для более ранней версии Charles. См. ответ @semicircle21 ниже для правильных шагов для v3.10.x-намного проще, чем этот подход... :-)
для чего это стоит, вот пошаговые инструкции для этого. Они должны одинаково хорошо применяться и в iOS:
- Откройте Charles
- перейти к прокси > Настройки прокси > SSL
- Проверьте "включить SSL-проксирование"
- выберите "Добавить местоположение" и введите имя хоста имя и порт (при необходимости)
- нажмите ok и убедитесь, что опция включена
- загрузите сертификат Чарльза отсюда:Чарльз свиду >
- отправить файл себе по электронной почте.
- откройте электронную почту на устройстве и выберите сертификат
- В "имя сертификата" введите, что вы хотите
- нажмите OK, и вы должны получить сообщение о том, что сертификат был установлен
вы должны быть возможность видеть файлы SSL в Charles. Если вы хотите перехватить и изменить значения, вы можете использовать инструмент "локальная карта", который действительно потрясающий:
- в Charles перейдите в инструменты > карта Local
- выбрать "Добавить запись"
- введите значения для файла, который вы хотите заменить
- в "Local path" выберите файл, который вы хотите загрузить приложение вместо
- нажмите OK
- убедитесь, что запись выбрана, и нажмите кнопку OK
- выполнить ваши app
- вы должны увидеть в "Заметках", что ваш файл загружается вместо живого
Спасибо за ответ @bkurzius, и это обновление для Чарльза 3.10+. (Причина здесь)
- Открыть Чарльз
- перейдите в раздел Прокси > параметры прокси SSL...
- Проверьте "включить SSL проксирование"
- выберите "Добавить местоположение" и введите имя хоста и порт (если требуется)
- нажмите ok и убедитесь, что опция включена
- перейдите в раздел справка > проксирование SSL >
Install Charles Root Certificate on a Mobile Device or Remote Browser...
и просто следуйте инструкциям. (используйте Браузер Android для загрузки и установки сертификата.) - В "имя сертификата" введите все, что вы хотите
- нажмите OK, и вы должны получить сообщение о том, что сертификат был установлен
лучшие ответы работают отлично (немного старый, но все еще работает), но я просто хочу упомянуть, что с Android N мы все можем настроить ваши приложения, чтобы иметь сертификаты SSL доверия diff (для выпуска, отладки только и так далее), включая сертификат прокси-сервера Charles SSL (если вы загрузите сертификат Charles и поместите .PEM-файл в вашей папке raw). Более подробную информацию можно найти здесь: https://developer.android.com/training/articles/security-config.html
также официальная документация Charles может быть полезна для настройки этого:https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
надеюсь, что это поможет настроить Чарльза внутри вашего проекта приложения не на каждом устройстве Android.
Я понял вопрос. Это потому, что у Charles 3.7 есть некоторые ошибки для устройств Android. Я обновился до бета-версии Charles 3.8 и, похоже, отлично работает для меня.
для нового эмулятора может быть полезно запустить из командной строки с помощью:
emulator -netdelay none -netspeed full -avd <emulator_name> -http-proxy http://<ip-address>:8888
убедитесь, что вы следуете совету @User9527 выше, а также для остальной части установки
для меня проблема заключалась в том, что IP-адрес, который Чарльз говорил мне направить в Мои настройки прокси, был неправильным. Чтобы решить, я в конечном итоге собирался ifconfig
в терминале и пробовать различные IP-адреса (перечисленные рядом с inet
) в порт 8888
для текущих активных соединений