Я пытаюсь настроить node -http-proxy, который просто пересылает запросы. В конце концов, этот прокси должен вводить javascript на каждом веб-сайте, который я посещаю через браузер.
В настоящее время большинство страниц пересылаются и отображаются правильно, но некоторые, например posterkoenig.ch или verkehrsclub.ch возвращает либо пустую страницу, либо на странице появляется ошибка. Оба сайта работают без прокси-сервера. Что мне нужно изменить, или что мне не хватает, что неправильно отправлено?
Im очень новый для nodejs и даже не уверен, что мой подход будет работать или нет.
Вот что я получил до сих пор:
var httpProxy = require('http-proxy');
var url = require('url');
httpProxy.createServer(function(req, res, proxy) {
var urlObj = url.parse(req.url);
proxy.proxyRequest(req, res, {
host: urlObj.host,
port: 80,
changeOrigin: true,
enable : { xforward: true }
});
}).listen(9000, function () {
console.log("Waiting for requests...");
});
Update
Как было предложено @robertklep, я удалил changeOrigin
и переопределил req.headers.host
, а также req.headers.url
posterkoenig.ch:
Теперь бросает:
An error has occurred:
{"code":"ENOTFOUND","errno":"ENOTFOUND","syscall":"getaddrinfo"}
verkehrsclub.ch:
Первая страница работает, но подстраницы все еще вызывают ошибку на странице.
var httpProxy = require('http-proxy');
var url = require('url');
httpProxy.createServer(function(req, res, proxy) {
var urlObj = url.parse(req.url);
req.headers['host'] = urlObj.host;
req.headers['url'] = urlObj.href;
proxy.proxyRequest(req, res, {
host: urlObj.host,
port: 80,
enable : { xforward: true }
});
}).listen(9000, function () {
console.log("Waiting for requests...");
});