Как выполнить ВСЕ HTTP-запросы через прокси-сервер отладки Charles Web, включая запросы командной строки?

Я использую программное обеспечение Charles Web Debugging Proxy для отладки HTTP-запросов. Он отлично работает с моими браузерами для настольных компьютеров, Chrome и Firefox, и даже видит запросы HTTP, которые делают другие программы.

Когда я запускаю Чарльза и проверяю конфигурацию сети, мне кажется, я понимаю, как это работает - он просто устанавливает прокси для всех запросов HTTP и HTTPS, а затем прослушивает их на порту 8888:

Однако я не могу понять, что не вижу никаких запросов, которые я инициирую в Терминале, таких как wget, curl, или elinks браузер.

Я знаю, что могу указать прокси с помощью curl и wget, используя 127.0.0.1:8888, но я не понимаю, настроен ли сетевой интерфейс с прокси в конфигурации, почему мне нужно было бы вручную указать прокси для них,

Также я не могу заставить BlueCrab (копир веб-сайта) отображаться в Чарльзе - и я не вижу настройки прокси для него - хотя я полагаю, что он использует оболочку XWindow или что-то в этом роде (так что на самом деле он не является нативным) Приложение Cocoa / Carbon):

Как я могу получить все запросы HTTP в моей системе для запуска через Чарльза?

осветление

Мой вопрос о системных основах того, почему curl и wget не будут использовать прокси, когда сетевой интерфейс настроен на использование еще одного, а не спрашивать о правильном синтаксисе для curl, wget, так далее.

4 ответа

Решение

VPN создаст новое сетевое устройство, вы можете увидеть его в ifconfig команда, а затем направить всю сеть системы к этому устройству, вы можете увидеть использование маршрута route команда.

Но HTTP Proxy (в данном случае Charles) отличается, он просто открывает порт, чтобы использовать его, вы должны указать настройки своего приложения, чтобы использовать этот порт для HTTP-содержимого. и как ответ Кевина Рида, curl, wget и т.д. не читайте общесистемные настройки OS X.


Если ваш прокси-сервер SOCKS (Charles поддерживает как HTTP, так и SOCKS), вы можете использовать ProxyChains или tsocks, если приложение не поддерживает настройку прокси-сервера.

например:

$ proxychains git clone https://github.com/rofl0r/proxychains-ng

wget за прокси-сервером (возможно, вам придется создать rc-файл)

`$ vim ~/.wgetrc`

Добавьте следующую строку:

http_proxy=http://127.0.0.1:8888

свернуться за прокси источником

$ vim ~/.curlrc

Добавьте следующую строку:

proxy = 127.0.0.1:8888

Elinks за источник прокси

Найди свой elinks.conf файл с:

sudo find / -name elinks.conf

Добавьте следующую строку:

protocol.http.proxy.host "127.0.0.1:8888"

Не уверен насчет BlueCrab

Причина, по которой вы не просто получаете прокси всех HTTP-запросов, заключается в том, что на уровне операционной системы не существует такого понятия, как "HTTP-запрос"; Есть только TCP соединения. Обращение к прокси-серверу HTTP означает незначительное изменение HTTP-запроса, а также обращение к прокси-серверу вместо хоста, указанного в URL-адресе, поэтому это должно быть сделано в коде, который реализует отправку HTTP-запросов.

curl и wget имеют свой собственный код HTTP, который использует свои собственные файлы конфигурации - они не были запрограммированы для поиска параметров прокси, где их хранит Mac OS X, и не используют библиотеки HTTP, поставляемые с Mac OS X, которые используют эти прокси настройки.

Если вы не хотите трогать ваши файлы конфигурации, с помощью curl вы можете сделать:

curl http://example.com --proxy 127.0.0.1:8888

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