Запрос монитора терминала Charles

Есть ли способ контролировать запрос приложения, такого как терминал? Теперь я могу контролировать хром, но другие приложения нет.

Версия моего Чарльза - 4.2

1 ответ

Решение

Я думаю, что это зависит от командной строки, которую вы пытаетесь контролировать. Чтобы чисто захватывать запросы http, сделанные от терминалов, вам просто нужно установить переменную окружения 'http_proxy', такую ​​как:

$ export http_proxy="http://localhost:8888"
$ curl "http://www.google.com"

Это заставит Чарльза перехватить HTTP-запрос к Google, но это может произойти не со всеми приложениями, запущенными с этого терминала. Возможно, вам придется найти способ настроить прокси в этих других приложениях.

Например, если вы хотите захватывать http-запросы из разрабатываемого вами Java-приложения, вам нужно добавить правильную конфигурацию прокси-сервера в командную строку Java, например:

$ JAVA_FLAGS="-Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=8888"
$ java $JAVA_FLAGS ...

Чтобы включить анализ HTTPS с помощью Charles, вам необходимо добавить сертификат в хранилище ключей JVM с помощью:

$ keytool -import -alias charles -file charles-ssl-proxying-certificate.cer -keystore $JAVA_HOME/jre/lib/security/cacerts

Пожалуйста, обратите внимание, что

  • расположение файла cacerts может отличаться в зависимости от версии java (в Java 10 он находится в $JAVA_HOME/lib/security/)
  • пароль для файла cacerts, если он не изменен, имеет вид: changeit (поэтому рассмотрите возможность его изменения)

Надеюсь это поможет.

Другие вопросы по тегам