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

24

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

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

enter image description here

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

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

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

enter image description here

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

осветление

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

cwd
источник

Ответы:

4

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

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


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

например.:

$ proxychains git clone https://github.com/rofl0r/proxychains-ng
Mengdi Gao
источник
Как сделать «VPN-подобную» веб-отладку? Есть ли приложения, которые делают это?
Pacerier
@Pacerier Try Wireshark Это инструмент для анализа Интернета / сети, в котором вы можете просмотреть практически все сетевые потоки вашей системы, включая, помимо прочего, UDP, TCP (включая HTTP). Тем не менее, это слишком сложно для веб-отладка , но введите однострочную команду фильтра, чтобы отображались только HTTP-трафик.
Mengdi Gao
@Pacerier также рассмотрим mitmproxy , когда работает в Прозрачный прокси В режиме, вы получили VPN-подобную веб-отладку. Недостатком является то, что это инструмент командной строки, а конфигурация немного сложна.
Mengdi Gao
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

Dez
источник
1
& GT; Я знаю, что могу указать прокси с помощью curl и wget, используя 127.0.0.1:8888, но я не понимаю, настроен ли сетевой интерфейс с прокси в конфигурации Зачем Мне нужно было бы вручную указать прокси для этих вещей.
cwd
Название вашего вопроса и то, что вы искали, не совпадают. Я тоже постараюсь найти эту информацию.
Dez
1
Я думаю, что это совпадает - я ищу способ выполнять ВСЕ запросы через прокси-сервер Charles Debugging Proxy, и мне не нужно устанавливать правила для каждой программы. Не волнуйтесь, если этот вопрос устарел, и никто не сможет ответить на него, я вернусь и приму ваш ответ. И спасибо, что поделились синтаксисом config для этих утилит.
cwd
После прочтения вашего редактирования я теперь вижу, где я неправильно понял ваш первоначальный запрос.
Dez
11

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

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

Kevin Reid
источник
5

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

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

Olivier
источник