Wie kann ich ALLE HTTP-Anforderungen über den Charles Web Debugging Proxy ausführen - einschließlich Befehlszeilenanforderungen?

24

Ich verwende die Charles Web Debugging Proxy-Software zum Debuggen von HTTP-Anforderungen. Es funktioniert hervorragend mit meinen Desktop-Browsern, Chrome und Firefox, und es werden sogar HTTP-Anforderungen von anderen Programmen angezeigt.

Wenn ich Charles starte und die Netzwerkkonfiguration überprüfe, verstehe ich, wie es funktioniert. Es wird lediglich ein Proxy für alle HTTP- und HTTPS-Anforderungen eingerichtet und dann auf Port 8888 nach diesen gesucht:

Bildbeschreibung hier eingeben

Doch der Artikel , den ich nicht herausfinden kann, ist , dass ich keine Anfragen sehen , dass ich auf dem Terminal initiieren, wie wget, curloder den elinksBrowser.

Ich weiß, dass ich den Proxy mit curl und wget mithilfe von 127.0.0.1:8888 angeben kann, aber ich verstehe nicht, ob die Netzwerkschnittstelle mit einem Proxy in der Konfiguration eingerichtet ist, weshalb ich den Proxy für sie manuell angeben muss .

Außerdem kann ich BlueCrab (Website-Kopierer) nicht dazu bringen, in Charles angezeigt zu werden - und ich sehe keine Proxy-Einstellung dafür - obwohl ich glaube, dass es einen XWindow-Wrapper oder etwas anderes verwendet (es ist also nicht wirklich ein Muttersprachler) Kakao / Kohlenstoff App):

Bildbeschreibung hier eingeben

Wie kann ich erreichen, dass alle HTTP-Anforderungen auf meinem System über Charles ausgeführt werden?

Klärung

Meine Frage ist , über die Systemgrundlagen, warum curl und wget nicht einen Proxy verwenden , wenn die Netzwerkschnittstelle wurde eingerichtet , um ein mehr zu verwenden , so als etwa die korrekte Syntax fragen curl, wgetusw.

cwd
quelle

Antworten:

4

VPN würde ein neues Netzwerkgerät erstellen, Sie können es im ifconfigBefehl sehen und dann das gesamte Systemnetzwerk zu diesem Gerät leiten. Sie können den routeBefehl route use sehen .

Der HTTP-Proxy (in diesem Fall der Charles) ist jedoch anders. Er öffnet lediglich einen Port. Um ihn zu verwenden, müssen Sie Ihre Anwendungseinstellung angeben, um diesen Port für HTTP-Inhalte zu verwenden. und als Kevin Reid Antwort curl, wgetetc nicht OS X systemweite Einstellungen lesen.


Wenn Ihr Proxy SOCKS ist (Charles unterstützt sowohl HTTP als auch SOCKS), können Sie ProxyChains verwenden oder tsocks für Anwendungen, die die Proxy-Einstellung nicht unterstützen.

z.B:

$ proxychains git clone https://github.com/rofl0r/proxychains-ng
Mengdi Gao
quelle
Wie kann man dann ein "VPN-ähnliches" Web-Debugging durchführen? Gibt es Apps, die dies tun?
Pacerier
@Pacerier Try Wireshark , ein Analysetool für die Internet- / Netzwerküberwachung, mit dem Sie nahezu alle Netzwerkdaten Ihres Systems anzeigen können, einschließlich, aber nicht beschränkt auf UDP, TCP (einschließlich HTTP). Für das Web-Debugging ist dies jedoch viel zu kompliziert. Geben Sie jedoch einen einzeiligen Filterbefehl ein, damit nur HTTP-Datenverkehr angezeigt werden kann.
Mengdi Gao
@Pacerier berücksichtigt auch mitmproxy , wenn Sie im transparenten Proxy- Modus arbeiten, erhalten Sie ein VPN-ähnliches Web-Debugging. Der Nachteil ist, dass es sich um ein Befehlszeilentool handelt und die Konfiguration etwas kompliziert ist.
Mengdi Gao
18

wget hinter proxy (möglicherweise müssen sie die rc datei erstellen) quelle

`$ vim ~/.wgetrc`

Fügen Sie die folgende Zeile hinzu:

http_proxy=http://127.0.0.1:8888

Curl hinter Proxy- Quelle

$ vim ~/.curlrc

Fügen Sie die folgende Zeile hinzu:

proxy = 127.0.0.1:8888

verbirgt sich hinter der Proxy- Quelle

Finden Sie Ihre elinks.confDatei mit:

sudo find / -name elinks.conf

Fügen Sie die folgende Zeile hinzu:

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

Ich bin mir nicht sicher über BlueCrab

Rebecca Dessonville
quelle
1
> Ich weiß, dass ich den Proxy mit curl und wget mithilfe von 127.0.0.1:8888 angeben kann, aber ich verstehe nicht, ob die Netzwerkschnittstelle mit einem Proxy in der Konfiguration eingerichtet ist, weshalb ich den Proxy für manuell angeben muss diese Dinge.
KWD
Ihr Fragentitel und das, wonach Sie gesucht haben, stimmen nicht überein. Ich werde aber auch versuchen, diese Informationen zu finden.
Rebecca Dessonville
1
Ich denke, dass es passt - ich suche nach einer Möglichkeit, ALLE Anfragen über Charles Debugging Proxy auszuführen, und muss keine Regeln programmweise einrichten. Mach dir keine Sorgen, wenn diese Frage veraltet ist und niemand anderes sie beantworten kann. Ich werde zurückkommen und deine Antwort annehmen. Und vielen Dank, dass Sie die Konfigurationssyntax für diese Dienstprogramme freigegeben haben.
KWD
Nachdem ich Ihre Bearbeitung gelesen habe, sehe ich nun, wo ich Ihre ursprüngliche Anfrage falsch verstanden habe.
Rebecca Dessonville
11

Der Grund, warum Sie nicht nur alle HTTP-Anforderungen als Proxy erhalten, liegt darin, dass es auf Betriebssystemebene keine "HTTP-Anforderung" gibt. Es gibt nur TCP-Verbindungen. Wenn Sie sich mit einem HTTP-Proxy in Verbindung setzen, müssen Sie die HTTP-Anforderung geringfügig ändern und den Proxy-Server anstelle des in der URL genannten Hosts kontaktieren. Dies muss in dem Code erfolgen, der das Senden von HTTP-Anforderungen implementiert.

curl und wget haben einen eigenen HTTP-Code, der ihre eigenen Konfigurationsdateien verwendet. Sie wurden weder so programmiert, dass sie nach Proxy-Einstellungen suchen, in denen sie von Mac OS X gespeichert werden, noch verwenden sie die mit Mac OS X bereitgestellten HTTP-Bibliotheken, die diesen Proxy verwenden die Einstellungen.

Kevin Reid
quelle
6

Wenn Sie Ihre Konfigurationsdateien nicht berühren möchten, können Sie mit curl Folgendes tun:

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

Olivier
quelle