Изменение ответа HTML в node-http-proxy с использованием harmon - нет манипуляций с выводом

0

Вероятно, вопрос n00b :-). Я рассматриваю node-http-proxy для создания фильтрационного прокси. В поисках примера манипуляции с строкой я обнаружил, что указатель гармоничен и успешно выполнил свой пример.

Затем я попробовал запустить свой собственный пример против HTTP-прослушивания Apache на localhost: 80. Вот мой код:

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

    // Create an array of selects that harmon will process. 
    var actions = [];

    var simpleaction = {};
    simpleaction.query = 'head';
    simpleaction.func = function (node) {
                             var out = '<style type="text/css"> h1 {color : red; border-bottom : 5px solid green} </style>';
                            node.createWriteStream({ outer: true }).end(out);
                            console.log("head function called:" + out);
                            };
    var simpleaction2 = { 'query' : 'body',
                         'func' : function (node) {
                             var out = '<h1>You have been proxied</h1>';
                            node.createWriteStream({ outer: false }).end(out);
                            console.log("body function called" + out);
                            }
                        };                  

    // Add the action to the action array
    actions.push(simpleaction);
    actions.push(simpleaction2);

    var proxy = httpProxy.createServer(
      require('harmon')([], actions),
      80, 'localhost'
    );

    proxy.listen(8899);

    console.log("Up and running on port 8899");

Первоначально я получил ошибку, так как я использовал более новую версию http-proxy. Использование 0.8.7 исправлено. Выход консоли при загрузке страницы:

stw@devmachine:~/tests$ nodejs ptest.js 
Up and running on port 8899
head function called:<style type="text/css"> h1 {color : red; border-bottom : 5px solid green} </style>
body function called<h1>You have been proxied
head function called:<style type="text/css"> h1 {color : red; border-bottom : 5px solid green} </style>
body function called<h1>You have been proxied
head function called:<style type="text/css"> h1 {color : red; border-bottom : 5px solid green} </style>
body function called<h1>You have been proxied
head function called:<style type="text/css"> h1 {color : red; border-bottom : 5px solid green} </style>
body function called<h1>You have been proxied</h1>

Таким образом, он выглядит хорошо, но выход не изменяется вообще. Что я пропустил?

В конечном счете мне нужно:

  • добавьте таблицу стилей в раздел <head>
  • заменить все атрибуты src и href
  • добавьте некоторые элементы DOM в определенных местах (например, <h1> качестве первого элемента тела)
  • добавить некоторые заголовки
  • GZIP результат перед отправкой
  • работать с URL-адресами http и https
  • оставлять только ресурсы изображений

Указатели оценили!

Теги:
proxy

1 ответ

1
Лучший ответ

Кажется странным Не имея полной среды для вашего теста, я не могу дать окончательного ответа. Но я собрал здесь POC, который имеет два действия, аналогичные тем, которые вы создаете.

https://gist.github.com/No9/10874082

Это прекрасно работает, если вы клонируете гармонию с git и перетащите ее в тестовую папку.

$ git clone https://github.com/No9/harmon.git $ cd harmon/test $ curl https://gist.githubusercontent.com/No9/10874082/raw/38a26d15b7ecbd875eee0988c94af0333927b98a/host-multiaction.js > host-multiaction.js $ node host-multiaction.js

Для общей функциональности с GZIP и т.д. Я бы сказал, что новая версия узла-прокси будет лучше позиционировать, чтобы обеспечить полное решение.

Я предлагаю посмотреть https://github.com/No9/harmon/issues/8 в течение следующих нескольких недель;)

  • 0
    Я видел, что в вашем контенте вы запрашивали классы типа ".b", а я запрашивал элементы типа "a" или "body". Также я собираюсь за реальным сайтом. Я скопировал свой файл в тестовую папку и обнаружил, что он также не учитывает заголовки запроса и показывает неправильный сайт. Взгляните: gist.github.com/Stwissel/10896955 (Вы можете запустить его из своей тестовой папки - сравните с прямым URL-адресом notessensei.com
  • 0
    Поэтому, когда я запускаю ваш пример на www.venshare.com, он работает нормально, поэтому теперь нужно обрабатывать только заголовки запросов. Создал эту проблему github.com/No9/harmon/issues/9, чтобы отследить ее, так как я собираюсь сначала заняться обновлением до http-proxy 1.x
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню