2017-07-18 91 views
0

我正在嘗試使用javascript創建個人網頁代理,以便用戶可以通過網站瀏覽互聯網。示例http://webproxy.to/使用節點js和快速創建網頁代理

我想通過使用管道請求將響應從url發回給用戶,但它不會加載圖像,因爲html正在使用相對url。如何更改鏈接,以便使用該網頁的絕對網址?

app.get('/:url', function (req, res) { 
    var url = req.params.url; 
    request('https://www.google.com', function (error, response, html) { 
    if (!error && response.statusCode == 200) { 
     req.pipe(request('https://www.google.com')).pipe(res); 
    } 
    }); 
}); 
+0

您可以嘗試使用快遞-HTTP代理https://github.com/villadora/express-http-proxy –

+0

解析HTML,搜索圖像標記,獲得網址並更換。將html字符串化併發送給用戶。 – Adriani6

回答

0

我認爲管道在這種情況下是不可用的,您必須進行修改。 嘗試使用這樣的:

const jsdom = require("jsdom"); 
const { JSDOM } = jsdom; 

app.get('/:url', function (req, res) { 
    var url = req.params.url; 
    request(url, function (error, response, html) {  
    if (!error && response.statusCode == 200) { 
     const dom = new JSDOM(html); 
     const links = dom.window.document.querySelector('a'); 
     for(let i = 0; i < links.length; i++) { 
     if (!/http/.test(links[i].href) && !/mailto/.test(links[i].href)) { 
      links[i].href = `http://${url}${links[i].href}`; 
     } 
     } 
     res.send(dom.serialize()); 
    } 
    }); 
});