Как использовать http-прокси node.js для регистрации HTTP-трафика на компьютере?

Я пытаюсь реализовать простейший пример:

var http = require('http'),
var httpProxy = require('http-proxy');

httpProxy.createServer(function (req, res, proxy) {
    //
    // I would add logging here
    //
    proxy.proxyRequest(req, res, { host: 'www.google.com', port: 80 });
}).listen(18000);

Когда я настраиваю свой браузер на использование этого прокси-сервера и перехожу на www.google.com, я не получаю ответа. Что я делаю неправильно?

Я использую Windows 7 Chrome


person gztomas    schedule 11.06.2012    source источник
comment
Можно уточнить какая ОС и какой браузер? Каждый обрабатывает прокси по-своему.   -  person badunk    schedule 11.06.2012
comment
Это работает для вас с последними изменениями в библиотеке? Похоже, теперь обязательно передать поле target в параметрах, иначе простой запуск приведенного выше кода дает мне Must provide valid URL for target   -  person Ayush Goel    schedule 15.12.2017


Ответы (2)


Вот простой пример регистрации запросов. Я использую аналогичный для регистрации всех моих доменов в одной базе данных.

Я многое скопировал из http://blog.nodejitsu.com/http-proxy-middlewares.

var fs = require('fs'),
    http = require('http'),
    httpProxy = require('http-proxy'),

logger = function() {    
  // This will only run once
  var logFile = fs.createWriteStream('./requests.log');

  return function (request, response, next) { 
    // This will run on each request.
    logFile.write(JSON.stringify(request.headers, true, 2));
    next();
  }
}

httpProxy.createServer(
  logger(), // <-- Here is all the magic
  {
    hostnameOnly: true,
    router: {
      'example1.com': '127.0.0.1:8001', // server on localhost:8001
      'example2.com': '127.0.0.1:8002'  // server 2 on localhost:8002
  }
}).listen(8000);
person davl    schedule 31.12.2012
comment
Это все еще должно работать? Я пытаюсь регистрировать запросы, когда обращаюсь к разным URL-адресам, но не могу понять... - person Valip; 09.05.2017
comment
Это больше не работает, так как теперь обязательно передавать какую-то цель или поле пересылки в опциях. Выполнение приведенного выше кода дает мне «Должен предоставить действительный URL-адрес для цели». - person Ayush Goel; 15.12.2017

Я не уверен, поможет ли это, потому что размещенная информация очень короткая. Но нашел пост, что обновили апи...

вы можете проверить этот пост:

Обновление до node-http-proxy v0.5.0 http://blog.nodejitsu.com/updating-node-http-proxy

person silverfighter    schedule 11.06.2012