24

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

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

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

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

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

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

осветление

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

4 ответа4

18

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

11

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

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

5

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

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

4

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

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


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

например:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .