Can a proxy (like fiddler) be used with Node.js's ClientRequest

26,917

Solution 1

To route your client-requests via fiddler, alter your options-object like this (ex.: just before you create the 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) {
    ...
});

Solution 2

I find the following to be nifty. The request module reads proxy information from the windows environment variable.

Typing the following in the windows command prompt, will set it for the lifetime of the shell. You just have to run your node app from this 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

Solution 3

If you want to montior outgoing reqeusts from node you can use the request module

and just set the proxy property in the options, like that

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 is the default port , of fiddler .

Solution 4

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";

Solution 5

Answering my own question: according to https://github.com/joyent/node/issues/1514 the answer is no, but you can use the request module, http://search.npmjs.org/#/request, which does support proxies.

Share:
26,917
chuckj
Author by

chuckj

Software Engineer at Google where I work on Android. Prior to Android I worked on Angular. Prior to Angular I worked on both internal and external development tools for Android and the Google Compute Platform (GCP). Before Google I was at Microsoft working on the XAML application framework for all Microsoft platforms. Previously worked on XBOX ONE focusing on UI frameworks, Visual Studio focusing on JavaScript and JavaScript developer tools, XAML language design, the XAML language service, and Visual Studio Tools for Windows Azure. Before Microsoft, I worked for Borland and was the Chief Architect of Borland's Delphi.

Updated on October 03, 2020

Comments

  • chuckj
    chuckj over 3 years

    Can node.js be setup to recognize a proxy (like Fiddler for example) and route all ClientRequest's through the proxy?

    I am using node on Windows and would like to debug the http requests much like I would using Fiddler for JavaScript in the browser.

    Just be clear, I am not trying to create a proxy nor proxy requests received by a server. I want to route requests made by http.request() through a proxy. I would like to use Fiddler to inspect both the request and the response as I would if I was performing the request in a browser.