J'utilise le logiciel Charles Web Debugging Proxy pour déboguer les demandes HTTP. Cela fonctionne très bien avec les navigateurs de mon ordinateur, Chrome et Firefox, et il voit même les requêtes HTTP faites par d’autres programmes.
Quand je lance Charles et que je vérifie la configuration du réseau, je pense comprendre comment cela fonctionne: il configure simplement un proxy pour toutes les demandes HTTP et HTTPS, puis les écoute sur le port 8888:
Cependant, l'élément que je ne peux pas comprendre est que je ne vois aucune demande initiée par le terminal, telle que wget
, curl
ou le navigateur elinks
.
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 il me faudrait spécifier manuellement le proxy pour eux .
De plus, 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 cela - bien que je pense qu'il utilise un wrapper XWindow ou quelque chose du genre (donc ce n'est pas vraiment un natif Application cacao/carbone):
Comment puis-je faire en sorte que toutes les requêtes HTTP de mon système passent par Charles?
Clarification
Ma question concerne les principes de base du système expliquant pourquoi curl et wget n’utilisent pas de proxy lorsque l’interface réseau a été configurée pour en utiliser un de plus que pour demander la syntaxe correcte pour curl
, wget
, etc.
VPN créerait un nouveau périphérique réseau, vous pourrez le voir dans la commande ifconfig
, puis acheminera tout le réseau système vers ce périphérique, vous pourrez voir la route utiliser la commande route
.
Mais le proxy HTTP (dans ce cas, Charles) est différent, il suffit d'ouvrir un port; pour l'utiliser, vous devez spécifier le paramètre de votre application lui permettant d'utiliser ce port pour les commandes HTTP. et comme la réponse de Kevin Reid, curl
, wget
etc. ne lisent pas les paramètres système d’OS X.
Si votre proxy est SOCKS (Charles prend en charge HTTP et SOCKS), vous pouvez utiliser ProxyChains ou tsocks pour l'application ne prend pas en charge le paramétrage du proxy.
par exemple.:
$ proxychains git clone https://github.com/rofl0r/proxychains-ng
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
curl derrière le proxy source
$ vim ~/.curlrc
Ajoutez la ligne suivante:
proxy = 127.0.0.1:8888
se lie derrière le proxy source
Trouvez votre fichier elinks.conf
avec:
Sudo find / -name elinks.conf
Ajoutez la ligne suivante:
protocol.http.proxy.Host "127.0.0.1:8888"
Pas sûr de BlueCrab
La raison pour laquelle vous n'obtenez pas simplement un proxy de toutes les demandes HTTP est parce que, sur le système d'exploitation niveau, il n’existe pas de "requête HTTP"; il n'y a que TCP connexions. Contacter un proxy HTTP signifie modifier légèrement la requête HTTP et contacter le serveur proxy au lieu de l'hôte nommé dans l'URL. Cette opération doit donc être effectuée dans le code qui implémente l'envoi des 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 les bibliothèques HTTP fournies avec Mac OS X qui utilisent ce proxy réglages.
Si vous ne voulez pas toucher vos fichiers de configuration, utilisez curl pour faire:
curl http://example.com --proxy 127.0.0.1:8888