Чарльз работает в браузере, но не в приложении - Android - PullRequest
1 голос
/ 15 марта 2020

Я установил и использую прокси-сервер charles (4.5.6).

Я использую Android 9.

Чарльз работает на страницах Chrome (особенно в Instagram) :

Charles and Instagram on chrome

, но это не работает в приложении Instagram:

Charles and Insta app

и я всегда получаю эту ошибку, когда использую приложение.

Должен ли я "сохранить сертификат Чарльза root" и затем установить его на свой телефон? Кроме того, почему Чарльз работает с Chrome, но не с приложением Instagram?

Ответы [ 3 ]

2 голосов
/ 18 марта 2020

В приложении Instagram используется метод, известный как Закрепление SSL-сертификата . По сути, это означает, что они объединяют информацию об ожидаемом SSL-сертификате для сервера в приложение и запрещают любое соединение, которое не предоставляет этот сертификат. Поскольку сертификат, представленный Чарльзом, не является сертификатом Instagram, приложение Instagram запрещает соединение. В Chrome он должен полагаться на оценку доверия сертификатов браузером, которая будет зависеть от сертификатов, установленных на устройстве - я предполагаю, что вы уже настроили свое устройство для доверия SSL-сертификату Charles Proxy, так как Chrome доверяет это (потому что вы сказали это), сайт работает. Раньше был способ сделать закрепление ключей в браузере , но он больше не работает из-за некоторых обнаруженных проблем .

Вы можете отключить этот сертификат закрепление в настройках вашей учетной записи Facebook: https://www.facebook.com/whitehat/researcher-settings/

Что касается подробностей их реализации, в Интернете многочисленные статьи о том, как отключить закрепление в приложении Instagram , Я не могу поручиться за кого-либо из них, в частности, потому что я не пробовал их, и я не уверен, как они будут взаимодействовать с условиями предоставления услуг, но вы можете взглянуть на них для получения дополнительной информации.

1 голос
/ 19 марта 2020

Я работал с Чарльзом, чтобы отслеживать и отлаживать сетевые запросы для моего приложения, и я хотел бы упомянуть несколько моментов, которые могут вам помочь:

  1. Если вы посмотрите документацию SSL-сертификат Charles для Android,

Начиная с Android N, вам необходимо добавить конфигурацию в ваше приложение, чтобы оно доверяло SSL-сертификатам, сгенерированным Charles SSL Прокси. Это означает, что вы можете использовать SSL Proxying только с приложениями, которые вы контролируете.

Это ограничение было добавлено самой структурой Android, чтобы избежать эксплойтов и взломов для большей безопасности. , Таким образом, вы не можете использовать Charles для отслеживания или отладки сетевых запросов сторонних приложений (в вашем случае -Instagram), если у вас Android 7 (Nougat) или выше.

Если вы действительно хотите это сделать это, вы можете попробовать подключить телефон Android с Android 6 (Зефир) или ниже, чтобы посмотреть, работает ли он для вас.

Если вы хотите отлаживать собственное приложение, ваш телефон и система, на которой работает Charles, должны находиться в одной сети, и вам необходимо настроить конфигурацию прокси-сервера в настройках Wi-Fi вашего телефона.

Сначала go до Charles -> Справка -> SSL-прокси -> Установить сертификат Charles Root на мобильном устройстве или в удаленном браузере

You ' Вы увидите информационное окно, подобное этому:

Charles Connection to Android

Запишите IP-адрес, указанный в этом окне, и go для S ettings вашего телефона - > Wi-Fi -> Выберите сеть Wi-Fi -> Изменить

Вы найдете параметр с именем Proxy , по умолчанию он будет Нет обновите его до Manual . Вы получите два поля ввода для ввода Hostname и Port , заполните эти данные, посмотрев на IP-адрес, указанный в Charles, и сохраните его.

Android Wi-Fi Settings

Еще одним важным моментом является то, что вам нужно установить сертификат Charles Root на свой телефон. Вы можете сделать это, посетив https://chls.pro/ssl из браузера вашего телефона. Он автоматически загрузит сертификат и предложит вам установить его. Убедитесь, что вы подключены к Чарльзу, выполнив 2-й шаг, иначе он не загрузит сертификат автоматически.

После того, как это будет сделано, вы можете go!

1 голос
/ 17 марта 2020

Может быть две причины для этого

1) Приложение instagram использует файл конфигурации безопасности сети, который отключил прокси-серверы для получения дополнительной информации, читайте этот сайт https://developer.android.com/training/articles/security-config

2) Для проверки полезной нагрузки вашего собственного приложения вам нужно установить прокси-сервер как https://community.tealiumiq.com/t5/Tealium-for-Android/Setting-up-Charles-to-Proxy-your-Android-Device/ta-p/5121

...