Запрос монитора терминала 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 (поэтому рассмотрите возможность его изменения)
Надеюсь это поможет.