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

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

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


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.