Est-ce que node.js peut être configuré pour reconnaître un proxy (comme Fiddler par exemple) et acheminer tous les ClientRequest via le proxy?
J'utilise node sur Windows et je voudrais déboguer les requêtes http comme j'utiliserais Fiddler pour JavaScript dans le navigateur.
Soyons clairs, je n'essaie pas de créer un proxy ni de requêtes proxy reçues par un serveur. Je souhaite acheminer les demandes effectuées par http.request()
via un proxy. Je voudrais utiliser Fiddler pour inspecter à la fois la demande et la réponse comme je le ferais si j'exécutais la demande dans un navigateur.
Pour acheminer vos demandes client via fiddler, modifiez votre objet options comme ceci (ex.: Juste avant de créer http.request):
options.path = 'http://' + options.Host + ':' + options.port + options.path;
options.headers.Host = options.Host;
options.Host = '127.0.0.1';
options.port = 8888;
myReq = http.request(options, function (result) {
...
});
Je trouve que ce qui suit est astucieux. Le module request lit les informations de proxy à partir de la variable d'environnement Windows.
La saisie de ce qui suit dans l'invite de commande windows le définira pour la durée de vie du shell. Il vous suffit d'exécuter votre application de nœud à partir de ce shell.
set https_proxy=http://127.0.0.1:8888
set http_proxy=http://127.0.0.1:8888
set NODE_TLS_REJECT_UNAUTHORIZED=0
Si vous voulez monter les requêtes sortantes du nœud, vous pouvez utiliser le module request
et définissez simplement la propriété proxy dans les options, comme ça
request.post('http://204.145.74.56:3003/test', {
headers :{ 'content-type' : 'application/octet-stream'},
'body' : buf ,
proxy: 'http://127.0.0.1:8888'
}, function() {
//callback
});
8888 est le port par défaut du violoneux.
Répondre à ma propre question: selon https://github.com/joyent/node/issues/1514 la réponse est non , mais vous pouvez utiliser le module request
, http://search.npmjs.org/#/request , qui prend en charge les proxys.
process.env.https_proxy = "http://127.0.0.1:8888";
process.env.http_proxy = "http://127.0.0.1:8888";
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
Si vous souhaitez configurer un proxy dans le cas général, les autres réponses sont correctes: vous devez configurer manuellement cela pour la bibliothèque que vous utilisez en tant que nœud intentionnellement ignore les paramètres de votre proxy système hors de la boîte .
Si toutefois vous cherchez simplement un outil de débogage HTTP de type violon pour Node.js, je travaille sur un projet open source pour le faire depuis un petit moment (avec prise en charge intégrée des nœuds) appelé Boîte à outils HTTP. Cela vous permet
Voici une démonstration de celui-ci déboguant un tas de trafic NPM, nœud et navigateur:
En interne, la façon dont cela fonctionne est d'injecter un extra script JS dans les processus démarrés Node, qui se connecte à require()
pour reconfigurer automatiquement les paramètres du proxy pour vous, pour chaque module qui n'utilise pas les paramètres globaux.