2013-06-21 49 views
1
URL

當修改一個node-http-proxy example ...使用節點HTTP代理,改變與proxyRequest

的問題:當手動改變req.headers.host到遠程主機(「example.com」),該URL中瀏覽器沒有改變。

注意:我認爲這是工作,但是當使用google.com作爲我的例子,結果證明谷歌正在檢測代理並更改主機。

問題:有沒有辦法將瀏覽器中的url更改爲遠程主機(例如example.com)?謝謝!

var util = require('util'), 
    colors = require('colors'), 
    http = require('http'), 
    httpProxy = require('../../lib/node-http-proxy'); 

// 
// Http Server with proxyRequest Handler and Latency 
// 
var proxy = new httpProxy.RoutingProxy(); 
http.createServer(function (req, res) { 
    req.headers.host = 'example.com'; // manually setting example.com 
    var buffer = httpProxy.buffer(req); 
    setTimeout(function() { 
    proxy.proxyRequest(req, res, { 
     port: 80, 
     host: 'example.com', 
     buffer: buffer 
    }); 
    }, 200); 
}).listen(8004); 



util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '8004 '.yellow + 'with proxyRequest handler'.cyan.underline + ' and latency'.magenta); 
util.puts('http server '.blue + 'started '.green.bold + 'on port '.blue + '9000 '.yellow); 

回答

0

一些解決方案,做到這一點是:

  • 發行301重定向。
  • 使用IPTable到DNAT並更改目的地址。
  • 使用TPROXY透明地代理請求而不修改 數據包。