Jak uruchomić WSZYSTKIE żądania HTTP za pośrednictwem serwera proxy debugowania sieci Charles - w tym również wiersza poleceń?

24

Używam oprogramowania Charles Web Debugging Proxy do debugowania żądań HTTP. Działa świetnie z moimi przeglądarkami na komputery, Chrome i Firefox, a nawet widzi żądania HTTP wysyłane przez inne programy.

Kiedy uruchamiam Charlesa i sprawdzam konfigurację sieci, myślę, że rozumiem, jak to działa - po prostu konfiguruje serwer proxy dla wszystkich żądań HTTP i HTTPS, a następnie nasłuchuje na porcie 8888:

wprowadź opis zdjęcia tutaj

Jednakże pozycja nie mogę dowiedzieć się, że nie widzę żadnych żądań, że inicjują w terminalu, takich jak wget, curlczy w elinksprzeglądarce.

Wiem, że mogę określić proxy za pomocą curl i wget za pomocą 127.0.0.1:8888, ale nie rozumiem, czy interfejs sieciowy jest skonfigurowany z proxy w konfiguracji, dlaczego musiałbym ręcznie dla nich określać proxy .

Nie mogę też sprawić, by BlueCrab (kopiarka internetowa) pojawił się w Charlesie - i nie widzę dla niego ustawień proxy - chociaż uważam, że używa opakowania XWindow lub czegoś takiego (więc to nie jest tak naprawdę natywny Aplikacja Cocoa / Carbon):

wprowadź opis zdjęcia tutaj

Jak mogę uzyskać wszystkie żądania HTTP w moim systemie, aby działały przez Charlesa?

Wyjaśnienie

Moje pytanie jest o podstawach systemowych dlaczego wget curl i nie korzystać z serwera proxy, gdy interfejs sieciowy został skonfigurowany do korzystania z jednego bardziej niż pytając o poprawnej składni curl, wgetitp

cwd
źródło

Odpowiedzi:

4

VPN utworzy nowe urządzenie sieciowe, możesz zobaczyć je w ifconfigpoleceniu, a następnie przekierować całą sieć systemową do tego urządzenia, możesz zobaczyć routepolecenie użycia trasy .

Ale proxy HTTP (w tym przypadku Charles) jest inny, wystarczy otworzyć port, aby z niego korzystać, musisz określić ustawienia aplikacji, aby używać tego portu do przesyłania HTTP. i jako odpowiedź Kevin Reida, curl, wgetetc nie czytaj systemowe szerokie ustawienia OS X w.


Jeśli twoim serwerem proxy jest SOCKS (Charles obsługuje zarówno HTTP, jak i SOCKS), możesz użyć ProxyChains lub tsocks dla aplikacji nie obsługuje ustawienia proxy.

na przykład:

$ proxychains git clone https://github.com/rofl0r/proxychains-ng
Mengdi Gao
źródło
Jak w takim razie przeprowadzić debugowanie sieci „VPN”? Czy są takie aplikacje?
Pacerier
@Pacerier Wypróbuj Wireshark , to narzędzie do monitorowania Internetu / sieci, analizy, w którym możesz zobaczyć prawie wszystkie ruchy sieciowe twojego systemu, w tym między innymi UDP, TCP (obejmuje HTTP). Jest to jednak zbyt skomplikowane do debugowania w Internecie , ale wprowadź polecenie filtrowania jednowierszowego, aby możliwe było wyświetlanie tylko ruchu HTTP.
Mengdi Gao
@Pacerier bierze również pod uwagę mitmproxy , gdy działasz w trybie transparentnego proxy , masz debugowanie sieciowe podobne do VPN. Wadą jest to, że jest to narzędzie wiersza poleceń, a konfiguracja jest nieco skomplikowana.
Mengdi Gao
18

wget za proxy (być może trzeba utworzyć plik rc) źródło

`$ vim ~/.wgetrc`

Dodaj następujący wiersz:

http_proxy=http://127.0.0.1:8888

zwinąć za źródłem proxy

$ vim ~/.curlrc

Dodaj następujący wiersz:

proxy = 127.0.0.1:8888

elinks za źródłem proxy

Znajdź swój elinks.confplik za pomocą:

sudo find / -name elinks.conf

Dodaj następujący wiersz:

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

Nie jestem pewien co do BlueCrab

Rebecca Dessonville
źródło
1
> Wiem, że mogę określić serwer proxy za pomocą curl i wget przy użyciu 127.0.0.1:8888, ale nie rozumiem, czy interfejs sieciowy jest skonfigurowany z serwerem proxy w konfiguracji, dlaczego musiałbym ręcznie określić serwer proxy dla te rzeczy.
cwd
Twój tytuł pytania i to, czego szukasz, nie pasuje. Spróbuję jednak znaleźć te informacje.
Rebecca Dessonville
1
Myślę, że to pasuje - szukam sposobu na uruchomienie WSZYSTKICH żądań za pośrednictwem Charles Debugging Proxy i nie muszę konfigurować reguł dla poszczególnych programów. Nie martw się, jeśli to pytanie stanie się nieaktualne i nikt inny nie będzie w stanie na nie odpowiedzieć. Wrócę i przyjmę twoją odpowiedź. I dziękuję za udostępnienie składni config dla tych narzędzi.
cwd
Po przeczytaniu twojej edycji widzę teraz, gdzie źle zrozumiałem twoją pierwotną prośbę.
Rebecca Dessonville,
11

Powodem, dla którego nie otrzymujesz proxy wszystkich żądań HTTP, jest to, że na poziomie systemu operacyjnego nie ma czegoś takiego jak „żądanie HTTP”; są tylko połączenia TCP. Kontakt z proxy HTTP oznacza nieznaczną zmianę żądania HTTP, a także skontaktowanie się z serwerem proxy zamiast hosta wymienionego w adresie URL, więc należy to zrobić w kodzie implementującym wysyłanie żądań HTTP.

curl i wget mają swój własny kod HTTP, który wykorzystuje własne pliki konfiguracyjne - nie zostały zaprogramowane do wyszukiwania ustawień proxy, w których zachowuje je Mac OS X, ani nie używają bibliotek HTTP dostarczonych z Mac OS X, które używają tych proxy ustawienia.

Kevin Reid
źródło
6

Jeśli nie chcesz dotykać plików konfiguracyjnych, za pomocą curl możesz wykonać:

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

Olivier
źródło