Comment puis-je exécuter TOUTES les requêtes HTTP via Charles Web Debugging Proxy - y compris celles en ligne de commande?

24

J'utilise le logiciel Charles Web Debugging Proxy pour déboguer les requêtes HTTP. Cela fonctionne très bien avec mes navigateurs de bureau, Chrome et Firefox, et il voit même les requêtes HTTP que d'autres programmes font.

Lorsque j'exécute Charles et vérifie la configuration réseau, je pense comprendre comment cela fonctionne - il configure simplement un proxy pour toutes les requêtes HTTP et HTTPS, puis les écoute sur le port 8888:

entrez la description de l'image ici

Toutefois , le point que je ne peux pas comprendre que je ne vois pas de demandes que j'Initier au terminal, comme wget, curlou le elinksnavigateur.

Je sais que je peux spécifier le proxy avec curl et wget en utilisant 127.0.0.1:8888, mais je ne comprends pas si l'interface réseau est configurée avec un proxy dans la configuration pourquoi je devrais spécifier manuellement le proxy pour eux .

De plus, je n'arrive pas à faire apparaître BlueCrab (copieur de site Web) dans Charles - et je ne vois pas de paramètre de proxy pour cela - bien que je pense qu'il utilise un wrapper XWindow ou quelque chose (donc ce n'est pas vraiment un natif Application Cocoa / Carbon):

entrez la description de l'image ici

Comment puis-je faire en sorte que toutes les requêtes HTTP de mon système passent par Charles?

Clarification

Ma question porte sur les principes fondamentaux du système de pourquoi boucle et wget n'utiliser un proxy lorsque l'interface réseau a été configuré pour utiliser un plus que poser des questions sur la syntaxe correcte pour curl, wgetetc.

cwd
la source

Réponses:

4

Le VPN créerait un nouveau périphérique réseau, vous pouvez le voir dans la ifconfigcommande, puis router tout le réseau du système vers ce périphérique, vous pourriez voir la routecommande route use .

Mais le proxy HTTP (dans ce cas, le Charles) est différent, il suffit d'ouvrir un port, pour l'utiliser, vous devez spécifier le paramètre de votre application pour utiliser ce port pour les éléments HTTP. et comme la réponse de Kevin Reid curl, wgetetc, ne lisez pas les paramètres du système OS X.


Si votre proxy est SOCKS (Charles prend en charge HTTP et SOCKS), vous pouvez utiliser ProxyChains ou tsocks car l'application ne prend pas en charge les paramètres de proxy.

par exemple:

$ proxychains git clone https://github.com/rofl0r/proxychains-ng
Mengdi Gao
la source
Comment avoir un débogage Web "VPN-like" alors? Y a-t-il des applications qui font ça?
Pacerier
@Pacerier Essayez Wireshark , c'est un outil d'analyse / d'analyse Internet / réseau, dans lequel vous pouvez voir à peu près tous les trafics réseau de votre système, y compris, mais sans s'y limiter, UDP, TCP (comprend HTTP). Cependant, c'est beaucoup trop compliqué pour le débogage Web , mais entrez une commande de filtre à une ligne pour que seuls les affichages de trafic HTTP soient possibles.
Mengdi Gao
@Pacerier considère également mitmproxy , lorsque vous exécutez en mode proxy transparent , vous obtenez un débogage Web de type VPN. L'inconvénient est que c'est un outil en ligne de commande et la configuration est un peu compliquée.
Mengdi Gao,
18

wget derrière proxy (vous devrez peut-être créer le fichier rc) source

`$ vim ~/.wgetrc`

Ajoutez la ligne suivante:

http_proxy=http://127.0.0.1:8888

se courber derrière la source proxy

$ vim ~/.curlrc

Ajoutez la ligne suivante:

proxy = 127.0.0.1:8888

liens derrière la source proxy

Trouvez votre elinks.confdossier avec:

sudo find / -name elinks.conf

Ajoutez la ligne suivante:

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

Pas sûr de BlueCrab

Rebecca Dessonville
la source
1
> Je sais que je peux spécifier le proxy avec curl et wget en utilisant 127.0.0.1:8888, mais je ne comprends pas si l'interface réseau est configurée avec un proxy dans la configuration pourquoi je devrais spécifier manuellement le proxy pour ces choses.
cwd
Le titre de votre question et ce que vous cherchiez ne correspondent pas. J'essaierai également de trouver cette information.
Rebecca Dessonville
1
Je pense que cela correspond - je cherche un moyen d'exécuter TOUTES les demandes via Charles Debugging Proxy et de ne pas avoir à configurer de règles programme par programme. Ne vous inquiétez pas si cette question devient obsolète et que personne d'autre ne peut y répondre. Je reviendrai et accepterai votre réponse. Et merci de partager la syntaxe de configuration de ces utilitaires.
cwd
Après avoir lu votre montage, je vois maintenant où j'ai mal compris votre demande d'origine.
Rebecca Dessonville
11

La raison pour laquelle vous n'obtenez pas uniquement le proxy de toutes les requêtes HTTP est qu'au niveau du système d'exploitation , il n'existe pas de "requête HTTP"; il n'y a que des connexions TCP. Contacter un proxy HTTP signifie modifier légèrement la requête HTTP ainsi que contacter le serveur proxy au lieu de l'hôte nommé dans l'URL, donc cela doit être fait dans le code qui implémente l'envoi de requêtes HTTP.

curl et wget ont leur propre code HTTP, qui utilise leurs propres fichiers de configuration - ils n'ont pas été programmés pour rechercher les paramètres de proxy où Mac OS X les conserve, ni n'utilisent les bibliothèques HTTP fournies avec Mac OS X qui utilisent ces proxy paramètres.

Kevin Reid
la source
6

Si vous ne voulez pas toucher vos fichiers de configuration, en utilisant curl vous pouvez faire:

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

Olivier
la source