30 votes

Comment puis-je faire passer TOUTES les requêtes HTTP par le proxy de débogage Web de Charles, y compris celles en ligne de commande ?

J'utilise le logiciel Charles Web Debugging Proxy pour déboguer les requêtes HTTP. Il fonctionne parfaitement avec mes navigateurs de bureau, Chrome et Firefox, et il voit même les requêtes HTTP effectuées par d'autres programmes.

Lorsque j'exécute Charles et que je vérifie la configuration du réseau, je pense que je comprends comment il fonctionne - il configure simplement un proxy pour toutes les demandes HTTP et HTTPS et les écoute sur le port 8888 :

enter image description here

Cependant, ce que je n'arrive pas à comprendre, c'est que je ne vois pas les requêtes que je lance dans le terminal, telles que wget , curl ou le elinks navigateur.

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 pourquoi, si l'interface réseau est configurée avec un proxy dans la configuration, je devrais spécifier manuellement le proxy pour eux.

Je n'arrive pas non plus à faire apparaître BlueCrab (copieur de site web) dans Charles - et je ne vois pas de paramètre de proxy pour lui - bien que je pense qu'il utilise un wrapper XWindow ou quelque chose comme ça (donc ce n'est pas vraiment une application Cocoa / Carbon native) :

enter image description here

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, à savoir pourquoi curl et wget n'utilisent pas de proxy alors que l'interface réseau est configurée pour en utiliser un, plutôt que de demander la syntaxe correcte de curl , wget etc.

21voto

Will Points 21

wget derrière un 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

curl derrière un proxy source

$ vim ~/.curlrc

Ajoutez la ligne suivante :

proxy = 127.0.0.1:8888

elinks derrière un proxy source

Trouvez votre elinks.conf avec :

sudo find / -name elinks.conf

Ajoutez la ligne suivante :

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

Pas sûr pour BlueCrab

12voto

Console Points 608

La raison pourquoi que vous n'obtenez pas simplement un proxy de toutes les requêtes HTTP, c'est parce qu'au niveau de la système d'exploitation il n'existe pas de "requête HTTP", mais uniquement des connexions TCP. Contacter un proxy HTTP implique de modifier légèrement la requête HTTP et de contacter le serveur proxy au lieu de l'hôte nommé dans l'URL, ce qui 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 là où Mac OS X les conserve, et ils n'utilisent pas non plus les bibliothèques HTTP fournies avec Mac OS X qui utilisent ces paramètres de proxy.

9voto

OlivierLarue Points 216

Si vous ne voulez pas toucher à vos fichiers de configuration, vous pouvez utiliser curl pour faire :

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

4voto

Kaan Points 223

VPN créerait un nouveau périphérique réseau, vous pouvez le voir en ifconfig et ensuite router tout le réseau du système vers ce périphérique, vous pouvez voir la route utiliser route comando.

Mais le proxy HTTP (dans ce cas, le Charles) est différent, il ouvre juste un port, pour l'utiliser, vous devez spécifier les paramètres de votre application pour utiliser ce port pour les trucs HTTP. et comme la réponse de Kevin Reid, curl , wget etc. ne lisent pas les paramètres généraux du système d'OS X.


Si votre proxy est SOCKS (Charles soutient à la fois HTTP et SOCKS), vous pourriez utiliser ProxyChains o tsocks pour une application qui ne supporte pas le paramétrage du proxy.

Par exemple :

$ proxychains git clone https://github.com/rofl0r/proxychains-ng

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X