socksv5 icon indicating copy to clipboard operation
socksv5 copied to clipboard

monitor proxy traffic

Open stefanocudini opened this issue 5 years ago • 3 comments

hi beautiful lib! congrants

I was trying to write a proxy socks that could log the http traffic and contents and show in stdout.

how can I do it? is there something like this already done?

my attempts is this:


const socks = require('socksv5');

const PORT = 9052;

//console.clear();

var srv = socks.createServer(function(info, accept, deny) {

  console.log('\n',info.cmd, info.dstAddr, info.dstPort);

  if (info.dstPort === 80) {  //NOT SSL
    var socket;
    if (socket = accept(true)) {

      	/*socket.on('data', function(data) {
			console.log('DATA:', data.toString('ascii') );
		});*/

		socket.pipe(process.stdout);
		//socket.end()
    }
  }
  else	//SSL connection
    accept();
});

srv.listen(PORT, 'localhost', function() {
  console.log('SOCKS server listening on port',PORT);
});

srv.useAuth(socks.auth.None());

stefanocudini avatar Apr 23 '20 19:04 stefanocudini

I'm not sure what you're asking. Do you not see the raw data printed to stdout with the code you've shown?

mscdex avatar Apr 23 '20 21:04 mscdex

yes.. but only the headers, I wish I could see the body of requests and responses :-/

stefanocudini avatar Apr 24 '20 00:04 stefanocudini

  1. You'll only see request bodies if they're sent, which may not always be the case
  2. Responses require you to make an actual connection to the intended destination. Right now you're just connecting the incoming request socket to stdout. You have to make a separate socket connection to dstAddr:dstPort and pipe that back to socket (and optionally log that to stdout if you want).

mscdex avatar Apr 24 '20 01:04 mscdex